最近我读到一些关于验收测试好处的一些疑问的文章,因为与它带来的东西相比,它的成本相当高。为了形成我自己的观点,我想尽可能多地收集自动化验收测试的好处。你能帮助我吗?
3 回答
一般来说,在产品生命周期内设置和维护自动化测试的总投资低于产品生命周期内需要时进行手动测试的总投资的情况下,自动化测试是有意义的。
因此,如果创建测试与手动运行相比非常便宜(例如,在本质上创建电子表格的适合测试),或者如果执行的测试数量足够多,那么自动化测试就会变得更有吸引力。抵消成本差异。
单元测试效果很好,因为执行次数足够多——每一次微小的更改或重构,您都希望确保没有新的失败。
验收测试的风险更大,因为重复执行的可能性因项目而异,而且业务需求会影响长期支持和维护问题。
如果一个项目在通过验收测试后交付并且没有进一步的支持或更改,那么自动化验收测试可能没有意义,除非生成自动化测试非常便宜。
另一方面,如果人们期望将来发布(甚至是针对同一客户)或长期支持合同,那么随着时间的推移,初始投资可能会变得物有所值。
我们公司为各种客户生产交易系统和算法,新功能和产品建立在旧功能和产品之上。手动运行所有测试的成本非常高,因此我们正在努力为以前手动测试的许多场景添加自动化验收测试。
跟进:
恕我直言,首先制定非常清晰和完整的分步测试计划非常重要(一个好的 QA 人员或团队在这里至关重要)。在验收测试的情况下,客户可以自己提供,或者 QA 必须与他们的客户一起提供。我相信测试计划通常应该是合同的一部分。
一旦你有了它,就更容易估计人类运行它需要多长时间(你可以在人类身上进行试验以找出答案)。重要的是要注意哪些步骤需要“繁重的工作”,以及哪些步骤需要真正的人工输入或判断。
这是一个重要的区别。例如,假设您正在构建一个绘图程序。如果你告诉一个人在特定坐标中画线,这可以很容易地自动化。但是,如果您的步骤说:“验证形状是一朵花”,人类可以很容易地做到这一点,但自动化几乎是不可能的。许多测试用例可以是半自动化的。您将“钩子”留给用户输入,并让测试人员专注于这些。一个按钮启动一系列操作,向用户呈现“输出正确了吗?”。
我的经验是自动化的成本相当直观。但是,通常需要修改现有程序以使其更具可测试性。例如,在上面的例子中,如果你有一个 API 可以让你在画布上添加线条,那就太好了。如果您必须编写一个鼠标机器人,将逻辑坐标转换为屏幕等等,那么它的时间要长得多。
自动化验收测试有什么好处?
我经常是一个人的商店,所以从我的角度来看,主要的好处是让机器代替我来做。
编写自动化验收测试可以获得很大的好处。特别是,它将:
- 提高客户对经证明稳定的产品的信心
- 降低维护成本
- 降低风险和对变化的恐惧
- 允许对系统进行更快、更便宜的更改
虽然您现在可能 100% 熟悉该应用程序,但请尝试将其放下几个月或几年,然后再回来进行更改。相信我,能够运行一套测试来证明您的新更改没有破坏任何东西要容易得多。
最后,考虑在编写代码之前编写验收测试,类似于测试驱动开发的方式。这不仅会为您提供更好的代码,而且完成后您将拥有完整的测试套件覆盖率。
不要在成本上自欺欺人。是的,编写和维护自动化验收测试套件需要时间、投入和精力。但这比没有测试的替代方案便宜,也不知道如果你改变一些东西会发生什么以及它会产生什么连锁反应。您的客户信任值多少钱?交付后修复错误的实际成本是多少?