自证券码

2014年5月1日

自我测试代码是我使用的名称188app彩票ios请参阅与功能软件一起编写全面自动测试的实践。完成后,这允许您调用执行测试的单个命令 - 并且您有信心这些测试将阐明隐藏在代码中的任何错误。

我第一次遇到了在听力的Oopsla会议上遇到了思想“Beddara”Dave Thomas说每个对象都应该能够测试自己。我突然有键入命令的愿景,并让我的整个软件系统进行自检,很多时候,您常常在引导时看到硬件内存测试。很快我在自己的项目中探索了这种方法,对利益非常满意。几年后,我做了一些与肯特贝克一起工作,发现他做了同样的事情,但以比我更复杂的方式。这是在肯特(和埃里奇伽玛)生产的JUnit之前很快 - 一种成为自我测试代码的大部分思考和实践的工具(及其妹妹:testdrivendevelopment.)。

当您可以针对代码库运行一系列自动测试并确信测试通过时,您可以进行自我测试代码,并且您的代码没有任何重大缺陷。一种方法我认为它是建立软件系统,同时构建一个能够检测到系统内的任何故障的错误探测器。如果团队中的任何人都不小心翼翼地引入错误,探测器熄灭了。通过经常运行测试套件,每天至少多次,您可以在介绍后尽快检测此类错误,因此您可以看出最近的更改,这使其成为可能很多更容易找到它们。没有工作代码和测试以保持工作的测试,没有编程集。我们的态度是假设任何没有测试的非琐碎代码都被破坏了。

自我测试代码是一个关键部分持续集成事实上,除非你有自我测试代码,否则我说你并没有真正做持续积分。作为连续整合的支柱,它也是必要的一部分连续交货

自我测试代码的一个明显的好处是它可以大大减少进入生产软件的错误的数量。在核心的核心正在建立一个测试文化,其中开发人员自然地考虑写作代码和测试。

但最大的好处是不仅仅是避免生产错误,这是关于您对系统进行更改的信心。旧的CodeBases通常是可怕的地方,开发人员害怕改变工作代码。甚至修复一个错误可能是危险的,因为你可以创建比你修复更多的错误。在这种情况下不仅仅是增加了更多功能令人震惊,你也最终害怕重构系统,从而增加TechniceDeb.,并进入一个稳步恶化的螺旋,在每一个变化让人们更害怕更多的变化。

通过自检代码,它是一个不同的图片。这里人们有信心修复小问题来清洁代码可以安全地完成,因为如果你犯错误(或者否则“当我犯错误”)错误探测器会关闭,你可以快速恢复并继续恢复并继续。通过该安全网,您可以花时间保持代码良好的形状,并最终在良性螺旋中,在添加新功能时,您可以更快地获得稳定。

这些福利经常谈论testdrivendevelopment.(TDD),但分离TDD和自我测试代码的概念是有用的。我认为TDD是一种特殊的实践,其福利包括产生自我测试代码。这是做它的好方法,而TDD是一种我是一个忠实的粉丝。但是,在编写代码之后,您还可以通过在写测试中进行测试来产生自我测试代码 - 尽管您无法考虑您的工作,直到您进行测试(并且他们通过)。自我测试代码的重要点是您有测试,而不是您如何到达它们。

实践自我测试代码的团队的一个重要行为是对生产错误的反应。使用自我测试代码的团队的通常反应是首先写一个暴露错误的测试,只能尝试修复它。通常写入此测试可能真的是一系列测试,逐渐缩小范围,直到您到达单元测试这触发了错误。这是可用作调试技术的有用,这对于确保一个错误修复时,它也是必不可少的,它保持固定。通常,该团队还将使用此错误作为启发,以寻找类似缺失的测试。态度应该是任何错误都不只是代码中的失败,它同样是测试屏幕的失败。

如今,我们越来越多地看到另一个维度来自我测试,更加强调在生产中监测。连续交货允许您快速将新版本的软件部署到生产中。在这种情况下,团队将更多努力在生产中发现错误并通过部署新的固定版本或回滚到最后一个已知的良好版本来快速修复它们。

此条目最初于2005年5月5日出版(以更小的形式)。