第一章 软件测试背景
一.判断题
1. 软件缺陷就是软件未达到软件产品需求说明书指明的要求。( )
2. 软件缺陷主要是由于设计的问题造成。( )
3. 软件缺陷主要是由于编码问题造成。( )
4. 软件缺陷主要是由于需求问题造成。(
5. 软件缺陷在测试阶段发现的数量最多。(
6. 软件缺陷在发布后修复的成本最大。(
7. 软件缺陷在需求分析阶段修复的成本最大。(
8. 软件缺陷在设计阶段修复的成本最大。(
9. 软件缺陷在需求分析阶段修复的成本最小。(
10. 算法错误是设计错误的一种。( )
解答: 1. 对
2. 错
3. 错 4. 对 5. 错 6. 对 7. 错
8. 错
9. 对
10. 对
) ) ) ) ) ) 二.填空题
1. 软件缺陷按测试开发阶段分为____________缺陷、设计缺陷和____________缺陷。
2. 软件出错机理可描述为软件错误、_________________、软件故障_和______________。
3. 需求阶段的错误分为不一致性错误、__________________和___________________。
4. 设计阶段的错误分为设计不完全错误、__________________和___________________。
5. 编码阶段的错误分为数据说明错误、__________________和___________________。
6. “测试成熟度”分为五级、分别为初始级、________________、______________、管理 和测量级、优化,预防缺陷和质量控制级。
7. 某公司成立一个测试小组,当所有的开发全部完成后才由测试小组接手项目的测试,则 该公司属于“测试成熟度”模型中的____________级。
8. 某公司的软件产品由项目经理带着几个开发人员进行研发,每个开发人员自行测试自己 的程序,该公司属于“测试成熟度”模型中的____________级。
9. Bill Hetzel定义的测试第一类方法的核心思想是__________________________________ ___。
10. Glenford Myers定义的测试第二类方法的核心思想是_______________________________ ___。
解答:
1. 需求缺陷、编码缺陷
2. 软件缺陷,软件失效
3. 冗余性错误、不完整性错误、不可行错误、不可测试错误(只填3个)
4. 算法错误、模块接口错误、控制逻辑错误、数据结构错误(只填2个)
5. 数据使用错误、计算错误、比较错误、控制流错误、界面错误、输入/输出错误(只填2 个)
6. 定义级、集成级
7. 定义
8. 初始
9. 证明软件是工作的
10. 证明软件是有错误的
三.名词解释 1. 软件缺陷 2. TMM
3. 测试用例
4. 软件测试
5. 集成测试
解答:
1. 从产品内部看,缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题;从产 品外部看,缺陷是系统所需要实现的某种功能的失效或违背
2. 软件测试成熟度模型是对测试组当前的测试能力状态的一种度量,帮助测试组改进测试 效率,提高测试管理水平。
3. 为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路 径或核实是否满足某个特定需求。
4. 软件测试是贯穿整个软件开发生命周期、对软件产品(包括阶段性产品)进行验证和确 认的活动过程,其目的是尽快尽早地发现在软件产品中所存在的各种问题——与用户需求、 预先定义的不一致性。
5. 一种测试阶段,用于测试模块之间的交互
四.简答题
1. 简述软件缺陷产生的原因。
2. 简述什么样的情况下可以判定为软件缺陷。
3. 简述测试与调试的区别。
4. 有人认为程序如果可以做到穷举路径测试,就可以保证程序中再也没有缺陷,请判断以 上描述是否正确,并给出相应的解释。
5. 你认为一个优秀的测试工程师应该具备哪些基本素质和专业素质?
解答:
1. 1、用户需求和说明书没有被很好的理解
分析人员不能100%理解用户需求,写作水平不高 2、软件设计的不合理 设计人员不能100%理解需求文档,设计水平不高 3、代码(算法,流程) 存在错误 编码人员不能100%理解设计文档,编码水平不高
2. (1)软件未达到软件产品需求说明书指明的要求。 (2)软件出现了软件产品需求说明书指明不会出现的错误。
(3)软件功能超出软件产品需求说明书指明的范围。
(4)软件未达到软件产品需求说明书虽未指明但应达到的要求。
(5)软件测试人员认为难以理解、不易使用、运行速度缓慢、或者最终用户认为不好
的
问题。
3. 测试的主要工作是找缺陷,发现软件的错误(是否满足用户需求) ,确定程序中可疑错误 的原因和确切位置,对程序(设计或编号)进行修改,排除错误贯穿整个软件生命周期。 调试的目的是解决代码中的缺陷。
4. 不正确,穷举路径测试可以使代码达到100%的覆盖,但是不能查出程序违反了设计要求 或用户需求。穷举测试不能查出遗漏路径错误和与数据相关的异常错误。
5. 基本素质 ? 对软件感兴趣 ? 好奇心
? 自信、执着、追求完美、团队合作、勾通 ? 叛逆精神 ? 追求完美 ? 洞察力 专业素质 ? 业务知识
? 产品设计知识 ? 软件架构知识 ? UML
? 各种测试工具 ? 用户心理学 ? 文字表达能力
五.应用题
解答:
第二章 软件测试概述
一.判断题
1. 软件测试就是对程序进行测试。( )
2. 当软件代码开发结束时,软件测试过程才开始。( )
3. 对发现错误较多的程序段,应进行更深入的测试。( )
4. 发现错误多的程序模块,残留在模块中的错误也多。( )
5. 如果发布出去的软件有质量问题,都是软件测试人员的错。( )
6. 测试部门负责软件质量。( )
7. 软件测试的目的是尽可能多的找出软件的缺陷。( )
8. 开发一个软件系统时,要考虑所有的软件质量要素。( )
9. 测试用例越多,测试效果就会越好。( )
10. 产品规格说明书和文档的谬误不属于软件缺陷。( )
11. 没有质量度量,等于没有质量标准。( )
12. 在软件编码过程中产生的缺陷数量相对软件开发的其它过程多得多。( )
13. 软件测试能保证软件质量。( )
14. 软件测试不用考虑软件的可扩展性。( )
15. 软件的质量越高越好,所以我们必须保证软件零缺陷才能交付。( )
16. 如果黑客为非法入侵花费的代价(考虑时间、费用、风险等因素)高于得到的好处,那 么这样的系统可以认为是安全的。( )
17. 软件的可靠性可以通过软件测试发现并解决。( )
18. 好的测试用例集可以花费最小的代价(人力、物力、财力、时间)做最好的测试。( ) 解答: 1. 错
2. 错
3. 对
4. 对
5. 错
6. 错
7. 对
8. 错 9. 错 10. 错 11. 对 12. 对
13. 错
14. 错
15. 错
16. 对
17. 错
18. 对
二.填空题
1. 软件测试的对象包括用户需求、需求说明书、___________________、_______________ 和运行结果。
2. 软件测试按测试阶段分为单元测试、___________________、确认测试、系统测试、____ _____________。
3. 软件测试生命周期分为:测试计划、_________________、_________________、测试执 行、测试评估五个阶段 。
4. 导致软件缺陷最大原因是___________________。
5. 测试用例的作用是________________________________________________。
6. 测试设计员的职责是____________________和________________________。
7. 软件的易用性要让___________________来评价。
8. 软件的健壮性包含了____________能力和_____________能力。
9. 软件的功能性质量因素包括健壮性、________________和______________。
10. 非功能性质量因素包括性能、清晰性、易用性、____________、____________。 解答:
1. 设计说明书、源代码
2. 集成测试、验收测试
3. 测试设计、测试开发
4. 需求错误
5. 验证某个程序路径是否满足特定的需求
6. 设计测试用例、设计测试脚本
7. 用户
8. 容错、恢复
9. 正确性、可靠性
10. 安全性,可扩展性,兼容性,可移植性(填写2个)
三.名词解释 1. 软件的可移植性
2. 软件质量
3. 软件质量模型
4. 软件的健壮性
5. 软件质量要素
解答:
1. 软件的可移植性指的是软件不经修改或稍加修改就可以运行于不同软硬件环境(CPU、
OS
和编译器)的能力,主要体现为代码的可移植性。
2. 软件质量是许多质量属性的综合体现,各种质量属性反映了软件质量的方方面面。
3. 软件质量模型指出了质量属性之间的联系和高质量软件的质量属性构成,人们通过软件 质量模型来评价一个软件的质量。
4. 健壮性是指在异常情况下,软件能够正常运行的能力
5. 对软件整体质量或用户需求影响最大的那些质量属性
四.简答题
1. 比较验证与确认的区别
2. 某公司生产出一个新型的纸杯,现由你对纸杯进行测试,以保证纸杯的质量和口碑,请 根据软件质量要素简述测试方法和目的。
3. 简述测试用例的作用及包含的主要元素。
4. 简述软件设计阶段的工作内容
5. 简述设计测试用例的基本原则
6. 简述什么是软件的可扩展性,什么时候需要考虑软件的可展性。
解答:
1. 确认 评估将要开发的软件产品是否正确无误、可行和有价值的。 确认意味着确保一个待开发软件是正确无误的,是对软件开发构想的检测。
验证
检测软件开发的每个阶段、每个步骤的结果是否正确无误,是否与软件开发各阶段的要
求或期望的结果相一致。 验证意味着确保软件会正确无误地实现软件的需求,开发过程是沿着正确的方向进行的 。
2. 正确性:是否漏水、是否有包装错误
健壮性:反复装水倒水或一直保持水满的状态,测试漏水时间是否达标 可靠性:测试一箱纸杯中有多少个坏的
性能:测试装油、热水、冰水的漏水时间
易用性:测试纸杯是否容易使用,包装是否符合用户特点 安全性:测试纸杯是否结实
兼容性:测试纸杯是否按国家标准生产
3. 为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路 径或核实是否满足某个特定需求。 主要元素:用例、用例名称、测试目的、前提条件、测试环境、测试步骤、预期结果、. 实际的结果/测试的结果
4. 对每个测试需求,确定所需的测试用例。 对每个测试用例,确定其输入和预期结果。
5. 测试用例的代表性
能够代表并覆盖各种合理的和不合理的、合法的和非法的、边界的和越界的以及极 限的输入数据、操作和环境设置等。
测试结果的可判定性
即测试执行结果的正确性是可判定的,每一个测试用例都应有相应的期望结果。 测试结果的可再现性
即对同样的测试用例,系统的执行结果应当是相同的。 测试环境配置
编写测试用例文档 对测试用例进行同行评审
6. 软件的可扩展性是反映软件适应“变化”的能力。 软件的可扩展性关键要看软件的规模和复杂性
如果软件规模很小,问题很简单或者软件并不需要后继开发,那么亦无所谓“可扩展性 ”了。 如果软件规模很大,问题很复杂或采用了增量开发模式,倘若软件的可扩展性不好,那 么软件难以维护,甚至不能使用。
五.应用题 解答:
第三章 白盒测试
一.判断题
1. 代码走查的要点是代码编写是否符合标准和规范,是否存在逻辑错误。( )
2. 对于每个函数,路径覆盖测试是绝对做不到的。( )
3. 满足条件覆盖肯定满足语句覆盖。( )
4. 静态测试只能发现简单的语法错误,效率低,耗费时间。( )
5. 代码审查过程应将注意力用于查找错误而不是修正错误。( )
6. 路径上的节点都至多出现一次,除非初始和终止节点是相同的节点,称之为简单路径。 ( )
7. 如果存在一个测试用例集T可以访问所有长度为2的子路径,则称该测试用例集满足了图
的边对覆盖准则。( )
8. 数据流测试中,节点内一个变量V的值被修改,则称变量V在该节点处被定义。( )
9. 数据流测试中,节点内一个变量V的值被访问,则称变量V在该节点处被定义。( )
10. 如果存在一个变量v的从li 到lj 的 Def-pair 路径, 则称变量v 可以从定义节点li 到 达 使用节点lj( )
解答: 1. 对 2. 错
3. 错
4. 错
5. 对
6. 对
7. 对
8. 对 9. 错 10. 对
二.填空题
1. 白盒法设计测试用例覆盖强度最高的方法是______________________。
2. 静态测试包括桌面走查、__________________和__________________。
3. 代码审查的参与人员为_______________、________________、模块设计人员和一名测试 专家_。
4. 选择足够的测试用例,使得程序中每个语句至少都能被执行一次,则满足了白盒测试中 的____________覆盖。
5. 设计测试用例,使得程序中每个判定至少为真和为假值各一次,则称满足了白盒测试中 的____________覆盖。
6. 执行足够的测试用例,使得判定中的每个条件至少为真和为假值各一次,则称满足了白 盒测试中的____________覆盖。
7. 执行足够的测试用例,使得判定中每个条件至少为真和为假值各一次,并使每个判定至 少为真和为假值各一次,则称满足了白盒测试中的____________覆盖。
8. 执行足够的例子,使得每个判定中条件各种可能组合至少为真和为假值各一次,则称满 足了白盒测试中的____________覆盖。
9. 基于图的覆盖准则分为______________________和________________________。
10. 没有作为其它简单路径子路径的简单路径称之为_____________。
解答:
1. 路径覆盖
2. 代码审查、评审
3. 协调人、编码人员
4. 语句
5. 判定覆盖
6. 条件
7. 判定条件
8. 条件组合
9. 结构化覆盖准则、数据流覆盖准则
10. 主路径
三.名词解释 1. 测试路径
2. 静态测试
3. 动态测试
4. 人工测试
5. 白盒测试
6. 测试工作件
7. 桌面检查
8. 图的节点覆盖准则
9. 图的边覆盖准则
10. 数据流覆盖
解答:
1. 从开始节点到结束节点所走的路径。
2. 静态测试方法的主要特征是在用计算机测试源程序时,计算机并不真正运行被测试的程 序,只对被测程序进行特性分析。
3. 动态测试方法的主要特征是计算机必须真正运行被测试的程序,通过输入测试用例,对 其运行情况(输入/输出的对应关系)进行分析。
4. 由测试人员手工根据测试用例中的步骤,手工执行并记录测试结果。
5. 从程序的控制结构出发进行的测试,测试程序中的每条通路是否都有能按预定要求正确 工作,而不顾它的功能。
6. 测试对象,是不同种类的产品交付件,即一切项目过程文档。
7. 由程序员自己检查自己编写的程序。程序员在程序通过编译之后,进行单元测试设计之 前,对源程序代码进行分析,检验,并补充相关的文档,以发现程序中的错误。
8. 存在一个测试用例集T可以访问图中所有可以到达的节点。
9. 存在一个测试用例集T可以访问图中所有可以到达的边。
10. 根据变量的定义和使用确定程序是否正确
四.简答题
1. 简述静态测试的优点和缺点。
2. 简述白盒测试的优缺点。
3. 简述静态测试与动态测试的区别
4. 简述桌面检查、代码审查与代码走查之间的区别。
5. 简述代码审查中协调人的职责
6. 写出下图节点0至节点6的测试路径
7. 简述白盒测试策略
8. 简述控制流测试与数据流测试的区别
9. 有人认为控制流图的节点覆盖准则和边覆盖准则生成的测试用例完全相同,因此两个测 试准则是重复的。请判定以上描述是否正确,并给出相应的解释。
10. 有人认为程序如果可以做到穷举路径测试,就可以保证程序中再也没有缺陷,请判断以 上描述是否正确,并给出相应的解释。
解答: 1. 优点
加深对项目的理解,使测试计划和测试设计质量得到提高;
使得测试用例全面、有效,从“撞问题”转变为有目的的“找问题” 提前了对项目的理解,减少了测试执行时的摸索时间,从而加快测试进度 缺点
静态代码检查非常耗费时间,而且代码检查需要丰富的知识和经验积累。
2. 从程序的控制结构出发进行的测试,测试程序中的每条通路是否都有能按预定要求正确 工作,而不顾它的功能。 优点:可以对程序彻底检查,发现错误,缺点:成本高,测试用例太多,不能验证程序 功能是否符合规格说明书
3. 静态测试 静态测试方法的主要特征是在用计算机测试源程序时,计算机并不真正运行被测试的程 序,只对被测程序进行特性分析。
动态测试
动态测试方法的主要特征是计算机必须真正运行被测试的程序,通过输入测试用例,对 其运行情况(输入/输出的对应关系)进行分析。
4. 桌面检查:由程序员自己检查自己编写的程序。
代码审查:由程序员逐句讲解程序的逻辑。在此过程中,程序员或其他小组成员可以提 出问题,展开讨论,审查错误是否存在。
代码走查:让与会者“充当”计算机。由测试组成员为被测程序准备一批有代表性的测 试用例,提交给走查小组。走查小组开会,集体扮演计算机角色,让测试用例沿程序的逻辑 运行一遍。
5. 为代码审查分发材料(程序清单、设计规范),安排进程
在代码审查过程中起主导作用 记录发现的所有错误
6. 4个测试路径
[ 0, 1, 3, 4, 6 ] [ 0, 1, 3, 5, 6 ] [ 0, 2, 3, 4, 6 ] [ 0, 2, 3, 5, 6 ]
7. (1)在测试中,应尽量先使用工具进行静态结构分析,代码检查,再进行覆盖率测试。 (2)覆盖率测试是白盒测试的重点,一般可使用基本路径测试法达到语句覆盖标准;对
于软件的重点模块,应使用多种覆盖率标准衡量代码的覆盖率。
8. 数据流测试属于白盒测试,主要是从变量的计算和使用来判定程序是否正确。控制流测 试主要是根据程序的执行路径来判定程序是否正确 数据流测试只能用于程序代码,控制流测试可以用于程序代码、活动图、状态图等。
9. 不正确,比如下图根据节点覆盖准则和边覆盖准则生成的测试用例就不相同
节点覆盖: T = { 0, 1, 2 },测试路径为 [ 0, 1, 2 ]
边覆盖: T = { (0,1), (0, 2), (1, 2) }, 测试路径为 [ 0, 1, 2 ] [ 0, 2 ]
10. 不正确,穷举路径测试可以使代码达到100%的覆盖,但是不能查出程序违反了设计要求
或用户需求。穷举测试不能查出遗漏路径错误和与数据相关的异常错误。
五.应用题
1. 按要求给出下列程序的测试用例(要求写出必要的说明)
(1)语句覆盖 (2)判定覆盖 (3)条件覆盖
(4)判定-条件覆盖
2. 现有控制流图如下
(1) 根据节点覆盖准则,给出测试路径 (2) 根据边覆盖准则,给出测试路径 (3) 根据边对覆盖准则,给出测试路径
3. 写出下图的所有简单路径和主路径
4. 根据控制流图,回答以下问题。
(1) 根据边覆盖准则,找出所有的测试路径 (2) 根据边对覆盖准则,找出所有的测试路径 (3) 根据主路径覆盖准则,找出所有的测试路径
5. 简述什么是所有定义覆盖、所有使用覆盖、所有du路径覆盖,并根据下图写出变量X的所
有定义覆盖、所有使用覆盖、所有du路径覆盖
6. 根据源代码,完成以下问题。
一个计算三个数中最大数的程序 main()
{int num1,num2,num3,max;
printf(\ scanf(\ if (num1>num2) max=num1; else max=num2; if (num3>MAX)
max=num3; printf(\}
(1) 给出对应的流程图
(2) 计算控制流图复杂度V(G)
(3)写出所有的独立路径,并设计测试用例
7. 根据源代码请回答以下问题。 void sort( int Num, int Type ){ int x = 0; int y = 0; while (Num > 0) { if( Type = = 0) x = y + 2; else {
if( Type = = 1 )
x = y + 5; else x = y + 10; } Num--; } }
(1) 请画出控制流图并计算控制流图复杂度V(G) 。
(2) 找出独立路径。
(3) 请使用基本路径测试法设计测试用例。 (4) 根据控制流图,找出变量x和y的DU path
8. 根据控制流图,回答以下问题
(1)根据边覆盖准则,找出所有的测试路径 (2)根据边对覆盖准则,找出所有的测试路径 (3)根据主路径覆盖准则,找出所有的测试路径
9. 在三角形计算中,要求三角型的三个边长:A、B 和C。当三边不可能构成三角形时提示 错误, 可构成三角形时计算三角形周长。若是等腰三角形,显示“等腰三角形”,若是等边 三角形,则显示“等边三角形”。(15分) (1) 写出程序伪代码,画出控制流程图
(2)计算圈复杂度V(g) (3)找出基本测试路径
10. 以下代码用于判断闰年,由C 语言书写。其对应的控制流图如下图所示。 请按要求回答问题。
int isLeap(int year){
int leap;
if (year % 4 = = 0){ if (year % 100 = = 0){
if ( year % 400 = = 0) leap = 1; else leap = 0; } else leap = 1; } else
leap = 0; return leap; }
(1)请画出控制流图,并计算圈复杂度V(G)。 (2)找出独立路径。
解答:
1. 1、语句覆盖
满足语句覆盖的情况是: 执行路径:ace 选择用例: [(2,0,4),(2,0,3)]
2、判定覆盖
覆盖情况:共有两个判定,应执行路径: ace ∧ abd 或: acd ∧ abe 选择用例
[(2,0,4),(2,0,3)] ace [(1,1,1),(1,1,1)] abd
3、条件覆盖
应满足以下覆盖情况:
判定一: A>1, A≤1, B=0, B≠0
判定二: A=2, A≠2, X>1, X≤1 选择用例: [(2,0,4),(2,0,3)] [(1,1,1),(1,1,1)]
4、判定/条件覆盖
应满足以下覆盖情况: 条件: A>1, A≤1, B=0, B≠0 A=2, A≠2, X>1, X≤1 应执行路径
ace ∧ abd 或 acd ∧ abe 选择用例:
[(2,0,4),(2,0,3)](ace) [(1,1,1),(1,1,1)] (abd)
2. (1) 测试路径:[ 0, 1, 2, 3, 6 ] [ 0, 1, 2, 4, 5, 4, 6 ] (2) 测试路径:[ 0, 1, 2, 3, 6 ] [ 0, 2, 4, 5, 4, 6 ]
(3) 测试路径:[ 0, 1, 2, 3, 6 ] [ 0, 1, 2, 4, 6 ] [ 0, 2, 3, 6 ] [ 0, 2, 4, 5 , 4, 5, 4, 6 ]
3. 简单路径 : [ 0, 1, 3, 0 ], [ 0, 2, 3, 0], [ 1, 3, 0, 1 ],[ 2, 3, 0, 2 ], [ 3, 0, 1, 3 ], [ 3, 0, 2, 3 ], [ 1, 3, 0, 2 ],[ 2, 3, 0, 1 ], [ 0, 1, 3 ], [ 0, 2, 3 ], [ 1, 3, 0 ], [ 2, 3, 0 ],[ 3, 0, 1 ], [3, 0, 2 ], [ 0, 1], [ 0, 2 ], [ 1, 3
], [ 2, 3 ], [ 3, 0 ], [0], [1], [2], [3] 主路径 : [ 0, 1, 3, 0 ], [ 0, 2, 3, 0], [ 1, 3, 0, 1 ],[ 2, 3, 0, 2 ], [ 3, 0 , 1, 3 ], [ 3, 0, 2, 3 ], [ 1, 3, 0, 2 ],[ 2, 3, 0, 1 ]
4. 边覆盖 [ 0, 1, 2, 3, 6 ] [ 0, 2, 4, 5,4,6 ]
边对覆盖
[ 0, 1, 2, 3, 6 ] [ 0, 2, 3, 6 ] [ 0, 2, 4, 6 ] [ 0, 1, 2, 4, 5,4,5,4,6 ] 主路径 [ 0, 1, 2, 3, 6 ] [ 0, 1, 2, 4, 5 ] [ 0, 1, 2, 4, 6 ] [ 0, 2, 3, 6 ]
[ 0, 2, 4, 5] [ 0, 2, 4, 6 ] [ 5, 4, 6 ] [ 4, 5, 4 ] [ 5, 4, 5 ]
5. 所有定义覆盖: 对于所有的变量,测试用例集T可以至少到达所有定义 所有使用覆盖: 对于所有的变量,测试用例集T可以到达所有使用
所有du路径覆盖: 对于所有的变量,测试用例集T可以访问所有定义-使用路径 所有定义覆盖:[ 0, 1, 3, 4 ]
所有使用覆盖:[ 0, 1, 3, 4 ][ 0, 1, 3, 5 ]
所有du路径覆盖:[ 0, 1, 3, 4 ][ 0, 2, 3, 4 ][ 0, 1, 3, 5 ][ 0, 2, 3, 5 ]
6.
V(G)=3 独立路径 1->2->3->5->7 1->2>3->5->6->7 1->2->4->5->7 1->2->4->5->6->7 设计用例
7.
V(G)=4
(2) 找出独立路径。
1-7
1-2-3-7 1-2-4-5-7 1-2-4-6-7
(3) 请使用基本路径测试法设计测试用例。 Num=1
Num=1,type=0 Num=1,type=1 Num=1,type=2
(4) 根据控制流图,找出变量x和y的DU path X无DU path Y的DU path 1-2-3-7 1-2-4-5-7 1-2-4-6-7
8. 边覆盖 [1, 2, 3, 4,5,6,7,6,8 ] 边对覆盖
[1,2,3,4,3,4,3,5,6,7,6,7,6,8][1,2,3,5,6,8] 主路径覆盖 [ 1, 2, 3, 4, 3, 4, 3, 5, 6, 7, 6, 7, 6, 8 ] [ 1, 2, 3, 4, 3, 5, 6, 8 ] [ 1, 2, 3, 5, 6, 7, 6, 8 ] [ 1, 2, 3, 5, 6, 8 ]
9. public String check(int a,int b,int c){ String str = \
if(a+b>c&&a-b if((a==b&&a!=c)||(a==c&&a!=b)||(b==c&&a!=b)){ str = \可构成等腰三角形\ } if((a==b)&&(a==c)&&(c==b)){ str = \可构成等边三角形\ } else{ str = \可构成三角形\ } } return str; } V(G)=3 基本路径 1->2>3->4->5->7 1->2->4->5->7 1->2->4->5->6->7 1->2->3->4->6->7 10. V(G)=4 独立路径 1->2->3->10->11->12 1->2->3->4->5->7->9->11->12 第四章 黑盒测试 1->2->3->8->9->11->12 1->2->3->4->6->7->9->11->12 一.判断题 1. 黑盒测试也称为功能测试。( ) 2. 在实际的软件项目测试中,穷举测试是不可能的。( ) 3. 测试用例不应该包含实际的数据。( ) 4. 测试用例中不需要明显的验证手段。( ) 5. 自底向上集成需要测试员编写驱动程序。( ) 6. 因为大量的故障往往发生在输入定义域或输出值域的边界上,而不是在其内部,所以人 们使用边界值法进行测试。( ) 7. 系统测试不包括性能测试。( ) 8. 错误推测法生成的测试用例可以通过其它黑盒测试法获得,所以在有充足时间的时候, 没有必要采用错误推测法。( ) 9. 白盒法设计测试用例更详细,更完全,所以在有充足时间的时候,没有必要采用黑盒测 试法。( ) 10. 黑盒法设计测试用例的强度从小到大为:边界值法、等价类法、决策表法,所以绝大部 分时候只需要采用决策表法,而不需要采用边界值法和等价类法。( ) 解答: 1. 对 2. 对 3. 错 4. 错 5. 对 6. 对 7. 错 8. 错 9. 错 10. 错 二.填空题 1. 依赖测试人员的经验和领域知识生成测试用例的方法,称之为____________________。 2. 假设存在两个输入变量,每个变量取5个点,采用边界值分析法至少产生_____________ 个测试用例。 3. 假设存在两个输入变量,采用边界值最坏情况分析法至少产生_____________个测试用例 。 4. 假设存在两个输入变量,采用边界值健壮最坏情况分析法至少产生_____________个测试 用例。 5. 正交表测试解决了__________________________________________________问题 6. 正交表的构成元素包括__________________、_________________和_______________。 7. 均匀表测试解决了_______________________________________________________问题。 8. 等价类测试法将数据划分为______________________和__________________________。 9. 在输入条件规定了取值范围或值的个数的情况下,则可以确立_______个有效等价类和___ ____个无效等价类。 10. 在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下, 可确立________个有效等价类和_________个无效等价类。 解答: 1. 错误推测法 2. 9个 3. 25个 4. 49个 5. 从大量的数据中挑选适量的、有代表性的数据 6. 行数、水平数、因素数 7. 从大量的数据中均匀的挑选适量的、有代表性的数据 8. 有效等价类、无效等价类 9. 1、2 10. N、1 三.名词解释 1. 黑盒测试 2. 灰盒测试 3. 有效等价类 4. 无效等价类 5. 弱一般等价类覆盖准则 6. 强一般等价类覆盖准则 7. 弱健壮等价类覆盖准则 8. 强健壮等价类覆盖准则 9. 决策表测试 10. 正交表测试 解答: 1. 不考虑源代码,从需求角度验证模块的正确性。 2. 介于白盒测试与黑盒测试之间的测试,既关注输出对于输入的正确性,也关注内部表现 ,但这种关注不象白盒那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内 部的运行状态。 3. 对于程序的规格说明,是合理的、有意义的输入数据构成的集合。 4. 对于程序的规格说明,是不合理的、没有意义的输入数据构成的集合。 5. 存在一个测试用例集T,其中变量的有效子集合至少出现一次 6. 存在一个测试用例集T,所有变量的有效子集合的笛卡尔乘积 7. 存在一个测试用例集T,对于有效输入,变量的有效子集合至少出现一次 。 对于无效输 入,一个变量值无效,其它值都有效 8. 存在一个测试用例集T,所有变量有效子集合和无效子集合的笛卡尔乘积 9. 通过描述多个输入对输出的影响而生成测试用例的方法。 10. 根据正交试验设计方法,是从大量的数据中挑选适量的、有代表性的点,从而合理地安 排测试方法。 四.简答题 1. 简述黑盒测试的优点及缺点。 2. 简述正交表测试与均匀表测试的区别。 3. 简述Alpha测试与beta的区别。 4. 为什么要使用决策表,决策表有什么优缺点。 5. 简述性能测试指标有哪些,各有什么作用。 解答: 1. 优点: 1)比较简单,不需要了解程序内部的代码及实现; 2)与软件的内部实现无关; 3)从用户角度出发,能很容易的知道用户会用到哪些功能,会遇到哪些问题; 4)基于软件开发文档,所以也能知道软件实现了文档中的哪些功能; 5)在做软件自动化测试时较为方便。 缺点: 不可能覆盖所有的代码,覆盖率较低,大概只能达到总代码量的30%; 2. 正交测试是从大量的数据中挑选适量的、有代表性的点,从而合理地安排测试的一种科 学的试验设计方法,具有试验次数少、试验点分布均匀、测试结果易于分析的特点。 均匀表测试在正交表的基础上放弃正交表的整齐可比性,进一步提高试验点的“均匀分 散性”。与正交试验相比,进一步减少了试验的次数。 3. Alpha测试 在系统开发接近完成时对应用系统的测试;测试后仍然会有少量的设计变更 。这种测试一般由最终用户或其它人员完成,不能由程序或测试员完成。 Beta测试 当开发和测试根本完成时所做的测试,最终的错误和问题需要在最终发行前找 到。这种测试一般由最终用户或其它人员完成,不能由程序员或测试员完成。 4. 当输入条件之间的组合对输出结果具有影响。可以使用决策表解决。 优点:它能把复杂的问题按各种可能的情况一一列举出来,简明而易于理解,也可避免 遗漏。 缺点:不能表达重复执行的动作,例如循环结构 5. 最佳并发用户数:体现系统最佳的用户负载 最大并发用户数:体现最大的用户负载 吞吐量(TPS):单位时间内处理的客户端请求数量,体现处理的容量 响应时间(Response Time):服务器对每个应用请求的处理时间,体现处理的速度 资源利用率:体现系统资源的使用程度 五.应用题 1. 问题如下:”??对功率大于50马力的机器、维修记录不全或已运行10年以上的机器, 应给予优先的维修处理??” 。这里假定,“维修记录不全”和“优先维修处理”均已在别 处有更严格的定义 。请用因果图或决策表进行分析,并给出测试用例。 2. 某保险公司的人寿保险的保费计算方式为: 投保额×保险费率 其中,保险费率依点数不同而有别,10点及10点以上保险费率为0.6%,10点以下保 险费率为0.1%;而点数又是由 投保人的年龄和抚养人数来决定,具体规则如下: 针对保费,用等价类方法和边界值法设计测试用例 要求: 给出弱一般等价类、强一般等价类法的测试用例 写出弱健壮和强健壮法设计的测试用例的个数 3. 某公司的折扣政策:年交易额在10万元以下,无折扣;在10万元以上并且近三个月无欠 款,折扣率10%;在10万元以上,虽三个月有欠款,但与公司交易10年以上,折扣率8%;在10 万元以上,虽三个月有欠款,与公司交易10年以下,折扣率5%,否则无折扣,请用决策表(判 定表)设计测试用例。 4. 某城市电话号码由三部分组成,分别是: 地区码—— 空白或3位数字; 前 缀——为三位数字,但不能 “0”,“1”开头; 后 缀——4 位数字。 假定被测程序能接受一切符合上述规定的电话号码, 拒绝所有不符合规定的 电话号码。请用等价类设计测试用例。 要求: 给出弱一般等价类、强一般等价类法的测试用例 写出弱健壮和强健壮法设计的测试用例的个数 给出分析过程 5. 某软件的一个模块的需求规格说明书中描述: (1)年薪制员工:严重过失,扣年终风险金的4%;过失,扣年终风险金的2%。 (2)非年薪制员工:严重过失,扣当月薪资的8%;过失,扣当月薪资的4%。 请绘制出决策表,并给出相应的测试用例。 6. 某公司招聘人员,其要求为:学历:本科及以上;专业:计算机、通信、自动化;年龄 :22-30 岁。 (1)请划分出各条件的有效等价类和无效等价类。 (2)给出弱一般等价类、强一般、弱健壮等价类法的测试用例 (3)写出强健壮法设计的测试用例的个数 7. NextDate 函数包含三个变量:month 、 day 和 year ,函数的输出为输入日期后一天 的日期。 例如,输入为 2006年3月 7日,则函数的输出为 2006年3月8日 。 要求输入变量 month 、 day 和 year 均为整数值,并且满足下列条件: (1)1≤month≤12 (2)1≤day≤31 (3)1920≤year≤2050 (1) 给出弱一般等价类、强一般、弱健壮等价类法的测试用例 (2) 写出强健壮法设计的测试用例的个数 8. NextDate 函数包含三个变量:month 、 day 和 year ,函数的输出为输入日期后一天 的日期。 例如,输入为 2006年3月 7日,则函数的输出为 2006年3月8日 。 要求输入变量 month 、 day 和 year 均为整数值,并且满足下列条件: (1)1≤month≤12 (2)1≤day≤31 (3)1912≤year≤2050 (1) 给出边界值健壮性测试的测试用例 (2)给出边界值最坏情况测试和边界值健壮最坏情况测试的测试用例个数 9. 假设查询某个人时有三个查询条件: 请利用正交测试法设计测试用例。 正交表L4(23) 10. 编写一个三角形判定函数,输入三角型的三个边长:A、B 和C。当三边不可能构成三角 形时提示错误,可构成三角形时计算三角形周长。若是等腰三角形打印“等腰三角形”,若 是等边三角形,则提示“等边三角形”。 请根据决策表法设计测试用例。 11. 编写一个三角形判定函数,输入三角型的三个边长:A、B 和C。当三边不可能构成三角 形时提示错误,可构成三角形时计算三角形周长。若是等腰三角形打印“等腰三角形”,若 是等边三角形,则提示“等边三角形”。 (1)请写出弱一般、强一般、弱健壮等价类测试用例 (2)请写出强健壮等价类的测试用例个数 要求写出分析过程 12. 某个软件的规格说明中包含了下面的要求:第一例字符必须是A或B,第二列字符必须是 一个数字,在此情况下进行文字的修改。但如果第一列字符不正确,则给出信息 L,如果第 二列字符非数字,则给出信息 M。请用基于决策表的测试方法进行测试, 并设计测试用例覆 盖每一种情况。 1 — 第一列字符为A 50—修改文件 2 — 第一列字符为B 51—发信息L 3 — 第二列字符为数字 52—发信息M 13. 某电力公司有ABCD四类收费标准,并规定: 居民用电<100度/月,按A类收费; >=100度/月,按B类收费 ; 动力用电<10000度/月,非高峰,按B类收费 ; >=10000度/月,非高峰,按C类收费 ; <10000度/月,高峰,按C类收费 ; >=10000度/月,高峰,按D类收费 ; 请用决策表设计测试用例。 14. 某商场促销活动期间,对持商场会员卡的顾客,实行8.5折优惠,满1000元实行7折 优惠 ;对其他顾客消费满1000元的,实行9折优惠,并免费办理会员卡。请给出相应的决策表和测 试用例。 15. 在银行业务信息系统中, 有三个输入条件: A——活期存折账户,B——正确的密码输入,C——一本通账户(活期、定期合并在一本 通存折上); 有两个输出结果: e——显示活期账户信息,f——显示定期账户信息。 如果同时满足A、B,或者同时满足B、C,就会有e;如果同时满足B、C,则会有f。请用 决策表设计以上描述的测试用例。 解答: 1. 假设A=功率大于50马力吗?,B=维修记录不全吗?C=运行超过10年吗? 2. 弱一般等价类的测试用例 {1,4}、{2,5}、{3,6} 强一般等价类的测试用例 {1,4}、{1,5}、{1,6}、{2,4}、{2,5}、{2,6}、{3,4}、{3,5}、{3,6} 弱健壮生成测试用例个数为6个 强健壮生成测试用例个数为20个 3. 测试用例 4. (1) 给出弱一般等价类、强一般等价类法的测试用例 弱一般等价类、强一般等价类的测试用例相同 注:多写不扣分,但是少写一个扣一分 ()276-2345 覆盖 ①、 ③、④ (635)805-9321 覆盖 ②、 ③、④ (2)写出弱健壮和强健壮法设计的测试用例的个数 弱健壮生成测试用例个数为13个 强健壮生成测试用例个数为 5*6*4 5. 测试用例 1.C1,C3->A3 2.C1,C4->A2 3.C1,C5->A1 4. !C1,C3->A5 5. !C1,C4->A5 6. !C1,C5->A1 6. 学历:有效等价类:{(1)本科}; 无效等价类{(2)专科} 专业:有效等价类:{(3)计算机,(4)通信,(5)自动化},无效等价类{(6)英语} 年龄:有效等价类:{(7)25};无效等价类:{(8)20,(9)33} 弱一般等价类,强一般等价类测试用例 (本科,计算机,25),(本科,通信,25),(本科,自动化,25) 弱健壮测试用例 (本科,计算机,25),(本科,通信,25),(本科,自动化,25) (专科,计算机,25),(本科,英语,25),(本科,计算机,20) (本科,计算机,33) 强健壮测试用例个数:24个 7. 月:有效等价类:{(1)5}; 无效等价类:{(2)-1,(3)14} 日:有效等价类:{(4)6};无效等价类:{(5)-1,(6)33} 年:有效等价类:{(7)2000};无效等价类:{(8)1900,(9)2055} 弱一般等价类,强一般等价类测试用例(月日年) (5,6,2000) 弱健壮测试用例 (5,6,2000),(-1,6,2000),(14,6,2000),(5,-1,2000),(5,33,2000),(5 ,6,1900),(5,6,2055) 强健壮测试用例个数:3*3*3个 8. 边界值健壮性测试的测试用例 边界值最坏情况测试的测试用例个数:125个 边界值健壮最坏情况测试的测试用例个数:343个 9. 有三个因素 姓名、身份证号、手机号码 每个因素有两个水平 姓名:填、不填 身份证号:填、不填 手机号码:填、不填 代入正交表得 测试用例如下: 10. 1:填写姓名、填写身份证号、填写手机号 2:填写姓名、不填身份证号、不填手机号 3:不填姓名、填写身份证号、不填手机号 4:不填姓名、不填身份证号、填写手机号 11. R1={:等边三角形} 有效类{三边相等},无效类{(三边相等,都为负)} R2={:等腰三角形} 有效类{二边相等} 无效类{(二边相等,存在边为负),(二边相等,不构成三角形)} R3={: 不等边三角形} 有效类{三边不相等} 无效类{(三边不相等,不构成三角形), (三边不相等,存在边为负)} 弱一般与强一般等价类测试用例: 测试用例 a b c 有效等价类 W1 5 5 5 等边三角形 W2 2 2 3 等腰三角形 W3 3 4 5 不等边三角形 弱健壮等价类测试用例: 测试用例 a b c 有效等价类 WR1 -1 -1 -1 R1 WR2 5 -1 5 R2 WR3 5 100 5 R2 WR4 100 5 10 R3 WR5 5 -1 10 R3 W1 5 5 5 等边三角形 W2 2 2 3 等腰三角形 W3 3 4 5 不等边三角形 强健壮等价类测试用例个数:18个 12. 测试用例 13. 原因: 1— 居民用电 2— 动力用电 3— <100度/月 4— 非高峰 5— <10000度/月 结果 A--按A类收费 B—按B类收费 C—按C类收费 D—按D类收费 设计测试用例: 1:输入数据——居民电,90度/月; 预期结果——A 2:输入数据——居民电,110度/月; 预期结果——B 3:输入数据——动力电,非高峰,8000度/月; 预期结果——B 4:输入数据——动力电,非高峰,12000度/月; 预期结果——C 5:输入数据——动力电,高峰,9000度/月; 预期结果——C 6:输入数据——动力电,高峰,11000度/月; 预期结果——D 14. 测试用例: 输入数据——持会员卡,消费<1000元 输出结果——实行8.5折优惠 输入数据——持会员卡,消费≥1000元 输出结果——实行7折优惠 输入数据——未持会员卡,消费<1000元 输出结果——没有优惠 输入数据——未持会员卡,消费≥1000元 输出结果——实行9折优惠,并免费办理会员卡 15. 测试用例: 1:输入数据——使用活期存折账户并输入正确的密码;预期结果——显示活期账户信息 2:输入数据——使用活期存折账户,未进行其他操作;预期结果——没有显示 3:输入数据——使用一本通账户并输入正确的密码;预期结果——显示活期和定期账户 信息 4:输入数据——直接输入正确密码;预期结果——没有显示 5:输入数据——使用一本通账户,未进行其他操作;预期结果——没有显示 6:输入数据——未进行任何操作;预期结果——没有显示 第五章 单元测试与Junit 一.判断题 1. 程序员与测试工作无关。( ) 2. Junit只是单元测试工具,并不能实现回归测试。( ) 3. 在做程序的单元测试时,桩模块比驱动模块容易编写。( ) 4. 代码评审员必须由测试员担任。( ) 5. 代码评审是检查源代码是否达到模块设计的要求。( ) 6. 测试在编码和调试完成后才进行。( ) 7. 测试和调试没有什么区别。( ) 8. 单元测试多采用手工执行方式。( ) 9. 单元测试多采用自动执行方式。( ) 10. 软件单元的缺陷可以在集成测试阶段发生并修复,所以没有必要进行单元测试。( ) 11. 有经验的软件开发人员对其开发的代码没必要进行单元测试。( ) 解答: 1. 错 2. 错 3. 错 4. 错 5. 错 6. 错 7. 错 8. 错 9. 对 10. 错 11. 错 二.填空题 1. 单元测试主要由_______________人员完成。 2. 单元测试的对象是_________________。 3. Junit是____________测试工具。 4. Junit3通过_____________类收集TestCase运行的结果,记录运行的详细情况。 5. Junit3通过______________和______________来建立测试环境和销毁测试环境。 6. Junit4使用元标签______________表示某些方法尚未完成,暂不参与此次测试。 7. Junit4使用元标签______________用于在每个测试方法运行前均初始化一次 8. Junit4使用元标签______________用于每个测试方法运行完毕后执行 9. Junit4使用元标签______________用于在测试类创建时运行一次 10. Junit4使用元标签______________用于在测试类结束时运行一次 解答: 1. 开发人员 2. 类或函数 3. 单元 4. TestResult 5. Setup()、teardown() 6. @Ignore: 7. @Before 8. @After 9. @BeforeClass 10. @AfterClass 三.名词解释 1. 驱动模块 2. 桩模块 3. 单元测试 4. Mock Object 解答: 1. 用以模拟被测模块的上级模块,接受测试数据,将相关数据传给被测模块,并显示结果 。 2. 对顶层或上层模块进行测试时所编写的替代下层模块的程序。 3. 单元测试是对软件基本组成单元进行的测试。 4. 代替与代码协作的对象的对象 四.简答题 1. 假设你开发了一个模块的代码,对该模块测试需要WEB环境,而且该模块调用的另一个模 块由别人正在开发,你该如何测试。 2. 简述单元测试的目标和任务。 3. 构造测试驱动器有哪几种方法,各有什么优缺点。 4. 简述Stub与mock object之间的区别 5. 简述Xunit测试框架具有哪些优点,使得现行的软件单元测试完全基于Xunit框架。 解答: 1. 使用stub stub是旨模拟可能存在或还没写完真实代码所产生的行为,用来替换真正的代码,此时 可以编写桩模块模拟别人正在开发的模块。 stub一般适合代码中粗粒度部分,比如文件系统,连接服务器和数据库等,这里,可以 使用jetty做为WEB服务器,编写桩代码进行测试。 2. 目标:检验程序最小单位有无错误;检验单元编码与设计是否吻合。 任务:模块接口测试、模块局部数据结构测试、模块边界条件测试、模块独立执行通路 测试、模块的各条错误处理通路测试。 3. 4. 使用stub stub是旨模拟可能存在或还没写完真实代码所产生的行为,用来替换真正的代码。 stub一般适合代码中粗粒度部分,比如文件系统,连接服务器和数据库等 stub通常难以编写,尤其是仿真系统很复杂的时候 使用Mock object------------是一个对象 用来代替与你的代码协作的对象。这样与stub有些相似,但是仅限于此。 mock object一般适合代码中细粒度部分 5. 可以使测试代码与产品代码分开。 针对某一个类的测试代码通过较少的改动便可以应用于另一个类的测试。 易于集成到测试人员的构建过程中,XUnit和Ant的结合可以实施增量开发。 XUnit是公开源代码的,可以进行二次开发。 可以方便地对XUnit进行扩展。 五.应用题 1. 现有人编写了类Math,其中有一个求根号静态操作sqrt(x),如果数值正确,输出开根号 的值,如果数据不正确,抛出异常Exception,请用弱健壮等价类法设计测试用例,并写出基 于Junit的测试代码。 2. 现有人编写了计算器类Caculator,其中有一个除法操作divide (x,y),表示x/y,如果 数值正确,输出相应的值,如果数据不正确,抛出异常Exception,请用错误推测法至少设计 3个测试用例,并写出基于Junit的测试代码。 3. 现有人编写了帐号类Account,用于管理个人的存款余额, public Account{ private double balance; //帐号余额,余额最低为0 public double getBalance(){ return balance; } Public void setBalance(double b){ balance=b; } public void deposit(double money) throws Exception { //存款,money如果为负数,抛出异常 } } 请用错误推测法为deposit()函数至少设计3个测试用例,并写出基于Junit的测试代码。 4. 现有人编写了帐号类Account,用于管理个人的存款余额, public Account{ private double balance; //帐号余额,余额最低为0 public double getBalance(){ return balance; } Public void setBalance(double b){ balance=b; } public double withdrawl(double money) throws Exception { //取款,money如果为负数或余额不足,抛出异常 } } 请用错误推测法为withdrawl()函数至少设计3个测试用例,并写出基于Junit的测试代码 。 5. 某一种8位计算机,其十六进制常数的定义是以0x或0X开头的十六进制整数,其取值范围 为-7f~7f(不区分大小写字母),如0x13、0x6A、-0x3c。 (1)请写出弱一般、强一般、弱健壮等价类测试用例 (2)请写出强健壮等价类的测试用例个数 要求写出分析过程 解答: 1. 变量X,有效等价类:{(x为正整数);(x为正浮点数),(x为0)},无效等价类:{( x为负数)} public class TestSample extends TestCase{ public void testSqrtInteger(){ float result=Math.Sqrt(4); Assert.assertEquals ( 2,result); } public void testSqrtFloat(){ float result=Math.Sqrt(1.44); Assert.assertEquals ( 1.2,result); } public void testSqrtZero(){ float result=Math.Sqrt(0); Assert.assertEquals ( 0,result); } public void testSqrtError(){ try{ float result=Math.Sqrt(-4); fail(“data is error”); } catch(Exception err){ Assert.assertTrue(true); } } } 2. public class TestSample extends TestCase{ public void testSqrtFloat(){ Caculator c=new Caculator(); float result=c.divide(4.4,2.2); Assert.assertEquals ( 2,result); } public void testSqrtZero(){ Caculator c=new Caculator(); float result=c.divide(0,4); Assert.assertEquals ( 0,result); } public void testSqrtError(){ try{ Caculator c=new Caculator(); float result=c.divide(4,0); fail(); } catch(Exception err){ Assert.assertTrue(true); } } } 3. public class TestSample extends TestCase{ public void testDeposit (double money){ Account a=new Account (); a.setAccount(0); double result= a.deposit(2); Assert.assertEquals ( 2,result); } public void testDepositZero(){ Account a=new Account (); a.setAccount(0); double result= a.deposit(0); Assert.assertEquals ( 0,result); } public void testDepositError(){ try{ Account a=new Account (); a.setAccount(4); double result= a.deposit(-1); fail(); } catch(Exception err){ Assert.assertTrue(true); } } } 4. public class TestSample extends TestCase{ public void testWithDrawlEqual (double money){ Account a=new Account (); a.setAccount(5); double result= a. withdrawl (5); Assert.assertEquals ( 0,result); } public void testWithDrawlNegative (){ try{ Account a=new Account (); a.setAccount(5); double result= a. withdrawl (-1); fail(); } catch(Exception err){ Assert.assertTrue(true); } } public void testWithDrawlTooMuch (){ try{ Account a=new Account (); a.setAccount(5); double result= a. withdrawl (8); fail(); } catch(Exception err){ Assert.assertTrue(true); } } } 5. 输入条件 有效等价类 无效等价类 开头字符 由0x或0X开头 (1) 以字母开头 以非0数字开头 (2)(3) 数值字符 数字或A—F的字母 (4) A—F以外的字母 (5) 数值 ≥-7f且≤7f (6) <-7f >7f (7)(8) 弱一般、强一般等价类测试用例 {0x4F} 弱健壮等价类测试用例 {0x4f,,ax4f,1x4f,ox4g, 0x8f,-0x8f,0x8f} 强健壮等价类的测试用例个数:18 第六章 集成测试和系统测试 一.判断题 1. 验收测试是以最终用户为主的测试。( ) 2. Beta 测试是验收测试的一种。( ) 3. 自顶向下的集成方法属于非渐增式测试模式。( ) 4. 自顶向下的集成方法属于渐增式测试模式。( ) 5. 改进的三明治集成方法不需要驱动模块,但需要桩模块。( ) 6. 回归测试不需要补充新的测试用例。( ) 7. 压力测试和负载测试的测试目的相同。( ) 8. 验收测试由用户进行,不需要编写正式的、单独的验收测试计划。( 9. 所有软件必须进行某种程度的兼容性测试。( ) 10. 大棒集成方法属于非渐增式测试模式。( ) 11. 验收测试是由最终用户来实施的。( ) 12. 验收测试没必要一定要在实际的用户运行环境中进行。( ) )13. 大棒集成方法基本程序能工作的时间最早。( ) 解答: 1. 对 2. 对 3. 错 4. 对 5. 错 6. 错 7. 错 8. 错 9. 对 10. 对 11. 错 12. 对 13. 错 二.填空题 1. 在兼容性测试中,_______________是指可以使用软件的以前版本, _________________ 是指可以使用软件的未来版本 2. 检测系统对非法侵入的防范能力的测试,称之为“_____________测试”。 3. 回归测试的目的是_________________________________________________________ 4. 集成测试主要是由________________人员完成。 5. 对系统不断施加越来越大的负载,则确定系统的瓶颈的测试称之为___________测试。 6. 可靠性测试有二个关键的数据,通过________________________表示是否超过规定时限 ,通过_______________________表示在一年中应不超过多少时间。 7. 针对软件的用户手册进行测试,称之为“_______________”。 8. 测试软件在安装过程中给用户的提示是否清楚明了、安装的操作是否容易、安装过程是 否太冗长、各系统设置是否正确,称之为“_______________”。 9. 测试软件在卸装过程中,系统的提示是否清楚明了、操作是否简单、卸装是否彻底,称 之为“_________________”。 10. 测试软件的界面布局是否符合用户的使用习惯,称之为________________。 解答: 1. 向前兼容、向后兼容 2. 安全性测试 3. 验证修改的代码是否引入新的缺陷 4. 测试人员 5. 压力测试 6. 平均失效间隔时间、因故障而停机的时间 7. 文档测试 8. 安装测试 9. 卸装测试 10. 界面测试/易用性测试 三.名词解释 1. α测试 2. 冒烟测试 3. β测试 4. 验收测试 5. 功能测试 6. 兼容性测试