上一篇文章中,介绍了测试覆盖率的意义之类的东西。测试覆盖率可以帮助我们检查测试质量,检查测试用例的有效率。如果有兴趣的话,可以阅读测试覆盖率之二——测试覆盖率有什么用?

关于测试覆盖率,我个人的感觉是说的多,用的少。最近在网络上看到一篇文章,讨论一个问题“测试需要100%的覆盖率吗?”被转载了很多次,有兴趣的同行可以找来看看。的确,一想到测试覆盖率,立马就有完美主义者跳出来说100%。100%的测试覆盖率有什么好处呢?

1、100%的覆盖率表示我们的测试覆盖到了所有语句,分支,条件

2、100%的覆盖率表示我们测试考虑的很完全,我们可以回去睡大觉了~~

测试仿佛在这里变得不那么可怖了,但是我们至少遗漏了两个重要的地方:怎么达到100%的测试覆盖率或者说是否能够达到100%的测试覆盖率,另外一个就是100%的测试覆盖率到底能告诉我们什么信息。

首先来讲,我们是否可以达到100%的测试覆盖率?如果我们简单的将测试覆盖率理解为需求覆盖率,代码覆盖率,那么我想这是可以达到的,只要拥有足够的时间,我们的测试覆盖到每一个需求点,我们的测试覆盖到每一条语句,每一个条件,每一个分支,看起来的确没有问题。但是我们还要考虑另外一个问题,是否由我们未曾列入到需求分析中的需求呢,这种情况是存在的,如果我们计算需求覆盖率是根据Feature Spec来的(实际上如果我们需要计算的话,一般就是这样计算得来的),那么当我们有需求没有被写入Feature Spec并且我们也没有在测试中考虑相关的测试,那么我们实际的“需求覆盖率”就不是100%了。在实际开发过程中,是不可能在Feature Spec中将需求全部列出来的,所以我们得到的100%的需求覆盖率是存在水分的。

另外,对于一个应用程序(除了一些极其简单的程序)来讲,要覆盖到所有的语句。条件,分支是极其困难的,甚至可以说是不可能的。笔者在经历的一个项目中花了一整天写一个模块的单元测试,当我忙完一天并运行了所有的用例之后,我发现我的代码覆盖率仅仅增加了2%,而且是从35%到37%,不要说100%,连80%我当时都觉得是奢望。

对于第二个问题,100%的测试覆盖率能代表什么?我在上面讲到,100%的测试覆盖率表示覆盖到了所有的语句,分支和条件,但是这又说明什么呢?这是否说明了我们做到了完全测试一个软件呢?很抱歉,答案是否定的。给出下面这一段代码:

private int add(int a,int b)

{

return a+b;

}

够简单的一段代码了吧,我们可以很轻松的达到100%的覆盖率,比如我们使用用例 add(3,4)就可以覆盖所有的语句,分支,条件(当然这里面是不存在分支和条件的,所以只需要覆盖语句就可以达到代码覆盖率100%了),但是聪明的你一定会发现我们的测试远远不够:如果输入的是add(2147483647,2),这个应用程序是会出现问题的,如果我们仅仅满足于100%的代码覆盖率,是不能保证我们的软件的质量的。

关于代码覆盖率,由一个很有趣的现象:高覆盖率有时候比低覆盖率还“没用”。注意“没用”是打了引号的,我的意思是高覆盖率不能说明我们做了完全的测试,低覆盖率却可以说明我们测试远远不够,从这一点来讲,低覆盖率似乎更有意义。当然我不是在讲我们不去追求高覆盖率,我的意思是与其把A模块覆盖率从85% 提高到90%,还不如把与其类似的B模块的覆盖率从30%提高到50%更有意义。绕一大圈说回来,在任何时候高覆盖率都比低覆盖率好,但是作为一个软件,我们要顾及软件整体的测试质量,我们还要估计成本,时间等等很多问题。

上面说了不少,最后总结一下我的观点:

1、测试覆盖率100%是一个理想的情况,是很难达到的;

2、测试覆盖率100%不能说明我们做了完全的测试;

3、较低的测试覆盖率能说明我们的测试还不够,反之是不成立的,参考第二条;

4、同一模块高覆盖率相对于低覆盖率能说明我们做了更多的测试;

5、测试覆盖率达到多少要考虑到软件整体的覆盖率情况,以及项目成本,包括人力,时间等等。

个人观点,仅供参考。如果问题或意见,请联系 unique.wuchaodong@hotmail.com 或直接留言~

关于测试覆盖率100%的问题的讨论还会继续下去,如果必要的话,笔者将在本系列文章的后期继续总结,根据计划,在下一篇文章中我将介绍自己使用过的相关工具,以及我未使用但是可以从网上找到相关资料的工具,帮助大家总结一下,以备查看。

转载请保留:本文出自UniqueStudioWCD的51Testing软件测试博客:http://www.51testing.com/?146934

相关阅读:

软件分支测试覆盖率 100%,测试覆盖率之三——测试覆盖率100%相关的话题相关推荐

  1. 测试覆盖率统计工具_使用测试工具和方法进行测试覆盖率

    测试覆盖率统计工具 概述: 要定义"测试覆盖率",我们必须谈论以下主题: 测试覆盖的目的. 不同类型的测试覆盖率标准. 测试覆盖率指标 单元测试范围 测试覆盖率工具 测试覆盖范围的 ...

  2. 《Google软件测试之道》告诉你什么是测试

    Google软件测试介绍 1.Google的测试团队并非雄兵百万,我们更像是小而精的特种部队,我们依靠的是出色的战术和高级武器 2.在Google,写代码的开发人员也承担了测试的重任.质量从来就不仅仅 ...

  3. 《微软的软件测试之道》读书笔记 之 结构测试技术

    <微软的软件测试之道>读书笔记 之 结构测试技术 2014-07-18 我们需要结构测试吗? 微软的一项试验说明了结构测试的在代码覆盖中起到的效果: 超过3000名测试员参与了这项实验,每 ...

  4. 100/1000BASE-T1多端口测试方案

    随着越来越多的汽车电子传感器或者ECU上面带有100/1000BASE-T1端口,针对于这些传感器或者ECU的测试台架上,也不可避免的需要对100/1000BASE-T1端口进行测试,最简单的就是通过 ...

  5. 艾德克斯充电测试软件_艾德克斯车载充电机测试解决方案

    引言本文引用地址:http://www.eepw.com.cn/article/201610/308633.htm 随着现代技术的发展和世界资源.环境难题的突出,电动汽车以其环保.节能.高效的优点已经 ...

  6. 软件开发生命周期中的设计阶段_测试基础——软件开发生命周期

    今天和大家分享的是软件开发生命周期,主要介绍软件的生命周期和软件的设计模型. 国标(GB8566-88)中将软件生命周期分为8个阶段:可行性研究与计划.需求分析.概要设计.详细设计.实现(包括单元测试 ...

  7. 多种系统负载100%方法(高可用测试、性能压测用)

    文章目录 1.高可用压测 1.1.CPU使用率100% 1.2.内存使用率100%,发生swap 1.3.IO资源压测 1.4.进程数达到上限 1.5.网络负载接近100% 2.性能压测 2.1.CP ...

  8. 五大手机测试鸿蒙,厉害了!鸿蒙系统完成100万部手机测试,兼容多个国产品牌手机!...

    要说今年最令人期待的事物,那一定是华为自主开发的鸿蒙系统了,中国终于能有属于自己的操作系统了,而根据余承东的说法,鸿蒙系统最快今年秋天正式发布了,最晚也会在明年春天,届时大家就可用上国产的操作系统了! ...

  9. 计算机能力测试power,PowerMAX(电脑拷机测试软件)

    PowerMAX是一款电脑拷机测试软件,可以帮助用户检测电脑各个硬件的性能及稳定性,支持CPU拷机测试.显卡GPU拷机测试.同时拷机测试三个测试功能,有需要可以下载. 相关软件软件大小版本说明下载地址 ...

最新文章

  1. 《HTML5与CSS3实例教程》
  2. bat自动输入密码登录_如何制作自动设置计算机管理员密码的脚本
  3. JavaWeb 项目安全问题及其解决方案
  4. 工业互联网 — 5G TSN
  5. PIC单片机入门_输入输出端口详解
  6. jenkins 部署文档
  7. 4国语言软件下载网站源码
  8. hdu 3635 Dragon Balls 并查集应用记录每个点的转移次数
  9. 用相同jsp,js文件,同样的接口实现多页面构建
  10. C语言字符串类型转换为整型,c语言中将一个字符串转换到整型数据类型的函数是什么?...
  11. 4.1 制定项目章程
  12. 小步大步算法,循环(Transform,玲珑杯 Round#5 F lonlife 1061)
  13. 安卓程序打包到安卓手机上运行Android程序
  14. 计算机无法进入bios模式,win7进入bios设置界面_win7无法进入bios设置解决办法
  15. 顶流AI大赛背后:OPPO小布助手的技术势能和促成的想象力
  16. VMware Workstation 15界面,英文改中文
  17. python处理sa雷达数据存储板_雷达数据处理和风场反演
  18. rd640服务器套件修复,联想 rd640_rd450_联想服务器rd640开机
  19. C语言入门常写的三个代码
  20. 软件测试面试题:缺陷提交的流程

热门文章

  1. 圣诞树 圣诞树 圣诞树_圣诞购物
  2. [SFML] 多个OpenGL上下文
  3. KNN算法介绍及案例
  4. FPGA之道——数字系统之间的接口电平标准
  5. 魅族手机鸿蒙系统,魅族宣布接入鸿蒙系统,被网友吐槽蹭热点
  6. (九)Java架构师成长之路-设计模式:组合模式
  7. Hololens开发之HoloLens简介
  8. Winserver服务器regsvr32注册DLL 遇到0x8002801c
  9. 弘辽科技:抖音对阿里下手了,抢占阿里的“咸鱼”市场
  10. 读取字体.ttf文件,生成艺术字图片代码