这里的观点非常值得探讨, 所有的产品代码就像是一项投资, 有些代码的价值大, 因此需要写更多的单元测试来提高测试覆盖率. 另外有些代码的单元测试编写非常困难, 下面的一些因素可以用来帮助我们理解每个单元测试的价值:
1.代码被用的次数和它的价值成正比.
2.被依赖程度决定测试价值. 如果其他代码严重依赖被测试代码, 那么对应的测试价值大, 如果被测试代码严重依赖其他代码, 那么这个代码将难以测试. 而且不易于发现问题.
3.对I/O(网络, DB, 文件)依赖的代码难以测试, 需要使用mock技术, 而mock代码工作量大, 维护成本高
4.多线程代码更难以测试.
5.代码越复杂越需要测试.
6.被更多人所熟识的代码, 测试更容易. 因为问题将会被更快的发现和处理.
单元测试另外一个关注点就是维护问题, 这时应该将我们的每个单元测试看成一支股票, 有些股票会不断增值, 需要长期持有. 单元测试也是这样. 每个单元测试都有一个初始价格(上市价格). 如果通过单元测试发现代码改动产生了一个bug或者测试跑出了一个bug, 那么这个测试的价值将增加. 而从来没有帮助我们发现bug的测试价值则下降. 随着业务的发展, 需要对代码和测试进行重构, 这种情况下单元测试的价格不变.
但对单元测试的各项值的计算属于机器学习的范畴, 这里不做讨论.
参考原文:
http://www.javacodegeeks.com/2012/01/effective-unit-testing-not-all-code-is.html
分享到:
相关推荐
This text teaches you how to build a fully automated testing tool that you can immediately use for your software development projects, and provides expert guidance on deploying it in ways that let you...
介绍编写清晰、正确、高效lambda表达式代码的技巧;辨析std∷atomic和volatile之间的差异,它们各自该如何使用,还有它们与C++并行计算API之间的关联;如何修改老C++编程(比如C++98)中的实践,使之符合现代C++的...
You can use this tool to generate test scripts for continuous unit testing, integration testing, and regression testing. Software defects are common and cause economic losses from time to time. ...
然而,值得注意的是,自动化测试并非适用于所有测试情况,对于复杂的人机交互或初期的原型验证,手动测试可能更为合适。 在选择自动化测试工具时,应考虑以下几个关键因素:易用性、兼容性、可维护性、社区支持和...
28第2章 JS优化 34Effective前端5:减少前端代码耦合 34Effective前端6:JS书写优化 47第3章 页面优化 59Effective前端7:避免页面卡顿 59Effective前端8:加快页面打开速度 67Effective前端9:增强用户体验 85...
Effective TypeScript: Writing Typed JavaScript that Scales 预发布版 Author: Dan Vanderkam Publisher: by O’Reilly Media Edition: January 2020 Type: epub, azw3, pdf
Effective C++:改善程序与设计的55个具体做法(中文第三版)亚马逊图书 放到Kindle上就可以浏览学习,因为亚马逊软件有防护功能,电脑上无法使用,切记!!!!
1. **代码复用**:尽量复用已有的测试代码片段,避免重复劳动。 2. **持续监控**:定期检查测试工具的更新情况,以利用最新的特性和修复。 3. **文档记录**:详细记录测试计划、测试案例和测试结果,便于追踪和回溯...
@Test public void overallFileStructureIsCorrect() throws Exception { StringBuilder expected = new StringBuilder(); appendTo(expected, "session-id###SID"); appendTo(expected, "presentation-id###PID"); ...
《Effective Java》是Java开发领域的一本经典著作,由Joshua Bloch撰写,书中提出了一系列编程最佳实践和设计模式,帮助开发者写出更高效、更可靠、更易于维护的Java代码。配套代码`effective-java-examples-master`...
《Effective Unit Testing(2013.2)》是一本专门为Java开发者量身定做的单元测试指南,由Lasse Koskela撰写,属于Manning Publications Co.出版的一系列计算机书籍。这本书在介绍单元测试(UT)方面获得了积极评价...
《软件测试自动化——有效利用测试执行工具》是ACM Press在1994年出版的一本专业书籍,主要探讨了如何高效地运用测试自动化技术来提升软件质量保证的效率和准确性。这本书的内容深入且全面,适合对软件测试自动化感...
Effective JavaScript is organized around 68 proven approaches for writing better JavaScript, backed by concrete examples. You’ll learn how to choose the right programming style for each project, ...
这里我们将围绕"Effective-Java:Effective Java中文版第二版示例代码"这一主题,深入探讨书中的核心知识点。 1. **单例模式**:书中提倡使用`enum`实现单例,避免传统双重检查锁定(Double-Checked Locking)和静态...
书名为《代码优化:有效使用内存》(Code Optimization: Effective Memory Usage),作者是Kris Kaspersky。本书是关于如何在个人计算机(PC)和Unix平台进行程序优化的指南,重点关注优化的必要性以及通过优化提高程序...
本书组织方式比较特别,正文部分包括4 章,将网络编程中存在的常见问题组织成44 个技巧,探讨问题的过程中构建并运行了多个程序,并且指出了代码的源地址,便于读者查看。全书以技巧的形式解答了日常工作中遇到的...
《Effective C#:改善C#代码的50个有效方法》在本书中,世界知名的.NET专家Bill Wagner先生给出了50条建议,告诉你怎样充分利用C# 6.0所具备的特性来编写健壮而高效的代码。这些建议反映了C#开发界的新进展,也令...
《Effective AWK Programming》是关于AWK编程语言的一本经典著作,主要面向那些希望深入理解和高效使用AWK的读者。AWK是一种强大的文本分析工具,常用于数据处理、报告生成和脚本编写,在UNIX和类UNIX系统中广泛使用...