2022年软件测试工程师考试题和答案 .pdf
学而不思则惘,思而不学则殆软件测试工程师面试题一,判断题(本大题 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、使测试工作更加系统精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 7 页学而不思则惘,思而不学则殆化D 、软件工程以及软件过程的需要 E、软件过程规范化的要求 F 、控制软件质量7.单元测试对象是(B)A 代码 B 模块 C 数据库 D 界面8.下列说法正确的是(C)A 数据库是独立系统,不需要操作系统支持B数据库技术的根本目标是解决数据库共享问题C数据库设计指的是数据库管理系统D在数据库系统中,数据的物理结构必须与逻辑结构一致9.1=n开发测试脚本设计测试场景执行测试场景 监控测试场景 分析测试结果5.黑盒测试方法和测试的内容参考答案:黑盒测试方法主要有等价类划分、边值分析、因果图、 错误推测等, 主要用于软件确认测试。“黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。 “黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。黑盒测试的内容主要有以下几个方面,但是主要还是功能部分。主要是覆盖全部的功能,可以结合兼容,性能测试等方面进行,根据软件需求,设计文档,模拟客户场景随系统进行实际的测试,这种测试技术是使用最多的测试技术涵盖了测试的方方面面,可以考虑以下方面: a 正确性 (Correctness) :计算结果,命名等方面。b 可用性 (Usability) :是否可以满足软件的需求说明。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 7 页学而不思则惘,思而不学则殆c 边界条件 (Boundary Condition) :输入部分的边界值,就是使用一般书中说的等价类划分,试试最大最小和非法数据等等。d 性能 (Performance) : 正常使用的时间内系统完成一个任务需要的时间,多人同时使用的时候响应时间在可以接受范围内。 J2EE 技术实现的系统在性能方面更是需要照顾的,一般原则是 3 秒以下接受, 3-5 秒可以接受, 5 秒以上就影响易用性了。如果在测试过程中发现性能问题,修复起来是非常艰难的,因为这常常意味着程序的算法不好,结构不好,或者设计有问题。因此在产品开发的开始阶段,就要考虑到软件的性能问题e 压力测试 (Stress) : 多用户情况可以考虑使用压力测试工具,建议将压力和性能测试结合起来进行。 如果有负载平衡的话还要在服务器端打开监测工具 , 查看服务器 CPU 使用率,内存占用情况,如果有必要可以模拟大量数据输入,对硬盘的影响等等信息。如果有必要的话必须进行性能优化 ( 软硬件都可以 ) 。这里的压力测试针对的是某几项功能。f 错误恢复 (Error Recovery) :错误处理,页面数据验证,包括突然间断电,输入脏数据等。g 安全性测试 (Security) :这个领域正在研究中,防火墙、补丁包、杀毒软件等的就不必说了,不过可以考虑。 破坏性测试时任意看了一些资料后得知 , 这里面设计到的知识内容可以写本书了 , 不是一两句可以说清的,特别是一些商务网站,或者跟钱有关,或者和公司秘密有关的 web 更是需要这方面的测试,在外国有一种专门干这一行的人叫安全顾问,可以审核代码, 提出安全建议, 出现紧急事件时的处理办法等,在国内没有听说哪里有专门搞安全技术测试的内容。6.什么是集合点?设置集合点有什么意义?Loadrunner 中设置集合点的函数是哪个?参考答案:在性能测试过程中,需要模拟大量用户在同一时刻,访问系统并同时操作某一任务,可以通过配置集合点来实现,多个用户同时进行某操作;集合点可以在服务器上创建密集的用户负载,使LoadRunner 能够测试服务器在负载状态下的性能。设置集合点函数:lr_rendezvous(“ Meeting ”);/ Meeting是集合点名称7.什么是关联?请解释一下自动关联和手动关联的不同。参考答案:关联的定义简单的说:就是把脚本中某些写死(固定)的数据,转变成动态的数据,或者说将前面语句的结果数据保存下来,然后在后面的语句提交请求时使用这些数据。需要关联的前提条件:客户端需要从服务器端返回数据中获取部分数据,并将这些部分数据处理后作为自己下一次请求的一部分发出。自动关联与手工关联的不同:自动关联是在脚本录制过程中,VuGen会根据已经制定好的规则,自动找出需要关联的值或脚本录制完成后,执行脚本一次,通过Correlation Studio 自动找出需要关联的数据,并建立关联; 而手动关联是需要录制两份相同业务流程的脚本,输入的数据要相同,利用WinDiff 工具,找出两份脚本之间不同之处,也就是需要关联的数据,再通过web_reg_save_param 函数手动建立关联,将脚本中用到关联的数据参数化。8.哪个函数是用来截取虚拟用户脚本中的动态值?(手工关联)参考答案:Web_reg_save_param 函数主要根据需要做关联的动态数据前面和后面的固定字符串来识别、提取动态数据,所以在做关联时,需要找出动态数据的左、右边界字符串。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 7 页学而不思则惘,思而不学则殆五,用例题(本大题 20 分)对下面的程序代码进行测试,写出简单用例(样本和预期结果)函数说明:当 i_flag=0;返回i_count+100 当 i_flag=1;返回i_count *10 否则返回i_count *20 输入参数: int i_count ,int i_flag 输出参数: int i_return; 1int Test( int i_count, int i_flag) 2 3int i_temp = 1; 4while (i_count0) 5 6if (0 = i_flag) 7 8 i_temp = i_count + 100; 9break; 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 答案:事例程序流程图:精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 7 页学而不思则惘,思而不学则殆圈中的数字代表的是语句的行号,也许有人问为什么选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 条基本独立路径根据独立路径我们可以设计测试用例。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 7 页学而不思则惘,思而不学则殆 1 B(4 ,24 )输入数据: i_count=0,或者是i_count0的某一个值。预期结果: 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.精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 7 页