研发:为什么不写单元测试? 

- 端到端测试:正如 Martin Fowler 所说,太多的端到端测试会增加测试时间并使测试成本高昂。
- 单元测试:执行速度更快,维护成本更低。因此,单元测试的积累是迁移到卓越项目的必要条件。单元测试的执行还提高了测试的粒度,使我们更容易发现代码中的缺陷。
上面的每一点都解释了单元测试的必要性。在顶级互联网公司中,单元测试被认为是必要且有利可图的。因此,卓越项目的研发学生必须编写单元测试。 。 Golang单元测试的整体思路与实践
当前实现方法对比以及单元测试实现中的优化点 | 单元测试 | 单元测试 |
获取自己的申请费单元测试脚本有高度可定制、非标准且难以维护。 | - 将各个应用的单元测试脚本接入Aone Lab插件,提供通用的脚本执行,降低访问成本,用户无需维护单个臃肿的脚本。
|
资源问题测试 | - 机器保持供应。如果每次执行时没有及时释放测试资源,机器的性能会很低,磁盘使用率会很高。
| - 将单元测试接入插件形式,利用即插即用的容器资源,在每次单元测试运行后释放测试资源,降低维护成本。
|
每个应用执行一次测试的差异 | - 执行过程中无法确定Golang执行环境的版本;
- 在覆盖率集合中,无法指定要过滤的文件而不统计覆盖率;
- 测试指令的单一优化需要修改整个应用脚本,这使得每次迭代的成本都非常高。
| - 支持多个Go可执行版本;
- 覆盖率收集中,支持忽略选项忽略统计信息;
- 在单元测试执行中,通过优化gc、改变cpu执行参数、优化单元测试执行线,提高单测试执行速度。
|
覆盖率收集不准确 | - 在覆盖率收集中,使用go-cov和diff-cover两个组件来生成增量覆盖率和行覆盖率。包中所有未编写单个测试的文件都将丢失。 ,未执行的业务代码不会被统计在内,导致整体覆盖率计算不准确。
| - 中,通过重写增量覆盖率实现,根据git diff结果和覆盖率文件重新计算增量代码覆盖率,产生准确的增量覆盖率;
- 行覆盖率评估器使用Go原生解析为所有文件生成函数代码行,解决行覆盖率统计不准确的问题。
|
报告显示 | - 对于单次测试执行来说,测试报告的内容和覆盖率显示都比较简单,用户无法清楚地看到测试问题。
| |
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。