HIT软件构造——测试的艺术

本文探讨了如何编写高效的测试用例,强调了边界条件的重要性,并介绍了等价划分方法。通过实例展示了如何确保测试用例的代表性,同时提醒尽管测试重要,但在大规模用户面前仍可能存在意外情况,需要结合应变能力。
摘要由CSDN通过智能技术生成

写出好的测试需要一定的技巧。一个好的测试很有可能发现错误。一个好的测试不是多余的。一个好的测试应该是“最好的”。一个好的测试不应该太简单也不能太复杂。那么怎么最简单地保证自己的测试能覆盖所有情况呢?这就需要一定的思维方式。

首先,错误通常发生在边界情况,而对于类似的中间情况,通常没有理由认为它们会有一部分突然出错,可是,说起来简单,什么是边界情况呢?对于有序的数据结构,其中第0个与最后一个数据就很有可能出错,而对于处理整数的函数,处理0和1就很可能出错,另一种情况是有容量限制的数据结构,当其为空或者满的时候可能出错,比如试图访问空集中的元素或者向满的数组最末添加元素导致越界。

其次,选择测试用例的时候要有代表性,说得文绉绉一点,我们采用等价划分,等价划分是一种测试方法,它将程序的输入域划分为可以从中导出测试用例的数据类,等价划分的测试用例设计基于对输入条件的等价类的评估。通俗的解释,就是按共同点分类,在每类里面挑一个做代表。例如,如果输入条件指定范围,则定义一个有效等价类和两个无效等价类,即范围内,小于范围和大于范围。 如果输入条件需要特定值,则定义一个有效和一个无效等价类,等于和不等。 如果输入条件指定集合的成员,则同理定义一个有效和一个无效等价类。 如果输入条件为布尔值,则定义一个有效类和一个无效类,数值类型为boolean以及不为boolean。

那么,如何保证能根据限制找到具有代表性的其他情况呢?这需要并列与联想的思维,也可以说是“打破常规”。例如,应该永远记得考察为空的情况,如果要求字母,就应该想到数字甚至标点符号,要求整数就想到浮点数,要求正数就想到负数。更容易被忽视的是严格的限制,因为它们隐式地有一些要求,比如偶数就隐含着是整数的要求和是数字的要求。

这里分享两个我在实验时采用的测试用例,第一个是测试添加顶点的方法,第二个是测试图中点对距离的返回值:

第一个测试就比较不好,因为重复地覆盖了情况,而没有代表性,比较低效;第二个测试就比较好,因为既测试了普通的情况,也分别考虑了邻接顶点,自身,两点不连通这几种情况,等于是覆盖了两点间求距离的各种可能情况。

这就是写出代表性强的测试的一些心得体会,当然,正如某个程序员笑话中所说的那样,即使测试似乎非常周全,在用户基数很大时,总可能发生令人瞠目结舌的意外,测试不可能总是万无一失的,这就需要我们的应变能力了。无论如何,看着测试通过的过程总是很有成就感的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值