软件测试技术复习题(含答案) 下载本文

注释:黄色表示重复或相似

一、选择题

1. 软件测试的目的是( B )

A. 避免软件开发中出现的错误 B. 发现软件中出现的错误 C. 容忍软件中出现的错误 D. 修改软件中出现的错误

2. 对于逻辑表达式((a&b)| |c),需要( C )个测试用例才能完成条件组

合覆盖。 A. 2 B. 3 C. 4 D. 5

3. 逻辑覆盖法不包括( C )。

A. 分支覆盖 B. 语句覆盖 C. 需求覆盖

D. 修正条件判定覆盖

4. 如果某测试用例集实现了某软件的路径覆盖,那么它一定同事实现了

该软件的( A )。 A. 判定覆盖 B. 条件覆盖 C. 判定/条件覆盖 D. 组合覆盖

5. 使用白盒测试方法时,确定测试数据的依据是指定覆盖标准和( B )。

第 1 页 共 37 页

A. 程序的注释 B. 程序的内部逻辑 C. 用户使用说明书 D. 程序的需求说明

6. 划分软件测试属于白盒测试还是黑盒测试的依据是( C )。

A. 是否执行程序代码 B. 是否能看到软件设计文档 C. 是否能看到被测源程序 D. 运行结果是否确定

7. 单元测试中用来模拟被测模块调用者的模块是( C )

A. 父模块 B. 子模块 C. 驱动模块 D. 桩模块

8. 不属于单元测试内容的是( A )

A. 模块接口测试 B. 局部数据结构测试 C. 路经测试 D. 用户界面测试

9. 客户端交易处理性能指标是一类重要的负载压力测试指标,以下不属

于客户端交易处理性能指标的是( C ) A. 负载测试 B. 压力测试 C. 疲劳强度测试 D. 大数据量测试

第 2 页 共 37 页

10. 以下不属于易用性而的是( D )

A. 功能易用性测试 B. 用户界面测试 C. 辅助功能测试 D. 可靠性测试

11. 软件测试的目的是( F )

E. 避免软件开发中出现的错误 F. 发现软件中出现的错误 G. 容忍软件中出现的错误 H. 修改软件中出现的错误 12. 软件的测试对象包括( D )。

A. 软件代码 B. 文档

第 3 页 共 37 页

C. 数据 D. 以上全选

13. 对于逻辑表达式((a&b)| |c),需要( G )个测试用例才能完成条件组

合覆盖。 E. 2 F. 3 G. 4 H. 5

14. 如果某测试用例集实现了某软件的路径覆盖,那么它一定同事实现了

该软件的( E )。 E. 判定覆盖 F. 条件覆盖 G. 判定/条件覆盖 H. 组合覆盖

15. 以下不属于黑盒测试方法的是( D )

A. 等价类划分法 B. 边界值分析法 C. 错误推测法 D. 静态结构分析法

16. 划分软件测试属于白盒测试还是黑盒测试的依据是( G )。

E. 是否执行程序代码 F. 是否能看到软件设计文档 G. 是否能看到被测源程序 H. 运行结果是否确定

17. 单元测试中用来模拟被测模块调用者的模块是( G )

第 4 页 共 37 页

E. 父模块 F. 子模块 G. 驱动模块 H. 桩模块

18. 不属于单元测试内容的是( E )

E. 模块接口测试 F. 局部数据结构测试 G. 路经测试 H. 用户界面测试

19. 在进行单元测试时,常用的方法是( B )

A. 采用黑盒测试,辅之以白盒测试 B. 采用白盒测试,辅之以黑盒测试 C. 只是用黑盒测试 D. 只是用白盒测试

20. 客户端交易处理性能指标是一类重要的负载压力测试指标,以下不属

于客户端交易处理性能指标的是( G ) E. 负载测试 F. 压力测试 G. 疲劳强度测试 H. 大数据量测试

第 5 页 共 37 页

21. 实际的逻辑覆盖测试中,一般以( J )为主设计测试用例。

I. J.

条件覆盖 判定覆盖

K. 条件组合覆盖 L. 路径覆盖

22. 单元测试所使用的主要测试方法是( D )

A. 黑盒测试 B. 静态测试 C. 动态测试 D. 白盒测试

23. 集成测试所使用的主要测试方法是( A )。

A. 黑盒测试 B. 静态测试 C. 动态测试 D. 白盒测试

第 6 页 共 37 页

24. 系统集成测试常见的有哪几种不同模式(AB )。

A. 非渐增式测试模式 B. 渐增式测试模式 C. 独立测试模式 D. 非独立测试模式

25. 在集成测试中,主要的集成方法有( )。

E. 自顶向下 F. 自底向上 G. 大棒 H. 三明治

26. 文档测试主要检查文档的( ABCD )。

A. 正确性 B. 完备性 C. 易理解性 D. 一致性

27. 验收测试完成后还需要提交( AC ),才可交付用户使用。

A. 验收报告 B. 项目完成报告 C. 交付报告

第 7 页 共 37 页

D. 无需提供任何报告

28. 软件产品的质量中的非功能需求包括( ABCD )等。

A. 适用性 B. 有效性 C. 可靠性 D. 性能

29. 对于整个软件的本地化过程来说,需要解决的技术问题主要有

( AC )。 A. 数据格式 B. 页面显示和布局 C. 配置和兼容性问题 D. 翻译问题

30. 测试团队的基本责任应该是(ABCD )。

A. 发现软件程序、系统或产品中的所有问题 B. 尽早地发现问题

C. 督促开发人员尽快地解决程序中的缺陷 D. 帮助团队解决资金问题

31. 软件缺陷是由很多方面造成的,以下哪个方面是造成软件缺陷的最多

的地方( A ) a) 规格说明书 b) 系统设计结果 c) 编写代码 d) 其他

32. 单元测试所使用的主要测试方法是( H )

第 8 页 共 37 页

E. 黑盒测试 F. 静态测试 G. 动态测试 H. 白盒测试

33. 系统集成测试常见的有哪几种不同模式( EF )。

E. 非渐增式测试模式 F. 渐增式测试模式 G. 独立测试模式 H. 非独立测试模式

34. 对于一些关键代码或新人写的代码,主要采取( B )方式。

A. 走查 B. 会议审查 C. 代码互评 D. 自查

35. 在集成测试中,主要的集成方法有( )。

I. 自顶向下 J. 自底向上 K. 大棒 L. 三明治

第 9 页 共 37 页

36. 造成软件的主要原因可从( ABC )方面来查找。

A. 技术问题 B. 软件本身 C. 团队工作 D. 资金问题

37. 代码评审有哪些方法( EFGH )。

E. 代码走查 F. 正式会议审查 G. 代码会审 H. 代码咨询

38. 驱动程序,用以模拟被测模块的(A )模块。

A. 上级模块 B. 下级模块 C. 同级模块 D. 其他

39. 整体测试用例的质量要求包括(ABCD )。

A. 覆盖率 B. 易用性 C. 易维护性 D. 粒度适中

40. 易用性、兼容性、安装、文档测试等主要在( A )阶段完成。

A. 单元测试 B. 集成测试 C. 功能测试 D. 验收测试

第 10 页 共 37 页

41. 实际的逻辑覆盖测试中,一般以( C )为主设计测试用例。

A. 条件覆盖 B. 判定覆盖 C. 条件组合覆盖 D. 路径覆盖

42. 软件的缺陷通常集中在( AB )阶段。

A. 需求分析 B. 系统设计 C. 编写代码 D. 软件测试

43. 对于一些关键代码或新人写的代码,主要采取( B )方式。

A. 走查 B. 会议审查 C. 代码互评 D. 自查

44. 软件本地化工作中除了翻译之外还应该( BD )。

A. 处理字符集问题 B. 数据格式 C. 页面显示和布局 D. 配置和兼容性等问题

45. 代码评审有哪些方法( ABCD )。

A. 代码走查 B. 正式会议审查

第 11 页 共 37 页

C. 代码会审 D. 代码咨询

46. 易用性、兼容性、安装、文档测试等主要在( A )阶段完成。

A. 单元测试 B. 集成测试 C. 功能测试 D. 验收测试

47. 系统集成测试常见的有哪几种不同模式( IJ )。

I. 非渐增式测试模式 J. 渐增式测试模式 K. 独立测试模式 L. 非独立测试模式

48. 验收测试完成后还需要提交( EG ),才可交付用户使用。

E. 验收报告 F. 项目完成报告 G. 交付报告 H. 无需提供任何报告

49. 系统集成测试常见的有哪几种不同模式( AB )。

A. 非渐增式测试模式 B. 渐增式测试模式 C. 独立测试模式 D. 非独立测试模式

50. 单元测试的主要任务是完成单元中所有( ABCD )等测试。

A. 独立路径 B. 数据结构

第 12 页 共 37 页

C. 边界条件 D. 容错性

二、判断题

1. 测试应该尽可能早地进行测试。( Y ) 2. 应该在代码编写完成后开始测试。( X ) 3. 需求分析和设计阶段不需要测试人员参与。( X )

4. 白盒测试仅与程序的内部结构有关,完全可以不考虑程序的功能需求。

( X )

5. 黑盒测试容易知道用户会用到那些功能,会遇到哪些问题( Y ) 6. 静态测试通过对执行程序,找到程序中的错误或者是可疑之处。( X ) 7. 在软件的开发中,每次回归测试都要重新运行完整的测试包。( ) 8. 在对软件缺陷的描述中,测试人员可以对有个人的观点,也可以对开

发人员进行评价,有利于开发人员提高开发质量。( X ) 9. 验收测试是由用户完成的。( X ) 10. 集成测试就是系统测试。( X )

11. 能够尽可能早的有的时候因为时间紧迫,可以临时安排几个程序员或

者行业新手做测试工作。( X )

12. 在实际的运用中,无论对于白盒测试和黑盒测试,通常使用其中一种

方法就可以完成对某一软件的测试工作。( X )

13. 发现软件缺陷,就能够尽可能地节约修复缺陷的成本,因此,因此在

软件的设计阶段修复缺陷的费用最低。( X )

14. 每一种测试方法都必须执行程序,才能得到最好的效果。( X ) 15. 在整个软件团队中,对软件测试人员的要求比较低,会操作计算机、

有一定的软件使用经验就可以。( X )

第 13 页 共 37 页

16. 在对软件缺陷的描述中,测试人员可以对有个人的观点,也可以对开

发人员进行评价,有利于开发人员提高开发质量。( X ) 17. 验收测试是由用户完成的。(X )

18. 在一个规范的软件的开发中,开发人员的人数一般大于测试人员的人

数。( X )

19. 在整个开发周期中要对测试用例进行有效的跟踪和维护。( Y ) 20. 功能测试也可以采用白盒测试的方法。( X )

21. 根据著名的瀑布模型,软件测试应该处在“编程”的下游、在“软件

维护”的上游,先有编程,后有测试,测试的位置很清楚。( Y ) 22. 因为软件开发人员不止一人,因此在测试时候,只能进行松散地实施

测试。( X )

23. 单元测试的主要人员构成是开发人员。( Y )

24. 在进行系统测试的时候,当发现有错误时候,应该及时修正,紧接着

修正下一个错误。( Y )

25. 有的时候因为时间紧迫,可以临时安排几个程序员或者行业新手做测

试工作。( X )

26. 软件质量的要求是要满足软件的功能性需求。( X )

27. 在整个软件团队中,对软件测试人员的要求比较低,会操作计算机、

有一定的软件使用经验就可以。( X )

28. 在整个软件生命周期中的每个阶段、每个时刻都存在着软件测试活动,

软件测试伴随着软件开发。( Y )

29. 在整个开发周期中要对测试用例进行有效的跟踪和维护。( Y ) 30. 功能测试也可以采用白盒测试的方法。(X )

第 14 页 共 37 页

31. 能够尽可能早的有的时候因为时间紧迫,可以临时安排几个程序员或

者行业新手做测试工作。( X )

32. 在实际的运用中,无论对于白盒测试和黑盒测试,通常使用其中一种

方法就可以完成对某一软件的测试工作。( X )

33. 发现软件缺陷,就能够尽可能地节约修复缺陷的成本,因此,因此在

软件的设计阶段修复缺陷的费用最低。( X )

34. 每一种测试方法都必须执行程序,才能得到最好的效果。( X ) 35. 在整个软件团队中,对软件测试人员的要求比较低,会操作计算机、

有一定的软件使用经验就可以。( X )

36. 在对软件缺陷的描述中,测试人员可以对有个人的观点,也可以对开

发人员进行评价,有利于开发人员提高开发质量。( X ) 37. 验收测试是由用户完成的。( X )

38. 在一个规范的软件的开发中,开发人员的人数一般大于测试人员的人

数。( X )

39. 在整个开发周期中要对测试用例进行有效的跟踪和维护。( Y ) 40. 功能测试也可以采用白盒测试的方法。( X ) 41. 测试应该尽可能早地进行测试。( Y )

42. 若能推迟暴露软件中的错误,则修复和改正错误所花费的代价就会降

低。( X )

43. 白盒测试仅与程序的内部结构有关,完全可以不考虑程序的功能需求。

( X )

44. 黑盒测试容易知道用户会用到那些功能,会遇到哪些问题( Y ) 45. 黑盒测试基于软件开发文档,所以也能知道软件实现了文档中的哪些

第 15 页 共 37 页

功能( Y )

46. 逻辑覆盖法是一种常用的白盒测试方法。( Y )

47. 程序中存在很多判定和条件,不可能实现100%的条件覆盖。( Y ) 48. 静态测试通过对执行程序,找到程序中的错误或者是可疑之处。( X ) 49. 在整个开发周期中要对测试用例进行有效的跟踪和维护。( Y ) 50. 在进行系统测试的时候,当发现有错误时候,应该及时修正,紧接着

修正下一个错误。( Y )

三、简答题

1. 健壮等价类测试与标准等价类测试的主要区别是什么?

解:主要区别在于健壮等价类测试在标准等价类的基础上还要进行有效取值范围之外的输入(无效输入)的测试。 2. 单元测试有哪些步骤?各个步骤有哪些实施内容?

单元测试的步骤

通常单元测试在编码阶段进行。在源程序代码编制完成,经过评审和验证,确认没有语法错误之后,就开始进行单元测试的测试用例设计。利用设计文档,设计可以验证程序功能、找出程序错误的多个测试用例。对于每一组输入,应有预期的正确结果。

模块并不是一个独立的程序,在考虑测试模块时,同时要考虑它和外界的联系,用一些辅助模块去模拟与被测模块相联系的其它模块。这些辅助模块分为两种:

驱动模块:相当于被测模块的主程序。它接收测试数据,把这些数据传送给被测模块,最后输出实测结果。

桩模块:用以代替被测模块调用的子模块。桩模块可以做少量的数据操作,不需要把子模块所有功能都带进来,但不允许什么事情也不做。

如果一个模块要完成多种功能,且以程序包或对象类的形式出现,例如Ada中的包,Modula中的模块,C++中的类。这时可以将这个模块看成由几个小程序组成。对其中的每个小程序先进行单元测试要做的工作,对关键模块还要做性能测试。对支持某些标准规程的程序,更要着手进行互联测试。有人把这种情况特别称为模块测试,以区别单元测试。

第 16 页 共 37 页

单元测试的内容

模块接口测试:对通过被测模块的数据流进行测试。为此,对模块接口,包括参数表、调用子模块的参数、全程数据、文件输入/输出操作都必须检查。

局部数据结构测试:设计测试用例检查数据类型说明、初始化、缺省值等方面的问题,还要查清全程数据对模块的影响。

路径测试:选择适当的测试用例,对模块中重要的执行路径进行测试。对基本执行路径和循环进行测试可以发现大量路径错误。

错误处理测试:检查模块的错误处理功能是否包含有错误或缺陷。例如,是否拒绝不合理的输入;出错的描述是否难以理解、是否对错误定位有误、是否出错原因报告有误、是否对错误条件的处理不正确;在对错误处理之前错误条件是否已经引起系统的干预等。

边界测试:要特别注意数据流、控制流中刚好等于、大于或小于确定的比较值时出错的可能性。对这些地方要仔细地选择测试用例,认真加以测试。

此外,如果对模块运行时间有要求的话,还要专门进行关键路径测试,以确定最坏情况下和平均意义下影响模块运行时间的因素。这类信息对进行性能评价是十分有用的。

3. 单元测试的策略主要有哪些,并简述这些策略。

单元测试策略主要有三种方式:

1.自顶向下的单元测试策略:从顶层调用的单元做成桩模块;对第二层测试,使用上面已测试的单元做驱动模块;依次类推,直到全部单元测试结束。

2.自底向上的单元测试策略:先对模块调用的最底层模块进行测试,模拟调用该模块的模块为驱动模块;其次,对上一层模块进行单元测试,用已经被测试过的模块做桩模块,依次类推,直到全部单元测试结束。

3.孤立测试的单元测试策略:无需考虑每个模块与其他模块之间的关系,分别为每个模块单独设计桩模块和驱动模块,逐一完成所有单元模块的测试。

第 17 页 共 37 页

4. 集成测试有哪些不同的集成方法?简述不同方法的特点。

解:集成测试通常有一次性集成、自顶向下集成、自底向上集成和混合集成4种集成方法。

一次性集成方法需要的测试用例数目少,测试方法简单、易行。但是由于不可避免存在模块间接口、全局数据结构等方面的问题,所以一次运行成功的可能性不大;如果一次集成的模块数量多,集成测试后可能会出现大量的错误,给程序的错误定位与修改带来很大的麻烦;即使集成测试通过,也会遗漏很多错误进入系统测试。

自顶向下集成在测试的过程中,可以较早地验证主要的控制和判断点;一般不需要驱动程序,减少了测试驱动程序开发和维护的费用;可以和开发设计工作一起并行执行集成测试,能够灵活的适应目标环境;容易进行故障隔离和错误定位。但是在测试时需要为每个模块的下层模块提供桩模块,桩模块的开发和维护费用大;桩模块不能反映真实情况,重要数据不能及时回送到上层模块,导致测试不充分;涉及复杂算法和真正I/O的底层模块最易出问题,在后期才遇到导致过多的回归测试。

自底向上集成可以尽早的验证底层模块的行为;提高了测试效率;一般不需要桩模块;容易对错误进行定位。但是直到最后一个模块加进去之后才能看到整个系统的框架;驱动模块的设计工作量大;不能及时发现高层模块设计上的错误。

混合集成具有自顶向下和自底向上两种集成策略的优点,但是在被集成之前,中间层不能尽早得到充分的测试。

5. 简述基于功能分解的集成的特点,并分析其适用的应用场景。 6. 系统测试主要包括哪些内容?

解:系统测试主要包括强度测试、性能测试、恢复测试、安全测

第 18 页 共 37 页

试、可靠性测试、安装测试、容量测试和文档测试。 7. 针对某论坛,考虑其重要测试的内容。 8. 简述黑盒测试方法的特点

黑盒测试用例设计方法主要有以下几种:等价类划分法、边界值分析法、因果图法、决策表法、错误推测法等方法。

等价类划分法的特点:等价类划分法的优点是考虑了单个输入域的各类情况,避免了盲目或随机选取输入数据的布完整性和覆盖的不稳定性。

等价类划分法虽然简单易用,但是没有对组合情况进行充分的考虑。需要结合其他测试用例设计的方法进行补充。

边界值分析法的特点:1)边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件。

2)边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况。

因果图法的特点:1、考虑输入条件间的组合关系。2、考虑输出条件对输入条件的信赖关系,即因果关系。3、测试用例发现错误的效率高。4、能检查出功能说明书中的某些不一致或遗漏。

决策表法的特点:在一个程序中,如果输入输出比较多,输入之间,输出之间相互制约的条件比较多,在这种情况下使用决策表更合适,它可以清楚地表达它们之间的各种复杂关系。

错误推测法的特点:没有确定的步骤,很大程度上是凭经验进行的。 9. 健壮等价类测试与标准等价类测试的主要区别是什么?

主要区别在于健壮等价类测试在标准等价类的基础上还要进行有效取值范围之外的输入(无效输入)的测试。 10. 简述单元测试的目的和意义。

目的:是暴漏出失败和错误。失败的可能性是可预期的,并且可以使用断言来进行检查。而错误则是不可预期的问题

意义:(1)提前发现问题并解决可以节约时间(2)是测试阶段的基础,为后期的集成测试和系统测试做好准备;(3)对单元独立测试,容易发现问题,减少成本。

11. 单元测试的策略主要有哪些,并简述这些策略。

12. 简述基于调用图的集成的特点,并分析其适用的应用场景。

第 19 页 共 37 页

13. 什么是系统测试?

系统测试是指测试整个系统已确定其是否能够提供应用的所有需求行为,包含了多种测试活动,主要分为功能性测试和非功能测试。 14. 针对某杀毒软件(如360杀毒),考虑其需要测试的内容。

主要是采用黑盒测试的方法,包括程序各功能性测试、界面友好性测试、时效性测试、安装/卸载测试、用户说明书测试、与其他软件的兼容性、与特定硬件的兼容性、可靠性(如长时间运行,休眠/唤醒等)、合法性(版权标示验证)等。 15. 什么是软件测试计划?

是指导测试过程的纲领性文件,包含产品概述、测试策略、测试方法、测试区域、测试配置、测试周期、测试资源、测试交流和风险分析等内容。 16. 制定软件测试的计划的原则有?

(1)制定测试计划应尽早开始;(2)保持测试计划的灵活性;(3)保持测试计划简洁和易读;(4)尽量争取多渠道评审测试计划;(5)计算测试计划的投入。 17. 单元测试的原则有哪些?

(1)单元测试越早进行越好;(2)单元测试应该根据《软件详细设计规格说明》进行;(3)对于修改过的代码应该重做单元测试,以保证对已发现错误的修改没有引入新的错误;(4)当测试用例的测试结果与设计规格说明书的预期结果不一致时,测试人员应该如实记录实际的测试结果;(5)单元测试应注意选择好被测试软件单元的大小;(6)一个完整的单元测试说明应该包含软件证明测试和负面测试;(7)注意使用单元测试工具。 18. 单元测试的重要性及目的是什么? 19. 系统测试与用户测试有何不同?

系统测试是测试整个系统已确定其是否能够提供应用的所有需求行为;用户测试分为体验、界面、验收、用户测试报告组成 20. 制定软件测试的计划的步骤有?

(1)产品基本情况调研;(2)测试需求说明;(3)测试的策略和记录;(4)测试资源配置;(5)计划表;(6)问题跟踪报告;(7)测试计划的评审

21. 什么是静态测试、动态测试?

第 20 页 共 37 页

静态测试:是一种不通过执行程序而进行测试的技术,只是检测和评审。动态测试:直接执行被测试程序以提供测试支持。 22. 简述单元测试的过程.

(1)准备阶段;(2)编制阶段(3)代码审查阶段;(4)单元测试阶段;(5)评审、提交阶段。 23. 什么是插桩程序设计?

是在保证被测程序原有逻辑完整性的基础上在程序中插于一些探针,通过探针的执行抛出程序运行的特征数据,通过这些数据的分析,可以获得程序的控制流和数据信息,进而得到逻辑覆盖等动态信息,从而实现测试目标的方法。

24. 简述系统测试的主要内容?

(1)功能测试。即测试软件系统的功能是否正确,其依据是需求文档,如《产品需求规格说明书》。(2)健壮性测试。即测试软件系统在异常情况下能否正常运行的能力。健壮性有两层含义:一是容错能力,二是恢复能力

25. 容量测试与压力测试的区别有哪些?

(1)压力测试是在给系统不断加压,增加并发量,直到崩溃,找到系统所能承受的极限值。(2)容量测试是在预先分析的极限值下,系统能否正常运行。

26. 如何组织软件测试团队

(1)建立合理、高效的组织结构(2)建立正确的分工体系,即角色与职责;(3)培养合格的测试人员。 27. 什么是软件测试计划?

是指导测试过程的纲领性文件,包含产品概述、测试策略、测试方法、测试区域、测试配置、测试周期、测试资源、测试交流和风险分析等内容。 28. 制定软件测试的计划的原则有?

(1)制定测试计划应尽早开始;(2)保持测试计划的灵活性;(3)保持测试计划简洁和易读;(4)尽量争取多渠道评审测试计划;(5)计算测试计划的投入。

29. 单元测试的原则有哪些?

(1)单元测试越早进行越好;(2)单元测试应该根据《软件详细设计规格说明》进行;(3)对于修改过的代码应该重做单元测试,以保证对已发现错误的修改没有引入新的错误;(4)当测试用例的测试结果与设计规

第 21 页 共 37 页

格说明书的预期结果不一致时,测试人员应该如实记录实际的测试结果;(5)单元测试应注意选择好被测试软件单元的大小;(6)一个完整的单元测试说明应该包含软件证明测试和负面测试;(7)注意使用单元测试工具。 30. 单元测试的重要性及目的是什么?

重要性:1、提前发现问题并解决可以节约时间2、是测试阶段的基础,为后期的集成测试和系统测试做好准备;3、对单元独立测试,容易发现问题,减少成本。

目的:是暴漏出失败和错误。失败的可能性是可预期的,并且可以使用断言来进行检查。而错误则是不可预期的问题 31. α测试和β测试有什么不同?

a 测试是在公司内部由用户组织与的测试;a 测试对发现缺陷是可控的,但缺陷是人数有限、地域限制。

b测试是在外部有用户进行的测试;b测试不会认真地去发现缺陷,有时仅仅是为了抢占市场。

四、综合应用题

1. 白盒测试方法的综合应用

(1) 简述白盒测试用例的设计方法。

解:白盒测试用例设计方法主要有逻辑覆盖和独立路径测试。

从覆盖源程序语句的详尽程度分析,逻辑覆盖主要有以下不同的覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。实际项目中,由于程序内部的逻辑存在不确定性和无穷性,尤其对于大规模复杂软件,不必采用所有的覆盖指标,而应根据实际情况选择合适的覆盖指标。

独立路径测试是在程序控制流图的基础上,通过分析控制结构的环路复杂性,导出可执行的独立路径集合,从而设计出相应的测试用例。设计出的测试用例要保证被测程序的每条可执行的独立路径至少被执行一次。独立路径测试给出了满足路径覆盖指标所需测试用例的下限,同时给出了语句覆盖的上限,它可以确保对所有相互独立的决策结果进行测试。 (2) 分析归纳逻辑覆盖的各种策略,并比较每种覆盖的特点,分析在怎

样的情况下采用何种覆盖方式。

解:语句覆盖是选择足够多的测试数据,使被测程序中每个语句至少执行一次。语句覆盖是最弱的逻辑覆盖标准。

判定覆盖又叫分支覆盖,它不仅每个语句必须至少执行一次,而且每个判定表达式的每种可能的结果都应该至少执行一次。判定条件覆盖比语句覆盖强,但是对程序逻辑的覆盖程度仍然不高。

第 22 页 共 37 页

条件覆盖的含义是,使判定表达式中的每个条件都取到各种可能的结果。条件覆盖通常比判定覆盖强,但是也可能有相反的情况:虽然每个条件都取到了两个不同的结果,判定表达式却始终只取一个值。

判定/条件覆盖的含义是,选取足够多的测试数据,使得判定表达式中的每个条件都取到各种可能的值,而且每个判定表达式也都取到各种可能的结果。但有时判定/条件覆盖也并不比条件覆盖更强。

条件组合覆盖是更强的逻辑覆盖标准,它要求选取足够的测试数据,使得每个判定表达式中条件的各种可能组合都至少出现一次。满足条件组合覆盖标准的测试数据,也一定满足判定覆盖、条件覆盖和判定/条件覆盖标准。因此,条件组合覆盖是前述几种覆盖标准中最强的。但是,满足条件组合覆盖标准的测试数据并不一定能使程序中的每一条路径都执行到。

路径覆盖的定义是选取足够多测试数据,使程序的每一条可能路径都至少执行一次。但在实际问题中,一个不太复杂的程序,其路径数都可能是一个庞大的数字,以致要在测试中覆盖所有的路径是不可能实现的。即使对于路径数有限的程序做到了路径覆盖,也不能保证被测程序的正确性。 (3)请按照各种覆盖方法为下述语句设计测试用例,并写出测试过程 if((a>1) and (b=0)) then x=x/a

if((a=2) or (x>1) then x=x+1

语句覆盖:CASE 1:a=2,b=0,x=3。则程序按路径ace执行,这样该程序段

第 23 页 共 37 页

的4个语句均得到执行,从而达到了语句覆盖。

断定覆盖:CASE2:a=2,b=0,x=3。CASE3:a=1,b=0,x=1。则可分别执行路径ace和abd。从而使两个判断的4个分支c、e和b、d分别得到覆盖。 条件覆盖:在上述程序段中,第一个判断应考虑到: a>1取真值,记为Ta1;

a>1取价值,即a<=1时,记为Ta2; b=0取真值,记为Tb1;

b=0取假值,即b!=0时,记为Tb2; 第二个判断应考虑到: a=2取真值,记为Ta3;

a=2取假值,即a!=2,记为Ta4; x>1取真值,记为Tx1;

x>1取假值,即x<=1,记为Tx2;

条件覆盖测试用例 测试用例 CASE4 CASE5 a 2 1 b 0 1 x 3 1 路径 ace abd 覆盖条件 Ta1,Tb1,Ta3,Tx1 Ta2,Tb2,Ta4,Tx2 以上两个测试用例把4个条件的8种情况均做了覆盖。

判断-条件覆盖:语句中两个判断各包含两个条件,这四个条件在两个判断中可能有八种组合:

1号、a>1,b=0记为Ta,Tb; 2号、a>1,b!=0记为Ta,Fb; 3号、a<=1,b=0记为Fa,Tb; 4号、a<=1,b!=0 记为Fa,Fb; 5号、a=2,x>1记为Ya,Yx; 6号、a=2,x<=1记为Ya,Nx; 7号、a!=2,x>1记为Na,Yx; 8号、a!=2,x<=1记为Na,Nx;

判定-条件覆盖 测试用例 a CASE6 CASE7 CASE8 CASE9 2 2 1 1 b 0 1 0 1 x 3 1 3 1 覆盖组合号 路径 1号,5号 2号,6号 3号,7号 4号,8号 ace abe abe abd 覆盖条件 Ta,Tb,Ya,Yx Ta,Fb,Ya,Nx Fa,Tb,Na,Yx Fa,Fb,Na,Nx 路径覆盖:根据题目语句有4条可能路径 ace记为L1; abd记为L2;

第 24 页 共 37 页

abe记为L3; acd记为L4;

路径覆盖 测试用例 CASE10 CASE11 CASE12 CASE13 a 2 1 2 3 b 0 0 1 0 2. 黑盒测试方法的综合应用

3. 案例:某保险公司的人寿保险的保费计算方式为:保费=投保额×保险费率

其中保险费率依点数不同而有别,10点几10点以上保费率为0.6%,10点一下保险费率为0.1%;而点数又是投保人的年龄,性别,混应状况和抚养人数来决定,具体规则如下表所示。

年龄 其20-39 40-59 他 26点

年龄:一位或者两位非零整数,值得有效范围是1-99 性别:一位应为字符,只能去M或者F 婚姻:字符,只能取已婚或者未婚 抚养人数:空白或一位非零整数(1-9) 点数:一位或两位非零整数,值得范围是1-99

第 25 页 共 37 页

x 3 1 1 1 覆盖路径 ace abd abe acd 性别 M 5点 F 婚姻 已婚 未婚 5点 抚养人数 1人扣0.5点,最多扣3点(四舍五入取整) 3点 3点 4点 点

要求:根据以上的案例描述,设计出能否改所有等价类的测试用例。并写出测试过程。

4. 白盒测试方法的综合应用 示例源码

Dim a,b as Integer Dim c as Double If(a>0 and b>0) Then

c = c/a End if

If(a>1 OR c >1) Then

c = c +1 End if c = b+c

第 26 页 共 37 页

要求:根据以上的示例源码,采用两种以上的白盒测试方法进行测试,要求写出详细的测试用例及测试过程,并比较你所采用的测试方法的优点和缺点。

第 27 页 共 37 页

5. 黑盒测试方法的综合应用

以“打印机打印文件”为例,用黑盒测试中的判定表法来对其进行测试。

要求:写出详细的要求写出详细的测试步骤,测试用例以及详细的测试过程。

1、 列出所有的条件桩和动作桩

条件桩:

C1:有驱动程序吗? C2:有纸张吗? C3:有墨粉吗?

第 28 页 共 37 页

动作桩:

A1:安装驱动程序 A2:加入纸张 A3:加入墨粉 A4:打印纸张 2、 确定规则个数

输入条件个数:3

每个条件的取值:”是“或”否“ 规则个数:2*2*2=8 3、 填入条件项和动作项

条件 C1 C2 C3 动作 A1 A2 A3 A4 1 Y Y Y √ 2 Y Y N √ 3 Y N Y √ 4 Y N N √ √ 5 N Y Y √ 6 N Y N √ √ 7 N N Y √ √ 8 N N N √ √ √ 4、 简化决策表,合并相似规则

没有相似规则,无需合并。 6. 白盒测试方法的综合应用

示例源码(购物车添加商品方法,判断hashmap中没有pid对应的商品为false的情况下添加product)

public void addProduct(String pid,Product product) {

第 29 页 共 37 页

if(hasmap==null) {

hashmap= new HashMap(); }

if(hashmap.containsKey(pid)==false) //购物车中不存在该商品 {

hashmap.put(pid,product); } }

要求:根据以上的示例源码,采用两种以上的白盒测试方法进行测试,要求写出详细的测试用例及测试过程,并比较你所采用的测试方法的优点和缺点

程序结构图:

第 30 页 共 37 页

语句覆盖:CASE1:hasmap==null和hashmap.containsKey(pid)==false为真,语句执行的路径ace,覆盖了程序中四个语句,达到了语句覆盖。 判定覆盖:

CASE2:hasmap==null和hashmap.containsKey(pid)==false都为真; CASE3:hasmap==null和hashmap.containsKey(pid)==false都为假; 程序中的每个判定分支都取真和取假了,达到了判定覆盖。

【优点】 判定覆盖具有比语句覆盖更强的测试能力,而且具有和语句覆盖一样的简单性,无需细分每个判定就可以得到测试用例。

【缺点】 语句覆盖的覆盖标准无法发现判定中逻辑运算的错误;判定覆盖往往大部分的判定语句是由多个逻辑条件组合而成,若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。 7. 黑盒测试方法的综合应用

案例:加法器程序计算两个1—100之间的整数和。

要求:根据以上的案例描述,采用黑盒测试方法进行测试,要求写出详细的测试用例及测试过程。

第 31 页 共 37 页

8. 白盒测试方法的综合应用

示例源码

Dim a,b as Integer Dim c as Double If(a>0 and b>0) Then

c = c/a End if

If(a>1 OR c >1) Then

第 32 页 共 37 页

c = c +1 End if c = b+c

要求:根据以上的示例源码,采用两种以上的白盒测试方法进行测试,要求写出详细的测试用例及测试过程,并比较你所采用的测试方法的优点和缺点。

第 33 页 共 37 页

6. 白盒测试方法的综合应用 (1)简述白盒测试用例的设计方法。

(2)分析归纳逻辑覆盖的各种策略,并比较每种覆盖的特点,分析在怎样的情况下采用何种覆盖方式。

(3)请按照各种覆盖方法为下述语句设计测试用例,并写出测试过程 if(a>2&&b<3&&(c>4||d<5)) {

statement; } else {

statement; }

第 34 页 共 37 页

7. 黑盒测试方法的综合应用 案例:有一报表处理系统,要求用户输入

处理报表的日期,假设日期限制在2001年1月至2020年12月,即系统只能对该段时期内的报表进行处理。如果用户输入的日期不在这个范围内,则显示错误信息。并且系统规定日期由年月的6位数字组成,前四位代表年,后两位代表月。

要求:根据以上的案例描述,采用两种以上黑盒测试方法进行测试,

要求写出详细的测试用例及测试过程。

第 35 页 共 37 页

第 36 页 共 37 页

第 37 页 共 37 页