单元测试准则

发表于:2010-3-22 16:05

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

 作者:Geotechnical Softwar    来源:51Testing软件测试网采编

分享:

  25、为测试失败做好准备

  考虑下面的这个例子:

Handle handle = manager.getHandle();
assertNotNull(handle);
String handleName = handle.getName();
assertEquals(handleName, "handle-01");

  如果第一个断言失败, 紧接其后的语句会导致代码崩溃, 剩下的测试都将不被执行。 任何时候都要为测试失败做好准备, 避免单个失败的测试项中断整个测试套件的执行。 上面的例子可以重写成:

Handle handle = manager.getHandle();
assertNotNull(handle);
if (handle == null) return;
String handleName = handle.getName();
assertEquals(handleName, "handle-01");

  26、写测试用例重现 bug

  每上报一个 bug, 都要写一个测试用例来重现这个 bug (即无法通过测试), 并用它作为成功修正代码的标准。

  27、了解局限

  单元测试永远无法证明代码的正确性

  一个跑失败的测试可能表明代码有错误, 但一个跑成功的测试什么也证明不了。

  单元测试最有效的应用场合是验证和, 以及 回归测试: 当新功能增加和代码进行重构的同时,会不会影响到旧功能的正确性。

  参考资料

  [1] 维基百科关于单元测试的定义: Unit Testing

  [2] 白盒和黑盒测试的简短描述: What is black box/white box testing?

  [3] 我们最常用的 C++ 单元测试框架: CxxTest

  [4] 我们最常用的 Java 单元测试框架: TestNG

  [6] 我们最常用的 C++ 覆盖率分析工具: LCOV

  [7] 我们最常用的 Java 覆盖率分析工具: Cobertura

  [8] 更多关于不允许访问外部资源观点: A Set of Unit Testing Rules

  [9] 来自 Apple 的单元测试建议: Unit Test Guidelines

  [10] JUnit 最佳实践: JUnit best practices

相关链接:

更好的单元测试准则

55/5<12345
100家互联网大公司java笔试题汇总,填问卷领取~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号