【锁定直播】字节、华为云、阿里云等技术专家讨论如何将大模型接入 AIOps 解决实际问题,戳>>> 了解详情
写点什么

用户价值覆盖率高于代码覆盖率

  • 2015-11-25
  • 本文字数:1523 字

    阅读完需:约 5 分钟

在用户价值多变的情况下进行软件开发,为了能更快速地向用户交付有价值的软件,开发团队应该专注于用户价值覆盖率,而不是代码覆盖率。

代码覆盖率(Code Coverage)[1] 是一种用来描述程序的源代码被特定的测试套件所测试的程度的度量手段。与具有低代码测试覆盖率的程序相比,具有高代码测试覆盖率的程序会被更加全面地加以测试,并且其缺陷会更少。

代码覆盖率是 Miller 和 Maloney 两人在 1963 年出版的 Communications of the ACM 杂志上首先提出的。对于那时以用户价值变化很少的科学计算为主的软件应用开发来说,开发团队将软件开发质量的重心放到代码覆盖率上是适宜的。但随着强调用户体验的互联网时代的到来,在当前大量的软件开发过程中,用户价值的变化速度已经大大超过 50 多年前的水平。如果开发团队继续“将软件开发质量的重心放到代码覆盖率上”,那么会造成大量的工作时间被浪费在开发和测试已无用户价值的代码之上,从而导致开发有用户价值的代码时间减少,进而延期交付对用户有价值的软件产品。

下图以一个新项目的开发过程为例来说明上述问题。

上图中红圈代表团队识别出来并要实现的用户价值,蓝圈代表系统已有的代码所实现的功能,两个圈相交的部分,表示代码实现了用户价值的部分。

在项目启动时,红圈较小,且随着识别的用户价值的增多而不断地增大,另外,它会随着用户价值的变化而不断变化,从而产生移动。此时由于编程工作刚刚起步,所以蓝圈很小。

重要通知:接下来 InfoQ 将会选择性地将部分优秀内容首发在微信公众号中,欢迎关注 InfoQ 微信公众号第一时间阅读精品内容。

随着项目的进展,代码实现也逐渐变多。但由于下面 3 个原因,代表代码实现的蓝圈会与代表用户价值的红圈发生偏离:1)由于诸如程序员和领域专家各讲各自的方言所致的误解等原因,代码仅实现部分甚至没有实现原先识别的用户价值;2)当针对原先识别的用户价值的代码编写完毕后,团队识别出原先的用户价值有部分功能需要删减(用上图中最下边那个右边缺了半圆的红圈来代表);3)团队又识别出新的尚未编写代码的用户价值(用上图中最下边那个左边多了半圆的红圈来代表)。

而在面对上述第 2)个原因中那些不再具备用户价值代码时,程序员会将其删除吗?在自动化测试覆盖不全面、手工测试反馈较慢、代码逻辑和耦合复杂、进度很紧等等这些很“骨感”的现实情况下,程序员往往选择不去删除。“谁会保证在删代码时,不会把系统搞挂?”程序员不删那些已经不具备用户价值的代码,又加剧了红圈与蓝圈的分离。随着过时的用户价值不断被删减,那些不会被删除的已经失去用户价值的代码就会越积越多,这使得蓝圈右侧删不掉的尾巴会越拖越长。

在这种情况下,就出现了“代码覆盖率悖论”:如果 IT 企业只将注意力放到提高代码覆盖率,而忽视提高不断变化的用户价值覆盖率,那么就导致团队会把时间浪费在阅读和测试哪些已经失去用户价值的代码上,从而延误开发那些新演进出来的用户价值,无法快速满足用户需求。

相对“用户价值”这个“终”来说,代码仅仅是一个阶段的“始”。要快速地交付用户价值,我们需要“以终为始”地进行软件开发,将注意力放到以红圈所代表的用户价值这个“终”之上,随着它的不断变化来持续追求用户价值的覆盖率,也就是用自动化测试来把红圈所代表的用户价值保护起来,而不是盲目地追求已有代码的覆盖率。

[1] 引自: https://en.wikipedia.org/wiki/Code_coverage


感谢丁晓昀对本文的审校,张凯峰对本文的策划。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群(已满),InfoQ 读者交流群(#2))。

2015-11-25 17:321648

评论

发布
暂无评论
发现更多内容

软件测试|把datetime拍在沙滩上的pendulum模块

霍格沃兹测试开发学社

「直播回放」使用 PLC + OPC + TDengine,快速搭建烟草生产监测系统

TDengine

tdengine 时序数据库

云平台是否支持黑白相机拍摄的灰度图?

矩视智能

深度学习 黑白相机

数字货币 链上挖矿模式开发

西安链酷科技

区块链 数字货币 dapp 挖矿 合约

做好这4点,面试嘎嘎猛~

王磊

Java 面试

Luminar Neo(超强AI图像编辑器)特别版下载mac/win

影影绰绰一往直前

Luminar Neo破解版 Luminar Neo下载 Luminar Neo mac

校园跑腿

图颜有信

LRTimelapse for mac(延时摄影视频制作) 6.5.2中文激活版

mac

苹果mac Windows软件 lrTimelapse 延时摄影视频制作软件

ARBT质押挖矿DAPP系统开发(源码搭建)

l8l259l3365

知识图谱与大模型结合方法概述

华为云PaaS服务小智

云计算 软件开发 华为云

软件测试|一文教你Python实现不同数据类型互转

霍格沃兹测试开发学社

基于开源IM即时通讯框架MobileIMSDK:RainbowChat-iOS端v8.0版已发布

JackJiang

网络编程 即时通讯 IM

Screaming Frog SEO Spider mac(网络爬虫开发工具) 19.3中文激活版

mac

苹果mac Windows软件 SEO工具 Screaming Frog

ps插件:alpaca增效工具 (完美替代AI创成式填充)

iMac小白

alpaca下载 alpaca增效工具

韩山师范学院学子获第四届“火焰杯”软件测试开发选拔赛全国奖项

测试人

软件测试

软件测试|超好用超简单的Python GUI库——tkinter

霍格沃兹测试开发学社

2023年10月文章一览

codists

软件测试|Python数据可视化神器——pyecharts教程(三)

霍格沃兹测试开发学社

大数据与 AI 的双向奔赴|创原会畅聊云原生第12期·作者光临

华为云原生团队

云计算 容器 云原生 分享 创原会

AI 革命:最佳 txt 转纹理工具

3D建模设计

AI自动纹理 AI纹理

AI PC的时代,英特尔和联想、爱奇艺是怎样玩转AI的?

E科讯

软件测试|一文弄懂Python集合相关操作

霍格沃兹测试开发学社

一文讲透DevOps理论体系的演进 | 京东云技术团队

京东科技开发者

DevOps 自动化 DevOps工具

SaaS 出海,如何搭建国际化服务体系?(二)

LigaAI

经验总结 To B业务 出海 SaaS 产品 SaaS 增长

如何使用 NFTScan NFT API 在 Ethereum 网络上开发 Web3 应用

NFT Research

NFT\ nft工具

为什么idea建议使用“+”拼接字符串 | 京东云技术团队

京东科技开发者

IDEA StringBuilder 字符串拼接

软件测试|Python列表的使用,你都会了吗?(一)

霍格沃兹测试开发学社

当我们在谈论构造函数注入的时候我们在谈论什么 | 京东物流技术团队

京东科技开发者

Java 面向对象 构造函数 依赖注入 函数注入

「燃情大促,年终钜惠」,家人们这一波可以冲!

融云 RongCloud

活动 服务 IM RTC 融云

关于分投趣质押模式开发系统搭建原理

西安链酷科技

区块链 数字货币 dapp 去中心化 交易所

软件测试|Python列表的使用,你都会了吗?(二)

霍格沃兹测试开发学社

用户价值覆盖率高于代码覆盖率_语言 & 开发_伍斌_InfoQ精选文章