单元测试的思考

发表于:2012-9-26 10:41

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

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

  在我的项目经验中单元测试地位一直比较尴尬,大体上有两类人:

  1、教旨派:认为单元测试能解决所有的测试问题,认为单元测试可以替代其他测试。

  2、怀疑派:单元测试很难实施,单元测试能力有限,无可能达到全覆盖,代码耦合太厉害无法测试。

  单元测试自然不是银弹,“单元”这个限定词,限定了这种测试不是集成测试和开发周期中集成测试后面的各种测试,重点在单元,这个单元是,函数,类,接口,模块等相对独立的东西,只能保证(也不能完全保证这些东西的正确性,这也关系到你的单元测试的有效性)这些单元的正确性。它也是这一阶段,这种粒度下比较有效的手段。也有大量工具和理论以及社区的支持,实施比较方便。最重要一点,他可以重复使用,随着用例的增多,越来越完善。有效性会逐步提高,这是一个长线投资,短期不见得有太多收获。

  单元测试局限性的根本原因是它也是一种智力活动,用一个智力活动证明另一个的智力活动。智力活动的复杂性,随意性,和载体(人)的差异天然的决定他不是万能的,没有机械的那种重复性可靠精密。

  单元测试很难实施的认识主要是对他的要求过高,这点上 .教旨派 和  怀疑派是一致的,你只能自己控制你的单元测试:

  1、不是所有的东西都要测试

  我们不用去证明相对论,勾股定理,在程序中,我们默认标准库的东西都是正确的,经典算法也是正确的,stl中没有bug,我们简单的赋值,沿用的模块等等都是不需要再写单元测试的,那部分我们心里没底,我们基本知道,这部分我们可以写单元测试,有了bug,我们可以补个单元测试的用例。

  2、不需要调用实际的模块

  数据库操作,网络操作,进程通讯,串口通讯,我们只要mock objec,提高单元测试的执行速度和测试的简单性。

  3、单元测试不会比实际代码还复杂

  如果相反,你没理解问题域,或抽象程度不够,改善设计。

  总之,单元测试要:

  ● 简单

  ● 迅速

  ● 迭代

  只能做他擅长做的事。如果达不到,改善设计,达到这种程度。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号