软件构造(二)
作者:互联网
一、前言
认可“测试”的价值,搞清楚“测试优先”的哲理
学会用等价划分和边界值分析方法为模块设计测试用例
可用工具度量一组测试用例对代码的“覆盖度”
各种各样的测试,都有些初步了解
二、测试
2.1.测试用例
测试优先的编程/测试驱动开发
单元测试:使用JUnit进行自动化单元测试
2.2.黑盒测试:1.等价类划分;2.边界值分析
2.3.白盒测试:覆盖度
2.4.测试种类:集成测试、回归测试、在程序中文档化测试策略
三、软件测试
3.1.作用
(1)软件测试是提高软件质量的重要手段,用以确认是否达到用户需求(可用级别)
(2)测试就是为了寻找错误,但是再好的测试也无法证明系统里不存在错误
(3)好的测试能够发现错误,不冗余,拥有最佳特性,不能太复杂也不能太简单
3.2.测试分类
静态测试与动态测试
静态测试不实际执行程序,使用工具/文本编辑器检查源代码结构或编译器(预编译器)等,检查语法和数据流作为静态程序分析。
动态测试实际上用给定的集合执行已编程的代码的测试用例。
3.2.1.测试与调试:测试发现是否存在错误,而调试识别错误根源,消除错误。
3.2.2.白盒测试与黑盒测试:白盒测试是对程序内部代码结构的测试,而黑盒测试是对程序外部表现出来的行为的测试
3.2.3.测试用例:输入+执行条件+期望结果
3.3.测试优先编程
过程:先写spec-再写符合spec的测试用例-写代码、执行测试、有问题再改、再执行测试用例,直到通过它;Spec描述了函数的输入和输出行为:
它给出了参数的类型和任何额外的约束对它们(例如sqrt()的形参必须是非负的);它还给出了返回值的类型和返回值的方式与输入有关;在代码中,规范由方法签名和上面的注释描述了它的功能。
优点:先写测试会节省大量的调试时间
3.4.单元测试:针对软件的最小单元模型开展测试,隔离各个模块,容易定位错误和调试
3.5.JUnit测试机:是作为注释前面的方法编写的,使用@Test,一个单元测试方法通常包含一个或多个模块,然后使用断言检查结果assertEquals、assertTrue和assertFalse等方法。
3.6.黑盒测试:用于检查代码的功能,不关心内部实现细节,检查程序是否符合规约
测试用例通常来源于软件的外部描述,包括规格、要求和设计参数。
选择一组足够小的测试用例来快速运行,但又足够大验证程序。
黑盒测试完全从函数spec导出测试用例,不考虑函数内部实现
3.6.1基于等价类划分的测试:将被测函数的输入域划分为等价类,从等价类中导出测试用例,针对每个输入数据需要满足的约束条件,划分等价类。
等价类例子:
1.如果输入条件指定了一个范围,则一个有效,两个无效等价类。
2.如果输入条件需要指定的值,一个有效,一个无效等价类。
3.如果输入条件指定了一个集合的成员,一个有效,一个无效等价类。
4.如果输入条件为布尔值,则一个有效类和一个无效等价类。
3.6.2边界值分析在边界值上选择测试用例以补充等价划分。不选择等价类中的任何元素,而是导致在类的“边缘”选择测试用例。
意义:1.边界值分析方法是对等价类划分方法的补充;2.在等价类划分时,将边界作为等价类之一加入考虑
3.7白盒测试要考虑内部实现细节可以根据程序执行路径设计测试用例,一般较早执行
3.8.代码覆盖度用于衡量已有的测试用例有多大程度覆盖了被测程序
覆盖分类:
(1)函数覆盖:测试功能
(2)语句覆盖:测试每条语句
(3)分支覆盖:测试对错时的分支
(4)条件覆盖:测试条件对或错的分支
(5)路径覆盖:测试分支的组合
测试效果:路径覆盖>分支覆盖>语句覆盖
测试难度:路径覆盖>分支覆盖>语句覆盖
3.9.回归测试
回归测试:一旦程序被修改,重新执行之前的所有测试,一旦发现bug,要马上写一个可重现该bug的测试用例,并将其加入测试库
3.10.测试策略需要在程序中显式记录下来,使得在代码评审过程中,其他人可以理解你的测试,并评判你的测试是否足够充分
标签:覆盖,边界值,等价,测试用例,构造,测试,软件,输入 来源: https://www.cnblogs.com/llhm/p/16348839.html