老网站备案密码错误,百度的广告,抖音广告投放平台官网,想找人做公司网站要注意什么高单测等于高质量#xff1f;
笔者负责的npm包是 ICBU信天翁低代码平台渲染引擎#xff0c;160应用 600页面基于该引擎开发#xff0c;内网日npm下载 1K。经过不懈努力#xff08;CV#xff09;#xff0c;终于把单测提到了95%。
然而#xff0c;虽然在覆盖率上获得了…
高单测等于高质量
笔者负责的npm包是 ICBU信天翁低代码平台渲染引擎160应用 600页面基于该引擎开发内网日npm下载 1K。经过不懈努力CV终于把单测提到了95%。
然而虽然在覆盖率上获得了一些数据的改变但作为开发者想要的并不是数据上的完美而是它真的完美没BUG。作为一个高频引用的底层库改动一行代码都可以影响到用户意想不到的bug。
高单测覆盖率不能避免改动引发小的改动引发就可能带来大的线上问题。
写好单测
issue单测
每一个issue都有它命中注定的一个单测在我们的项目中用issue来管理用户需求。用户每发现一个问题都可以到我们指定仓库中去提issue新增的issue触发机器人在钉钉群里艾特对应修改人修复后机器人通知创建人。 在软件工程中对单元测试的描述是“针对每一个单元的测试以确保每个模块能正常工作为目标”。
在我们行覆盖率和分支覆盖率都很高的情况下还需要有新的机制保证模块更稳定。除去那些框架还没探索到的业务场景怎么样保证现在用户的一定没有问题
于是有了issue即单测。
在现在的issue运作机制下保证每一个单侧都有对应的issue。在仓库中新增了脚本tnpm run create-issue。 在发布前把对应的demo做删除 当我们运行tnpm run create-issue 123456帮我们创建对应issue 123456的单测demo复用同一个template内容可以在浏览器端看到demo也可以在vs code中直接编写单测内容。 在demo中可以直接点击gitlab链接跳转到对应issue。 这里拿一个简单的issue做演示 对应的原子单测 单测非常简单虽然只有两句expect但这两句是只为这个issue存在强行cp。
issue唯一单测覆盖保证0改动引发。
在业界一些优秀的开源框架也是有同样的issue即单测的案例比如mobx。 单测文档
原子类单测可以极大程度保证代码稳定性组件类可以描述开发者期望的用法。
单测即文档 闭环沉淀反哺
除此之外issue的Milestone代表对应npm版本 issue的最好归宿就是cover by test。钉钉 - issue - npm changelog 相互对应做到每个单测可溯源。 笔者负责的框架已经推行了一年再回顾一下。值得思考的是重头设计一次架构是否能完美的解决现在的这些issue。
这些issue和单测都是走过的脚印现在我们已经积累单测170 其中60 issue原子类单测。不能保证0BUG。但可预见的是让用户放心用不会有改动引发。单测是质量的守门神帮助框架做好用户预期一步步更稳健的前行。
最后
写单测最好的时间是项目开始前其次是现在。
作者 | 范喆(六瓶)
原文链接
本文为阿里云原创内容未经允许不得转载。