1.1 什么是测试用例
1.1.1 测试用例
1) 软件测试是软件质量管理中最实际的行动,同时也是耗时最多的一项。基于时间因素的考虑,软件测试行为必须能够加以量化,才能进一步让管理阶层掌握所需要的测试过程 ,而测试用例就是将测试行为具体量化的方法之一
2) 简单地说,测试用例就是设计一个情况,软件程序在这种情况下,必须能够正常运行并且达到程序所设计的预期结果,如果程序在这种情况下不能正常运行,而且这种问题会重复发生,那就表示软件程序人员已经测出软件有缺陷, 这时候就必须将这个问题标示出来,并且通知软件开发人员。软件开发人员接获通知后,将这个问题修改完成于下一个测试版本内
3) 软件测试I程师取得新的测试版本后,必须利用同一个用例来测试这个问题,确保该问题己修改完成。这个过程称为”复测或返测”
4) 一句话记忆:测试用例是为了某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求
1.2 测试用例特点
1.2.1 使用测试用例的好处主要体现现在以下几个方面
- 在开始实施测试之前设计好测试用例,可以避免盲目测试并提高测试效率
- 测试用例的使用令软件测试的实施重点突出、目的明确
- 在软件版本更新后只需修正少部分的测试用例便可展开测试工作,降低工作强度,缩短项目周期
- 功能模块的通用化和复用化使软件易于开发,而测试用例的通用化和复用化则会使软件测试易于开展,并随着测试用例的不断精化其效率也不断攀升
- 测试用例构成了设计和制定测试过程的基础。测试的"深度”与测试用例的数量成比例。由于每个测试用例反映不同的场景、条件或经由产品的事件流,因而,随着测试用例数量的增加,对产品质量和测试流程的信心也,会增强
- 测试工作量与测试用例的数量成比例。根据全面且细化的测试用例,可以更准确地估计测试周期各连续阶段的时间安排
- 测试设计和开发的类型以及所需的资源主要都受控于测试用例
- 测试用例通常根据它们所关联关系的测试类型或测试需求来分类,而且将随类型和需求进行相应地改变。最佳方案是为每个测试需求至少编制两种测试用例: -种测试用例用于证明该需求已经满足,称作正向测试用例;另种测试用例反映某个无法接受、 反常或意外的条件或数据,用于论证只有在所需条件 下才能够满足该需求 ,,这种测试用例称作反向测试用例
1.3 测试用例的目的
1.3.1 设计测试用例的目的
1) 有效性:测试用例是测试人员测试过程中的重要参考依据。不同的测试人员根据相同的测试用例所得到的输出应该是一致的,对于准确的测试用例的计划、执行和跟踪是测试的有效性的有力证明
2) 可复用性:良好的测试用例具有重复使用的功能,使得测试过程事半功倍,, 因此,设计良好的测试用例将大大节约时间,提高测试效率
3) 易组织性:即使是很小的项目,也可能会有几千甚至更多的测试用例,测试用例可能在数月甚至几年的测试过程中被创建和使用,正确的测试计划会很好地组织这些测试用例并提供给测试人员或者其他项目的人参考和有效的使用
4) 可评估性:从测试的项目管理角度来说,测试用例的通过率是检验代码质量的保证。经常说代码的质量不高或代码的质量很好,量化的标准应该是测试用例的通过率和软件错误的数目
5) 可管理性:测试用例也可以作为检验测试人员进度、工作量以及跟踪/管理测试人员的工作效率的因素,尤其是比较适合于对新测试人员的检验,从而更加合理做出测试安排和计划
1.4 测试用例说明
1.4.1 一个标准的测试用例中应该包含以下内容
- 标识符:由测试设计过程说明和测试程序说明引用的惟一标识符
- 测试项:描述被测试的详细特性、代码模块等,应该比测试设计说明中所列的特性更加具体。如果测试设计说明提到"计算器程序的加法功能”, 那么测试用例说明就会相应地提到"加法运算的上限溢出处理" .它还要指出引用的产品说明书或者测试用例所依据的其他设计文档
- 输入说明:该说明列举执行测试用例的所有输入内容或者条件。如果测试计算器程序,输入说明可能简单到"1+1" 。如果测试蜂窝电话交换软件,输入说明可能是成百上千种输入条件。如果测试基于文件的产品,输入说明可能是文件名和内容的描述
- 输出说明:描述进行测试用例预期的结果。例如,1+ 1等于2吗?在蜂窝软件中上千个输出变量设置正确吗?读取文件的全部内容和预想的一样吗
- 环境要求:是指执行测试用例必要的硬件、软件、测试工具、人员等
- 特殊要求 :描述执行测试必须的特殊要求。测试写字板程序也许不需要任何特殊条件,但是测试一些特殊的软件(如核电站软件)就有特殊要求
- 用例之间的依赖性:如果一个测试用例依赖于其他用例,或者受其他用例的影响,就应该在此注明
1.5 测试用例注意事项
1) 不要设计"穷举测试用例"
2) 在详细测试用例与有效测试时间中找到平衡点
3) 好的测试用例应该多关注"反向测试问题"
4) 测试用例库应该不断更新和维护
5) 测试用例可以复用,但要注意数据有效性与环境变化
6) 测试用例是设计出来的,不是写出来的
7) 多去学习经验丰富的测试工程师所设计的测试用例
8) 针对不同的需求类型和测试对象,灵活采用不同的测试用例设计方法