单元测试之动态测试
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
http://www-306.ibm.com/software/rational/
基本路径测试法的步骤:
导出程序控制流图 计算程序圈复杂度 确定基本路径集 准备测试用例
第1步:导出程序的控制流图
结点:代表一个或多个无 分支的语句。
箭头(边):代表控制流 的方向;一条边必须终止 于一个结点。 区域:边和结点圈定的范 围。 复合条件需改为只有单个 条件的嵌套的判断。
单元测试的过程
测试策划 测试设计和实现 测试执行 测试总结
单元测试之测试策划
Baidu Nhomakorabea
在软件详细设计阶段,测试分析人员根据被测软件的详细 设计文档对测试单元进行分析,明确单元测试的对象、测 试目标、约束条件、覆盖范围、测试特性、测试资源、测 试技术方法、进度及结束条件等,按照Y20_GD812-021要 求编写单元测试计划。 单元测试计划必须进行测试组内评审,主要审查: 1.审查单元测试的内容和范围、资源、各方责任是否明确; 2.测试进度安排是否符合软件开发计划的要求; 3. 测试方法是否合理,有效并且可行; 4.测试活动是否独立; 5.测试文档是否符合Y20_GD812-021的编写要求。 评审通过后方可进入下一步工作
边界值分析法
由过去的经验,程序在边界处的处理常常 是关键,也是容易发生错误的。使用等于, 小于或大于边界值的数据对程序进行测试, 发现错误的概率比较大,因此引入了边界 值分析技术。
边界分析方法的准则:
如果输入条件规定了取值范围,或数据个数,则 可选择下好等于边界值,刚刚在边界范围内或刚 刚超越边界外的值作为测试数据,或是分别选择 最大,最小及稍小于、稍大于最大个数作为测试 数; 针对规格说明的每个输出条件,保用上述准则;
常见的黑盒测试工具
工具名 公司名 官方站点
WinRunner
Astra Quicktest LoadRunner Robot
Mercury Interactive
Mercury Interactive Mercury Interactive IBM/Rational
http://www.merc-inc.com
http://www.merc-inc.com http://www.merc-inc.com http://www-306.ibm.com/software/rational/
TeamTest
QARun QALoad SilkTest
IBM/Rational
Compuware Compuware Segue Software
达到100%判定覆盖
if ((x > 0) && (y < 6))
条件覆盖
构造一组测试用例,使得每一判定语句中 每个逻辑条件的可能值至少满足一次
a && (b || c)
a 1 2 F T b T F c T F 1 2 a F T b T F c F T
判定—条件覆盖
设计足够的测试用例,使得判定中每个条件的所 有可能(真/假)至少出现一次,并且每个判定本 身的判定结果(真/假)也至少出现一次。
b 0 0 1 1 0 0 1 1
c 0 1 0 1 0 1 0 1
a && (b || c) 0 0 0 0 0 1 1 1
修正条件判定覆盖
要求设计测试用例,运行被测程序,使得条件判 断表达式中所有条件操作数逻辑值独立对条件判 定表达式结果影响(意思是在其他的条件不变的 情况下,改变一个人条件)
基于规格说明的测试可以应用于软件测试的各个 阶段。尽管不同测试级别的测试规模、测试输入 与测试输出的复杂度有所不同,但是在应用基于 规格说明的技术方面是类似的。
等价类划分法
等价类划分技术将输入域或输出域划分成 不同的等价类,其中的任何值都能使组件 或系统产生相同的响应结果;
等价类划分的方法是把程序的输入划分若干部 分,然后从每个部分中选取少数代表性数据当 作测试用例。 等价类是指某个输入域的子集合,其中各个输 入数据对于揭露程序中的错误都是等效的。 测试过程中不公要测试有效等价类,也需要测 试无效的等价类。
单元测试之测试总结
测试分析人员根据被测软件的设计文档、单元测试计划、单元测试说 明、测试记录及软件问题报告单等对单元测试进行分析,对未完成的 单元测试用例进行说明和解释;根据测试用例的设计和测试完成情况, 分析单元测试的语句覆盖率、判断覆盖率、MC\DC覆盖率、对未满 足测试覆盖率要求的要给出原因说明;对测试工件进行总结,形成单 元测试总结报告。根据测试记录和软件问题报告单编写测试问题报告。 单元测试总结报告应包含如下内容: 1.概述测试工作内容 2.总结软件单元测试计划与测试说明的不一致性及其原因; 3.对异常终止和不能完成的测试进行说明 4.记录软件单元测试中发现的软件单元与软件详细设计文档之间的差 异 5.分析测试记过以及发现问题,对软件单元的设计与实现进行评价, 并给出改进建议; 6.改进测试情况分析单元测试的分支覆盖率、语句覆盖率、功能覆盖 率,并给出测试结论。
常用的动态测试工具有:C++ Test
黑盒测试
黑盒测试又称功能测试、数据驱动测试或 基于规格说明的测试,这种测试不必了解 被对象的内部情况,而依靠需求规格说明 中的功能来设计测试用例(即基于规格说 明的测试)。
黑盒测试也是单元测试动态测试的重要组 成部分!
测试过程
分析规格说明 根据规格说明选择有效的输入以确定测试对象是否可以正 确地实现需求,同时选择无效的输入确定被测对象能正确 地处理; 根据输入数据确定系统的期望输出; 执行测试用例; 将测试执行得到的实际结果与预期结果比较; 确定测试对象的实现是否符合规格说明;
单元测试的结束条件
1.按要求完成了单元测试计划所规定的测试任务; 2.实际测试过程遵循了原定的软件单元测试计划和软件单 元测试说明的要求; 3.客观、详细地记录了测试过程和测试中发现的所有问题; 4.测试文档齐全、内容及格式符合Y20_GD812-021的要求; 5.测试过程始终受控; 6.测试中发现的问题或异常有合理解释或正确有效的处理; 7.测试覆盖率达到了该软件的测试覆盖率要求; 8.测试通过了软件单元测试评审; 9.全部测试文档、被测试软件单元、测试支持文件和评审 结果已纳入配置管理。
用等价类划分方法设计测试用例
首先建立等价类表,列出所有划分出的等价类:
输入条件 …… 有效等价类 无效等价类 …… ……
从等价类中按以下原则选择测试用例:
设计一个测试用例,使其尽可能多地覆盖尚未被覆盖 的有效等价类。重复这一步,直到所有的有效等价类 都被覆盖为止; 设计一个测试用例,使其公覆盖一个尚未被覆盖的无 效等价类,重复这一步,直到所有的无效等价类都被 覆盖为止
单元测试之测试设计和实现
测试设计人员和测试程序员根据单元测试计划和测试单元的特性,设 计测试用例、获取测试数据、确定测试顺序、获取测试资源、编写测 试程序并建立和校准测试环境。按Y20_GD812-021要求编写软件单元 测试说明。 单元测试设计主要要求如下: 1.对软件详细设计文档的所有软件配置单元应进行性能、功能测试; 2.对所有软件单元的语句、路径、和边界条件应进行全面测试; 3.对所有软件单元所有接口的数据项、数据流应进行全面测试; 4.对所有软件单元的输入输出数据格式应进行全面测试。 5.对所有软件单元安全性设计应进行测试; 单元测试说明和测试环境必须进行测试组内评审,主要审查测试用例 是否完整、正确、可行和充分;审查测试环境是否正确,合理和有效; 测试说明文档是否符合规范要求。 评审必须通过后方可进入下一步。
等价类划分方法
有效等价类:是指对于程序的规格说明来说,是 合理的,有意义的输入数据集合; 无效等价类:是指对于程序的规格说明来说,是 不合理的,无意义的输入数据集合;
如果使用等价类中的某一代表值可以发现某缺陷, 那么使用该类中的任意其他值也可以发现同样的 缺陷; 如果使用等价类中的某一代表值无法发现缺陷, 那么使用该等价类中的任意其他值也无法发现此 缺陷。
1
2
4
3
5
6
7
8
9
第2步:计算程序圈复杂度
从控制流图中计算:
V(G)=边数—结点数+2;或 V(G)=区域数 或 V(G)=独立路径数
1
2
4
3
5
6
7
独立路径是指包括一组以前 没有处理的语句或条件的一 条路径。 V(G) = 12-9+2 = 5
8
9
第3步:确定基本路径集
因此,我们可以选择测试用例1、2 、4、5, 当然,这不是唯一的用例组合。
路径覆盖法
设计适当的测试用例,运行被测程序,使 得程序沿所有可能的路径执行,较大程序 的路径可能很多,所以在设计测试用例时, 要简化循环次数。
基本路径测试方法
在程序控制流图的基础上,通过分析圈杂 度,导出基本可执行路径集合,从而设计 测试用例的方法。
单元测试的环境
单元测试环境可使用与软件开发环境相同 的测试环境进行。 测试工具可使用总师单位认可的测试工具 针对单元测试而言,需要建立单元测试环 境,包括桩函数和测试驱动函数。保证被 测软件单元能够独立运行。 嵌入式软件使用仿真环境做单元测试有时 比真实的运行环境更有效。 经过认可的工具不如负责任的测试人员
a && (b || c)
1 2
a F T b F T c F T a && (b || c) F T
条件判定组合覆盖/%
100
条件组合覆盖
设计足够的测试用例,使得每个判定中条件的各种可能组 合都至少出现一次。这个方法包含了分支覆盖和条件覆盖。
序号 1 2 3 4 5 6 7 8
a 0 0 0 0 1 1 1 1
从程序的圈复杂度可导出程序基 本路径集合中的独立路径条数, 这是确保每个可执行语句至少执 行一次所必需的测试用例的上界 基本路径集:
1
2
4
3
5
6
7
12389 12382389 124589 124689 124789
8
9
第4步:准备测试用例
根据判断结点给出的条件,选择适当的数 据以后保证基本路径集中的每一条路径的 执行。
如果规格说明中指明输入或输出域是个有序的集 合,应注意选择有序集的第一个和最后一个元素 作为测试用例
隐性边界
不是所有的边界都可能通过数字型输入或 输出来确定;
代码中存在许多的循环算法,循环结构在 边界条件中如何处置是众所周知的测试重 点 循环结构的边界很难确定,需要测试人员 熟悉编程语言、数据类型和算法结构。
算法:穷举一个判定中所有条件的真值组合,通 过两两对照因果,从而确定出每个条件的MC/DC 对。然后再进行删减。 一般来说,达到MC/DC判定要求的测试用例数为 n+1~2n(n为条件个数)
修正条件判定覆盖
a 1~5 2~6 3~7 4~8 b 1~3 2~4 5~7 6~8 c 1~2 3~4 5~6 7~8
单元测试 之动态测试
体系文件要求
动态测试 测试人员按照软件单元测试计划和单元测试说明, 执行测试,并如实记录测试结果及发现的所有问 题 测试人员对测试结果进行分析,对未通过测试的 测试用例进行分析,采取相应的措施,对不正确 的或不充分的测试用例进行修正和补充,并进行 回归测试,直至达到测试结束条件,对于异常终 止的测试,记录导致终止的条件未完成测试和未 被修正的错误,填写问题报告单。
if (i > 0) {
i--;
i = 10即可达到100%的语 句覆盖率。
} return i;
}
判定覆盖/分支覆盖
判定覆盖率定义:被测软件实际执行判断分支与 总分支数之比。
int sut(int i) { if (i > 0 { i-} return i; }
i = 10 i = -2
单元测试测试用例设计方法
白盒测试
逻辑覆盖法 路径覆盖法
黑盒测试
等价类划分法 边界值分析法
逻辑覆盖法
语句覆盖 判定覆盖/分支覆盖 条件覆盖 判定—条件覆盖 条件组合覆盖 修正条件判定覆盖
语句覆盖
语句覆盖率定义:语句覆盖率是指被测软件在执 行时语句执行行数与总行数之比。 int sut(int i) {