(三)所见即所得 之 测试用例(1)

如何设计一个好的测试用例?

为了保证软件系统的质量,测试用例的设计不仅需要考虑功能性需求,还要考虑大量的非功能性需求。

1、什么才是“好的”测试用例?

什么才是“好的”测试用例?这个“好”又应该体现在哪些方面?

  • 通常第一反应可能想到的会是 “发现了软件缺陷的测试用例就是好的用例” ,那么反问你 “如果说测试用例发现了缺陷就是好用例,那么在该缺陷被修复后,同样的用例难道就不是好用例了吗?”

  • 还会说 “发现软件缺陷可能性大的测试用例就是好用例” ,这话看起来还是蛮有道理,但反问你 “你打算用什么方法来量化测试用例发现缺陷的可能性?”

  • 类似地 “发现至今未被发现的软件缺陷的测试用例就是好用例”,还是反问你: “如何评估是否还存在未被发现的缺陷?如果软件中根本就没有错误了呢?”

其实,是你定义 “好的”测试用例 的思路错了,这就有点像“傻子吃烧饼”,连吃五个不饱,吃完第六个终于饱了,于是他说:早知道吃了第六个就会饱,何必吃前面五个呢。

仔细想想,他吃的六个烧饼其实是一个整体,一起吃下去才会饱,而你无法找到吃一个就能饱的“好”烧饼。

对于测试用例其实也是同样的道理,“好的”测试用例一定是一个完备的集合,它能够覆盖所有等价类以及各种边界值,而跟能否发现缺陷无关。

我举一个“池塘捕鱼”的例子,可以帮你更好地理解什么是“好的”测试用例。

如果把被测试软件看作一个池塘,软件缺陷是池塘中的鱼,建立测试用例集的过程就像是在编织一张捕渔网。“好的”测试用例集就是一张能够覆盖整个池塘的大渔网,只要池塘里有鱼,这个大渔网就一定能把鱼给捞上来。

如果渔网本身是完整的且合格的,那么捞不到鱼,就证明池塘中没有鱼,而渔网的好坏与池塘中是否有鱼无关。

2、“好的”测试用例必须具备哪些特征?

一个“好的”测试用例,必须具备以下三个特征。

  1. 整体完备性: “好的”测试用例一定是一个完备的整体,是有效测试用例组成的集合,能够完全覆盖测试需求。

  2. 等价类划分的准确性: 指的是对于每个等价类都能保证只要其中一个输入测试通过,其他输入也一定测试通过。

  3. 等价类集合的完备性: 需要保证所有可能的边界值和边界条件都已经正确识别。

做到了以上三点,就可以肯定测试是充分且完备的,即做到了完整的测试需求覆盖。

你可能感兴趣的:((三)所见即所得 之 测试用例(1))