单体测试指南

发表于:2012-7-25 10:13

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:benjielin(51CTOblog)    来源:51Testing软件测试网采编

分享:

  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) 你就可能得到100% 的执行覆盖率。为了达到真正100%的实际测试覆盖,必须使用所有可能的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);
    }
}

42/4<1234>
100家互联网大公司java笔试题汇总,填问卷领取~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号