软件测试和做科学实验一样,经常需要在被测试数据之外,增加设计一组数据作为对比样本,用以判断软件在被测试条件下的实际执行结果是否与预期相符。在很多时候,这个对比样本也是预期结果。在工作中,经常有测试人员对于如何选取测试对比样本感到比较疑惑,所以我把个人在这方面的经验总结成本文。
在我的测试经验中,测试对比样本主要可以通过如下几种途径来选取:
1、人工分析;
2、被测软件的其他输入;
3、同类软件。
一、人工分析
人工分析:也是根据相关的需求和设计文档,分析待测程序在被测试条件下的内部处理逻辑,以人工方式进行计算、推导,得到的预期结果。
当然,这里说的人工方式,其实也有可能是测试人员自己编写一个小程序或脚本、甚至是电子表格公式来计算,取决于分析和计算的复杂程度。一般情况下,测试对比样本(预期结果)都可以通过这种方式得到。实际的例子太多了,比如:测试软件有个功能是用来改变某个数据对象的状态的,可以直接通过设计文档知道该功能会影响哪些数据和文件属性等。
优点:应用广泛、几乎适用于所有情况
缺点:在复杂的计算中较为费时费力、只能从正面验证
二、被测软件的其他输入
被测软件的其他输入:被测试软件在与被测条件可类比的输入条件下的执行结果,使被测条件下的实际结果是否正确能一目了然。
增加或减少特定的被测条件,可以直观地了解到该条件对结果的影响,从而判断实际执行结果是否与该被测条件对结果的预期影响相符。特别需要提醒注意,此方法有一个前提:被测试软件在其他条件下的执行结果可信赖,也是用以进行类比的测试条件通过了测试。实际的例子,比如搜索功能里的是否区分大小写选项,测试时只需要在不启用该选项时的结果通过测试的情况下,与启用该选项后的结果对比即可。
优点:直观、比手工分析省时省力、可进行负面验证
缺点:依赖于待测软件的已验证功能、难以应付预期结果不是“非此即彼”的测试条件
三、同类软件
同类软件:其他可信赖的同类软件在被测条件或类似条件下的执行结果。
这里的同类软件,可以是被测试软件的已通过测试版本,也可以是使用同一设计标准的同行(竞争对手)软件。实际的例子,如计算两个句子的相似程度。由于该算法比较复杂,用第一种方式虽然是准确的,但是太费时费力,在实际测试中不具有可行性,所以我们一般是用待测软件的上一个公开发布版本作参考。另外一个选择是其他竞争对手的同类软件,但由于算法上的细节或多或少肯定有区别,这类结果只能作为参考,而不能直接照搬。
优点:直观、比手工分析省时省力
缺点:依赖于被测软件的已测试版本或其他同类软件