【5-1】从供选择的答案中选出应填入下列(   )中的字句。
软件测试的目的是( A )。为了提高测试的效率,应该( B )。使用白盒测试方法时,确定测试数据应根据( C )和指定的覆盖标准。与设计测试数据无关的文档是( D )。
软件的集成测试工作最好由( E )承担,以提高集成测试的效果。
供选择的答案:
A.      ① 评价软件的质量                        ② 发现软件的错误
③ 找出软件中的所有错误            ④ 证明软件是正确的
B.      ① 随机地选取测试数据                  
② 取一切可能的输入数据作为测试数据
③ 在完成编码以后制定软件的测试计划
④ 选择发现错误的可能性大的数据作为测试数据
C.      ① 程序的内部逻辑                        ② 程序的复杂程度
③ 使用说明书                        ④ 程序的功能
D.      ① 该软件的设计人员                  ② 程序的复杂程度
③ 源程序                              ④ 项目开发计划
E.      ① 该软件的设计人员                  ② 该软件开发组的负责人
③ 该软件的编程人员                  ④ 不属于该软件开发组的软件设计人员
【5-2】请从供选择的答案中选出应填入下列(   )中的字句。
程序的三种基本控制结构是( A )。它们的共同点是( B )。结构化程序设计的一种基本方法是( C )。软件测试的目的是( D )。软件调试的目的是( E )。
供选择的答案:
A.      ① 过程,子程序,分程序                  ② 顺序,条件,循环
③ 递归,堆栈,队列                        ④ 调用,返回,转移
B.      ① 不能嵌套使用                              ② 只能用来写简单的程序
③ 已经用硬件实现                              ④ 只有一个入口和一个出口
C.      ① 筛选法            ② 递归法            ③ 归纳法            ④ 逐步求精法
D.      ① 证明程序中没有错误                  ② 发现程序中的错误
③ 测量程序的动态特性                  ④ 检查程序中的语法错误
E.      ① 找出错误所在并改正之                  ② 排除存在错误的可能性
③ 对错误性质进行分类                  ④ 统计出错的次数
【5-3】从下列关于软件测试的叙述中,选出5条正确的叙述。
(1) 用黑盒法测试时,测试用例是根据程序内部逻辑设计的。
(2) 尽量用公共过程或子程序去代替重复的代码段。
(3) 测试是为了验证该软件已正确地实现了用户的要求。
(4) 对于连锁型分支结构,若有n个判定语句,则有2n条路径。
(5) 尽量采用复合的条件测试,以避免嵌套的分支结构。
(6) GOTO语句概念简单,使用方便,在某些情况下,保留GOTO语句反能使写出的程序更加简洁。
(7) 发现错误多的程序模块,残留在模块中的错误也多。
(8) 黑盒测试方法中最有效的是因果图法。
(9) 在做程序的单元测试时,桩(存根)模块比驱动模块容易编写。
(10) 程序效率的提高主要应通过选择高效的算法来实现。
【5-4】从供选择的答案中选出同下列关于软件测试的各条叙述关系最密切的字句。
(1) 对可靠性要求很高的软件,例如操作系统,由第三者对源代码进行逐行检查。
(2) 已有的软件被改版时,由于受到变更的影响,改版前正常的功能可能发生异常,性能也可能下降。因此,对变更的软件进行测试是必要的。
(3) 在意识到被测试模块的内部结构或算法的情况下进行测试。
(4) 为了确认用户的需求,先做出系统的主要部分,提交给用户试用。
(5) 在测试具有层次结构的大型软件时,有一种方法是从上层模块开始,由上到下进行测试。此时,有必要用一些模块替代尚未测试过的下层模块。
供选择的答案:
A  E:      ① 仿真器         ② 代码审查   ③ 模拟器       ④ 桩             ⑤ 驱动器
⑥ 域测试       ⑦ 黑盒测试       ⑧ 原型               ⑨ 白盒测试       ⑩ 退化测试
【5-5】对小的程序进行穷举测试是可能的,用穷举测试能否保证程序是百分之百正确呢?
【5-6】在任何情况下单元测试都是可能的吗?都是需要的吗?
【5-7】从供选择的答案中选出应填入下面有关软件测试的叙述的(   )内的正确答案。
软件测试方法可分为黑盒测试法和白盒测试法两种。
黑盒测试法是通过分析程序的( A )来设计测试用例的方法。除了测试程序外,它还适用于对( B )阶段的软件文档进行测试。
白盒测试法是根据程序的( C )来设计测试用例的方法。除了测试程序外,它也适用于对( D )阶段的软件文档进行测试。
白盒法测试程序时常按照给定的覆盖条件选取测试用例。( E )覆盖比( F )覆盖严格,它使得每一个判定的每一条分支至少经历一次。( G )覆盖既是判定覆盖,又是条件覆盖,但它并不保证使各种条件都能取到所有可能的值。( H )覆盖比其他条件都要严格,但它不能保证覆盖程序中的每一条路径。
单元测试一般以( I )为主,测试的依据是( J )。
供选择的答案:
A, C:① 应用范围      ② 内部逻辑        ③ 功能            ④ 输入数据
B, D:① 编码              ② 软件详细设计      ③ 软件总体设计 ④ 需求分析
E, F, G, H:① 语句      ② 判定            ③ 条件            ④ 判定/条件
⑤ 多重条件      ⑥ 路径
I:① 白盒法          ② 黑盒法
J:① 模块功能规格说明      ② 系统模块结构图      ③ 系统需求规格说明
【5-8】从供选择的答案中选出应该填入下列关于软件测试的叙述的( )内的正确答案。
软件测试中常用的静态分析方法是( A )和( B )。( B )用于检查模块或子程序间的调用是否正确。分析方法(白盒方法)中常用的方法是( C )方法。非分析方法(黑盒方法)中常用的方法是( D )方法和( E )方法。( E )方法根据输出对输入的依赖关系设计测试用例。
供选择的答案:
A  B:      ① 引用分析         ② 算法分析       ③ 可靠性分析       ④ 效率分析
         ⑤ 接口分析         ⑥ 操作分析
C ~ E:      ① 路径测试   ② 等价类       ③ 因果图       ④ 归纳测试
⑤ 综合测试   ⑥ 追踪             ⑦ 深度优先       ⑧ 调试
⑨ 相对图
【5-9】下面是选择排序的程序,其中datalist是数据表,它有两个数据成员:一是元素类型为Element的数组V,另一个是数组大小n。算法中用到两个操作,一是取某数组元素V的关键码操作getKey ( ),一是交换两数组元素内容的操作Swap( )::
      void SelectSort ( datalist & list ) {
      //对表list.V[0]到list.V[n-1]进行排序, n是表当前长度。
        for ( int i = 0; i < list.n-1; i++ ) {
              int k = i;               //在list.V
.key到list.V[n-1].key中找具有最小关键码的对象
              for ( int j = i+1; j < list.n; j++)
                if ( list.V[j].getKey ( ) < list.V[k].getKey ( ) ) k = j;       //当前具最小关键码的对象
              if ( k != i ) Swap ( list.V
, list.V[k] );                         //交换
      }
    }
(1) 试计算此程序段的McCabe复杂性;
(2) 用基本路径覆盖法给出测试路径;
(3) 为各测试路径设计测试用例。
【5-10】根据下面给出的规格说明,利用等价类划分的方法,给出足够的测试用例。
“一个程序读入三个整数。把此三个数值看成是一个三角形的三个边。这个程序要打印出信息,说明这个三角形是三边不等的、是等腰的、还是等边的。”
【5-11】设要对一个自动饮料售货机软件进行黑盒测试。该软件的规格说明如下:
“有一个处理单价为1元5角钱的盒装饮料的自动售货机软件。若投入1元5角硬币,按下“可乐”、“雪碧”或“红茶”按钮,相应的饮料就送出来。若投入的是2元硬币,在送出饮料的同时退还5角硬币。”
(1) 试利用因果图法,建立该软件的因果图;
(2) 设计测试该软件的全部测试用例。
【5-12】对一个长度为100,000条指令的程序进行测试,记录下来的数据如下:
 测试开始, 发现错误个数为0;
 经过160小时的测试, 累计改正100个错误, 此时, MTTF = 0.4小时;
 又经过160小时的测试, 累计改正300个错误, 此时, MTTF = 2小时;
(1) 估计程序中固有的错误总数;
(2) 为使MTTF达到10小时, 必须测试和调试这个程序多长时间?
(3) 给出MTTF与测试时间t之间的函数关系。
【5-13】应该由谁来进行确认测试?是软件开发者还是软件用户?为什么?




 软件测试工程师笔试试题
请根据您以往的学习和工作经历,结合您的个人经验回答以下问题。您可以尽可能详细和完整的表达出自己的思想,如果书写空间不够,您可以将答案写在题目所在页的背面。如果需要稿纸请同接待人员联系。

01.   为什么要在一个团队中开展软件测试工作?
02.   您是否了解以往所工作的企业的软件测试过程?如果了解,请试述在这个过程中都有哪些工作要做?分别由哪些不同的角色来完成这些工作?
03.   您是否了解以往所工作的企业的软件开发过程?如果了解,请试述一个完整的开发过程需要完成哪些工作?分别由哪些不同的角色来完成这些工作?(对于软件测试部分,可以简述)
04.   您在以往的测试工作中都曾经具体从事过哪些工作?其中最擅长哪部分工作?
05.   您所熟悉的软件测试类型都有哪些?请试着分别比较这些不同的测试类型的区别与联系(如功能测试、性能测试……)
06.   请试着比较一下黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别与联系。
07.   测试计划工作的目的是什么?测试计划工作的内容都包括什么?其中哪些是最重要的?
08.   您认为做好测试计划工作的关键是什么?

09.   您所熟悉的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。10.   您认为做好测试用例设计工作的关键是什么?