企业门户网站源码下载,WordPress数据消失,wordpress关闭网站吗,教做发绳的网站本系列是《Unit Testing》 一书的读书笔记 精华提取。书中的例子 C# 语言编写#xff0c;但概念是通用的#xff0c;只要懂得面向对象编程就可以。 单元测试当前的状态目前#xff0c;在#xff08;美国的#xff09;大部分公司里#xff0c;单元测试都是强制性的。生产… 本系列是《Unit Testing》 一书的读书笔记 精华提取。书中的例子 C# 语言编写但概念是通用的只要懂得面向对象编程就可以。 单元测试当前的状态目前在美国的大部分公司里单元测试都是强制性的。生产代码与测试代码之间的比例大约在 1:1 到 1:3 之间。有时候比例会更高甚至达到 1:10二十多年来讨论的话题已经从“是否应该做单元测试”变成了“编写出好的单元测试意味着什么”单元测试好与不好不仅仅是个人喜好品味的问题更是与项目成功失败密切相关我们的目标不仅是掌握测试工具很多资料都有这种教程而是要“不仅要写单元测试而且让做单元测试的方式能够为你提供最好的回报” 企业应用的特点是什么大量高复杂度的业务逻辑项目的声明周期很长数据量不算特别大也不小对性能的要求不高或中等水平 单元测试的目的单元测试的实践通常会导致更好的设计但这不是单元测试的主要目的这仅仅是个副作用。 单元测试与代码设计的关系如果你的代码很难进行单元测试那这就是你代码需要改进的强烈信号。代码质量差的通常表现就是紧密的耦合就是说不同的生产代码段之间没有足够的解耦所以很难对其进行单独测试。 不幸的是代码是否能进行单元测试这件事是一个负向指标只能确定代码质量肯定不好如果你的代码能够容易的进行单元测试并不意味着你的代码质量一定很高。 单元测试的目的就是让软件项目可持续的发展“可持续”这个词是关键。下图描述了项目有无单元测试与项目发展和消耗工时之间的关系这种迅速降低开发速度的现象就是软件的熵。而熵就是体系混乱程度的度量。在软件中熵以易于恶化的代码形式表现出来。每次你改变代码库中的某个东西其中的无序量或者说熵都会增加。 测试有助于扭转这种趋势。它们充当了一个安全网——一个为绝大多数回归提供保险的工具。测试有助于确保现有功能正常工作即使在引入新功能或重构代码以更好地适应新的需求之后。 回归regression是指某个特性在某个事件通常是代码修改之后停止按预期工作了。术语回归和软件 bug 是同义词可以互换使用。 可持续性和可扩展性是关键。从长远来看它们允许您保持开发速度。 什么是好和不好的单元测试此图描述了较好、较差、没有单元测试与项目发展和消耗工时的关系。可以看出不是所有的测试都是被平等创建的。通过添加更多的测试并不会实现你单元测试的目标你需要考虑测试的价值和维护成本。而成本取决于各项活动所花费的时间重构底层代码时重构测试的时间针对每次代码修改运行测试的时间处理由测试引起的错误警报的时间当您试图理解底层代码的行为时阅读测试所花的时间 由于维护成本高昂很容易写出净价值接近于 0 甚至负价值的测试。 最后强调一点代码是一种负债而不是资产。而测试也是代码。