测试用例概念

概述

软件测试活动中测试用例设计是最重要的工作之一,穷举测试的不可行性使得大多数软件在进行测试的时候只能采取非穷举测试,这又意味着一种冒险。我们需要通过科学合理的测试用例设计技巧,精简测试用例,精准有效的查找隐藏在软件中的缺陷,实现测试工作的”快、准、狠”。

  • :是指通过合理的设计精简测试用例,自然能提高测试速度
  • :是指科学地用例设计,可以提高测试用例的命中率
  • :是指虽然测试用例有限,但是仍然可以实现全覆盖的完备性测试

测试用例的定义

测试用例(Test Case)从宏观来说对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。其内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、实际结果等,最终形成文档。

简单地认为,测试用例是为检测某项特定目标而编制的一组测试输入、执行条件以及预期结果,用于核实是否满足某个特定软件需求。

穷举测试的不可行性

穷举测试的不可行性使得大多数软件在进行测试的时候只能采取非穷举测试,这又意味着一种冒险。例如,Word软件中有一些程序员留下来的许多”彩蛋”,在Word中输入”=rand(2,3)“,然后敲回车,看看有什么意外产生?如果改变rand函数的参数的值呢?这些”彩蛋”都是不容易被测试到的,幸亏这些彩蛋只是程序员的一种善意的打趣方式,但是如果是恶意的,后果将难以想象。静态测试是发现这些缺陷的有效方法之一

好的测试用例应该能发现尚未发现的软件缺陷,而测试无法穷尽,这就需要人们基于风险,通过精心的科学合理的设计少量测试数据,可以高效率地发现软件缺陷。实际测试中,要从大量输入数据中精选有代表性或特殊性的数据来作为测试数据。

另一方面,测试用例的数量增多会造成测试成本的上升,测试用例不够又容易遗漏缺陷,这就产生一对矛盾,如何在测试用例设计和寻找缺陷中找到一个相对平衡点。

测试成本与缺陷的关系

如上图所示,最优测试量在测试缺陷走势图和测试成本走势图的交叉点区域,当软件缺陷降低到某一数值后,测试量的不断上升,同时测试成本随着测试量的增加急剧上涨。

这是软件测试工作中需要关注的问题:如何控制好测试工作量和挖掘缺陷量之间的平衡。测试量主要包括有测试用例的设计、测试脚本开发和测试执行等工作,测试用例的设计是重头戏,当测试用例库复杂庞大时,测试脚本开发和测试执行的工作量随之增加,因此如何基于风险有效控制测试用例的数量和种类是测试工作的关键性问题。

测试用例的特性

测试用例的设计与评估是非常重要的工作甚至可能直接决定了测试工作的策略,测试用例的特性主要包括:

有效性

测试用例是测试人员测试过程中的重要参考依据。不同的测试人员根据相同的测试用例所得到的输出应该是一致的。准确的测试用例可以保障软件测试的有效性和稳定性。

可复用性

良好的测试用例具有重复使用的功能,这样就可以大大地节约测试的时间,提高测试的效率。

易组织性

在一个软件测试流程中测试用例可能有成千上万个,但是好的测试计划可以有效地组织这些测试用例,分门别类地提供给测试人员参考和使用。特别对于测试人员中的新手,好的测试用例可以帮助他们更好地完成复杂的测试任务,提高测试工作的效率。

可评估性

从测试管理的角度,测试用例的通过率和软件缺陷的数目是软件产品质量好坏的测试标准。

可管理性

测试用例可以作为检验测试人员进度、工作量以及跟踪/管理测试人员工作效率的因素。


思考题:一个完整的测试用例通常包含哪些核心要素?请简要说明每个要素的作用。