2010-06-01 34 views

回答

14

奇怪的问题 - 单元测试应该是自动的,从而可重复的和易于运行。对于很多(包括我)的“手工单元测试”来讲都是矛盾的。当一个人不能做自动化测试

手动测试可能会在这些情况下是有用的。这些通常不在单元测试级别,但是更高 - 例如集成,GUI,压力等测试。

单元测试,你是在一次测试小块代码(通常是单个方法/班)的。测试本身是用代码编写的,所以它们可以(几乎总是)由单元测试框架自动运行。

更新:现在你给一个更具体的方面你的问题,更容易给出一个具体的答案:-)

我确信地说,自动化单元测试实际上总是为自己付出很多在SW项目的整个生命周期中的时间。设置它们比手动测试成本更高,但运行它们的次数越多,节省的时间越多 - 以及有关通过新更改破坏代码的更早的反馈。使用单元测试覆盖遗留代码绝非易事,但如果产品对贵公司有价值,并且预计将持续多年,这仍然是一项值得的努力。尤其如此,因为在现实生活中,生产系统往往超过其预期寿命。

一方面,您“尝试检查我们编写的所有代码路径” - 使用自动化单元测试与代码覆盖率工具相结合,您可以自动查看 - 通常在您的IDE中,如果覆盖工具是很好地集成 - 你最新的单元测试没有涵盖哪些代码路径。

我建议Working Effectively with Legacy Code - 它包含了丰富的关于如何写纠结,写的不好的遗留代码单元测试的宝贵知识。

+3

+1根据定义自动进行单元测试。 – 2010-06-01 08:56:10

+0

是的, 在我们的例子中,我们有一个很大的应用程序,我们将使用自动化的UT。目前,我们准备测试数据mauaaly,并尝试检查我们编写的所有代码路径。 为此,我们需要进行比较分析,无论自动化是否能够长期帮助我们。 – Debajyoti 2010-06-01 08:58:48

+0

所以,如果我手动做这件事,那么我正在浪费我的时间。我可以通过VS测试或Pex等UT框架轻松做到这一点。 – Debajyoti 2010-06-01 09:04:53

1

我觉得你的问题唯一真正的答案是这并不重要,因为你必须同时拥有

自动单元测试将允许您的开发人员进行代码测试,根据自动验证代码,了解其规范。由于它们是自动化的,它们可以一次又一次地重复运行,而且每次都很少或没有变化。根据定义,这些单元测试将知道软件是如何工作的,并且因此可以被认为是白盒测试-测试知道一些(如果不是全部)底层代码。

手动测试会,在另一方面,揭示从点视用户的问题。您将有能力找出不熟悉底层代码和结构的实体可能遇到的错误,以及在程序的可用性方面是否存在问题。这被认为是黑匣子测试

+0

谢谢乔恩。这会帮助我很多。 – Debajyoti 2010-06-01 09:22:35

4

“手动单元测试”几乎是不可能的。单元测试被定义​​为孤立地测试小部分代码。你不能手动做到这一点。现在

,如果你在谈论集成测试,这是一个不同的问题:

临手动集成测试:

  • 测试仪是比开发商便宜
  • 测试仪可智能调整测试应用程序中的变化 - 它们不像自动化测试那样固有脆弱
  • 测试人员可以发现自动测试可能会漏掉的错误(如missi ng或者没有明确测试的值或布局问题)
  • 不需要额外的测试软件,其代价高昂和/或花费大量时间学习
  • 总是可能的;有没有技术要求,你必须满足
  • 你可以开始;进行单一测试的初始成本远低于建立和实施自动化测试的成本。

精读手动集成测试:

  • 你每次你做这些的时候要一个人。从长远来看,这是非常,非常昂贵的
  • 错误修复后的完全回归测试基本上是不可能的(太昂贵了)。
  • 这意味着你必须在开发周期后期保持非常保守的变化,并且总体上会发生很大的变化。没有持续的重构 - 更糟糕的代码生活,而不是冒着灾难性的副作用。
  • 您必须非常仔细地计划何时进行测试才能获得最高的性价比。在某种程度上,您必须调整您的开发实践以反映这一点。

总而言之,最好有手动和自动集成测试;这些有时可以相互补充,因为有些事情实际上可以更容易以自动化的方式进行测试,而有些则根本无法自动完成。