单元测试的效益

单元测试是针对代码单元,特别是算法密集的代码单元的独立测试,可以完整覆盖代码单元的功能逻辑,保证代码质量、降低成本、提高生产率、缩短开发周期、赢得市场先机、提升产品竞争力。

  单元测试分为静态和动态,静态方法只能发现小部分错误,例如,加法函数

  int add(int a, int b){return a-b;};

   加号写成了减号,这种最简单代码中的最简单错误,任何静态工具都无法发现,而动态方法只需输入两个1,自动判断输出是否等于2,马上就能发现错误。静态 方法能发现的错误,如除零错、数组越界、条件语句中==写成=,都会表现为异常或功能错误,动态方法当然也能发现,因此,动态方法是单元测试的根本方法。

  无处不在的80-20规则,在软件开发中 同样存在,例如,80%的错误存在于20%的代码中,80%的项目时间消耗在20%的代码上,当然这只是粗略的估计。“20%代码”就是逻辑复杂的代码, 也就是算法密集的代码。一个算法密集的函数,要对输入仔细分类,一个判定就是一次分类,嵌套的判定更使分类次数翻番,遗漏一个分类,或一个分类处理不正 确,就会造成错误。只有完整覆盖代码单元的所有输入等价类,才能保证发现这些错误,这在调试和系统测试中是难于做到的。算法密集的代码包含了项目中的大多数错误,即使只对这部分代码实施单元测试,也能产生理想的效益。

  除了保证代码质量,单元测试还具有排错成本最低、易于自动回归、缩短后续测试周期、提高编程效率等显著效益。

本文出自seven的测试人生公众号最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-09-20 00:09:07

单元测试的效益的相关文章

单元测试实践的主要问题与解决(1)

本文是我在"第十届中国系统与软件过程改进年会广东会场"所作演讲的整理稿,主要分享单元测试的一些要点.单元测试实践的主要问题,以及如何来解决这些问题. 一.单元测试概述 1.1 什么是单元测试 单元测试,就是针对代码单元的独立测试.为什么需要单元测试呢?这是代码的基本特性决定了的.代码有一个基本特性,就是对数据分类处理. 代码通常会有很多的判定.一个判定,就是一次分类.嵌套的判定,会使分类次数的翻倍. 如果我们在写代码的时候,有一个分类漏掉了,就会产生一个Bug:如果一个分类,虽然写了代

单元测试的四大具体效益

单元测试是高效的开发过程质量控制机制,帮助企业保证产品质量.降低成本.提高生产率.缩短开发周期.赢得市场先机,提升竞争力. 1.保证代码质量 仅依靠系统测试会 存在大量未覆盖的"死角",单元测试可以对各个代码单元彻底测试,保证代码质量.针对一个函数,单元测试可以覆盖输入数据的所有分类,做到不管输入什么数 据,函数本身的处理都符合设计,从而全面检测其功能逻辑,消灭可能隐藏的大量细小错误,这种测试效果是其他测试难于做到的.输入数据的"分类",称为"等 价类&q

利用Rational ALM工具使持续部署变得切实可行且具成本效益

然后他还解释了如何将用于 ALM 的特定 Rational 工具与云相结合,使持续部署变得切实可行且具有成本效益,因为持续部署可以减少测试和部署工作.改善治理并降低部署到生产环境中的风险. 什么是持续部署,为什么对它感兴趣,它有助于解决哪些问题? 对于许多组织来说,业务和http://www.aliyun.com/zixun/aggregation/7434.html">开发团队的愿望是更快.更频繁地生产可用软件,而运营团队的责任是以规避风险的方式管理组织的基础架构,从而确保业务的连续性,

iOS - UnitTests 单元测试

1.UnitTests 在计算机编程中,单元测试(又称为模块测试, Unit Testing)是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作.程序单元是应用的最小可测试部件.在过程化编程中,一个单元就是单个程序.函数.过程等:对于面向对象编程,最小单元就是方法,包括基类(超类).抽象类.或者派生类(子类)中的方法. 通常来说,程序员每修改一次代码就会修改某个单元,那我们就可以对这个单元做修改的验证(单元测试),在编写程序的过程中前后很可能要进行多次单元测试,以证实程序达到软件规格

在Python的Flask框架中实现单元测试的教程

  在Python的Flask框架中实现单元测试的教程,属于自动化部署的方面,可以给debug工作带来诸多便利,需要的朋友可以参考下 概要 在前面的章节里我们专注于在我们的小应用程序上一步步的添加功能上.到现在为止我们有了一个带有数据库的应用程序,可以注册用户,记录用户登陆退出日志以及查看修改配置文件. 在本节中,我们不为应用程序添加任何新功能,相反,我们要寻找一种方法来增加我们已写代码的稳定性,我们还将创建一个测试框架来帮助我们防止将来程序中出现的失败和回滚. 让我们来找bug 在上一章的结尾

iOS单元测试1

iOS单元测试1 iOS单元测试分为两种类型的测试: 应用测试.应用程序测试可以检查app的代码组件,比如计算机的算术运算的例子.你可以利用应用程序测试来确保你的UI空间控件保持原有位置,并且你的控件和控制器对象能够和对象模型正确地工作. 逻辑测试(库测试).逻辑测试可以检查独立代码的行为是否正确.利用逻辑测试,你可以将整个库的组件放在一起进行测试,通常测试对象是对象和方法. 性能测试:所谓性能测试,主要是评估一段代码运行的时间.(自己添加的,个人觉得应该也属于一类测试把).性能测试的格式:-

写有价值的单元测试

这是写给开发同学系列文档中的一篇,主要讲单元测试. 写这个系列的原因是发现开发同学,尤其是偏业务的开发同学对于软件开发中的很多实践和理论理解的不够清楚.比如设计文档,代码评审,单元测试,集成测试和自动化测试,持续集成和持续发布这样一些耳熟能详的概念,说起来每个开发同学都听过,但很多人并没有深入考虑过为什么要引入这些实践,实践需要哪些手段,要达到什么目的,要坚持什么原则?所以这些实践落地的过程也是千差万别,效果往往也不甚理想. 通过这一系列文档,我会把我所了解的每个实践的来源.适用范围和价值用最简

追求代码质量: 对Ajax应用程序进行单元测试

使用 GWT 更轻松地测试异步应用程序 简介: 您可能从编写 Ajax 应用程序中获得了极大乐趣,但是对它们执行单 元测试却着实让人头痛. 在本文中,Andrew Glover 着手解决 Ajax 的弱点( 其中之一),即应对异步 Web 应用程序执行单元测试的固有挑战.幸运的是, 他发现在 Google Web Toolkit 的帮助下,解决这个特殊的代码质量问题要比预 想的容易. Ajax 在近期无疑是 Web 开发界最时髦的字眼之一 -- 与 Ajax 相关的工具.框架.书籍以及 Web

利用J2MEUnit进行单元测试

这样就可以使用了.三.编写测试类 让我们编写一个TestCase来学习如何使用这套工具.编写TestCase类 编写测试的类要继承j2meunit.framework.TestCase.如同JUnit中一样,你可以覆写setUp() 和tearDown()方法,虽然这里没有反射机制,但还是推荐你把测试方法以test开头.这样一但J2ME有了反射机制,你也可以快速的移植.还有一点要注意的是,你需要为子类提供一个构造函数(假设你的类叫做TestOne): public TestOne(String