软件测试工程师考试题和答案

软件测试工程师考试题和答案
软件测试工程师考试题和答案

软件测试工程师面试题

一,判断题(本大题10小题,每小题1分,共10分)

1.单元测试通常应该先进行“人工走查”,再以白盒法为主,辅以黑盒法进行动态测试。(√)(

中级)

2.功能测试是系统测试的主要内容,检查系统的功能、性能是否与需求规格说明相同。(√)(

中级)

3.测试只要做到语句覆盖和分支覆盖,就可以发现程序中的所有错误。(X)

4.代码评审是检查源代码是否达到模块设计的要求。(X)

5.测试人员在测试过程中发现一处问题,如果问题影响不大,而自己又可以修改,应立即将此问题正确修

改,以加快、提高开发的进程。(X)(初级)

6.负载测试是验证要检验的系统的能力最高能达到什么程度。(X)

7.集成测试计划在需求分析阶段末提交。(X)

8.系统测试计划不需要同行审批。(X)

9.测试中应该对有效和无效、期望和不期望的输入都要测试。(√)

10.软件质量管理即QM由QA和QC构成,软件测试属于QC的核心工作内容。(√)

二,不定项选择题(本大题10小题,每小题2分,共20分)

1.以测试的形态分测试可以分为:(ABC)【中级】

A、建构性测试

B、系统测试

C、专项测试

D、单元测试

E、组件测试

F、集成测试

2.选出属于黑盒测试方法的选项(ABC)【初级】

A、测试用例覆盖

B、输入覆盖

C、输出覆盖

D、分支覆盖

E、语句覆盖

F、条件覆盖

3.典型的瀑布模型的四个阶段是:(ABCD)【高级】

A、分析

B、设计

C、编码

D、测试

E、需求调研

F、实施

4.下列关于alpha 测试的描述中正确的是:(AD)

A.alpha 测试需要用户代表参加

B.alpha 测试不需要用户代表参加

C.alpha 测试是系统测试的一种

D.alpha 测试是验收测试的一种

5.软件验收测试的合格通过准则是:(ABCD)

A .软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求。

B .所有测试项没有残余一级、二级和三级错误。

C .立项审批表、需求分析文档、设计文档和编码实现一致。

D .验收测试工件齐全。

6.编写测试计划的目的是:(ABC)【中级】

A、使测试工作顺利进行

B、使项目参与人员沟通更舒畅

C、使测试工作更加系统化

D、软件工程以及软件过程的需要

E、软件过程规范化的要求

F、控制软件质量

7.单元测试对象是(B)

A 代码

B 模块

C 数据库

D 界面

8.下列说法正确的是(C)

A 数据库是独立系统,不需要操作系统支持

B数据库技术的根本目标是解决数据库共享问题

C数据库设计指的是数据库管理系统

D在数据库系统中,数据的物理结构必须与逻辑结构一致

9.1<=n<100的边界值有哪些(ABCD)

A 1

B 100

C 99

D 101

10.下列哪个不属于软件缺陷产生的原因(D)

A需求解释有错误

B设计说明有误

C软件代码有误

D操作系统有误

三,填空题(本大题5小题,每小题2分,共10分)

1.

2.

3.

4.

5.

四,简答题(本大题5小题,每小题40分,共40分)

1.请试着比较一下黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别与联系

答案:

黑盒测试:把测试对象当成一个黑盒子,测试人员完全不考虑逻辑结构和内部特性,只依据程式的需求说明书来检查程式的功能是否满足它的功能说明。

白盒测试:把测试对象当成一个透明的盒子,允许测试人员利用程序内部逻辑结构及相关信息,设计或选择测试用例,对程式所有逻辑路径进行测试。

单元测试:白盒测试的一种,对软件设计中的单元模块进行测试。

集成测试:在单元测试的基础上,对单元模块之间的连接和组装进行测试。

系统测试:在所有都考虑的情况下,对系统进行测试。

验收测试:第三方进行的确认软件满足需求的测试。

2.什么是兼容性测试?兼容性测试侧重哪些方面?

参考答案:

兼容测试主要是检查软件在不同的硬件平台、软件平台上是否可以正常的运行,即是通常说的软件的可移植性。

兼容的类型,如果细分的话,有平台的兼容,网络兼容,数据库兼容,以及数据格式的兼容。

兼容测试的重点是,对兼容环境的分析。通常,是在运行软件的环境不是很确定的情况下,才需要做兼容。根据软件运行的需要,或者根据需求文档,一般都能够得出用户会在什么环境下使用该软件,把这些环境整理成表单,就得出做兼容测试的兼容环境了。

兼容和配置测试的区别在于,做配置测试通常不是Clean OS下做测试,而兼容测试多是在Clean OS的环境下做的。

3.什么是负载测试?什么是性能测试?

参考答案:

负载测试是通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的情况下,系统所能承受的最大负载量的测试,例如,访问一个页面的响应时间规定不超过1秒,负载测试就是测试在响应时间为1秒时,系统所能承受的最大并发访问用户的数量。性能测试:指在一定的约束条件下(指定的软件、硬件、网络环境等),确定系统所能承受的最大负载压力。

4.性能测试包含了哪些软件测试(至少举出3种)?简述使用软件测试工具Loadrunner的步骤。

参考答案:

性能测试包含负载测试、压力测试、大数据量测试、疲劳强度测试等。

步骤:制定性能测试计划—>开发测试脚本—>设计测试场景—>执行测试场景—>监控测试场景—>分析测试结果

5.黑盒测试方法和测试的内容

参考答案:

黑盒测试方法主要有等价类划分、边值分析、因—果图、错误推测等,主要用于软件确认测试。“黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。

黑盒测试的内容主要有以下几个方面,但是主要还是功能部分。主要是覆盖全部的功能,可以结合兼容,性能测试等方面进行,根据软件需求,设计文档,模拟客户场景随系统进行实际的测试,这种测试技术是使用最多的测试技术涵盖了测试的方方面面,可以考虑以下方面:a正确性 (Correctness) :计算结果,命名等方面。b可用性 (Usability) :是否可以满足软件的需求说明。c边界条件 (Boundary Condition) :输入部分的边界值,就是使用一般书中说的等价类划分,试试最大最小和非法数据等等。d性能 (Performance) :正常使用的时间内系统完成一个任务需要的时间,多人同时使用的时候响应时间在可以接受范围内。 J2EE 技术实现的系统在性能方面更是需要照顾的,一般原则是 3 秒以下接受, 3-5 秒可以接受, 5 秒以上就影响易用性了。如果在测试过程中发现性能问题,修复起来是非常艰难的,因为这常常意味着程序的算法不好,结构不好,或者设计有问题。因此在产品开发的开始阶段,就要考虑到软件的性能问题e压力测试 (Stress) :多用户情况可以考虑使用压力测试工具,建议将压力和性能测试结合起来进行。如果有负载平衡的话还要在服务器端打开监测工具 , 查看服务器 CPU 使用率,内存占用情况,如果有必要可以模拟大量数据输入,对硬盘的影响等等信息。如果有必要的话必须进行性能优化 ( 软硬件都可以 ) 。这里的压力测试针对的是某几项功能。f错误恢复 (Error Recovery) :错误处理,页面数据验证,包括突然间断电,输入脏数据等。g安全性测试 (Security) :这个领域正在研究中,防火墙、补丁包、杀毒软件等的就不必说了,不过可以考虑。破坏性测试时任意看了一些资料后得知 , 这里面设计到的知识内容可以写本书了 , 不是一两句可以说清的,特别是一些商务网站,或者跟钱有关,或者和公司秘密有关的 web 更是需要这方面的测试,在外国有一种专门干这一行的人叫安全顾问,可以审核

6.什么是集合点?设置集合点有什么意义?Loadrunner中设置集合点的函数是哪个?

参考答案:

在性能测试过程中,需要模拟大量用户在同一时刻,访问系统并同时操作某一任务,可以通过配置集合点来实现,多个用户同时进行某操作;集合点可以在服务器上创建密集的用户负载,使LoadRunner能够测试服务器在负载状态下的性能。设置集合点函数:lr_ren dezvous(“Meeting”);//Meeting是集合点名称

7.什么是关联?请解释一下自动关联和手动关联的不同。

参考答案:

关联的定义简单的说:就是把脚本中某些写死(固定)的数据,转变成动态的数据,或者说将前面语句的结果数据保存下来,然后在后面的语句提交请求时使用这些数据。需要关联的前提条件:客户端需要从服务器端返回数据中获取部分数据,并将这些部分数据处理后作为自己下一次请求的一部分发出。自动关联与手工关联的不同:自动关联是在脚本录制过程中,VuGen会根据已经制定好的规则,自动找出需要关联的值或脚本录制完成后,执行脚本一次,通过Correlation

Studio自动找出需要关联的数据,并建立关联;而手动关联是需要录制两份相同业务流程的脚本,输入的数据要相同,利用WinDiff工具,找出两份脚本之间不同之处,也就是需要关联的数据,再通过web_reg_save_param函数手动建立关联,将脚本中用到关联的数据参数化。

8.哪个函数是用来截取虚拟用户脚本中的动态值?(手工关联)

参考答案:

Web_reg_save_param函数主要根据需要做关联的动态数据前面和后面的固定字符串来识别、提取动态数据,所以在做关联时,需要找出动态数据的左、右边界字符串。

五,用例题(本大题20分)

对下面的程序代码进行测试,写出简单用例(样本和预期结果)

函数说明:当i_flag=0;返回i_count+100 当i_flag=1;返回i_count *10 否则返回i_count *20 输入参数:inti_count ,inti_flag 输出参数: int i_return;

1int Test(int i_count, int i_flag) 2 { 3int i_temp = 1; 4while (i_count>0) 5

{ 6if (0 == i_flag) 7 { 8 i_temp = i_count + 100; 9 break;10 }11else12 {13if (1 == i_flag)14

{15 i_temp = i_temp * 10;16 }17else18

{19 i_temp = i_temp * 20;20 }21 }22

i_count--;23 }24return i_temp;25 }

答案:

事例程序流程图:

圈中的数字代表的是语句的行号,也许有人问为什么选4,6,13,8......作为结点,第2行,第3行为什么不是结点,因为选择结点是有规律的。让我们看程序中;第2行,第3行是按顺序执行下来的。直到第4行才出现了循环操作。而2,3行没有什么判断,选择等分支操作,所以我们把2,3,4全部合并成一个结点。其他的也是照这个规则合并,然后就有了上面的流程图

程序基本路径:基本独立路径就是从程序的开始结点到结束可以选择任何的路径遍历,但是每条路径至少应该包含一条已定义路径不曾用到的边。(看起来不好理解,让我们看例子)。让我们看上面的流程图:从结点4到24有几条路径呢? 1 B(4,24) 2 C,E,J(4,6,8,24) 3 C,D,F,H,A,B(4,6,13,15,22,4,24) 4 C,D,G,I,A,B(4,6,13,19,22,4,24)还有吗?? 5 C,D,C,I,A,C,E,J(4,6,13,19,22,4,6,8,24)算吗?不算,为什么?因为上面的4条路径已经包括了所有的边。第5条路径已经不包含没有用过的边了。所有的路径都遍历过了。好了,现在我们有了4条基本独立路径根据独立路径我们可以设计测试用例。 1 B(4,24)输入数据:i_count=0,或者是i_count<0的某一个值。预期结果:i_temp=0. 2 C,E,J(4,6,8,24)输入数据: i_count =1;i_flag=0 预期结果:i_temp=101. 3 C,D,F,H,A,B(4,6,13,15,22,4,24)输入数据: i_count =1;i_flag=1 预期结果:i_temp=10. 4 C,D,G,I,A,B(4,6,13,19,22,4,24)输入数据: i_count =1;i_flag=2 预期结果:i_temp=20.

精品文档word文档可以编辑!谢谢下载!

相关主题
相关文档
最新文档