【问题标题】:What are the benefits of automating acceptance testing? [closed]自动化验收测试有什么好处? [关闭]
【发布时间】:2010-04-30 19:43:29
【问题描述】:

最近我读到一些关于验收测试好处的一些疑问的文章,因为与它带来的东西相比,它的成本相当高。为了形成我自己的观点,我想尽可能多地收集自动化验收测试的好处。你能帮帮我吗?

【问题讨论】:

    标签: testing automation acceptance-testing


    【解决方案1】:

    一般来说,自动化测试的意义在于,在产品生命周期内设置和维护自动化测试的总投资低于在产品生命周期内需要时进行手动测试的总投资.

    因此,如果创建测试与手动运行相比非常便宜(例如,在本质上创建电子表格的拟合测试),或者如果执行足够多的测试以抵消成本差异。

    单元测试运行良好,因为执行次数足够多 - 每一次微小的更改或重构,您都希望确保没有新的失败。

    验收测试的风险更大,因为重复执行的可能性因项目而异,而且业务需求会影响长期支持和维护问题。

    如果项目在通过验收测试后交付并且没有进一步的支持或更改,那么自动化验收测试可能没有意义,除非生成自动化测试非常便宜。

    另一方面,如果人们期望未来发布(甚至是针对同一客户)或长期支持合同,那么随着时间的推移,初始投资可能会变得物有所值。

    我们公司为各种客户生产交易系统和算法,新功能和产品建立在旧功能和产品之上。手动运行所有测试的成本如此之高,以至于我们正在努力为以前手动测试的许多场景添加自动化验收测试。

    跟进:

    恕我直言,首先制定非常清晰和完整的分步测试计划非常重要(优秀的 QA 人员或团队在这里至关重要)。在验收测试的情况下,客户可以自己提供,或者 QA 必须与他们的客户一起提供。我相信测试计划通常应该是合同的一部分。

    一旦你有了它,就更容易估计人类运行它需要多长时间(你可以在人类身上进行试验以找出答案)。重要的是要注意哪些步骤需要“繁重的工作”,以及哪些步骤需要真正的人工输入或判断。

    这是一个重要的区别。例如,假设您正在构建一个绘图程序。如果你告诉人类在特定坐标中画线,这可以很容易地自动化。然而,如果你的步骤说:“验证形状是一朵花”,人类可以很容易地做到这一点,但自动化几乎是不可能的。 许多测试用例可以是半自动化的。您将“钩子”留给用户输入,并让测试人员专注于这些。一个按钮启动一系列操作,向用户呈现“输出正确了吗?”。

    我的经验是自动化的成本相当直观。但是,通常需要修改现有程序以使其更具可测试性。例如,在上面的例子中,如果你有一个 API 允许你在画布上添加线条,那就太好了。如果您必须编写一个鼠标机器人,将逻辑坐标转换为屏幕等等,那么它的时间要长得多。

    【讨论】:

    • 谢谢你,这正是我的想法:) 但是我没有想到一个真实的场景,在这种情况下运行验收测试会有用更多次。我还有几个问题:如何确定自动化测试与手动测试的成本?您是否在您的场景中考虑过基于模型的测试?
    • Gabriel,恕我直言,首先制定非常清晰和完整的分步测试计划很重要(一个好的 QA 人员在这里很有用)。一旦你有了它,就更容易估计人类运行它需要多长时间(你可以在人类身上进行实验)。如果时间很长,那么您可以对自动化成本进行工程分析。它通常相当直观,但可能需要对基础架构进行一些更改以使事情更具可测试性。
    • 确实,我认为可测试性从一开始就应该是架构要求,谢谢,最后一段使我的答案验收测试通过:)。
    【解决方案2】:

    自动化有什么好处 验收测试?

    我经常是一个人的商店,所以从我的角度来看,主要的好处是让机器代替我来做。

    【讨论】:

    • 学习测试框架、编写测试库和编写自动化测试比手动测试更容易吗?我认为最大的问题是验收测试通常只运行一次,对吗?
    • @Gabriel,嗯...学习是最困难的部分,除非你的耳朵之间有橡胶缓冲器,否则只需要完成一次。其余的都是学术性的。如果您拥有并且将永远只有一个产品的一个版本,那么您就有一个有效的观点。要是我这么幸运就好了。
    • @Gabriel - 另外,我对验收测试的定义在某种程度上包括冒烟测试和功能测试的边缘,所以我可能会松懈我的定义。无论如何,我知道什么? ;-)
    • 我不会说它那么学术——我需要有良好的自动化测试架构和程序员或编程测试人员来编写它们,手动测试甚至可以由不太合格的人完成。但我真的很感谢你关于产品未来版本的观点,让我明白了一些事情,谢谢:)
    【解决方案3】:

    编写自动化验收测试可以获得很大的好处。特别是,它将:

    • 提高客户对经证明稳定的产品的信心
    • 降低维护成本
    • 降低对变化的风险和恐惧
    • 允许对系统进行更快、更便宜的更改

    虽然您现在可能 100% 熟悉该应用程序,但请尝试将其搁置几个月或几年,然后再回来进行更改。相信我,能够运行一套测试来证明您的新更改没有破坏任何东西要容易得多。

    最后,考虑在编写代码之前编写验收测试,这是测试驱动开发的时尚。这不仅会为您提供更好的代码,而且完成后您将拥有完整的测试套件覆盖率。

    不要因为成本而自欺欺人。是的,编写和维护自动化验收测试套件需要时间、投入和精力。但这比没有测试的替代方案便宜,也不知道如果你改变一些东西会发生什么以及它会产生什么连锁反应。您的客户信任值多少钱?交付后修复错误的实际成本是多少?

    【讨论】:

    • 我的客户如何对系统的稳定性更有信心?自动化测试如何使我的系统稳定?哪些维护成本可以节省?自动化测试可以看作是需要维护更多的代码,这恰恰相反。我承认变更的风险较低,因为我可以看到哪些情况会受到变更的影响。我不认为改变会更便宜 - 通常你也必须改变测试。如果不支持测试所有交互,那么事先编写验收测试可能会很困难。成本对我来说没有问题,但付费客户呢?
    • 在我的公司中,客户是为要构建的应用程序付费的企业,但关键是,如果最终客户不断看到稳定的系统,他们会更开心,这很有价值。自动化测试通过及早识别错误使系统稳定,从而有助于防止意外问题出现在您的构建中或允许在出现问题时及早识别。更改更便宜,因为您不太可能引入修复成本高昂的错误,并且在进行更改后需要更少的手动回归测试。最后,编写良好的测试可以避免大量的测试维护。
    • 付费客户总是关心成本。重要的是,通过提前支付更多费用,他们可以避免将来出现代价高昂的意外情况(无论是由于错误导致的停机,还是因为手动回归测试需要更长的时间而错过了最后期限)。可以把它想象成定期维修您的汽车。通过这样做,您可以更早地发现问题,让您可以预算时间和金钱来及早解决任何问题,而不是意外地崩溃,这会花费更多的时间和金钱,而且谁知道还有什么(也许您正在开车去参加婚礼,例如。 )。
    猜你喜欢
    • 2010-09-08
    • 1970-01-01
    • 2010-10-22
    • 2012-03-22
    • 2010-11-26
    • 2010-12-23
    • 2011-06-21
    • 2014-02-24
    相关资源
    最近更新 更多