文档结构  
翻译进度:已翻译     翻译赏金:0 元 (?)    ¥ 我要打赏

内容

  • 1 不测试并不可行
  • 2 何时手动测试
  • 3 生产软件与原型和消遣的小程序
    • 3.1 技术原型…
    • 3.2 … 或其他
  • 4 不要被自己吸引

如果你关注了我的博客,你知道我是 自动测试 的支持者。 我喜欢TDD,并对未经测试的代码有非常强烈的意见。 然而有些情况,例如对于技术原型,不写任何测试是正确的事情。

不测试并不可行

等等,我刚才不是说“有些情况下,不写任何测试是正确的事情”么? 是的,没有错。 我的观点是,如果你不写任何测试,这可以是完全合理的,这意味着你应该做一些手动测试。

第 1 段(可获 1.73 积分)

即使你的代码甚至不需要被执行, 例如在博客上的示例代码, 尝试编译它,看看它是否能够达到你的目标。 你可能会对你发现的bug觉得惊讶, 但至少你会发现拼写错误。

什么时候进行手动测试

既然我那么喜欢自动测试, 为什么我会用手动测试解决问题呢? 这是一个实用和效率的问题。 编写自动测试代码需要时间。 如果你不打算经常执行这些测试, 手动测试它们可以节省时间。

所以,如果你正在写一个只会运行一次脚本, 例如转换一些数据,然后单独为他们写测试代码并不值得。 但不要低估你要运行该脚本的次数。 你可能会忘记了一些东西, 所以你必须再次运行。

第 2 段(可获 1.95 积分)

我们越是经常地运行一个程序,越有可能得到回报,至少会获得一些自动化测试的回报。 我们还必须考虑到的我们的集中注意力的能力。 如果我们需要一遍又一遍地进行相同的手动测试,这可能会让我们犯错误或做出与上一次不同的事情,从而导致不同的测试结果。

除了权衡成本,我们还必须进行一些风险评估,以确定我们的测试应该深入到什么程度。 一个本地的脚本将错误文件发送到打印机通常是低风险的。一个shell脚本删除你最近几个小时的工作成果影响并不是很大,但如果我们的软件中潜在了一个漏洞,这可能给客户带来大量的金钱甚至生命的损失,那么这是一个非常高且不可容忍的风险。

第 3 段(可获 1.83 积分)

生产软件其原型和示例小程序

风险评估的经验法则通常是,进入生产的软件应具有良好的测试覆盖率。另一方面,如果我们只是尝试一些新的语言功能 或写一个小原型在一个演示程序中演示,那么它是低风险的。我们可能会决定不为这种软件编写任何测试。

原型…

但是,如果我们决定我们编写的一个软件只是一个没有测试覆盖率的技术原型,我们必须要清楚的知道坚持这个决定产生的后果。在所有情况下把一个测试套件加入技术原型进行测试之后,事实证明,这是一个错误的决定。

第 4 段(可获 1.49 积分)

通常我们没有一个计划,将在何时完成这个技术原型。因此,我们可能不为其编写测试程序,因为它们必须经常要修改,并且会延缓一次性完成代码的快速编码过程。

我们的代码库中会包含许多我们测试产生的许多错误项的残余。毕竟,如果我们没有测试,我们也不会重构代码,从而将这些东西从我们的代码库中清除。

在这种情况下,从头开始整理,不要有任何的偏差并进行适当的测试,然后尝试完善一次性完成的代码并加载一个测试套件,这样才可能会(或可能不会)捕获我们构建的所有异常。

第 5 段(可获 1.5 积分)

清楚这些很重要。 我看到过几个团队使用他们的原型作为后期产品的一部分。 使用没有经过测试且没有明确结构的东西作为出发点是一种灾难。

如果它看起来太大难以从头开始, 正确的清理并给出扩展的测试用例的任务量看起来也会很大。 使用这种代码作为项目的基础,就像在沙地上盖房。

其他……

事实上,很多时候我们做事有一个计划,并建立干净可维护的概念。如果这个计划包括最终完成代码以及将结果传递给产品, 那么我们应该从开始就写自动测试用例。 延迟自动化测试意味着我们将浪费时间做手动测试。

第 6 段(可获 1.84 积分)

当然,有一个中间地带。 如果管理层决定不继续走,仅仅是将概念转化为可交付的东西? 在不足以保证付出值得的情况下,给出足够的测试用例,是我们可能不想面临的风险。

不过,如果我们计划稍后在这之上继续编码,必须保证他的健壮性。在精力范围内编写足够的测试。 如果您稍后决定继续使用该代码, 先填充测试套件。 这将使代码足够健壮,可以作为以后产品的基础。

第 7 段(可获 1.34 积分)

不要诱惑自己

如果你正在写临时代码, 它只是尝试一个新的框架或作为一个快速原型, 那么让这些代码远离你的产品代码。 把它放进自己的仓库, 并给该库一个名称,明确指出该仓库的代码不用于生产。

对于未来编码工作来说,“在原有基础上”继续很有诱惑力。 但是,别傻了,你没有任何可以依赖的基础。 一个木制的模型不可能成为飞船的基石。

第 8 段(可获 1.26 积分)

文章评论

班纳睿
标题中破折号后面的部分应该是原博主的博客标题,目前的翻译有点过度翻译,我建议将其从原文标题去掉,以免产生误解