单体测试指南
作者:网络转载 发布时间:[ 2012/7/25 11:23:56 ] 推荐标签:
13、以白盒测试考虑
毕竟,开发者写测试的同时也写了被测试类,需要特别注意测试复杂逻辑。
14、微不足道的类也要测试
有人会推荐测试所有主要的情况,而可以忽略诸如简单的类似setter和getter等微不足道方法。 然而,应该测试微不足道方法情况有几个原因:
● 很难定义微不足道。对不同的人可能有不同的含义。
● 从黑盒测试的角度看无法知道代码的哪部分是微不足道的。
● 由于拷贝-粘贴操作,微不足道的代码也可能包含错误。
private double weight_;
private double x_, y_;
public void setWeight(int weight)
{
weight = weight_; // 错误
}
public double getX()
{
return x_;
}
public double getY()
{
return x_; // 错误
}
建议是测试所有代码,毕竟微不足道的代码很容易测试。
15、首先关注执行覆盖率
执行覆盖不同于实际代码覆盖。一个测试的初目标应该保证高的执行覆盖。这可以确保代码在某些参数下真正执行。有了这个,可以去改善测试覆盖了。注意实际代码覆盖很难确定(通常都很接近0%)。
考虑下面这个公开方法:
void setLength(double length);
通过调用setLength(1.0) 你可能得到 的执行覆盖率。为了达到真正的实际测试覆盖,必须使用所有可能的double值来调用该方法以确认它们的正确行为。这显然是不可能的。
16、覆盖边界情况
确保覆盖参数边界的情况。对于数,测试负数、0、正数、小、大、NaN、无穷等情况。对于字符串,考虑空字符串、单个字母的字符串、非ASCII的字符串、多字节的字符串等情况。对于集合,测试空集合、单个元素集合、第一个、后一个等。对于日期,考虑1月1日、2月29日、12月31日等。被测类会提示各个具体情况下的边界情况。由于这些都可能是错误的根源,因此要尽可能多地测试这些情况。
17、提供随机数生成器
在覆盖了边界情况后,进一步提高覆盖率的一个简单方法是产生随机数以使得每次测试都可以使用不同的输入执行。
为了实现这个目标,可以提供一个生成double、integer、 string和dates等类型随机数的实用类。生成器必须可以从各个类型的全范围内生成值。
如果测试很快,可以考虑在一个循环内运行尽可能多的组合。下面的例子是验证通过一次大端和一次小端转化是否可以得到原值。由于测试很快,每次可以根据不同的值执行100万次。
void testByteSwapper()
{
for (int i = 0; i < 1000000; i++)
{
double v0 = Random.getDouble();
double v1 = ByteSwapper.swap(v0);
double v2 = ByteSwapper.swap(v1);
assertEquals(v0, v2);
}
}
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11