Bootstrap

编写测试用例方法之等价类划分法

今天我们再来介绍另外一个编写测试用例的方法:等价类划分法,这个方法是最常用的写用例的方法。话不多说,开始整干货,首先,全图镇楼。

之前我们是如何测试一个商品的呢?产品就是要有它的测试点。测试点之前也说过,从它的外观、性能、功能还有安全性、易用性,可扩展性和兼容性这几个方面,对它进行测试点的总结。但是一个产品,它的每一个测试点其实都可以扩展成一个测试用例。

从测试点到测试用例之间,并不是直接把测试点这一句话然后拿过来就可以当测试用例。因为测试点是比较笼统的一个概念。它仅仅说了要测的某一个点,并没有说这一个点里面的输入输出是什么?

数据是什么,步骤都没有。所以需要进一步对测试点进行详细的阐述。然后这个过程就是阐述。阐述完之后所得的结果就是测试用例,针对这个测试点的阐述,具体的方法可以用等价类划分。

等价类划分法可以对测试点进行阐述,经过等价类划分法之后,可以得到很多的测试用例。那么这个等价类划分法是什么方法呢?简单来说就是穷尽可能性,并且找出代表,这就是等价类划分法。

穷尽可能性就是比如说年龄,一个输入框里面需要输入年龄,它的取值范围是 20 岁到 99岁。这时候我们按照等价类划分法的第一条原则就是穷尽可能性,那就是这个输入框里面可以写任何数。

可以写 20 岁以下的,也可以写 20 岁以上的,可以写 99 岁以下的,也可以写 99岁以上的,这都是他的任何可能性。

 第二个就是找出代表,因为现在分了几批,有 20 岁以下的第一批 ,20 岁到 99岁第二批 ,99岁以上第三批。这每一批当中之所以把它分成批次,是因为每一批里面都是一样的。因为17、18、19都是小于 20 的,这是同样的类型。

20 到 99 是大于 20 小于 99 的,比如说30、40、50、60,都是符合的。然后99以上的就是101,102到103,这些都是一样的等价的。所以根据第二个原则就是找出代表,那么就要在这三个批次里面找出代表,因为每个批次里面都是等价的。

比如二十岁以下的,取 17、18 和取 19 或 20 都是一样的效果,他们代表的都是 20 岁以下。所以就找一个代表,比如说 20 岁以下的,取一个值是17,20 岁到 99 岁取一个数,数值是25。然后 99 岁以上的,取的值是103,这就是找出的代表。

根据这个代表,就可以划分为有效等价类和无效等价类,既然找出代表了,就可以拿这些代表直接写测试用例。

 为什么还要划分有效和无效呢?因为我们分了3批,要求就是 20 到 99 岁这个范围之内的,要求的就是有效的,要求之外就是无效的。我们这三个批次有两个是要求之外的,比如说小于 20 岁或是大于 99 岁,这是要求之外的,就是无效的。

把无效的那个批次作为无效等价类,有效的批次就放到有效等价类。所以有效等价类就是 20 到99,无效等价类就是小于 20 大于99。其实一开始分批次的时候,没有直接用有效等价类或者无效等价类,是因为按照经验,这是比较显眼的一个事情。

因为 20 到 99 显然能够分成三段,就是 20 岁以下, 20 到 99 这一段,然后 99  以上这三段。但是实际上等价类划分,就直接是按照有效等价类和无效等价类来的,不按照我们平常的那种经验来。就是有效等价类,就是对于他给的条件就是属于有效的。

 比如他给的条件就是 20 到99,那无效等价类就是对它这个条件取反。20 到 99 那取反就是小于20,是取反的情况。那 20 到 99 取反,大于99,就是区分的另一个情况。还有年龄肯定是一个整数,这个整数是属于有效等价类的,那无效等价肯定就取反就非整数。

所以非整数的话,那小数、复数、中文、英文、特殊字符、空格什么的都是非整数,所以这些都可以作为无效等价类。这样的话,有效等价类我们在有效等价类里面,比如说 20 到 99 找一个代表值,就是比如说25,然后 15 那是无效等价类,因为小于 20 。

大于 99 的取101,取的这个值就是一个代表值。还有非整数取得的小数、负数、中文也是这些代表值。把这些代表值一一罗列出来,就可以作为测试用例的测试点了。所以最后我们就形成了一个表格,就是有输入条件。

比如说 20 到 99 是输入条件,有效等价类就是 20 到 99 之间的年龄,反效值就取一个代表值,20 到 99 取反会有两种取反情况,就是小于 20 大于 99 这两种。而整数取反就是会有小数、负数、中文、英文、特殊字符这几种情况。

 对于这种无效等价类,每个类它都有一个代表。所以在小于 20 取代表可能取个18,大于 99 取个101,然后小数取个代表。0.1、0.2都行,负数,-1、-2,中文,随便一个中文都行。

所有的一些无效等价类的取值和有效等价类的取值取多少值,就有多少个测试用例。比如说我们在写测试用例的时候,它有一个表格,测试用例有个表格,这个表格也是比较固定的。它有一个表头,就是测试编号,测试模块,前置条件,测试环境,操作步骤和数据。

预测实际结果是否通过备注,这是它的表头。然后根据这个测试编号,比如说我们当前第一个测试用例就写 1 。测试模块,是因为这个功能是年龄输入的模块,所以我们就可以写年龄输入模块。前置条件基本上就是网络正常。

 就是首先是在网络环境下进行测试的,这是前置条件。测试环境就是你用什么样的操作系统,以及用什么样的浏览器,操作步骤,就是你怎样拿着这个数值进行测试的。

 比如说这一个年龄输入模块,他肯定先给你一个地址 URL 输入到浏览器里面,你还能打开这个模块看到这个界面,然后它会有一个输入框。第二步就是在这个输入框里面输入你要测试的那个值,这个值之前也说过,有效等价类和无效等价类的代表值。

要把这个值比如说输入一个有效等价类的值,25。第三步就是点击提交按钮,这时候你要注意了,操作步骤和预期结果是一对一的关系。一对一就是每一个操作步骤都有一个对应的结果,比如第一步是输入一个网址,这时候预期结果就是输入网址,能正常打开。

第二步就是输入年龄,这时候的预期结果就是能正常输入年龄。第三步就是提交,看是否成功。对应的第三步的预期结果就是系统提示输入数据有效,并且提示提交成功。就是步骤每一步都必须要有一个结果,你不能跳过。

很多人可能就是操作步骤写了一二三,但是最后预期结果只写了最后一步的提交按钮的结果,而其它的结果都不提。如果不提其他结果的话,那万一最终结果可能是其他没提的那些原因导致的,这时候就无法说清楚你这个测试用例是否有效。

所以说的每一句话都有凭有据,所以才会避免不必要的争执。一切以测试用例为主,就比较明明白白,不会有各种各样浪费时间的沟通成本。以上就是关于等价类划分法的介绍,你学废了吗?这个方法在测试人员的实际工作中,是使用率最高的方法,方便有效。下期我们将介绍更多的编写测试用例的方法,敬请期待!

 

;