单元测试相关问题

转载 2012年04月26日 13:48:16

1、单元测试的单元选取

  单元测试,测试对象是单元,似乎很简单,但是单元选取不合理是很多人在做单元测试时候容易犯得到错误。

  比如C语言编程,很多人直接就把每个函数作为单元来对待,把函数作为单元并没有错,错的是并不是所有的C语言函数都是单元。

  我们在选取单元的时候要注意两点:单元应该高内聚、低耦合

  • 高内聚就是一个单元应该是一个实现一定逻辑功能的相对完整的单元,做单元测试我们经常要对一些函数作桩来代替依赖函数的功能,而高内聚保证我们一般不需要在单元的内部做桩;
  • 低耦合就是,单元逻辑边界应该比较清晰稳定,这样单元测试通过逻辑边界接口来驱动单元的时候,单元测试用例的稳定性相对比较好,不至于经常一点小小的变化就要对单元测试用例做大规模变更。

  2、单元测试的度

  到底单元测试应该做到什么度呢?当然不是那么简单,很多项目在没有正确答案的情况下都用白盒覆盖率来衡量,比如语句覆盖80%,分支覆盖60%等等,项目组以为达到覆盖率目标就可以了,殊不知这样恰恰是顾了指标忘了目标,特别白盒覆盖率指标,这些指标只是用来进行辅助判断的,根本的还是应该关注单元的逻辑功能的覆盖,通过代码覆盖率的不足来分析这些代码涉及的逻辑功能测试上的场景缺失。

  那么到底如何做单元测试呢?这里给大家推荐一个方法,那就是软件质量分级。因为不同的单元对于质量的要求不同,因此我们针对不同的单元可以采取不同的质量方法。对于低质量要求的单元,我们可以只进行基本的代码走读等基本代码质量保障活动就可以了;一般的交付质量要求的单元,我们除了基本的代码走读之外,一般要求至少100%的代码语句覆盖和基本代码静态检查;一些质量高的单元可能还需要增加更加深入的覆盖,比如80%的分支判定覆盖,增加动态检查等;对于最高质量要求的单元,除了上面的我们可能还得考虑其他办法,比如不同的编译器,多种不同的静态检查、动态检查等。通过分级的单元测试确保分级的单元质量。

  3、单元测试自动化

  不同公司单元测试的方法可能不一样,但是有一点一点必须保证,就是单元测试自动化。因为单元测试的目的是为了保证代码的质量防护,如果不能自动化运行必然不能频繁运行,这样也就谈不上对代码的看护了。


http://www.51testing.com/html/69/n-808269.html

JavaScript单元测试

编写代码时,以单元测试代码伴随正式的功能代码是很好的实践和习惯,不仅可以保证最终代码的质量,对用户负责,也可以让自己对写出的代码更有信心和把握。JavaScript在现代Web开发中占的比重越来越大,...
  • starrow
  • starrow
  • 2016年07月15日 15:35
  • 3263

C++单元测试一:并非看上去那么简单——几个很实际的问题

寄语:很值得思考,最近在看代码大全,看到开发者测试那章,于是便在网上查这方面的资料,看到了作者的烦恼,作者在第二篇里说了应该在写代码的时候就开始考虑写易于测试的代码,实际中希望自己也能注意到这点. ...
  • piao123happy
  • piao123happy
  • 2015年11月03日 16:31
  • 869

学习JUnit最佳书籍推荐

1.《JUNIT IN ACTION中文版》,作者: Vincent Massol, Ted Husted,市场价: ¥39.00。screen.width-461) window.open(http...
  • chenzijun20082008
  • chenzijun20082008
  • 2006年12月22日 14:11
  • 4569

实用单元测试技术

  前言单元测试是高收益难实施的过程改进。之所以难实施,一个重要原因是理论与应用严重脱节,例如白盒覆盖,一般理论会介绍六七种覆盖率统计公式,并以极简单的代码为例,介绍实现这些覆盖的方法,但要将这些方法...
  • daichanglin
  • daichanglin
  • 2008年02月21日 17:22
  • 2063

知晓JVM系列(四): JVM相关问题问答(面试题)

1.问:堆和栈有什么区别        答:堆是存放对象的,但是对象内的临时变量是存在栈内存中,如例子中的methodVar是在运行期存放到栈中的。       栈是跟随线程的,有线程就有栈,堆是跟随...
  • jeffsmish
  • jeffsmish
  • 2014年12月16日 14:11
  • 3272

单元测试相关

Unit Test Your Struts Application  Consistent unit testing is an essential part of development, but ...
  • differ1
  • differ1
  • 2004年10月12日 19:20
  • 679

单元测试中模拟HttpContext.Current

第一次写Web单元测试,由于以前的DLL大量引用有HttpContext.Current的代码,结果每次运行到这类代码都会由于HttpContext.Current==null导致出错。 百度了一下发...
  • oyiboy
  • oyiboy
  • 2016年01月28日 15:06
  • 1143

使用Junit进行单元测试时遇到的问题记录[下]

10、  命名问题:source、target;upperBound、upperLimit、lowerBound;greaterThan即gt即大于、ge即greaterEquals即大于等于、low...
  • ywytom
  • ywytom
  • 2017年03月07日 16:07
  • 379

单元测试之关键问题解答

近来特别关注单元测试的应用。大家可能会笑了,单元测试都N年前提出的了,您老怎么现在才来做呢。是的,单元测试几乎人人都在提,但是真正做好的没几个。我们几个同事在讨论这个的时候,发现这里面有很多因素。相信...
  • xiammy
  • xiammy
  • 2007年04月28日 00:49
  • 3586

单元测试@Test错误问题

今天集成ssm+redis,然后写了个单元测试,junit包我肯定是有的,然后我发现我的@Before、@After可以用,但是@Test就会报错(“Test is not an annotation...
  • D_ohko
  • D_ohko
  • 2017年12月13日 10:36
  • 23
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:单元测试相关问题
举报原因:
原因补充:

(最多只允许输入30个字)