单元测试是高效的开发过程质量控制机制,帮助企业保证产品质量、降低成本、提高生产率、缩短开发周期、赢得市场先机,提升竞争力。

  1、保证代码质量

  仅依靠系统测试会 存在大量未覆盖的“死角”,单元测试可以对各个代码单元彻底测试,保证代码质量。针对一个函数,单元测试可以覆盖输入数据的所有分类,做到不管输入什么数 据,函数本身的处理都符合设计,从而全面检测其功能逻辑,消灭可能隐藏的大量细小错误,这种测试效果是其他测试难于做到的。输入数据的“分类”,称为“等 价类”,即测试效果上的等价,同类数据中只需要测试一个,就相当于测试了同类中的所有数据。这种设计用例的方法就叫做“等价类法”。

  2、降低排错成本

  排错包括“验证是否有错”、“找出错在哪里”、“修正错误”三个工作。单元测试的目标最小,涉及代码最少,发现错误后排错最容易。Bug发 现得越晚,修改所需费用就越高,因此应该尽早查找和修改Bug,单元测试提供了尽早抓住Bug的最好机会。相比后续阶段的测试,单元测试的创建更简单,维 护更容易,并且可以更方便地进行重复。从全程费用来考虑,相比复杂且旷日持久的集成测试、系统测试,单元测试所需的费用是很低的。下图摘 自<<实用软件度量>>(Capers Jones, McGraw-Hill 1991),它列出了准备测试、执行测试、和修改缺陷所花费的时间(以一个功能点为基准),这些数据显示单元测试的成本效率大约是集成测试的两倍,系统测 试的三倍。

  3、自动回归

   自动回归测试可以避免小量修改导致大量系统级调试与测试。“回归”是指代码修改后回复到原来的正确状态。例如,一个函数本来工作正常,后来发现少了个功 能点,修改代码后,原有功能可能被破坏,回归测试就是检验原来的功能是否仍然正常。代码之间具有复杂的依赖关系,一个函数的修改,可能引起其他代码产生错 误,回归测试不仅针对被修改的代码单元,也针对其他相关代码。单元测试目标最小、结果明确、执行快捷,最容易实现自动化回归测试。

  单元测试将代码功能“定格”,代码修改后可以自动检查是否引入新的错误,避免陷入“系统测试->修改->引入新的错误->新一轮系统测试->修改->引入新的错误”的怪圈。自动回归也使开发过程适应频繁变更的需求,使开发过程趋于“敏捷”。

  4、促进开发

   如果边开发边测试,那么,单元测试的结果可以完整地描述程序的行为,如下图。程序行为就是在什么输入下,会执行哪些代码,会产生什么输出。写代码时能随 时察看程序行为,就比较容易想明白思路对不对,接下来应该怎么写。刚写的代码有没有错误也随时可以发现,不但效率高得多,也没那么累。

  只要做了单元测试,反映程序行为的数据就一定会存在,只要使用工具将这些数据捕获并显示出来,就可以一边编程一边察看程序行为。

   编程时,程序员一定需要考虑清楚代码的功能,包括会有哪些输入,如何处理,应该产生什么结果,列出来就是测试数据了,因此,并不需要多少额外的时间来设 计测试数据,同时编写效率会显著提高,并且基本上不需要调试。调试是最花时间的。如果结合自动化的测试工具,让设计测试数据以外的工作(如编写测试代码、 隔离测试任务、底层模拟、统计覆盖率等等)由工具完成,那么,在开发的过程中进行单元测试,开发和测试同步完成,所用的时间一般比传统方式更短,代码单元 功能越复杂,节约的时间越多。

  我们初学C语言时,通常会编写一些小算法,并通过控制台输出结果进行测试。这 是一种高效的编程方式,因为第一时间可以了解代码是否工作正常,随时调整思路。但在实际项目中,这种方式不再现实,正在编写的代码单元很难单独运行并观察 其行为。单元测试可以帮助我们重返“小算法编程”,让代码单元随时独立运行,减少麻烦的调试,缩短编码周期。

====================================分割线================================

最新内容请见作者的GitHub页:http://qaseven.github.io/

单元测试的四大具体效益相关推荐

  1. (4)Android入门——android四大组件基础介绍及打电话,发短信简单应用 单元测试

    1,本章是android入门最后一篇,从后面开始将进入进阶阶段.我也会加快更新速度.但愿能保持每天三篇博文的数量.但是是在保证质量的前提下.后面我还会发布一些实际开发中用到的应用案例.敬请关注! 应用 ...

  2. android四大组件基础介绍及打电话,发短信简单应用 单元测试

    http://androidtoast.iteye.com/blog/1169635 1,本章是android入门最后一篇,从后面开始将进入进阶阶段.我也会加快更新速度.但愿能保持每天三篇博文的数量. ...

  3. 中国AI应用最新白皮书:四大行业将受AI影响最大,或带来19000亿增益价值

    白皮书指出,中国AI企业的发展势头良好,在全球处于优先地位;金融.汽车.医疗和零售将是受AI影响最大.同时最具成熟发展基础与市场应用潜力的传统产业,制造.教育和通信行业也值得关注. 编者按:在第三次人 ...

  4. iOS - UnitTests 单元测试

    1.UnitTests 在计算机编程中,单元测试(又称为模块测试, Unit Testing)是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作.程序单元是应用的最小可测试部件.在过程化编 ...

  5. 四大原因可能让你拿到订单

    四大原因可能让你拿到订单 同是开展国际贸易网络营销,有的同仁辛辛苦苦.忙忙碌碌,到头来没有拿到一个订单,看着别人硕果累累,别说老板那异样的眼神了,自己心里早已不是个味道了. 究其原因,笔者认为以下四个 ...

  6. 多元化谋定美国农业巨头-丰收节贸易会:四大粮商曲折历程

    多元化谋定美国农业巨头-丰收节贸易会:四大粮商曲折历程 (文|陈佳,来自长江证券)新闻中国采编网 中国新闻采编网 谋定研究中国智库网 经信研究 国研智库 国情讲坛 万权采编:"ADM 是全球 ...

  7. 喜讯丨神策数据四大客户案例斩获大数据“星河”案例

    为进一步加快培育数据要素市场.充分发挥数据作为生产要素的独特价值,中国信息通信研究院.中国通信标准化协会大数据技术标准推进委员会(CCSA TC601)共同组织了大数据"星河(Galaxy) ...

  8. junit 内部类测试_Springboot 使用单元测试

    本文公众号来源:美码师作者:美码师本文已收录至我的GitHub 目标 了解 单元测试的背景 了解如何 利用 springboot 实现接口的测试 了解如何 利用 mokito 做代码的 mock 一. ...

  9. 【DevOps进行时】自动化测试之单元测试

    在DevOps建设中,主流的测试分层体系可以分为单元测试.接口测试和界面测试.Google曾提出一个经验法则:70%的小型测试,20%的中型测试,10%大型测试. 当然,这个比例不是确定的,不同类型的 ...

最新文章

  1. 【微服务】Spring-Boot整合Consul (自定义服务配置及健康检查)
  2. NoSql数据库使用半年后在设计上面的一些心得
  3. 分库分表的几种常见形式以及可能遇到的难题--转
  4. CryptoAPI与openssl RSA非对称加密解密(PKCS1 PADDING)交互
  5. Install OpenCL on Debian, Ubuntu and Mint orderly
  6. linux脚本实现多重管道,制作Linux shell时流重定向和管道
  7. 趣图 | 著名的悖论蒙提霍尔问题到底是什么?
  8. English trip V1 - 20.Look at me 看着我 Teacher:Solo Key: 声调(英语默认就声调[rising]和降调[falling]两种)...
  9. Springboot+Vue前后端分离在线答题+题库管理系统
  10. swfupload ajax,swfupload ajax无刷新上传图片实例代码
  11. 毕业论文html代码查重吗,毕业论文中的代码内容重复了怎么办? 毕业论文代码重复率高...
  12. 巴比特独家 | 我们梳理98家新三板公司年报,发现企业布局区块链6大特点
  13. 成为技术传播者(二):Why and Why NOT
  14. 河北档案费2016年取消
  15. 【珍惜眼前人才是王道】
  16. 处理人际冲突(冲突的本质是什么?发生冲突最要不要采取哪四种行动?建设性处理冲突的技巧是什么?)...
  17. 编译Android源码,执行lunch命令时报错“No such file: /root/.lunchrc”的解决办法
  18. 使用libvirt和qemu将pci pass through设备添加到虚拟机上
  19. 小学计算机课在教室怎么上,小学计算机教室管理制度
  20. es浏览器插件安装eshead

热门文章

  1. nodejs模块hashmap
  2. ExtAspNet v2.0.6发布 - AJAX性能提升
  3. 在工作流引擎基础上搭建电子商务揽收系统解决方案
  4. GitLab 严重漏洞可导致攻击者窃取runner 注册令牌
  5. HackerOne漏洞奖励计划扩展至开源漏洞
  6. C语言如何实现模拟栈
  7. C语言如何控制控制台窗口大小
  8. JAVA读取、写入Excel表格(含03版)
  9. SQL Server打开数据表中的XML内容时报错的解决办法
  10. 【转载】Apache如何设置访问一个目录需要密码