测试理论
一、软件测试的原则
- 测试用例的一个必需部分是对预期输出或结果进行定义;
- 应当彻底检查每个测试的执行结果;
- 测试用例的编写不仅应当根据有效和预料到的输入情况,而且也应当根据无效和未预料到的输入情况;
- 检查程序是否“未做其应该做的”仅是测试的一半,测试的另一半是检查程序是否“做了不该做的”;
- 应避免测试用例用后即弃,除非软件本身就是一个一次性的软件(用例可复用原则);
- 计划测试工作时不应默许假定不会发现错误;
- 程序某部分存在更多错误的可能性,与该部分已发现错误的数量成正比;
- 软件测试是一项极富创造性、极具智力挑战性的工作。
二、测试用例的设计
合理的测试用例设计策略:通过使用特定的面向黑盒测试的测试用例设计方法,而后使用白盒测试方法对程序的逻辑结构进行检查以补充这些测试用例,借此来设计一个相当严格的测试。
1、白盒测试
白盒测试,又称为逻辑驱动的测试。使用这种测试方法时,允许我们检查程序的内部结构。这种测试策略对程序的逻辑结构进行走查,从中获取测试数据(遗憾的是,常常忽略了程序的规范)。
白盒测试的主要方法:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖和多重条件覆盖。
2、黑盒测试
黑盒测试,又称为数据驱动的测试或输入/输出驱动的测试。使用这种测试方法时,将程序视为一个黑盒子。测试目标与程序的内部机制和结构完全无关,而是将重点集中放在发现程序不按其规范正确运行的环境条件。
在这种方法中,测试数据完全来源于软件规范(换句话说,不需要去了解程序的内部结构)。
黑盒测试的主要方法:等价类划分、边界值分析、因果图分析和错误猜测。
3、错误猜测
错误猜测主要是一项依赖于直觉的非正规的过程,其基本思想是列举出可能犯的错误或错误易发情况的清单,然后根据清单编写测试用例。
由于无法给出一个规程来,次优的选择是讨论错误猜测的实质,最好的做法是举出实例。比如测试一个排序程序,要探讨的情况如下:
- 输入列表为空;
- 输入列表仅包含一个类目;
- 输入列表所有类目的值都相同;
- 输入列表已经排过序;
4、测试策略
可以采用白盒测试+黑盒测试的用例设计方法,组合起来为一个整体的策略。这是因为,每一种方法都可以提供一组具体的有用的测试用例,但是都不能单独提供一个完整的测试用例集。
一组合理的策略如下:
- 如果规格说明中包含输入条件组合的情况,应首先使用因果图分析方法;
- 在任何情况下都应使用边界值分析方法。应记住,这是对输入和输出边界进行的分析。边界值分析可以产生一系列补充的测试条件,但是,多数甚至全部条件都可以整合到因果图分析中。
- 应为输入和输出确定有效和无效等价类,在必要情况下对上面确认的测试用例进行补充;
- 使用错误猜测技术增加更多的测试用例;
- 针对上述测试集检查程序的逻辑结构。应使用判定覆盖、条件覆盖、判定/条件覆盖或多重条件覆盖准则。如果覆盖准则未能被前4个步骤中确定的测试用例所满足,并且满足准则也并非不可能,那么增加足够数量的测试用例,以使覆盖准则得到满足;
三、模块(单元)测试
四、更高级别的测试
1、功能测试
2、系统测试
- 能力测试
- 容量测试
- 强度测试
- 可用性测试
- 安全性测试
- 性能测试
- 存储测试
- 配置测试
- 兼容性/转换测试
- 安装测试
- 可靠性测试
- 可恢复行测试
- 服务/可维护性测试
- 文档测试
- 进程测试
- 系统测试的执行