针对自动化单元测试的手动单元测试的优缺点是什么?

Deb*_*oti 8 unit-testing

我能得到的优点和缺点手动单元测试比较的自动化过程.

Pét*_*rök 16

奇怪的问题 - 单元测试应该是自动的,因此可重复且易于运行.对于许多人(包括我)来说,"手动单元测试"是一个矛盾的术语.

在无法进行自动化测试的情况下,手动测试可能很有用.这些通常不是单元测试级别,而是更高 - 例如集成,GUI,压力等测试.

通过单元测试,您可以一次测试一小段代码(通常是单个方法/类).测试本身是用代码编写的,因此它们(几乎总是)可以由单元测试框架自动运行.

更新:现在您为问题提供了更具体的背景,更容易给出具体答案:-)

我确信,在SW项目的整个生命周期中,自动化单元测试几乎总能为自己付出多少代价.设置它们比手动测试更昂贵,但运行它们的次数越多,节省的时间就越多 - 您可以通过新的更改获得有关代码被破坏的地方的早期反馈.

用单元测试覆盖遗留代码绝对不容易,但如果产品对贵公司有价值并且预计会持续多年,那么它仍然是值得的.尤其如此,因为在现实生活中,生产系统往往比其预期寿命更长.

一方面是,您"尝试检查我们编写的所有代码路径" - 使用自动单元测试结合代码覆盖工具,您可以自动查看 - 通常在您的IDE中,如果覆盖工具集成良好 - 什么最新的单元测试不包含代码路径.

我建议有效地使用遗留代码 - 它包含了大量有关如何为纠结的,写得不好的遗留代码编写单元测试的宝贵知识.

  • 根据定义,+1单元测试是自动的. (4认同)

Mic*_*rdt 5

“手动单元测试”几乎是不可能的。单元测试被定义​​为隔离测试小的代码单元。您实际上无法手动完成此操作。

现在,如果您正在谈论集成测试,那就是另一回事了:

专业版手动集成测试:

  • 测试人员比开发人员便宜
  • 测试人员可以根据应用程序的变化智能地调整测试-它们不像自动测试那样天生脆弱
  • 测试人员可以发现自动化测试可能会遗漏的错误(例如未明确测试的缺失或不正确的值,或布局问题)
  • 不需要额外的测试软件,该软件可能会很昂贵和/或花费很多时间来学习
  • 永远可能;您无需满足任何技术要求
  • 您可以开始。进行单个测试的初始成本比设置和实施自动化测试要低得多。

Con手动集成测试:

  • 每次执行时,您都必须付钱给人。从长远来看,这是非常非常昂贵的。
  • 修复错误后进行全面的回归测试基本上是不可能的(太昂贵了)。
  • 这意味着您必须对开发周期后期的更改以及总体上的较大更改非常保守。没有持续的重构-与冒灾难性副作用的风险相比,更好地使用错误代码。
  • 为了获得最大的物有所值,在进行测试时必须非常谨慎地计划。在某种程度上,您必须调整您的开发实践以反映这一点。

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