提升代码覆盖率是非常有意义的,主要作用是:

  • 保证基本逻辑的正确性(要结合有效的校验,这点很容易在实际中变形)
  • 引入对未覆盖代码的思考,分析是编码本身逻辑混乱,还是需求实现有问题
  • 促进代码重构,得到更优的代码

代码覆盖率做为指标其实是不合适的,每个组件其实有其自身特点和历史原因,往往需要在成本和收益之间做平衡。但是做长期小步提升的实践还是必要的。

提升代码覆盖率的方式有很多,最主要的方式还是增加用例,和优化代码。

1. 构造场景用例

根据业务流程规划测试用例,这是最主要的提升覆盖率的手段。最好由专人设计用例场景、提供校验准则,保证用例的有效性,同时可以大幅度的提升覆盖率。

2. 构造异常用例

正常流程是最容易被覆盖的,异常流程是最容易被遗忘的,常常也最难构造。但是异常用例却往往非常重要,不管是对业务逻辑还是对分支覆盖率都是如此。最好由业务专家分析必须首先覆盖的异常场景,再逐步对其他异常场景补充用例。

3. 剔除不需计算覆盖率的代码

例如UT/FT自身的代码、基本库代码、第三方库等,都是可以不计入覆盖率的。可以在统计时剔除掉。

4. 增加UT用例

对于FT比较难覆盖、逻辑比较复杂的函数,增加UT用例,对函数内各分支做覆盖,成本要比构造复杂的FT用例低得多。

5. 减少不必要的判断

比如用new分配内存的失败,会抛出异常。此时可以在程序外层捕捉异常,或者静态分配内存/池。不论哪种方式,都不必要在每次new之后都做指针判空。

6. 指针传参优化

对C++ 代码,函数参数可以传递引用,这样函数中就省去了对空指针的校验,即简化了代码,也增加了代码的健壮性。

7、简化逻辑

反思代码复杂度是否与业务复杂度正相关?代码是否容易理解?是否因历史原因,不敢重构代码,只敢增加分支?很多逻辑复杂的代码,往往只是没有理清业务本质。

8、消除重复代码

显而易见,相同逻辑如果散落在各处,对于提升覆盖率的明显会有更多的重复工作。

提升代码覆盖率的经验相关推荐

  1. 质量评估模型助力风险决策水平提升

    无论自动化测试任务执行.项目准出还是项目流程流转主要依赖人员判断,而人员能力是有区别的,进而会影响质效,本文章主要介绍我们在探索和实践的一条路径,就是通过机器学习模型,让计算机自动,辅助甚至是替代人工 ...

  2. 遇事不决,XGBoost,梯度提升比深度学习更容易赢得Kaggle竞赛

    梦晨 发自 凹非寺 量子位 报道 | 公众号 QbitAI 在Kaggle上参加机器学习比赛,用什么算法最容易拿奖金? 你可能会说:当然是深度学习. 还真不是,据统计获胜最多的是像XGBoost这种梯 ...

  3. 企业IT解决方案经验分享活动

    时间:2010年3月27日13:30 地点:中关村中国电子大厦 9层会议室 参加人员:网友  热爱学习的IT从业人员 赵×××:59857752 企业IT解决方案经验分享 春节刚过,刚刚远离几天繁琐的 ...

  4. 在华为写了 13 年代码,都是宝贵的经验

    来源:https://dwz.cn/dqgOrbQo 本文来源华为人:徐宏伟,转给大家观摩下. 一天晚上,我和老婆聊天,说部门要我写个"大咖谈软件"的文章,老婆斜了我一眼,淡淡地说 ...

  5. 【CV夏季划】告别入门,提升眼界,从掌握最有价值的那些CV方向开始

    有三AI CV夏季划是言有三亲自一对一带领的深度学习和计算机视觉学习计划,目标是在新手入门的基础之上,掌握最有价值的若干CV方向,同时提升工程代码经验.学习不限时间,答疑永久有效,2021年农历年后截 ...

  6. 有时间担心中年危机,还不如用忧虑的时间来提升自己——再论程序员该如何避免所谓的中年危机...

    人会慢慢变老,变老后精力,记忆力乃至身体会慢慢变差,这是无法逆转的自然规律.随之会产生的是对中年危机的忧虑乃至恐惧,比如担心能力精力不及年轻人,从而导致收入锐减乃至失业. 对此我有如下三点不解.第一, ...

  7. 任正非公开信:投入 20 亿美元全面提升华为软件质量

    昨天,华为心声社区发布了来自任正非的公开信<全面提升软件工程能力与实践,打造可信的高质量产品>,信中强调从基础代码做起,全面提升华为软件工程能力和实践,其中提到一些重要举措,包括编码质量. ...

  8. 代码安全检视方法有_在华为写了 13 年代码,都是宝贵的经验

    每天给你诚意满满的干货 来源:https://dwz.cn/dqgOrbQo 本文来源华为人:徐宏伟,转给大家观摩下. 一天晚上,我和老婆聊天,说部门要我写个"大咖谈软件"的文章, ...

  9. 在华为写了 13 年代码,都是宝贵的经验!

    一天晚上,我和老婆聊天,说部门要我写个"大咖谈软件"的文章,老婆斜了我一眼,淡淡地说:"Linus大神21岁就写出了Linux内核的雏形,缔造了一个自由主义的开源世界:张 ...

最新文章

  1. 数据结构之python实现顺序表
  2. 通用权限管理系统组件 (GPM - General Permissions Manager)
  3. 009_Redis的事物
  4. jquery清空div内容_jQuery常用功能
  5. QT的QHttpPart类的使用
  6. java中的类与对象(浅谈)
  7. IntelliJ IDEA 2020.2 正式发布,真香!
  8. 修改Chrome的User Agent的方法 真实有效
  9. 实操教程:Android部署Nanodet模型完成实时高效的物体检测
  10. 栈和队列基本概念,顺序栈的表示和实现
  11. 计算机物质与结构,计算机辅助高中化学物质结构教学的探索与实践
  12. html导航栏下拉菜单怎么做,css制作导航栏下拉菜单及问题
  13. 【AI每日播报】霍金:AI将让中产阶级大面积失业
  14. python node.js ruby_Python/Ruby/Node.js/Perl - 随笔分类 - bluefrog - 博客园
  15. delta和gamma中性_Delta中性
  16. 百度AI接入api使用流程
  17. 前端需要了解的颜色模型,RGB、HSL和HSV
  18. 西方经济学【微观】名词缩写整理
  19. Oracle的32位ODBC驱动
  20. 记录关于CodeWarrior的在64位win7上安装时遇到的问题及解决办法

热门文章

  1. 查看linux版本的命令
  2. Python百度地图API,通过区县、村镇地址获取完整省市区行政区划
  3. OHEM,Focal loss,GHM loss二分类pytorch代码实现(减轻难易样本不均衡问题)
  4. wsgw登录抓包记录
  5. 风险管理_cissp
  6. The SPECIALIST Lexicon API
  7. win10怎么将计算机放桌面壁纸,win10电脑系统怎么改变桌面壁纸的大小
  8. 响应Response
  9. 2020年浙江理工大学新生赛 C Cly的三角形
  10. gensim实战01——word2vec