1软件测试的目的是(

一、选择题

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

A)试验性运行软件 B)发现软件错误 C)证明软件正确 D)找出软件中全部错误

2.软件测试中白盒法是通过分析程序的( )来设计测试用例的。

A)应用范围 B)内部逻辑 C)功能 D)输入数据

3.黑盒法是根据程序的( )来设计测试用例的。

A)应用范围 B)内部逻辑 C)功能 D)输入数据

4.为了提高软件测试的效率,应该( )。

A)随机地选取测试数据 B)取一切可能的输入数据作为测试数据

C)在完成编码以后制定软件的测试计划 D)选择发现错误可能性最大的数据作为测试用例

5.与设计测试用例无关的文档是( )。

A)项目开发计划 B)需求规格说明书 C)设计说明书 D)源程序

6.测试的关键问题是( )。

A)如何组织软件评审 B)如何选择测试用例

C)如何验证程序的正确性 D)如何采用综合策略

7.软件测试用例主要由输入数据和( )两部分组成。

A)测试计划 B)测试规则 C)预期输出结果 D)以往测试记录分析

8.成功的测试是指运行测试用例后( )。

A)未发现程序错误 B)发现了程序错误 C)证明程序正确性 D)改正了程序错误

9.下列几种逻辑覆盖标准中,查错能力最强的是( )。

A)语句覆盖 B)判定覆盖 C)条件覆盖 D)条件组合覆盖

10.在黑盒测试中,着重检查输入条件组合的方法是( )。

A)等价类划分法 B)边界值分析法 C)错误推测法 D)因果图法

11.单元测试主要针对模块的几个基本特征进行测试,该阶段不能完成的测试是( )。

A)系统功能 B)局部数据结构 C)重要的执行路径 D)错误处理

12.软件测试过程中的集成测试主要是为了发现( )阶段的错误。

A)需求分析 B)概要设计 C)详细设计 D)编码

13.不属于白盒测试的技术是( )。

A)路径覆盖 B)判定覆盖 C)循环覆盖 D)边界值分析

14.集成测试时,能较早发现高层模块接口错误的测试方法为( )。

A)自顶向下渐增式测试 B)自底向上渐增式测试 C)非渐增式测试 D)系统测试

15.确认测试以( )文档作为测试的基础。

A)需求规格说明书 B)设计说明书 C)源程序 D)开发计划

16.使用白盒测试方法时,确定测试数据应根据( )和指定的覆盖标准。

A)程序内部逻辑 B)程序的复杂度 C)使用说明书 D)程序的功能

17.程序的三种基本结构是( )。

A)过程子、程序、分程序 B)顺序、选择、循环

C)递归、堆栈、队列 D)调用、返回、转移

18.结构化程序设计的一种基本方法是( )

A)筛选法 B)递归法 C)归纳法 D)逐步求精法

19.软件调试的目的是( )

A)找出错误所在并改正之 B)排除存在错误的可能性

C)对错误性质进行分类 D)统计出错的次数

20.程序三种基本结构的共同特点是( )

A)不能嵌套使用 B)只能用来写简单程序

C)已经用硬件实现 D)只有一个入口和一个出口

21.下面说法正确的是( )。

A)经过测试没有发现错误说明程序正确 B)测试的目标是为了证明程序没有错误

C)成功的测试是发现了迄今尚未发现的错误的测试 D)成功的测试是没有发现错误的测试

22.覆盖准则最强的是( )。

A)语句覆盖

C)条件覆盖

23.发现错误能力最弱的是( )。

A)语句覆盖

C)条件覆盖 B)判定覆盖 D)路径覆盖 B)判定覆盖 D)路径覆盖

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

A)条件覆盖

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

25.下面( )方法能够有效地检测输入条件的各种组合可能引起的错误。

A)等价类划分 B)边界值分析

C)错误推测 D)因果图

26.与确认测试阶段有关的文档是( )。

A)需求规格说明书 B)概要设计说明书

C)详细设计说明书 D)源程序

27.超出软件工程范围的测试是( )。

A)单元测试

C)确认测试 B)集成测试 D)系统测试

28.软件测试不需要了解软件设计的( )。

A)功能

C)处理过程 B)内部结构 D)条件

29.( )方法需要考察模块间的接口和各模块之间的联系。

A)单元测试

C)确认测试

30.调试应该由( )完成。

A)与源程序无关的程序员

C)不了解软件设计的机构 B)编制该源程序的程序员 D)设计该软件的机构 B)集成测试 D)系统测试

31.基线是软件生存期中各开发阶段的一个特定点,它可作为一个检查点,当采用的基线发生错误时,我们可以返回到最近和最恰当的( )上。

A)配置项 B)程序 C)基线 D)过程

32.版本管理是对系统不同版本进行的( )过程

A)标识与跟踪 B)标识变更 C)发布变更 D)控制变更

33.在变更控制中,管理各个用户存取和修改一个特定软件配置对象的权限是( )。

A)异步控制

B)同步控制 D)基线控制 C)存取控制

34. 在配置管理中,“登入”和“检出”处理实现了两个重要的变更控制要素,即同步控制和

( )。

A)异步控制

C)基线控制 B)同步控制 D)存取控制

35. 按照软件配置管理的原始指导思想,受控制的对象应是( )。

A)软件元素 B)软件配置项

C)软件项目 D)软件过程

36. 软件配置项是软件配置管理的对象,指的是软件工程过程中所产生的( )。

A)接口 B)软件环境 C)信息项 D)版本

37.在变更控制中,可用来确保由不同用户所执行的并发控制是( )。

A)异步控制 B)同步控制 C)存取控制 D)基线控制

38.以下说法错误的是( )。

A)软件配置管理简称SCI

B)软件配置项是配置管理的基本单位

C)软件配置实际上是一动态的概念

D)软件工程过程中某一阶段的变更均要引起软件配置的变更

39.在设计人机界面时,应主要考虑的因素有( )。

A) 系统响应时间 B)错误处理 C)用户求助机制 D)以上都是

40.人机界面的风格大致经过了( )代的演变

A)一 B)二 C)三 D) 四

二、填空题

1.软件测试的目的是尽可能多地发现软件中存在的

2.测试阶段的基本任务是根据软件开发各阶段的,精心设计一组,利用这些实例执行 ,找出软件中潜在的各种 和 。

3.测试用例由两部分组成。

4.软件测试方法一般分为两大类:方法和方法。

5.动态测试通过根据动态测试又分为与两类。

6.静态测试采用和

7.人工审查程序偏重于进行检验。

8.计算机辅助静态分析利用工具对测试程序进行分析。

9.黑盒法只在软件的说明书,检查程序是否满足要求。

10.白盒法必须考虑程序的和,以检查的细节为基础,对程序中尽可能多的逻辑路径进行 。

11.白盒测试是

12.逻辑覆盖是对程序内部有存在的逻辑结构设计测试用例,根据程序内部的逻辑覆盖程度又可分为 、 、 、 、 和 6种覆盖技术。

13.实际的逻辑覆盖测试中,一般以覆盖为主设计测试用例,然后再补充部分用例,以达到 覆盖测试标准。

14.循环覆盖是对程序内部有来测试。

15.基本路径测试是在程序通过分析控制构造的复杂性,导出集合,从而设计测试用例。

16.黑盒测试是4种方法:、、 和。

17.等价类划分从程序的说明,找出一个输入条件(通常是 或 ,然后将每个输入条件划分成两个或多个 。

18.边界值分析是将测试 的测试数据。如果输入或输出域是一个有序集合,则应选取集合的 元素和 元素作为测试用例。

19.在测试程序时,根据经验或直觉推测程序中可能存在的各种错误,称为。

20.因果图的基本原理是通过画图,把用自然语言描述的转换为 ,最后为 每一列设计一个测试用例。

21.测试的综合策略是在测试中,联合使用各种方法。通常先用法设计基本的测试用例,再用 法补充一些必要的测试用例。

22.软件测试过程中需要3类信息:、和。

23.软件测试一般经过4个测试:、 。

24.从而发现模块在编码中或算法中的错误,它涉及 和 的文档。

25.单元测试主要测试5个基本特征:、。

26.在单元测试中,需要为被测模块设计模块和模块。上级调用模块, 用来代替被测模块所调用的模块。

27.集成测试指在测试基础上,将所有模块按照设计要求组装成一个完整的系统进行的测试。也称 测试或 测试。

28.集成测试的方法有两种:。

29.渐增式测试有两种不同的组装模块的方法:

30.自顶向下渐增式测试不需要编写模块,只需要编写模块,其步骤是从块开始,沿着被测程序的 的控制路径逐步向下测试,它有两种组合策略: 和 。

31.自底向上渐增式测试不需要编写模块,只需要编写

32.确认测试指检查软件的与是否与测试。

33.确认测试在模拟环境下运用参加的测试。

34.确认测试开始前需要制定报告。其测试用例要选用数据。

35.软件配置审查的任务是检查软件的所有文档资料的

36.调试也称,是在成功的测试之后才开始进行,其目的是确定错误的,并改正错误。

37.调试技术包括、 。

38.回溯法调试是从出发,而归纳法调试是从

39.被测试程序不在机器上运行,而是采用人工检测和计算机辅助分析检测的手段称为

40.用等价类划分法设计一个测试用例时,使其覆盖

41.用等价类划分法设计一个测试用例时,使其覆盖

42.在单元测试时,需要为被测模块设计

43.在集成测试时有两种测试方法,它们是

44.软件测试是为了而执行程序的过程。

45.运行被测程序的方法称为测试。

46.动态测试中,主要测试软件功能的方法称为法。

47.选择测试用例,使得被测程序中每个判定的每个分支至少执行一次,这种逻辑覆盖标准称为 。

48.要覆盖含循环结构的所有路径是不可能的,一般通过限制来测试。

49.用等价类划分法设计测试用例时,如果被测程序的某个输入条件规定了取值范围,则可确定一个合理的等在和 。

50.凭经验或直觉推测程序中可能存在的错误而设计测试用例的方法是

51.集成测试中的具体方法是

52.确认测试阶段的两项工作是。

53.在单元测试中,测试一个模块时,需要设计

54.软件配置管理,简称SCM,它用于整个软件工程过程。其主要目标是:

55.SCM是一组管理整个软件生存期各阶段中

56.基线的作用是把各阶段的开发工作划分得更加明确,便于检查与确认阶段成果。因此,基线可以作为项目的一个 。

三、名词解释

1.软件测试

2.静态测试

3.动态测试

4.黑盒测试

5.白盒测试

6.语句覆盖

7.判定覆盖

8.条件覆盖

9.判定/条件覆盖

10.条件组合覆盖

11.路径覆盖

12.测试用例

13.驱动模块

14.桩模块

15.单元测试

16.集成测试

17.确认测试

18.渐增式测试

19.非渐增式测试

20.调试

21.人的因素的含义

22.基线

23.软件配置管理

24.软件配置项

四、简答题

1.为什么说软件测试是软件开发中不可缺少的重要一环,但不是软件质量保证的安全网?

2.软件测试的目的是什么?为什么把软件测试的目的定义为只是发现错误?

3.软件测试应当遵循什么原则?为什么要遵循这些原则?

4.软件测试的步骤是什么?这些测试与软件开发各阶段之间的关系?

5.软件测试的过程是什么?

6.单元测试、集成测试和确认测试各自主要目标是什么?它们之间有什么不同?相互有什么关系?

7.什么是黑盒测试与白盒测试?它们都适应哪些测试?

8.简述软件测试与软件调试的区别。

9.软件配置管理的任务。

10.试述第三代界面的优点。

11.试述人机界面的设计过程。

五、综合题

1.变量的命名规则一般规定如下:变量名的长度不多于40个字符,第一个字符必须为英文字母,其他字母可以英文字母、数字以及下划线的任意组合。请用等价分类法设计测试用例。

2.某商场在“五一”期间,顾客购物时收费有4种情况:普通顾客一次购物累计少于100元,按A类标准收费(不打折),一次购物累计多于或等于100元,按B类标准收费(打9折);会员顾客一次购物累计少于1000元,按C类标准收费(打8折),一次购物累计等于或多于1000元,按D类标准收费(打7折)。测试对象是按以上要求计算顾客收费模块,按照路径覆盖法设计测试用例。

3.下面是某程序的流程图:

(1)计算它的环路复杂性。

(2)为了完成基本路径测试,求它的一组独立的路径。

六、选择题

1.B 2.B 3.C 4.D 5.A 6.B 7.C 8.B 9.D 10.D

11.A 12.B 13.D 14.A 15.A 16.A 17.B 18.D 19.A 20.D

21.C 22.D 23.A 24.C 25.D 26.A 27.D 28.D 29.B 30.B

31.C 32.A 33.D 34.B 35.C 36.B 37.B 38.A 39.D 40.D

七、填空题

1. 错误 测试结果

2. 文档资料 内部结构 测试用例 程序 错误 缺陷

3. 输入数据 输出数据

4. 动态测试 静态测试

5. 运行程序 测试用例 黑盒测试 白盒测试

6. 人工检测 计算机辅助静态分析

7. 编码质量 编码 软件产品

8. 静态分析 特性

9. 接口 需求规格 功能

10. 内部结构 处理过程 处理过程 测试

11. 结构 源程序 内部逻辑

12. 判定 语句覆盖 判定覆盖 条件覆盖 判定/条件覆盖 条件组合覆盖 路径覆盖

13. 条件组合 路径

14. 循环 循环次数

15. 控制流程图 环路 基本路径

16. 功能 等价类划分 边界值分析 错误推测 因果图

17. 功能 一句话 一个短语 等价类

18. 边界 边界值 第一个 最后一个

19. 错误推测法

20. 因果 功能说明 判定表 判定表

21. 测试 黑盒 白盒

22. 软件配置 测试配置 测试工具

23. 单元测试 集成测试 确认测试 系统测试

24. 单元测试 编码 详细设计

25. 模块 模块接口 局部数据结构 重要的执行路径 错误处理 边界条件

26. 驱动 桩 驱动模块 桩模块

27. 单元 组装 联合

28. 非渐增式测试 渐增式测试

29. 自顶向下结合 自底向上结合

30. 驱动 桩 顶层 软件结构图 深度优先策略 宽度优先策略

31. 桩 驱动

32. 功能 性能 需求规格 有效性

33. 黑盒 专门测试人员 用户

34. 测试 测试分析 实际运用

35. 完整性 正确性

36. 纠错 原因 位置

37. 简单调试 归纳法调试 演绎法调试 回溯法调试

38. 程序产生错误的地方 测试结果发现的线索

39.静态

40.尽可能多的

41.一个

42.驱动模块与桩模块

43.渐增式和非渐增式

44.发现错误

45.动态测试

46.黑盒法

47.判定覆盖

48.循环次数

49.两个不合理的等价类

50.错误推测法

51.渐增式和非渐增式测试方法

52.进行确认测试和软件配置审查

53.驱动模块和桩模块

54.标识变更 控制变更 确保变更正确地实现 报告有关变更

55.变更

56.检查点

八、名词解释

1. 软件测试指为了发现软件中的错误而执行软件的过程。它的目标是尽可能多地发现软件中存在的错误,将测试结果作为纠错的依据。

2. 静态测试指被测试的程序不在机器上运行,而是采用人工检测和计算机辅助静态分析的手段对程序进行检测。

3. 动态测试指通过运行程序发现错误。

4. 黑盒测试指把测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件的接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求,又称为功能测试或数据驱动测试。

5. 白盒测试指把测试对象看成一个打开的盒子,测试人员需了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。

6. 语句覆盖指设计足够的测试用例,使被测程序中每个语句至少执行一次。

7. 判定覆盖指设计足够的测试用例,使被测程序中每个判定表达式至少获得一次“真”值或“假”值,从而使程序的每个分支至少都通过一次,因此判定覆盖又称分支覆盖。

8. 条件覆盖指设计足够测试用例,使判定表达式中每个条件的各种可能的值至少出现一次。

9. 判定/条件覆盖指设计足够的测试用例,使得判定表达式中每个条件的所有可能取值至少出现一次,并使每个判定表达式所有可能的结果也至少出现一次。

10. 条件组合覆盖指设计足够的测试用例,使得每个判定表达式中条件的各种可能的值的组合都至少出现一次。

11. 路径覆盖指设计足够的测试用例,覆盖被测程序中所有可能的路径。

12. 测试用例指为寻找程序中的错误而精心设计的一组测试数据。

13. 驱动模块指用来模拟被测模块的上级调用模块,其功能比真正的上级模块简单得多,它只完成接受测试数据,以上级模块调用被测模块的格式驱动被测模块,接收被测模块的测试结果并输出。

14. 桩模块指用来代替被测试模块所调用的模块,其作用是返回被测试模块所需的信息。

15. 单元测试指对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误。

16. 集成测试指在单元测试基础上,将所有模块按照设计要求组装成一个完整的系统进行的测试。也称组装测试或联合测试。

17. 确认测试指检查软件的功能与性能是否与需求规格说明书中确定的指标相符合,又称有效性测试。

18. 渐增式测试指逐个把未经过测试的模块组装到已经过测试的模块上去,进行集成测试。每加入一个新模块进行一次集成测试,重复此过程直到程序组装完毕。

19. 非渐增式测试指首先对每个模块分别进行单元测试,然后把所有的模块按设计要求组装在一起进行测试。

20. 调试指确定错误的原因和位置,并改正错误的过程,也称纠错。

21. 1)人对感知过程的认识,包括视觉、阅读时的认知心理、记忆、归纳与演绎推理等; 2)用户已有的技能和行为方式;

3)用户所要求的完成的整个任务以及用户对人机交互部分的特殊要求。

22. 已经通过正式复审和批准的某规约或产品,它因此可以作为进一步开发的基础,并且只能遵循正式的变化控制过程得到改变。

23. 软件配置管理,简称SCM,它用于整个软件工程过程。其主要目标是:标识变更、控制变更、确保变更正确地实现、报告有关变更。SCM是一组管理整个软件生存期各阶段中变更的活动。

24. 软件配置项是软件工程中产生的信息项,它是配置管理的基本单位,对已成为基线的SCI,虽然可以修改,但必须按照一个特殊的正确的过程进行评估,确认每一处的修改。 九、简答题

1. ① 软件测试是软件开发中不可缺少的重要一环,原因是:

· 测试的工作量约占整个项目开发工作量的40%左右,几乎一半。如果是关系到人的生命安全的软件,测试的工作量还要成倍增加。

· 软件测试代表了需求分析、设计、编码的最终复审。

② 软件测试不是软件质量保证的安全网,因为软件测试只能发现错误,不能保证没有错误。 2. 软件测试的目的有:

① 软件测试是为了发现错误而执行程序的过程。 ② 一个好的测试用例能够发现至今尚未发现的错误。 ③ 一个成功的测试是发现了至今尚未发现的错误。

软件测试的目标定义为只是发现错误,原因是软件测试可以有两个目标,一个是预防错误,另一个是发现错误。由于软件开发是人的创造性劳动,人的活动不可能完美无缺,错误可能发生在任何一个阶段,因此预防错误这一目标几乎是不可实现的,所以软件测试的目标定义为只是发现错误。

3. 软件测试应当遵循原则如下:

① 用例由输入数据和预期的输出数据两部分组成,因为这样便于对照检查,做到有的放矢。 ② 用例不仅选用合理的输入数据,还要选择不合理的输入数据。因为当以特殊方式使用程序时,会突然发现程序中有许多错误,故使用预期的不合理的输入数据进行程序测试,比用合理的输入数据收获要大,从而能更多地发现错误,提高程序可靠性。

③ 除了检查程序是否做了它应该做的事,还应该检查程序是否做了它不应该做的事,因为如果程序做了它不应该做的事,即使程序能做它应该做的事,程序也是错误的。 ④ 应制定测试计划并严格执行,因为这样可以排除随意性。

⑤ 长期保留测试用例,因为测试用例的设计耗费很大的工作量,而修改后的程序可能有新的错误,需要进行回归测试,故必须将测试用例作为文档保存,使测试具有可重复性,同时测试用例是将来系统维护测试与确认的依据,保存测试用例也为以后的维护提供方便。

⑥ 对发现错误较多的程序段,应进行更深入的测试,因为发现错误较多的程序段,其质量较差,同时在修改错误过程中又容易引入新的错误。

⑦ 程序员避免测试自己设计的程序,因为测试目的是找错。从心理学角度讲,程序员大多对自己的程序存有偏见,总认为没有错误或错误不大,另外程序员对需求规格说明的理解而引入的错误则更难发现,应该由别人或另外的机构来测试会更客观、更有效。 4. ① 软件测试的步骤如图7-3所示。

图7-3 软件测试的步骤

② 这些测试与软件开发各阶段之间的关系如图7-2所示。因为系统测试已经超出了软件工程的范围,所以图7-2中的系统测试不包括在内。

5. 软件测试是一个规则的过程,包括测试设计、测试执行以及测试结果比较等。

① 测试设计:根据软件开发各阶段的文档资料和程序的内部结构,利用各种设计测试用例技术精心设计测试用例。

② 测试执行:利用这些测试用例执行程序,得到测试结果。

③ 测试结果比较:将预期的结果与实际测试结果进行比较,如果二者不符合,对于出现的错误进行纠错,并修改相应文档。修改后的程序还要进行再次测试,直到满意为止。如果测试发现不了错误,可能由于测试配置考虑不周到,应考虑重新制定测试方案,设计测试用例。 6. 单元测试、集成测试和确认测试各自主要目标是:

① 单元测试的主要目标是检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误。

② 集成测试的主要目标是检查与设计相关的软件体系结构的有关问题。

③ 确认测试的主要目标是检查已实现的软件是否满足需求规格说明书中确定的各种需求。 单元测试、集成测试和确认测试之间的不同如下:

① 测试内容不同:单元测试集中于单个模块的功能和结构检验,其测试内容主要包括模块接口、局部数据结构、重要的执行路径、错误处理和边界测试;集成测试集中于模块组合的功能和软件结构检验,其测试内容主要包括模块组装中可能出现的问题,即数据穿过接口可能丢失、一个模块可能破坏另一个模块的内容、子功能组装可能不等于主功能、全程数据结构问题、误差累积问题;确认测试集中于论证软件需求的可追溯性,主要包括测试软件功能和性能是否与软件需求一致、测试软件配置的所有程序与文档是否正确完整而且一致。

② 测试的方法不同:单元测试总是使用白盒测试法,为被测模块设计驱动模块和桩模块;集成测试使用渐增式测试和非渐增式测试,渐增式测试又有分为自顶向下结合法和自底向上结合法;确认测试总是使用黑盒测试法。

③ 发现的错误不同:单元测试发现的错误主要是在编码阶段产生的错误,集成测试发现的错误主要是在设计阶段产生的错误,确认测试发现的错误主要是在需求分析阶段产生的错误。 ④ 涉及的文档不同:单元测试涉及编码和详细设计文档,集成测试涉及详细设计文档和概要设计文档,确认测试涉及软件需求规格说明书和用户手册。

三者相互关系是:单元测试、集成测试和确认测试是顺序实现的。首先单元测试对各个模块进行测试,然后集成测试以单元测试为基础,将所有已测模块按照设计要求组装成一个完整的系统,对模块组合的功能和软件结构检验进行测试,最后确认测试是以集成测试为基础,测试集成的软件是否满足需求规格说明书中确定的各种需求。 7. ① 黑盒测试指把测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件的接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求,又称

为功能测试或数据驱动测试。

② 白盒测试指把测试对象看成一个打开的盒子,测试人员需了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。

③ 白盒测试适应的测试有单元测试、逻辑覆盖(按逻辑覆盖程度不同,有语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。)、循环覆盖(限制循环次数,有单循环和嵌套循环)和基本路径测试。

④ 黑盒测试适应的测试有:确认测试、等价类划分、边界值分析、错误推测和因果图。 8. 软件测试与软件调试在目的、技术和方法等方面存在很大的区别,主要表现在: ① 测试从一个侧面证明程序员的失败,而调试是为了证明程序员的正确。

② 测试从已知条件开始,使用预先定义的程序,且有预知的结果,不可预见的只是程序是否通过测试。调试一般以不可知的内部条件开始,除统计性调试外,结果是不可预见的。 ③ 测试是有计划的,并要进行测试设计,而调试是不受时间约束的。

④ 测试是一个发现错误、改正错误、重新测试的过程,而调试是一个推理过程。

⑤ 测试的执行是有规程的,而调试的执行往往要求程序员进行必要的推理及知觉的飞跃。 ⑥ 测试经常由独立的测试组在不了解软件设计的前提下完成,而调试必须由了解详细设计的程序员完成。

⑦大多数测试的执行和设计可由工具支持,而调试时,程序员能利用的工具主要是调试器。 十、综合题

1.① 划分等价类下表。

等价类划分表

② 设计测试用例下表。

2.① 被测模块的程序流程图如图所示。

被测模块的程序流程图

② 按照路径覆盖法设计测试用例如下:

是会员,累计消费900元, 覆盖路径127 是会员,累计消费2000元, 覆盖路径128 不是会员,累计消费80元, 覆盖路径134 不是会员,累计消费300元, 覆盖路径135 3.(a) 环路复杂性=判断数+1=6+1=7(个)

(b) 路径1: 0 —①— 13 — 19

路径2: 0 —②—③— 14 — 19 路径3: 0 —②—④—⑤— 15 — 19 路径4: 0 —②—④—⑥—⑦— 16 — 19 路径5: 0 —②—④—⑥—⑧—⑨— 17 — 19 路径6: 0 —②—④—⑥—⑧—⑩— 18 — 19 路径7: 0 —②—④—⑥—⑧—⑩— 12 — 19 4.(1) 划分等价类见表1。

表1 等价类划分表

(2) 设计测试用例见表2。

5① 划分等价类并编号,如下表所示。

十六进制整型常量输入条件的等价类表

② 为合理等价类设计测试用例,表中有三个合理等价类,两个例子。

6.(1) 被测模块的程序流程图如下图所示。

(2) 按照路径覆盖法设计测试用例如下: 是会员,累计消费900元,覆盖路径127 是会员,累计消费2000元,覆盖路径128 不是会员,累计消费80元,覆盖路径134 不是会员,累计消费300元,覆盖路径135

2.

4.变量的命名规则一般规定如下:变量名的长度不多于40个字符,第一个字符必须为英文字母,其他字母可以是英文字母、数字以及下划线的任意组合。请用等价分类法设计测试用例。

5.根据下列条件使用等价划分法设计测试用例。

某8位微机,其十六进制常数定义为:以0x或0X开头的数是十六进制整数,其值的范围是-7f~7f(表示十六进制的大小写字母不加区别),如0X13,0X6A,-0X3c。

6.某商场在“五一”期间,顾客购物时收费有4种情况:普通顾客一次购物累计少于100元,按A类标准收费(不打折),一次购物累计多于或等于100元,按B类标准收费(打9折);会员顾客一次购物累计少于1000元,按C类标准收费(打8折),一次购物累计等于或多于1000元,按D类标准收费(打7折)。测试对象是按以上要求计算顾客收费的模块,按照路径覆盖法设计测试用例。

以下是测试用例的覆盖

(1) 正常的不等边三角形 (2) 正常的等边三角形

(3) 正常的等腰三角形,包括两条相等的边的三种不同的排列方法

(4) 正常的直角三角形

(5) 正常等腰直角三角形,包括两边相等的三种不同的排列方法 (6) 退化的三角形(即,两边之和等于第三边),包括三种不同的排列方法

(7) 三条边不能构成三角形(两边之和小于第三边),包括三种排列方法

(8) 一条边长度为零,两条边为零,三边为零的9种排列方法 (9) 输入数据包含负数

(10) 输入数据不全(只知道2边的长度不知道第三边) (11) 输入的数据不符合程序规定的数据类型.

TC(测试用例)ID号

场景/条件

PIN

输入面

(或选择)的金额

CW1 CW2

场景1:成功提款 场景2:ATM内没有现金

场景3:ATM内现金不足

场景4:PIN有误

CW4 (还有不止一次输入机

会)

场景4:PIN有误(还有一次输入机会)

场景4:PIN有误(不再有输入机会)

I

V

n/a

V

V

I

V

n/a

V

V

V V

V V

V V

V V

V I

成功提款 提款选项不可用,用例结束

警告消息,返

V

V

V

V

I

回基本流步骤6,输入金额

警告消息,返回基本流步骤 4,输入 PIN

警告消息,返回基本流步骤 4,输入 PIN

V

n/a

V

V

警告消息,卡予保留,用例结束

ATM内的金金额

预期结果

CW3

CW5

CW6 I

2)设计测试用例,以便覆盖所有的有效等价类在表中列出了3个有效等价类,编号分别为①、⑤、⑧,设计的测试用例如下:

测试数据 期望结果 覆盖的有效等价类 200211 输入有效 ①、⑤、⑧

3)为每一个无效等价类设计一个测试用例,设计结果如下: 测试数据 期望结果 覆盖的无效等价类 95June 无效输入 ② 20036 无效输入 ③ 2001006 无效输入 ④ 198912 无效输入 ⑥ 200401 无效输入 ⑦ 200100 无效输入 ⑨ 200113 无效输入 ⑩

3.NextDate 函数包含三个变量:month 、 day 和 year ,函数的输出为输入日期后一天的日期。 例如,输入为 2006年3月 7日,则函数的输出为 2006年3月8日 。要求输入变量 month 、 day 和 year 均为整数值,并且满足下列条件:

①1≤month≤12 ②1≤day≤31

③1920≤year≤2050 1)有效等价类为:

M1={月份:1≤月份≤12} D1={日期:1≤日期≤31} Y1={年:1812≤年≤2012}

2)若条件 ① ~ ③中任何一个条件失效,则 NextDate 函数都会产生一个输出,指明相应的变量超出取值范围,比如 "month 的值不在 1-12 范围当中 " 。显然还存在着大量的 year 、 month 、 day 的无效组合, NextDate 函数将这些组合作统一的输出: " 无效输入日期 " 。其无效等价类为:

M2={月份:月份12} D2={日期:日期31} Y2={年:年2012} 弱一般等价类测试用例

月份 日期 年 预期输出 6 15 1912 1912年6月16日 强一般等价类测试用例同弱一般等价类测试用例 注:弱--有单缺陷假设;健壮--考虑了无效值

(一)弱健壮等价类测试

用例ID 月份 日期 年 预期输出 WR1 6 15 1912 1912年6月16日

WR2 -1 15 1912 月份不在1~12中 WR3 13 15 1912 月份不在1~12中 WR4 6 -1 1912 日期不在1~31中 WR5 6 32 1912 日期不在1~31中 WR6 6 15 1811 年份不在1812~2012中 WR7 6 15 2013 年份不在1812~2012中

(二)强健壮等价类测试

用例ID 月份 日期 年 预期输出 SR1 -1 15 1912 月份不在1~12中 SR2 6 -1 1912 日期不在1~31中 SR3 6 15 1811 年份不在1812~2012中 SR4 -1 -1 1912 两个无效一个有效 SR5 6 -1 1811 两个无效一个有效 SR6 -1 15 1811 两个无效一个有效 SR7 -1 -1 1811 三个无效

4.佣金问题等价类测试用例,它是根据佣金函数的输出值域定义等价类,来改进测试用例集合。 输出销售额≤1000元 佣金10%

10001800 佣金=220+(销售额-1800)*20%

测试用例 枪机(45) 枪托(30) 枪管(25) 销售额 佣金 1 5 5 5 500 50 2 15 15 15 1500 175 3 25 25 25 2500 360 根据输出域选择输入值,使落在输出域等价类内,可以结合弱健壮测试用例结合。

边界值分析方法:

一.方法简介

1.定义:边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。

2.与等价划分的区别

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

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

3.边界值分析方法的考虑:

长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。

使用边界值分析方法设计测试用例,首先应确定边界情况。通常输入和输出等价类的边界,就是应着重测试的边界情况。应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。

4.常见的边界值

1)对16-bit 的整数而言 32767 和 -32768 是边界 2)屏幕上光标在最左上、最右下位置 3)报表的第一行和最后一行 4)数组元素的第一个和最后一个

5)循环的第 0 次、第 1 次和倒数第 2 次、最后一次

5.边界值分析

1)边界值分析使用与等价类划分法相同的划分,只是边界值分析假定错误更多地存在于划分的边界上,因此在等价类的边界上以及两侧的情况设计测试用例。

例:测试计算平方根的函数 --输入:实数 --输出:实数

--规格说明:当输入一个0或比0大的数的时候,返回其正平方根;当输入一个小于0的数时,显示错误信息"平方根非法-输入值小于0"并返回0;库函数Print-Line可以用来输出错误信息。

2)等价类划分:

I.可以考虑作出如下划分: a、输入 (i)=0 b、输出 (a)>=0 和 (b) Error II.测试用例有两个:

a、输入4,输出2。对应于 (ii) 和 (a) 。

b、输入-10,输出0和错误提示。对应于 (i) 和 (b) 。

3)边界值分析:

划分(ii)的边界为0和最大正实数;划分(i)的边界为最小负实数和0。由此得到以下测试用例: a、输入 {最小负实数} b、输入 {绝对值很小的负数} c、输入 0

d、输入 {绝对值很小的正数} e、输入 {最大正实数}

4)通常情况下,软件测试所包含的边界检验有几种类型:数字、字符、位置、重量、大小、速度、方位、尺寸、空间等。

5)相应地,以上类型的边界值应该在:最大/最小、首位/末位、上/下、最快/最慢、最高/最低、 最短/最长、 空/满等情况下。

6)利用边界值作为测试数据 项 边界值

测试用例的设计思路 字符

起始-1个字符/结束+1个字符

假设一个文本输入区域允许输入1个到255个 字符,输入1个和255个字符作为有效等价类;输入0个和256个字符作为无效等价类,这几个数值都属于边界条件值。

数值

最小值-1/最大值+1

假设某软件的数据输入域要求输入5位的数据值,可以使用10000作为最小值、99999作为最大值;然后使用刚好小于5位和大于5位的 数值来作为边界条件。

空间

小于空余空间一点/大于满空间一点

例如在用U盘存储数据时,使用比剩余磁盘空间大一点(几KB)的文件作为边界条件。

7)内部边界值分析:

在多数情况下,边界值条件是基于应用程序的功能设计而需要考虑的因素,可以从软件的规格说明或常识中得到,也是最终用户可以很容易发现问题的。然而,在测试用例设计过程中,某些边界值条件是不需要呈现给用户的,或者说用户是很难注意到的,但同时确实属于检验范畴内的边界条件,称为内部边界值条件或子边界值条件。

内部边界值条件主要有下面几种:

a)数值的边界值检验:计算机是基于二进制进行工作的,因此,软件的任何数值运算都有一定的范围限制。

项 范围或值 位(bit) 0或者1

字节(byte) 0——225

字(word)

0~65535(单字)或 0~4294967295(双字) 千(K) 1024 兆(M) 1048576 吉(G) 1073741824

b)字符的边界值检验:在计算机软件中,字符也是很重要的表示元素,其中ASCII和Unicode是常见的编码方式。下表中列出了一些常用字符对应的ASCII码值。

字符 ASCII码值 字符 ASCII码值 空 (null) 0 A 65

空格 (space) 32 a 97 斜杠 ( / ) 47 Z 90 0 48 z 122 冒号 ( : ) 58

单引号 ( ‘ ) 96 @ 64

c)其它边界值检验

6.基于边界值分析方法选择测试用例的原则

1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。

例如,如果程序的规格说明中规定:"重量在10公斤至50公斤范围内的邮件,其邮费计算公式为„„"。作为测试用例,我们应取10及50,还应取10.01,49.99,9.99及50.01等。

2)如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据。

比如,一个输入文件应包括1~255个记录,则测试用例可取1和255,还应取0及256等。 3)将规则1)和2)应用于输出条件,即设计测试用例使输出值达到边界值及其左右的值。 例如,某程序的规格说明要求计算出"每月保险金扣除额为0至1165.25元",其测试用例可取0.00及1165.24、还可取一0.01及1165.26等。

再如一程序属于情报检索系统,要求每次"最少显示1条、最多显示4条情报摘要",这时我们应考虑的测试用例包括1和4,还应包括0和5等。

4)如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。

5)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。 6)分析规格说明,找出其它可能的边界条件。

二.实战演习

1.现有一个学生标准化考试批阅试卷,产生成绩报告的程序。其规格说明如下:程序的输入文件由一些有80个字符的记录组成,如右图所示,所有记录分为3组:

①标题:这一组只有一个记录,其内容为输出成绩报告的名字。

②试卷各题标准答案记录:每个记录均在第80个字符处标以数字"2"。该组的第一个记录的第1至第3个字符为题目编号(取值为1一999)。第10至第59个字符给出第1至第50题的答案(每个合法字符表示一个答案)。该组的第2,第3„„个记录相应为第51至第100,第101至第150,„题的答案。

③每个学生的答卷描述:该组中每个记录的第80个字符均为数字"3"。每个学生的答卷在若干个记录中给出。如甲的首记录第1至第9字符给出学生姓名及学号,第10至第59字符列出的是甲所做的第1至第50题的答案。若试题数超过50,则第2,第3„„纪录分别给出他的第51至第100,第101至第150„„题的解答。然后是学生乙的答卷记录。

④学生人数不超过200,试题数不超过999。 ⑤程序的输出有4个报告:

a)按学号排列的成绩单,列出每个学生的成绩、名次。 b)按学生成绩排序的成绩单。 c)平均分数及标准偏差的报告。

d)试题分析报告。按试题号排序,列出各题学生答对的百分比。

解答:分别考虑输入条件和输出条件,以及边界条件。给出下表所示的输入条件及相应的测试用例。

输出条件及相应的测试用例表。

2.三角形问题的边界值分析测试用例

在三角形问题描述中,除了要求边长是整数外,没有给出其它的限制条件。在此,我们将三角形每边边长的取范围值设值为[1, 100] 。

3.NextDate函数的边界值分析测试用例

在NextDate函数中,隐含规定了变量mouth和变量day的取值范围为1≤mouth≤12和1≤day≤31,并设定变量year的取值范围为1912≤year≤2050 。

错误推测方法

一. 方法简介

1. 定义:基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法。

2. 错误推测方法的基本思想:

列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例。

1) 例如, 输入数据和输出数据为0的情况;输入表格为空格或输入表格只有一行。 这些都是容易发生错误的情况。可选择这些情况下的例子作为测试用例。

2) 例如,前面例子中成绩报告的程序,采用错误推测法还可补充设计一些测试用例:

I. 程序是否把空格作为回答

II. 在回答记录中混有标准答案记录

III. 除了标题记录外,还有一些的记录最后一个字符即不是2也不是3

IV. 有两个学生的学号相同

V. 试题数是负数。

3) 再如,测试一个对线性表(比如数组)进行排序的程序,可推测列出以下几项需要特别测试的情况:

I. 输入的线性表为空表;

II. 表中只含有一个元素;

III. 输入表中所有元素已排好序;

IV. 输入表已按逆序排好;

V. 输入表中部分或全部元素相同。

二. 实战演习

暂无

因果图方法

一. 方法简介

1.定义:是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。

2.因果图法产生的背景:

等价类划分法和边界值分析方法都是着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视了。

如果在测试时必须考虑输入条件的各种组合,则可能的组合数目将是天文数字,因此必须考虑采用一种适合于描述多种条件的组合、相应产生多个动作的形式来进行测试用例的设计,这就需要利用因果图(逻辑模型)。

3.因果图介绍

1) 4种符号分别表示了规格说明中向4种因果关系。

2) 因果图中使用了简单的逻辑符号,以直线联接左右结点。左结点表示输入状态(或称原因),右结点表示输出状态(或称结果)。

3) Ci表示原因,通常置于图的左部;ei表示结果,通常在图的右部。Ci和ei均可取值0或1,0表示某状态不出现,1表示某状态出现。

4. 因果图概念

1) 关系

①恒等:若ci是1,则ei也是1;否则ei为0。

②非:若ci是1,则ei是0;否则ei是1。

③或:若c1或c2或c3是1,则ei是1;否则ei为0。“或”可有任意个输入。

④与:若c1和c2都是1,则ei为1;否则ei为0。“与”也可有任意个输入。

2) 约束

输入状态相互之间还可能存在某些依赖关系,称为约束。例如, 某些输入条件本身不可能同时出现。输出状态之间也往往存在约束。在因果图中,用特定的符号标明这些约束。

A.输入条件的约束有以下4类:

① E约束(异):a和b中至多有一个可能为1,即a和b不能同时为1。

② I约束(或):a、b和c中至少有一个必须是1,即 a、b 和c不能同时为0。

③ O约束(唯一);a和b必须有一个,且仅有1个为1。

④R约束(要求):a是1时,b必须是1,即不可能a是1时b是0。

B.输出条件约束类型

输出条件的约束只有M约束(强制):若结果a是1,则结果b强制为0。

5. 采用因果图法设计测试用例的步骤:

1)分析软件规格说明描述中, 那些是原因(即输入条件或输入条件的等价类),那些是结果(即输出条件), 并给每个原因和结果赋予一个标识符。

2)分析软件规格说明描述中的语义,找出原因与结果之间, 原因与原因之间对应的关系,根据这些关系,画出因果图。

3)由于语法或环境限制, 有些原因与原因之间,原因与结果之间的组合情况不可能出现,为表明这些特殊情况, 在因果图上用一些记号表明约束或限制条件。

4)把因果图转换为判定表。

5)把判定表的每一列拿出来作为依据,设计测试用例。

二. 实战演习

1. 某软件规格说明书包含这样的要求:第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改,但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M。

解答:

1) 根据题意,原因和结果如下:

原因:

1——第一列字符是A;

2——第一列字符是B;

3——第二列字符是一数字。

结果:

21——修改文件;

22 ——给出信息L;

23——给出信息M。

2) 其对应的因果图如下:

11为中间节点;考虑到原因1和原因2不可能同时为1,因此在因果图上施加E约束。

3)根据因果图建立判定表。

表中8种情况的左面两列情况中,原因①和原因②同时为1,这是不可能出现的,故应排除这两种情况。表的最下一栏给出了6种情况的测试用例,这是我们所需要的数据。

2.有一个处理单价为5角钱的饮料的自动售货机软件测试用例的设计。其规格说明如下:若投入5角钱或1元钱的硬币,押下〖橙汁〗或〖啤酒〗的按钮,则相应的饮料就送出来。若售货机没有零钱找,则一个显示〖零钱找完〗的红灯亮,这时在投入1元硬币并押下按钮后,饮料不送出来而且1元硬币也退出来;若有零钱找,则显示〖零钱找完〗的红灯灭,在送出饮料的同时退还5角硬币。

1) 分析这一段说明,列出原因和结果

原因:

1.售货机有零钱找

2.投入1元硬币

3.投入5角硬币

4.押下橙汁按钮

5.押下啤酒按钮

结果:

21.售货机〖零钱找完〗灯亮

22.退还1元硬币

23.退还5角硬币

24.送出橙汁饮料

25.送出啤酒饮料

2)画出因果图,如图所示。所有原因结点列在左边,所有结果结点列在右边。建立中间结点,表示处理的中间状态。中间结点:

11. 投入1元硬币且押下饮料按钮

12. 押下〖橙汁〗或〖啤酒〗的按钮

13. 应当找5角零钱并且售货机有零钱找

14. 钱已付清

3)转换成判定表:

4) 在判定表中,阴影部分表示因违反约束条件的不可能出现的情况,删去。第16列与第32列因什么动作也没做,也删去。最后可根据剩下的16列作为确定测试用例的依据。

判定表驱动分析方法

一. 方法简介

1.定义:判定表是分析和表达多逻辑条件下执行不同操作的情况的工具。

2.判定表的优点

能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用判定表能够设计出完整的测试用例集合。

在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:针对不同逻辑条件的组合值,分别执行不同的操作。判定表很适合于处理这类问题。

3.“阅读指南”判定表

4. 判定表通常由四个部分组成如下图所示。

1)条件桩(Condition Stub):列出了问题得所有条件。通常认为列出的条件的次序无关紧要。

2)动作桩(Action Stub):列出了问题规定可能采取的操作。这些操作的排列顺序没有约束。

3)条件项(Condition Entry):列出针对它左列条件的取值。在所有可能情况下的真假值。

4)动作项(Action Entry):列出在条件项的各种取值情况下应该采取的动作。

5.规则及规则合并

1)规则:任何一个条件组合的特定取值及其相应要执行的操作称为规则。在判定表中贯穿条件项和动作项的一列就是一条规则。显然,判定表中列出多少组条件取值,也就有多少条规则,既条件项和动作项有多少列。

2)化简:就是规则合并有两条或多条规则具有相同的动作,并且其条件项之间存在着极为相似的关系。

6.规则及规则合并举例

1)如下图左端,两规则动作项一样,条件项类似,在1、2条件项分别取Y、N时,无论条件3取何值,都执行同一操作。即要执行的动作与条件3无关。于是可合并。“-”表示与取值无关。

2)与上类似,下图中,无关条件项“-”可包含其他条件项取值,具有相同动作的规则可合并。

3)化简后的读书指南判定表

1

2

3

4

你觉得疲倦吗?

-

-

Y

N

你对内容感兴趣吗?

Y

Y

N

N

书中内容使你胡涂吗?

Y

N

-

-

请回到本章开头重读

x

继续读下去

X

跳到下一章去读

x

停止阅读,请休息

x

7.判定表的建立步骤:(根据软件规格说明)

1)确定规则的个数.假如有n个条件。每个条件有两个取值(0,1),故有2n种规则。

2)列出所有的条件桩和动作桩。

3)填入条件项。

4)填入动作项。等到初始判定表。

5)简化.合并相似规则(相同动作)。

二. 实战演习

1.问题要求:”„„对功率大于50马力的机器、维修记录不全或已运行10年以上的机器,应给予优先的维修处理„„” 。这里假定,“维修记录不全”和“优先维修处理”均已在别处有更严格的定义 。请建立判定表。

解答:

①确定规则的个数:这里有3个条件,每个条件有两个取值,故应有2*2*2=8种规则。

②列出所有的条件茬和动作桩:

③填入条件项。可从最后1行条件项开始,逐行向上填满。如第三行是: Y N Y N Y N Y N,第二行是: Y Y N N Y Y N N等等。

④填入动作桩和动作顶。这样便得到形如图的初始判定表。

1

2

3

4

5

6

7

8

功率大于50马力吗?

Y

Y

Y

Y

N

N

N

N

维修记录不全吗?

Y

Y

N

N

Y

Y

N

N

运行超过10年吗?

Y

N

N

Y

N

Y

N

进行优先处理

x

x

X

X

X

作其他处理

X

x

x

初始判定表

⑤化简。合并相似规则后得到图。

1

2

3

4

5

功率大于50马力吗?

Y

Y

Y

N

N

维修记录不全吗?

N

N

-

-

运行超过10年吗?

-

Y

N

Y

N

进行优先处理

x

x

X

作其他处理

x

x

2.NextData函数的精简决策表

M1={月份, 每月有30天}

M2={月份, 每月有31天}

M3={月份,2月}

D1={日期,1~28}

D2={日期,29}

D3={日期,30}

D4={日期,31}

Y1 ={年:年是闰年}

有29=512条规则 12月末31日和其它31 日月份的31日处理不同 平年2月28日处理不同 于2月27日

Y2 ={年:年不是闰年}

改进为

M1={月份: 每月有30天}

M2={月份: 每月有31天,12月除外}

M4={月份:12月}

M3={月份:2月}

D1={日期:1

D2={日期:28}

D3={日期:29}

D4={日期:30}

D5={日期:31}

Y1 ={年:年是闰年}

Y2 ={年:年不是闰年}

边界值分析法测试用例(续)

例1:有两个输入变量x1(a≤x1≤b)和x2(c≤x2≤d)的程序F的边界值分析测试用例如下:

{ , , , , ,

, , , }

边界值分析法测试用例(续)

例2:有二元函数f(x,y),其中x∈[1,12],y∈[1,31]。 则采用边界值分析法设计的测试用例是:

{ , , , , , , , , }

推论:对于一个含有n个变量的程序,采用边界值分析法测试程序会产生4n+1个测试用例。

练习:有函数f(x,y,x),其中x∈[1900,2100],y∈[1,12],z∈[1,31]的。请写出该函数采用边界值分析法设计

的测试用例。

{ , , , , , , ,

, , , , , }

健壮性测试

健壮性测试是作为边界值分析的一个简单的扩充,它除了对变量的5个边界值分析取值外,还需要增加一个略大于最大值(max+)以及略小于最小值(min-)的取值,检查超过极限值时系统的情况。因此,对于有n个变

量的函数采用健壮性测试需要6n+1个测试用例。

前面例1中的程序F的健壮性测试如下图所示:

本文来自CSDN博客,转载请标明出处:

http://blog.csdn.net/winterwinner/archive/2010/05/12/5583619.aspx

一、选择题

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

A)试验性运行软件 B)发现软件错误 C)证明软件正确 D)找出软件中全部错误

2.软件测试中白盒法是通过分析程序的( )来设计测试用例的。

A)应用范围 B)内部逻辑 C)功能 D)输入数据

3.黑盒法是根据程序的( )来设计测试用例的。

A)应用范围 B)内部逻辑 C)功能 D)输入数据

4.为了提高软件测试的效率,应该( )。

A)随机地选取测试数据 B)取一切可能的输入数据作为测试数据

C)在完成编码以后制定软件的测试计划 D)选择发现错误可能性最大的数据作为测试用例

5.与设计测试用例无关的文档是( )。

A)项目开发计划 B)需求规格说明书 C)设计说明书 D)源程序

6.测试的关键问题是( )。

A)如何组织软件评审 B)如何选择测试用例

C)如何验证程序的正确性 D)如何采用综合策略

7.软件测试用例主要由输入数据和( )两部分组成。

A)测试计划 B)测试规则 C)预期输出结果 D)以往测试记录分析

8.成功的测试是指运行测试用例后( )。

A)未发现程序错误 B)发现了程序错误 C)证明程序正确性 D)改正了程序错误

9.下列几种逻辑覆盖标准中,查错能力最强的是( )。

A)语句覆盖 B)判定覆盖 C)条件覆盖 D)条件组合覆盖

10.在黑盒测试中,着重检查输入条件组合的方法是( )。

A)等价类划分法 B)边界值分析法 C)错误推测法 D)因果图法

11.单元测试主要针对模块的几个基本特征进行测试,该阶段不能完成的测试是( )。

A)系统功能 B)局部数据结构 C)重要的执行路径 D)错误处理

12.软件测试过程中的集成测试主要是为了发现( )阶段的错误。

A)需求分析 B)概要设计 C)详细设计 D)编码

13.不属于白盒测试的技术是( )。

A)路径覆盖 B)判定覆盖 C)循环覆盖 D)边界值分析

14.集成测试时,能较早发现高层模块接口错误的测试方法为( )。

A)自顶向下渐增式测试 B)自底向上渐增式测试 C)非渐增式测试 D)系统测试

15.确认测试以( )文档作为测试的基础。

A)需求规格说明书 B)设计说明书 C)源程序 D)开发计划

16.使用白盒测试方法时,确定测试数据应根据( )和指定的覆盖标准。

A)程序内部逻辑 B)程序的复杂度 C)使用说明书 D)程序的功能

17.程序的三种基本结构是( )。

A)过程子、程序、分程序 B)顺序、选择、循环

C)递归、堆栈、队列 D)调用、返回、转移

18.结构化程序设计的一种基本方法是( )

A)筛选法 B)递归法 C)归纳法 D)逐步求精法

19.软件调试的目的是( )

A)找出错误所在并改正之 B)排除存在错误的可能性

C)对错误性质进行分类 D)统计出错的次数

20.程序三种基本结构的共同特点是( )

A)不能嵌套使用 B)只能用来写简单程序

C)已经用硬件实现 D)只有一个入口和一个出口

21.下面说法正确的是( )。

A)经过测试没有发现错误说明程序正确 B)测试的目标是为了证明程序没有错误

C)成功的测试是发现了迄今尚未发现的错误的测试 D)成功的测试是没有发现错误的测试

22.覆盖准则最强的是( )。

A)语句覆盖

C)条件覆盖

23.发现错误能力最弱的是( )。

A)语句覆盖

C)条件覆盖 B)判定覆盖 D)路径覆盖 B)判定覆盖 D)路径覆盖

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

A)条件覆盖

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

25.下面( )方法能够有效地检测输入条件的各种组合可能引起的错误。

A)等价类划分 B)边界值分析

C)错误推测 D)因果图

26.与确认测试阶段有关的文档是( )。

A)需求规格说明书 B)概要设计说明书

C)详细设计说明书 D)源程序

27.超出软件工程范围的测试是( )。

A)单元测试

C)确认测试 B)集成测试 D)系统测试

28.软件测试不需要了解软件设计的( )。

A)功能

C)处理过程 B)内部结构 D)条件

29.( )方法需要考察模块间的接口和各模块之间的联系。

A)单元测试

C)确认测试

30.调试应该由( )完成。

A)与源程序无关的程序员

C)不了解软件设计的机构 B)编制该源程序的程序员 D)设计该软件的机构 B)集成测试 D)系统测试

31.基线是软件生存期中各开发阶段的一个特定点,它可作为一个检查点,当采用的基线发生错误时,我们可以返回到最近和最恰当的( )上。

A)配置项 B)程序 C)基线 D)过程

32.版本管理是对系统不同版本进行的( )过程

A)标识与跟踪 B)标识变更 C)发布变更 D)控制变更

33.在变更控制中,管理各个用户存取和修改一个特定软件配置对象的权限是( )。

A)异步控制

B)同步控制 D)基线控制 C)存取控制

34. 在配置管理中,“登入”和“检出”处理实现了两个重要的变更控制要素,即同步控制和

( )。

A)异步控制

C)基线控制 B)同步控制 D)存取控制

35. 按照软件配置管理的原始指导思想,受控制的对象应是( )。

A)软件元素 B)软件配置项

C)软件项目 D)软件过程

36. 软件配置项是软件配置管理的对象,指的是软件工程过程中所产生的( )。

A)接口 B)软件环境 C)信息项 D)版本

37.在变更控制中,可用来确保由不同用户所执行的并发控制是( )。

A)异步控制 B)同步控制 C)存取控制 D)基线控制

38.以下说法错误的是( )。

A)软件配置管理简称SCI

B)软件配置项是配置管理的基本单位

C)软件配置实际上是一动态的概念

D)软件工程过程中某一阶段的变更均要引起软件配置的变更

39.在设计人机界面时,应主要考虑的因素有( )。

A) 系统响应时间 B)错误处理 C)用户求助机制 D)以上都是

40.人机界面的风格大致经过了( )代的演变

A)一 B)二 C)三 D) 四

二、填空题

1.软件测试的目的是尽可能多地发现软件中存在的

2.测试阶段的基本任务是根据软件开发各阶段的,精心设计一组,利用这些实例执行 ,找出软件中潜在的各种 和 。

3.测试用例由两部分组成。

4.软件测试方法一般分为两大类:方法和方法。

5.动态测试通过根据动态测试又分为与两类。

6.静态测试采用和

7.人工审查程序偏重于进行检验。

8.计算机辅助静态分析利用工具对测试程序进行分析。

9.黑盒法只在软件的说明书,检查程序是否满足要求。

10.白盒法必须考虑程序的和,以检查的细节为基础,对程序中尽可能多的逻辑路径进行 。

11.白盒测试是

12.逻辑覆盖是对程序内部有存在的逻辑结构设计测试用例,根据程序内部的逻辑覆盖程度又可分为 、 、 、 、 和 6种覆盖技术。

13.实际的逻辑覆盖测试中,一般以覆盖为主设计测试用例,然后再补充部分用例,以达到 覆盖测试标准。

14.循环覆盖是对程序内部有来测试。

15.基本路径测试是在程序通过分析控制构造的复杂性,导出集合,从而设计测试用例。

16.黑盒测试是4种方法:、、 和。

17.等价类划分从程序的说明,找出一个输入条件(通常是 或 ,然后将每个输入条件划分成两个或多个 。

18.边界值分析是将测试 的测试数据。如果输入或输出域是一个有序集合,则应选取集合的 元素和 元素作为测试用例。

19.在测试程序时,根据经验或直觉推测程序中可能存在的各种错误,称为。

20.因果图的基本原理是通过画图,把用自然语言描述的转换为 ,最后为 每一列设计一个测试用例。

21.测试的综合策略是在测试中,联合使用各种方法。通常先用法设计基本的测试用例,再用 法补充一些必要的测试用例。

22.软件测试过程中需要3类信息:、和。

23.软件测试一般经过4个测试:、 。

24.从而发现模块在编码中或算法中的错误,它涉及 和 的文档。

25.单元测试主要测试5个基本特征:、。

26.在单元测试中,需要为被测模块设计模块和模块。上级调用模块, 用来代替被测模块所调用的模块。

27.集成测试指在测试基础上,将所有模块按照设计要求组装成一个完整的系统进行的测试。也称 测试或 测试。

28.集成测试的方法有两种:。

29.渐增式测试有两种不同的组装模块的方法:

30.自顶向下渐增式测试不需要编写模块,只需要编写模块,其步骤是从块开始,沿着被测程序的 的控制路径逐步向下测试,它有两种组合策略: 和 。

31.自底向上渐增式测试不需要编写模块,只需要编写

32.确认测试指检查软件的与是否与测试。

33.确认测试在模拟环境下运用参加的测试。

34.确认测试开始前需要制定报告。其测试用例要选用数据。

35.软件配置审查的任务是检查软件的所有文档资料的

36.调试也称,是在成功的测试之后才开始进行,其目的是确定错误的,并改正错误。

37.调试技术包括、 。

38.回溯法调试是从出发,而归纳法调试是从

39.被测试程序不在机器上运行,而是采用人工检测和计算机辅助分析检测的手段称为

40.用等价类划分法设计一个测试用例时,使其覆盖

41.用等价类划分法设计一个测试用例时,使其覆盖

42.在单元测试时,需要为被测模块设计

43.在集成测试时有两种测试方法,它们是

44.软件测试是为了而执行程序的过程。

45.运行被测程序的方法称为测试。

46.动态测试中,主要测试软件功能的方法称为法。

47.选择测试用例,使得被测程序中每个判定的每个分支至少执行一次,这种逻辑覆盖标准称为 。

48.要覆盖含循环结构的所有路径是不可能的,一般通过限制来测试。

49.用等价类划分法设计测试用例时,如果被测程序的某个输入条件规定了取值范围,则可确定一个合理的等在和 。

50.凭经验或直觉推测程序中可能存在的错误而设计测试用例的方法是

51.集成测试中的具体方法是

52.确认测试阶段的两项工作是。

53.在单元测试中,测试一个模块时,需要设计

54.软件配置管理,简称SCM,它用于整个软件工程过程。其主要目标是:

55.SCM是一组管理整个软件生存期各阶段中

56.基线的作用是把各阶段的开发工作划分得更加明确,便于检查与确认阶段成果。因此,基线可以作为项目的一个 。

三、名词解释

1.软件测试

2.静态测试

3.动态测试

4.黑盒测试

5.白盒测试

6.语句覆盖

7.判定覆盖

8.条件覆盖

9.判定/条件覆盖

10.条件组合覆盖

11.路径覆盖

12.测试用例

13.驱动模块

14.桩模块

15.单元测试

16.集成测试

17.确认测试

18.渐增式测试

19.非渐增式测试

20.调试

21.人的因素的含义

22.基线

23.软件配置管理

24.软件配置项

四、简答题

1.为什么说软件测试是软件开发中不可缺少的重要一环,但不是软件质量保证的安全网?

2.软件测试的目的是什么?为什么把软件测试的目的定义为只是发现错误?

3.软件测试应当遵循什么原则?为什么要遵循这些原则?

4.软件测试的步骤是什么?这些测试与软件开发各阶段之间的关系?

5.软件测试的过程是什么?

6.单元测试、集成测试和确认测试各自主要目标是什么?它们之间有什么不同?相互有什么关系?

7.什么是黑盒测试与白盒测试?它们都适应哪些测试?

8.简述软件测试与软件调试的区别。

9.软件配置管理的任务。

10.试述第三代界面的优点。

11.试述人机界面的设计过程。

五、综合题

1.变量的命名规则一般规定如下:变量名的长度不多于40个字符,第一个字符必须为英文字母,其他字母可以英文字母、数字以及下划线的任意组合。请用等价分类法设计测试用例。

2.某商场在“五一”期间,顾客购物时收费有4种情况:普通顾客一次购物累计少于100元,按A类标准收费(不打折),一次购物累计多于或等于100元,按B类标准收费(打9折);会员顾客一次购物累计少于1000元,按C类标准收费(打8折),一次购物累计等于或多于1000元,按D类标准收费(打7折)。测试对象是按以上要求计算顾客收费模块,按照路径覆盖法设计测试用例。

3.下面是某程序的流程图:

(1)计算它的环路复杂性。

(2)为了完成基本路径测试,求它的一组独立的路径。

六、选择题

1.B 2.B 3.C 4.D 5.A 6.B 7.C 8.B 9.D 10.D

11.A 12.B 13.D 14.A 15.A 16.A 17.B 18.D 19.A 20.D

21.C 22.D 23.A 24.C 25.D 26.A 27.D 28.D 29.B 30.B

31.C 32.A 33.D 34.B 35.C 36.B 37.B 38.A 39.D 40.D

七、填空题

1. 错误 测试结果

2. 文档资料 内部结构 测试用例 程序 错误 缺陷

3. 输入数据 输出数据

4. 动态测试 静态测试

5. 运行程序 测试用例 黑盒测试 白盒测试

6. 人工检测 计算机辅助静态分析

7. 编码质量 编码 软件产品

8. 静态分析 特性

9. 接口 需求规格 功能

10. 内部结构 处理过程 处理过程 测试

11. 结构 源程序 内部逻辑

12. 判定 语句覆盖 判定覆盖 条件覆盖 判定/条件覆盖 条件组合覆盖 路径覆盖

13. 条件组合 路径

14. 循环 循环次数

15. 控制流程图 环路 基本路径

16. 功能 等价类划分 边界值分析 错误推测 因果图

17. 功能 一句话 一个短语 等价类

18. 边界 边界值 第一个 最后一个

19. 错误推测法

20. 因果 功能说明 判定表 判定表

21. 测试 黑盒 白盒

22. 软件配置 测试配置 测试工具

23. 单元测试 集成测试 确认测试 系统测试

24. 单元测试 编码 详细设计

25. 模块 模块接口 局部数据结构 重要的执行路径 错误处理 边界条件

26. 驱动 桩 驱动模块 桩模块

27. 单元 组装 联合

28. 非渐增式测试 渐增式测试

29. 自顶向下结合 自底向上结合

30. 驱动 桩 顶层 软件结构图 深度优先策略 宽度优先策略

31. 桩 驱动

32. 功能 性能 需求规格 有效性

33. 黑盒 专门测试人员 用户

34. 测试 测试分析 实际运用

35. 完整性 正确性

36. 纠错 原因 位置

37. 简单调试 归纳法调试 演绎法调试 回溯法调试

38. 程序产生错误的地方 测试结果发现的线索

39.静态

40.尽可能多的

41.一个

42.驱动模块与桩模块

43.渐增式和非渐增式

44.发现错误

45.动态测试

46.黑盒法

47.判定覆盖

48.循环次数

49.两个不合理的等价类

50.错误推测法

51.渐增式和非渐增式测试方法

52.进行确认测试和软件配置审查

53.驱动模块和桩模块

54.标识变更 控制变更 确保变更正确地实现 报告有关变更

55.变更

56.检查点

八、名词解释

1. 软件测试指为了发现软件中的错误而执行软件的过程。它的目标是尽可能多地发现软件中存在的错误,将测试结果作为纠错的依据。

2. 静态测试指被测试的程序不在机器上运行,而是采用人工检测和计算机辅助静态分析的手段对程序进行检测。

3. 动态测试指通过运行程序发现错误。

4. 黑盒测试指把测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件的接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求,又称为功能测试或数据驱动测试。

5. 白盒测试指把测试对象看成一个打开的盒子,测试人员需了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。

6. 语句覆盖指设计足够的测试用例,使被测程序中每个语句至少执行一次。

7. 判定覆盖指设计足够的测试用例,使被测程序中每个判定表达式至少获得一次“真”值或“假”值,从而使程序的每个分支至少都通过一次,因此判定覆盖又称分支覆盖。

8. 条件覆盖指设计足够测试用例,使判定表达式中每个条件的各种可能的值至少出现一次。

9. 判定/条件覆盖指设计足够的测试用例,使得判定表达式中每个条件的所有可能取值至少出现一次,并使每个判定表达式所有可能的结果也至少出现一次。

10. 条件组合覆盖指设计足够的测试用例,使得每个判定表达式中条件的各种可能的值的组合都至少出现一次。

11. 路径覆盖指设计足够的测试用例,覆盖被测程序中所有可能的路径。

12. 测试用例指为寻找程序中的错误而精心设计的一组测试数据。

13. 驱动模块指用来模拟被测模块的上级调用模块,其功能比真正的上级模块简单得多,它只完成接受测试数据,以上级模块调用被测模块的格式驱动被测模块,接收被测模块的测试结果并输出。

14. 桩模块指用来代替被测试模块所调用的模块,其作用是返回被测试模块所需的信息。

15. 单元测试指对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误。

16. 集成测试指在单元测试基础上,将所有模块按照设计要求组装成一个完整的系统进行的测试。也称组装测试或联合测试。

17. 确认测试指检查软件的功能与性能是否与需求规格说明书中确定的指标相符合,又称有效性测试。

18. 渐增式测试指逐个把未经过测试的模块组装到已经过测试的模块上去,进行集成测试。每加入一个新模块进行一次集成测试,重复此过程直到程序组装完毕。

19. 非渐增式测试指首先对每个模块分别进行单元测试,然后把所有的模块按设计要求组装在一起进行测试。

20. 调试指确定错误的原因和位置,并改正错误的过程,也称纠错。

21. 1)人对感知过程的认识,包括视觉、阅读时的认知心理、记忆、归纳与演绎推理等; 2)用户已有的技能和行为方式;

3)用户所要求的完成的整个任务以及用户对人机交互部分的特殊要求。

22. 已经通过正式复审和批准的某规约或产品,它因此可以作为进一步开发的基础,并且只能遵循正式的变化控制过程得到改变。

23. 软件配置管理,简称SCM,它用于整个软件工程过程。其主要目标是:标识变更、控制变更、确保变更正确地实现、报告有关变更。SCM是一组管理整个软件生存期各阶段中变更的活动。

24. 软件配置项是软件工程中产生的信息项,它是配置管理的基本单位,对已成为基线的SCI,虽然可以修改,但必须按照一个特殊的正确的过程进行评估,确认每一处的修改。 九、简答题

1. ① 软件测试是软件开发中不可缺少的重要一环,原因是:

· 测试的工作量约占整个项目开发工作量的40%左右,几乎一半。如果是关系到人的生命安全的软件,测试的工作量还要成倍增加。

· 软件测试代表了需求分析、设计、编码的最终复审。

② 软件测试不是软件质量保证的安全网,因为软件测试只能发现错误,不能保证没有错误。 2. 软件测试的目的有:

① 软件测试是为了发现错误而执行程序的过程。 ② 一个好的测试用例能够发现至今尚未发现的错误。 ③ 一个成功的测试是发现了至今尚未发现的错误。

软件测试的目标定义为只是发现错误,原因是软件测试可以有两个目标,一个是预防错误,另一个是发现错误。由于软件开发是人的创造性劳动,人的活动不可能完美无缺,错误可能发生在任何一个阶段,因此预防错误这一目标几乎是不可实现的,所以软件测试的目标定义为只是发现错误。

3. 软件测试应当遵循原则如下:

① 用例由输入数据和预期的输出数据两部分组成,因为这样便于对照检查,做到有的放矢。 ② 用例不仅选用合理的输入数据,还要选择不合理的输入数据。因为当以特殊方式使用程序时,会突然发现程序中有许多错误,故使用预期的不合理的输入数据进行程序测试,比用合理的输入数据收获要大,从而能更多地发现错误,提高程序可靠性。

③ 除了检查程序是否做了它应该做的事,还应该检查程序是否做了它不应该做的事,因为如果程序做了它不应该做的事,即使程序能做它应该做的事,程序也是错误的。 ④ 应制定测试计划并严格执行,因为这样可以排除随意性。

⑤ 长期保留测试用例,因为测试用例的设计耗费很大的工作量,而修改后的程序可能有新的错误,需要进行回归测试,故必须将测试用例作为文档保存,使测试具有可重复性,同时测试用例是将来系统维护测试与确认的依据,保存测试用例也为以后的维护提供方便。

⑥ 对发现错误较多的程序段,应进行更深入的测试,因为发现错误较多的程序段,其质量较差,同时在修改错误过程中又容易引入新的错误。

⑦ 程序员避免测试自己设计的程序,因为测试目的是找错。从心理学角度讲,程序员大多对自己的程序存有偏见,总认为没有错误或错误不大,另外程序员对需求规格说明的理解而引入的错误则更难发现,应该由别人或另外的机构来测试会更客观、更有效。 4. ① 软件测试的步骤如图7-3所示。

图7-3 软件测试的步骤

② 这些测试与软件开发各阶段之间的关系如图7-2所示。因为系统测试已经超出了软件工程的范围,所以图7-2中的系统测试不包括在内。

5. 软件测试是一个规则的过程,包括测试设计、测试执行以及测试结果比较等。

① 测试设计:根据软件开发各阶段的文档资料和程序的内部结构,利用各种设计测试用例技术精心设计测试用例。

② 测试执行:利用这些测试用例执行程序,得到测试结果。

③ 测试结果比较:将预期的结果与实际测试结果进行比较,如果二者不符合,对于出现的错误进行纠错,并修改相应文档。修改后的程序还要进行再次测试,直到满意为止。如果测试发现不了错误,可能由于测试配置考虑不周到,应考虑重新制定测试方案,设计测试用例。 6. 单元测试、集成测试和确认测试各自主要目标是:

① 单元测试的主要目标是检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误。

② 集成测试的主要目标是检查与设计相关的软件体系结构的有关问题。

③ 确认测试的主要目标是检查已实现的软件是否满足需求规格说明书中确定的各种需求。 单元测试、集成测试和确认测试之间的不同如下:

① 测试内容不同:单元测试集中于单个模块的功能和结构检验,其测试内容主要包括模块接口、局部数据结构、重要的执行路径、错误处理和边界测试;集成测试集中于模块组合的功能和软件结构检验,其测试内容主要包括模块组装中可能出现的问题,即数据穿过接口可能丢失、一个模块可能破坏另一个模块的内容、子功能组装可能不等于主功能、全程数据结构问题、误差累积问题;确认测试集中于论证软件需求的可追溯性,主要包括测试软件功能和性能是否与软件需求一致、测试软件配置的所有程序与文档是否正确完整而且一致。

② 测试的方法不同:单元测试总是使用白盒测试法,为被测模块设计驱动模块和桩模块;集成测试使用渐增式测试和非渐增式测试,渐增式测试又有分为自顶向下结合法和自底向上结合法;确认测试总是使用黑盒测试法。

③ 发现的错误不同:单元测试发现的错误主要是在编码阶段产生的错误,集成测试发现的错误主要是在设计阶段产生的错误,确认测试发现的错误主要是在需求分析阶段产生的错误。 ④ 涉及的文档不同:单元测试涉及编码和详细设计文档,集成测试涉及详细设计文档和概要设计文档,确认测试涉及软件需求规格说明书和用户手册。

三者相互关系是:单元测试、集成测试和确认测试是顺序实现的。首先单元测试对各个模块进行测试,然后集成测试以单元测试为基础,将所有已测模块按照设计要求组装成一个完整的系统,对模块组合的功能和软件结构检验进行测试,最后确认测试是以集成测试为基础,测试集成的软件是否满足需求规格说明书中确定的各种需求。 7. ① 黑盒测试指把测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件的接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求,又称

为功能测试或数据驱动测试。

② 白盒测试指把测试对象看成一个打开的盒子,测试人员需了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。

③ 白盒测试适应的测试有单元测试、逻辑覆盖(按逻辑覆盖程度不同,有语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。)、循环覆盖(限制循环次数,有单循环和嵌套循环)和基本路径测试。

④ 黑盒测试适应的测试有:确认测试、等价类划分、边界值分析、错误推测和因果图。 8. 软件测试与软件调试在目的、技术和方法等方面存在很大的区别,主要表现在: ① 测试从一个侧面证明程序员的失败,而调试是为了证明程序员的正确。

② 测试从已知条件开始,使用预先定义的程序,且有预知的结果,不可预见的只是程序是否通过测试。调试一般以不可知的内部条件开始,除统计性调试外,结果是不可预见的。 ③ 测试是有计划的,并要进行测试设计,而调试是不受时间约束的。

④ 测试是一个发现错误、改正错误、重新测试的过程,而调试是一个推理过程。

⑤ 测试的执行是有规程的,而调试的执行往往要求程序员进行必要的推理及知觉的飞跃。 ⑥ 测试经常由独立的测试组在不了解软件设计的前提下完成,而调试必须由了解详细设计的程序员完成。

⑦大多数测试的执行和设计可由工具支持,而调试时,程序员能利用的工具主要是调试器。 十、综合题

1.① 划分等价类下表。

等价类划分表

② 设计测试用例下表。

2.① 被测模块的程序流程图如图所示。

被测模块的程序流程图

② 按照路径覆盖法设计测试用例如下:

是会员,累计消费900元, 覆盖路径127 是会员,累计消费2000元, 覆盖路径128 不是会员,累计消费80元, 覆盖路径134 不是会员,累计消费300元, 覆盖路径135 3.(a) 环路复杂性=判断数+1=6+1=7(个)

(b) 路径1: 0 —①— 13 — 19

路径2: 0 —②—③— 14 — 19 路径3: 0 —②—④—⑤— 15 — 19 路径4: 0 —②—④—⑥—⑦— 16 — 19 路径5: 0 —②—④—⑥—⑧—⑨— 17 — 19 路径6: 0 —②—④—⑥—⑧—⑩— 18 — 19 路径7: 0 —②—④—⑥—⑧—⑩— 12 — 19 4.(1) 划分等价类见表1。

表1 等价类划分表

(2) 设计测试用例见表2。

5① 划分等价类并编号,如下表所示。

十六进制整型常量输入条件的等价类表

② 为合理等价类设计测试用例,表中有三个合理等价类,两个例子。

6.(1) 被测模块的程序流程图如下图所示。

(2) 按照路径覆盖法设计测试用例如下: 是会员,累计消费900元,覆盖路径127 是会员,累计消费2000元,覆盖路径128 不是会员,累计消费80元,覆盖路径134 不是会员,累计消费300元,覆盖路径135

2.

4.变量的命名规则一般规定如下:变量名的长度不多于40个字符,第一个字符必须为英文字母,其他字母可以是英文字母、数字以及下划线的任意组合。请用等价分类法设计测试用例。

5.根据下列条件使用等价划分法设计测试用例。

某8位微机,其十六进制常数定义为:以0x或0X开头的数是十六进制整数,其值的范围是-7f~7f(表示十六进制的大小写字母不加区别),如0X13,0X6A,-0X3c。

6.某商场在“五一”期间,顾客购物时收费有4种情况:普通顾客一次购物累计少于100元,按A类标准收费(不打折),一次购物累计多于或等于100元,按B类标准收费(打9折);会员顾客一次购物累计少于1000元,按C类标准收费(打8折),一次购物累计等于或多于1000元,按D类标准收费(打7折)。测试对象是按以上要求计算顾客收费的模块,按照路径覆盖法设计测试用例。

以下是测试用例的覆盖

(1) 正常的不等边三角形 (2) 正常的等边三角形

(3) 正常的等腰三角形,包括两条相等的边的三种不同的排列方法

(4) 正常的直角三角形

(5) 正常等腰直角三角形,包括两边相等的三种不同的排列方法 (6) 退化的三角形(即,两边之和等于第三边),包括三种不同的排列方法

(7) 三条边不能构成三角形(两边之和小于第三边),包括三种排列方法

(8) 一条边长度为零,两条边为零,三边为零的9种排列方法 (9) 输入数据包含负数

(10) 输入数据不全(只知道2边的长度不知道第三边) (11) 输入的数据不符合程序规定的数据类型.

TC(测试用例)ID号

场景/条件

PIN

输入面

(或选择)的金额

CW1 CW2

场景1:成功提款 场景2:ATM内没有现金

场景3:ATM内现金不足

场景4:PIN有误

CW4 (还有不止一次输入机

会)

场景4:PIN有误(还有一次输入机会)

场景4:PIN有误(不再有输入机会)

I

V

n/a

V

V

I

V

n/a

V

V

V V

V V

V V

V V

V I

成功提款 提款选项不可用,用例结束

警告消息,返

V

V

V

V

I

回基本流步骤6,输入金额

警告消息,返回基本流步骤 4,输入 PIN

警告消息,返回基本流步骤 4,输入 PIN

V

n/a

V

V

警告消息,卡予保留,用例结束

ATM内的金金额

预期结果

CW3

CW5

CW6 I

2)设计测试用例,以便覆盖所有的有效等价类在表中列出了3个有效等价类,编号分别为①、⑤、⑧,设计的测试用例如下:

测试数据 期望结果 覆盖的有效等价类 200211 输入有效 ①、⑤、⑧

3)为每一个无效等价类设计一个测试用例,设计结果如下: 测试数据 期望结果 覆盖的无效等价类 95June 无效输入 ② 20036 无效输入 ③ 2001006 无效输入 ④ 198912 无效输入 ⑥ 200401 无效输入 ⑦ 200100 无效输入 ⑨ 200113 无效输入 ⑩

3.NextDate 函数包含三个变量:month 、 day 和 year ,函数的输出为输入日期后一天的日期。 例如,输入为 2006年3月 7日,则函数的输出为 2006年3月8日 。要求输入变量 month 、 day 和 year 均为整数值,并且满足下列条件:

①1≤month≤12 ②1≤day≤31

③1920≤year≤2050 1)有效等价类为:

M1={月份:1≤月份≤12} D1={日期:1≤日期≤31} Y1={年:1812≤年≤2012}

2)若条件 ① ~ ③中任何一个条件失效,则 NextDate 函数都会产生一个输出,指明相应的变量超出取值范围,比如 "month 的值不在 1-12 范围当中 " 。显然还存在着大量的 year 、 month 、 day 的无效组合, NextDate 函数将这些组合作统一的输出: " 无效输入日期 " 。其无效等价类为:

M2={月份:月份12} D2={日期:日期31} Y2={年:年2012} 弱一般等价类测试用例

月份 日期 年 预期输出 6 15 1912 1912年6月16日 强一般等价类测试用例同弱一般等价类测试用例 注:弱--有单缺陷假设;健壮--考虑了无效值

(一)弱健壮等价类测试

用例ID 月份 日期 年 预期输出 WR1 6 15 1912 1912年6月16日

WR2 -1 15 1912 月份不在1~12中 WR3 13 15 1912 月份不在1~12中 WR4 6 -1 1912 日期不在1~31中 WR5 6 32 1912 日期不在1~31中 WR6 6 15 1811 年份不在1812~2012中 WR7 6 15 2013 年份不在1812~2012中

(二)强健壮等价类测试

用例ID 月份 日期 年 预期输出 SR1 -1 15 1912 月份不在1~12中 SR2 6 -1 1912 日期不在1~31中 SR3 6 15 1811 年份不在1812~2012中 SR4 -1 -1 1912 两个无效一个有效 SR5 6 -1 1811 两个无效一个有效 SR6 -1 15 1811 两个无效一个有效 SR7 -1 -1 1811 三个无效

4.佣金问题等价类测试用例,它是根据佣金函数的输出值域定义等价类,来改进测试用例集合。 输出销售额≤1000元 佣金10%

10001800 佣金=220+(销售额-1800)*20%

测试用例 枪机(45) 枪托(30) 枪管(25) 销售额 佣金 1 5 5 5 500 50 2 15 15 15 1500 175 3 25 25 25 2500 360 根据输出域选择输入值,使落在输出域等价类内,可以结合弱健壮测试用例结合。

边界值分析方法:

一.方法简介

1.定义:边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。

2.与等价划分的区别

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

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

3.边界值分析方法的考虑:

长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。

使用边界值分析方法设计测试用例,首先应确定边界情况。通常输入和输出等价类的边界,就是应着重测试的边界情况。应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。

4.常见的边界值

1)对16-bit 的整数而言 32767 和 -32768 是边界 2)屏幕上光标在最左上、最右下位置 3)报表的第一行和最后一行 4)数组元素的第一个和最后一个

5)循环的第 0 次、第 1 次和倒数第 2 次、最后一次

5.边界值分析

1)边界值分析使用与等价类划分法相同的划分,只是边界值分析假定错误更多地存在于划分的边界上,因此在等价类的边界上以及两侧的情况设计测试用例。

例:测试计算平方根的函数 --输入:实数 --输出:实数

--规格说明:当输入一个0或比0大的数的时候,返回其正平方根;当输入一个小于0的数时,显示错误信息"平方根非法-输入值小于0"并返回0;库函数Print-Line可以用来输出错误信息。

2)等价类划分:

I.可以考虑作出如下划分: a、输入 (i)=0 b、输出 (a)>=0 和 (b) Error II.测试用例有两个:

a、输入4,输出2。对应于 (ii) 和 (a) 。

b、输入-10,输出0和错误提示。对应于 (i) 和 (b) 。

3)边界值分析:

划分(ii)的边界为0和最大正实数;划分(i)的边界为最小负实数和0。由此得到以下测试用例: a、输入 {最小负实数} b、输入 {绝对值很小的负数} c、输入 0

d、输入 {绝对值很小的正数} e、输入 {最大正实数}

4)通常情况下,软件测试所包含的边界检验有几种类型:数字、字符、位置、重量、大小、速度、方位、尺寸、空间等。

5)相应地,以上类型的边界值应该在:最大/最小、首位/末位、上/下、最快/最慢、最高/最低、 最短/最长、 空/满等情况下。

6)利用边界值作为测试数据 项 边界值

测试用例的设计思路 字符

起始-1个字符/结束+1个字符

假设一个文本输入区域允许输入1个到255个 字符,输入1个和255个字符作为有效等价类;输入0个和256个字符作为无效等价类,这几个数值都属于边界条件值。

数值

最小值-1/最大值+1

假设某软件的数据输入域要求输入5位的数据值,可以使用10000作为最小值、99999作为最大值;然后使用刚好小于5位和大于5位的 数值来作为边界条件。

空间

小于空余空间一点/大于满空间一点

例如在用U盘存储数据时,使用比剩余磁盘空间大一点(几KB)的文件作为边界条件。

7)内部边界值分析:

在多数情况下,边界值条件是基于应用程序的功能设计而需要考虑的因素,可以从软件的规格说明或常识中得到,也是最终用户可以很容易发现问题的。然而,在测试用例设计过程中,某些边界值条件是不需要呈现给用户的,或者说用户是很难注意到的,但同时确实属于检验范畴内的边界条件,称为内部边界值条件或子边界值条件。

内部边界值条件主要有下面几种:

a)数值的边界值检验:计算机是基于二进制进行工作的,因此,软件的任何数值运算都有一定的范围限制。

项 范围或值 位(bit) 0或者1

字节(byte) 0——225

字(word)

0~65535(单字)或 0~4294967295(双字) 千(K) 1024 兆(M) 1048576 吉(G) 1073741824

b)字符的边界值检验:在计算机软件中,字符也是很重要的表示元素,其中ASCII和Unicode是常见的编码方式。下表中列出了一些常用字符对应的ASCII码值。

字符 ASCII码值 字符 ASCII码值 空 (null) 0 A 65

空格 (space) 32 a 97 斜杠 ( / ) 47 Z 90 0 48 z 122 冒号 ( : ) 58

单引号 ( ‘ ) 96 @ 64

c)其它边界值检验

6.基于边界值分析方法选择测试用例的原则

1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。

例如,如果程序的规格说明中规定:"重量在10公斤至50公斤范围内的邮件,其邮费计算公式为„„"。作为测试用例,我们应取10及50,还应取10.01,49.99,9.99及50.01等。

2)如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据。

比如,一个输入文件应包括1~255个记录,则测试用例可取1和255,还应取0及256等。 3)将规则1)和2)应用于输出条件,即设计测试用例使输出值达到边界值及其左右的值。 例如,某程序的规格说明要求计算出"每月保险金扣除额为0至1165.25元",其测试用例可取0.00及1165.24、还可取一0.01及1165.26等。

再如一程序属于情报检索系统,要求每次"最少显示1条、最多显示4条情报摘要",这时我们应考虑的测试用例包括1和4,还应包括0和5等。

4)如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。

5)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。 6)分析规格说明,找出其它可能的边界条件。

二.实战演习

1.现有一个学生标准化考试批阅试卷,产生成绩报告的程序。其规格说明如下:程序的输入文件由一些有80个字符的记录组成,如右图所示,所有记录分为3组:

①标题:这一组只有一个记录,其内容为输出成绩报告的名字。

②试卷各题标准答案记录:每个记录均在第80个字符处标以数字"2"。该组的第一个记录的第1至第3个字符为题目编号(取值为1一999)。第10至第59个字符给出第1至第50题的答案(每个合法字符表示一个答案)。该组的第2,第3„„个记录相应为第51至第100,第101至第150,„题的答案。

③每个学生的答卷描述:该组中每个记录的第80个字符均为数字"3"。每个学生的答卷在若干个记录中给出。如甲的首记录第1至第9字符给出学生姓名及学号,第10至第59字符列出的是甲所做的第1至第50题的答案。若试题数超过50,则第2,第3„„纪录分别给出他的第51至第100,第101至第150„„题的解答。然后是学生乙的答卷记录。

④学生人数不超过200,试题数不超过999。 ⑤程序的输出有4个报告:

a)按学号排列的成绩单,列出每个学生的成绩、名次。 b)按学生成绩排序的成绩单。 c)平均分数及标准偏差的报告。

d)试题分析报告。按试题号排序,列出各题学生答对的百分比。

解答:分别考虑输入条件和输出条件,以及边界条件。给出下表所示的输入条件及相应的测试用例。

输出条件及相应的测试用例表。

2.三角形问题的边界值分析测试用例

在三角形问题描述中,除了要求边长是整数外,没有给出其它的限制条件。在此,我们将三角形每边边长的取范围值设值为[1, 100] 。

3.NextDate函数的边界值分析测试用例

在NextDate函数中,隐含规定了变量mouth和变量day的取值范围为1≤mouth≤12和1≤day≤31,并设定变量year的取值范围为1912≤year≤2050 。

错误推测方法

一. 方法简介

1. 定义:基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法。

2. 错误推测方法的基本思想:

列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例。

1) 例如, 输入数据和输出数据为0的情况;输入表格为空格或输入表格只有一行。 这些都是容易发生错误的情况。可选择这些情况下的例子作为测试用例。

2) 例如,前面例子中成绩报告的程序,采用错误推测法还可补充设计一些测试用例:

I. 程序是否把空格作为回答

II. 在回答记录中混有标准答案记录

III. 除了标题记录外,还有一些的记录最后一个字符即不是2也不是3

IV. 有两个学生的学号相同

V. 试题数是负数。

3) 再如,测试一个对线性表(比如数组)进行排序的程序,可推测列出以下几项需要特别测试的情况:

I. 输入的线性表为空表;

II. 表中只含有一个元素;

III. 输入表中所有元素已排好序;

IV. 输入表已按逆序排好;

V. 输入表中部分或全部元素相同。

二. 实战演习

暂无

因果图方法

一. 方法简介

1.定义:是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。

2.因果图法产生的背景:

等价类划分法和边界值分析方法都是着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视了。

如果在测试时必须考虑输入条件的各种组合,则可能的组合数目将是天文数字,因此必须考虑采用一种适合于描述多种条件的组合、相应产生多个动作的形式来进行测试用例的设计,这就需要利用因果图(逻辑模型)。

3.因果图介绍

1) 4种符号分别表示了规格说明中向4种因果关系。

2) 因果图中使用了简单的逻辑符号,以直线联接左右结点。左结点表示输入状态(或称原因),右结点表示输出状态(或称结果)。

3) Ci表示原因,通常置于图的左部;ei表示结果,通常在图的右部。Ci和ei均可取值0或1,0表示某状态不出现,1表示某状态出现。

4. 因果图概念

1) 关系

①恒等:若ci是1,则ei也是1;否则ei为0。

②非:若ci是1,则ei是0;否则ei是1。

③或:若c1或c2或c3是1,则ei是1;否则ei为0。“或”可有任意个输入。

④与:若c1和c2都是1,则ei为1;否则ei为0。“与”也可有任意个输入。

2) 约束

输入状态相互之间还可能存在某些依赖关系,称为约束。例如, 某些输入条件本身不可能同时出现。输出状态之间也往往存在约束。在因果图中,用特定的符号标明这些约束。

A.输入条件的约束有以下4类:

① E约束(异):a和b中至多有一个可能为1,即a和b不能同时为1。

② I约束(或):a、b和c中至少有一个必须是1,即 a、b 和c不能同时为0。

③ O约束(唯一);a和b必须有一个,且仅有1个为1。

④R约束(要求):a是1时,b必须是1,即不可能a是1时b是0。

B.输出条件约束类型

输出条件的约束只有M约束(强制):若结果a是1,则结果b强制为0。

5. 采用因果图法设计测试用例的步骤:

1)分析软件规格说明描述中, 那些是原因(即输入条件或输入条件的等价类),那些是结果(即输出条件), 并给每个原因和结果赋予一个标识符。

2)分析软件规格说明描述中的语义,找出原因与结果之间, 原因与原因之间对应的关系,根据这些关系,画出因果图。

3)由于语法或环境限制, 有些原因与原因之间,原因与结果之间的组合情况不可能出现,为表明这些特殊情况, 在因果图上用一些记号表明约束或限制条件。

4)把因果图转换为判定表。

5)把判定表的每一列拿出来作为依据,设计测试用例。

二. 实战演习

1. 某软件规格说明书包含这样的要求:第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改,但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M。

解答:

1) 根据题意,原因和结果如下:

原因:

1——第一列字符是A;

2——第一列字符是B;

3——第二列字符是一数字。

结果:

21——修改文件;

22 ——给出信息L;

23——给出信息M。

2) 其对应的因果图如下:

11为中间节点;考虑到原因1和原因2不可能同时为1,因此在因果图上施加E约束。

3)根据因果图建立判定表。

表中8种情况的左面两列情况中,原因①和原因②同时为1,这是不可能出现的,故应排除这两种情况。表的最下一栏给出了6种情况的测试用例,这是我们所需要的数据。

2.有一个处理单价为5角钱的饮料的自动售货机软件测试用例的设计。其规格说明如下:若投入5角钱或1元钱的硬币,押下〖橙汁〗或〖啤酒〗的按钮,则相应的饮料就送出来。若售货机没有零钱找,则一个显示〖零钱找完〗的红灯亮,这时在投入1元硬币并押下按钮后,饮料不送出来而且1元硬币也退出来;若有零钱找,则显示〖零钱找完〗的红灯灭,在送出饮料的同时退还5角硬币。

1) 分析这一段说明,列出原因和结果

原因:

1.售货机有零钱找

2.投入1元硬币

3.投入5角硬币

4.押下橙汁按钮

5.押下啤酒按钮

结果:

21.售货机〖零钱找完〗灯亮

22.退还1元硬币

23.退还5角硬币

24.送出橙汁饮料

25.送出啤酒饮料

2)画出因果图,如图所示。所有原因结点列在左边,所有结果结点列在右边。建立中间结点,表示处理的中间状态。中间结点:

11. 投入1元硬币且押下饮料按钮

12. 押下〖橙汁〗或〖啤酒〗的按钮

13. 应当找5角零钱并且售货机有零钱找

14. 钱已付清

3)转换成判定表:

4) 在判定表中,阴影部分表示因违反约束条件的不可能出现的情况,删去。第16列与第32列因什么动作也没做,也删去。最后可根据剩下的16列作为确定测试用例的依据。

判定表驱动分析方法

一. 方法简介

1.定义:判定表是分析和表达多逻辑条件下执行不同操作的情况的工具。

2.判定表的优点

能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用判定表能够设计出完整的测试用例集合。

在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:针对不同逻辑条件的组合值,分别执行不同的操作。判定表很适合于处理这类问题。

3.“阅读指南”判定表

4. 判定表通常由四个部分组成如下图所示。

1)条件桩(Condition Stub):列出了问题得所有条件。通常认为列出的条件的次序无关紧要。

2)动作桩(Action Stub):列出了问题规定可能采取的操作。这些操作的排列顺序没有约束。

3)条件项(Condition Entry):列出针对它左列条件的取值。在所有可能情况下的真假值。

4)动作项(Action Entry):列出在条件项的各种取值情况下应该采取的动作。

5.规则及规则合并

1)规则:任何一个条件组合的特定取值及其相应要执行的操作称为规则。在判定表中贯穿条件项和动作项的一列就是一条规则。显然,判定表中列出多少组条件取值,也就有多少条规则,既条件项和动作项有多少列。

2)化简:就是规则合并有两条或多条规则具有相同的动作,并且其条件项之间存在着极为相似的关系。

6.规则及规则合并举例

1)如下图左端,两规则动作项一样,条件项类似,在1、2条件项分别取Y、N时,无论条件3取何值,都执行同一操作。即要执行的动作与条件3无关。于是可合并。“-”表示与取值无关。

2)与上类似,下图中,无关条件项“-”可包含其他条件项取值,具有相同动作的规则可合并。

3)化简后的读书指南判定表

1

2

3

4

你觉得疲倦吗?

-

-

Y

N

你对内容感兴趣吗?

Y

Y

N

N

书中内容使你胡涂吗?

Y

N

-

-

请回到本章开头重读

x

继续读下去

X

跳到下一章去读

x

停止阅读,请休息

x

7.判定表的建立步骤:(根据软件规格说明)

1)确定规则的个数.假如有n个条件。每个条件有两个取值(0,1),故有2n种规则。

2)列出所有的条件桩和动作桩。

3)填入条件项。

4)填入动作项。等到初始判定表。

5)简化.合并相似规则(相同动作)。

二. 实战演习

1.问题要求:”„„对功率大于50马力的机器、维修记录不全或已运行10年以上的机器,应给予优先的维修处理„„” 。这里假定,“维修记录不全”和“优先维修处理”均已在别处有更严格的定义 。请建立判定表。

解答:

①确定规则的个数:这里有3个条件,每个条件有两个取值,故应有2*2*2=8种规则。

②列出所有的条件茬和动作桩:

③填入条件项。可从最后1行条件项开始,逐行向上填满。如第三行是: Y N Y N Y N Y N,第二行是: Y Y N N Y Y N N等等。

④填入动作桩和动作顶。这样便得到形如图的初始判定表。

1

2

3

4

5

6

7

8

功率大于50马力吗?

Y

Y

Y

Y

N

N

N

N

维修记录不全吗?

Y

Y

N

N

Y

Y

N

N

运行超过10年吗?

Y

N

N

Y

N

Y

N

进行优先处理

x

x

X

X

X

作其他处理

X

x

x

初始判定表

⑤化简。合并相似规则后得到图。

1

2

3

4

5

功率大于50马力吗?

Y

Y

Y

N

N

维修记录不全吗?

N

N

-

-

运行超过10年吗?

-

Y

N

Y

N

进行优先处理

x

x

X

作其他处理

x

x

2.NextData函数的精简决策表

M1={月份, 每月有30天}

M2={月份, 每月有31天}

M3={月份,2月}

D1={日期,1~28}

D2={日期,29}

D3={日期,30}

D4={日期,31}

Y1 ={年:年是闰年}

有29=512条规则 12月末31日和其它31 日月份的31日处理不同 平年2月28日处理不同 于2月27日

Y2 ={年:年不是闰年}

改进为

M1={月份: 每月有30天}

M2={月份: 每月有31天,12月除外}

M4={月份:12月}

M3={月份:2月}

D1={日期:1

D2={日期:28}

D3={日期:29}

D4={日期:30}

D5={日期:31}

Y1 ={年:年是闰年}

Y2 ={年:年不是闰年}

边界值分析法测试用例(续)

例1:有两个输入变量x1(a≤x1≤b)和x2(c≤x2≤d)的程序F的边界值分析测试用例如下:

{ , , , , ,

, , , }

边界值分析法测试用例(续)

例2:有二元函数f(x,y),其中x∈[1,12],y∈[1,31]。 则采用边界值分析法设计的测试用例是:

{ , , , , , , , , }

推论:对于一个含有n个变量的程序,采用边界值分析法测试程序会产生4n+1个测试用例。

练习:有函数f(x,y,x),其中x∈[1900,2100],y∈[1,12],z∈[1,31]的。请写出该函数采用边界值分析法设计

的测试用例。

{ , , , , , , ,

, , , , , }

健壮性测试

健壮性测试是作为边界值分析的一个简单的扩充,它除了对变量的5个边界值分析取值外,还需要增加一个略大于最大值(max+)以及略小于最小值(min-)的取值,检查超过极限值时系统的情况。因此,对于有n个变

量的函数采用健壮性测试需要6n+1个测试用例。

前面例1中的程序F的健壮性测试如下图所示:

本文来自CSDN博客,转载请标明出处:

http://blog.csdn.net/winterwinner/archive/2010/05/12/5583619.aspx


    相关文章

    产品可靠性测试标准QW-QA-61

    文件编号 产品可靠性测试标准 版本修改码 1目的 作为产品质量保证系统的一部分,可靠性测试标准将力求达到以下目标:a)b)c) 根据相关测试标准,在特定的可接受的环境下对产品.部件施加特定的测试方法,通过不断的催化产品.部件的寿命和疲劳度, ...

    ERP的概念与优点

    ERP知识 摘要: ERP 的全称是Enterprise Resources Plannig,中文又叫企业资源管理计划:它是基于先进的企业管理理念下研发出来的一款应用信息化技术,可以对整个公司实现资源一体化管理的企业管理工具. ERP的全称 ...

    测试用例模板

    { 项目名称 } 测试用例 安徽商信信息技术有限公司 地址:(230022)安徽省合肥市长江西路669号高新区软件园4#413室 电话:0551-5329509 传真:0551-5311044 版 本 历 史 目 录 0. 文档介绍 ... ...

    软件工程文档编写指南

    软件文档编写指南封面格式: 封面格式:文档编号 版 本 号文档名称: 项目名称: 项目负责人:编写 校对 审核 批准 开发单位年 年 年 年月 月 月 月日 日 日 日系统规约说明书( 系统规约说明书(System Specificatio ...

    线路板测试方法

    测试项目的品质要求和判定标准 序号 内容 1 棕化剥离强度试验 2 切片试验 3 镀铜厚度 4 补线焊锡, 电阻变化率 5 绿油溶解测试 6 绿油耐酸碱试验 7 绿油硬度测试 8 绿油附着力测试 9 热应力试验(浸锡) 10 (無鉛)焊锡性 ...

    xx科技股份有限公司软件项目管理制度(DOC 14)

    **科技股份有限公司 软件项目管理制度 目录 项目开发计划 .................................. 2 软件需求说明书 ................................ 4 详细设计说明书 .. ...

    软件测试与质量保证简答题

    简答题 1.什么是软件测试? 答:软件测试是为了发现错误而执行程序的过程.或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过 ...

    软件测试的目的是尽可能多的找出软件的缺陷

    判断题: 1.软件测试的目的是尽可能多的找出软件的缺陷.(Y) 2.Beta 测试是验收测试的一种.(Y) 3.验收测试是由最终用户来实施的.(N) 4.项目立项前测试人员不需要提交任何工件.(Y) 5.单元测试能发现约80%的软件缺陷.( ...

    高纯管道测试方案

    [键入文字] 高纯气体管道检测方案 目录 一:测试概要............................................................................................. ...

    软件工程仓库管理系统软件测试

    实验五 软件测试 实验目的 1. 掌握单元测试. 2. 掌握白盒技术及用例设计. 3. 掌握黑盒技术及用例设计. 4. 掌握集成.综合测试. 5. 发布测试. 实验内容 1. 使用JUnit/CUnit/NUnit完成单元测试. 2. 设计 ...