代码测试策略Testing Strategy的写法

测试策略Testing Strategy是ADT设计时的一个补充说明文本,通常以注释的形式出现在测试代码的位置。它对测试样例的构造方法进行了说明,目的是在代码评审过程中,让其他人可以理解你的测试,并评判你的测试是否足够充分。

一般而言,我们的测试策略是针对某一个函数方法而设计的,它包含对于以下几个部分的描述:输入、执行条件、期望结果,以及测试将如何对每个等价类进行覆盖。

输入:即函数的参数输入。测试策略应当说明各个参数的等价类是如何划分的,以及各个参数的边界值。例如,函数有一个int型的参数,我们就可以从正负的角度划分出-1,0,1三个等价类;还可以从奇偶的角度划分出奇数/偶数两类。具体是根据正负还是奇偶划分,抑或是同时从这两个角度进行划分需要根据函数的功能进行决定。

执行条件:函数的执行有时候不仅仅取决于输入,它还会受执行条件的影响,例如一些全局变量的值。测试策略应当考虑到这些并非输入的条件的影响,充分覆盖所有可能性。

期望结果:当函数正确执行时应当得到的结果。注意,函数并不总是有返回值,或者函数的功能不仅仅体现在返回值上,例如一个mutater方法的功能是修改一个内部变量的值,我们在执行这个方法后,就需要通过其他的observer方法来对内部变量进行观察,确认其是否发生了我们所期望的变化。

覆盖方法:常用的覆盖方法有1.等价类的笛卡尔积全覆盖 2.每个等价类至少被一个测试用例覆盖。前者测试完备,但用例数量多,测试代价高;后者测试用例少,代价低,但测试覆盖度未必高。

下面我们用一个简单的例子来说明代码测试策略的写法:

如下图,我们拿到了一个函数reverseEnd的spec,可知该函数的功能是将一个字符串的末尾部分进行倒置。

我们所希望的测试策略如下图所示。

首先根据输入参数text的长度划分出3个等价类:text.length()等于0、等于1以及大于1

参数start的值可以划分出5个等价类:start = 0, start = 1, 1 < start < text.length(), start = text.length() - 1, start = text.length()。注意这里我们充分考虑了边界条件以及边界值±1的情况,因为根据经验,程序员常常搞不清边界值±1时的处理方式。

针对函数的功能,我们还对text.length() - start的值进行了等价类划分,它并不是函数的直接输入参数,但是它会十分显著的影响函数的执行。我们希望测试当它的值为奇数或偶数时,函数是否都能正确地执行“倒置”这个功能。

最后我们在测试策略中说明了,我们的测试代码将使用完全笛卡尔积的方式对每个等价类进行覆盖。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值