【问题标题】:Automated Unit Testing vs GUI Automation自动化单元测试与 GUI 自动化
【发布时间】:2016-08-23 18:46:51
【问题描述】:

自动化测试是指使用一段代码/程序来测试另一段代码/程序的任何类型的测试。这可以是如上所述的单元测试,也可以是通过特定的自动化工具,例如 TestComplete、QTP、Selenium 等。单元测试往往由相关代码的开发人员创建和执行,而 GUI 自动化将更有可能由软件 QA 专家执行。

关于这个,我想到了一些问题。

1) 使用代码编写自动化单元测试还是使用 QTP、Selenium 等自动化测试工具执行 GUI 自动化更好?

2) 在 SDLC 生命周期中,使用代码编写自动化测试与使用自动化测试工具编写 GUI 自动化所涉及的工作量是多少?

3) 使用代码编写自动化单元测试和使用自动化测试工具执行 GUI 自动化是否有好处?

【问题讨论】:

    标签: automated-tests manual-testing


    【解决方案1】:

    单元测试和 GUI 自动化测试的目的是不同的。单元测试(通常由开发人员实现)应验证测试中的一个功能的不同输入和输出。如果需要,它可以在模拟系统的帮助下实现。单元测试通常运行得很快,所有这样的套件都不会超过 1 秒。 GUI 测试是模拟用户行为(我们通常称之为端到端测试),可能需要更多时间来执行。

    1. 我不建议在 GUI 自动化的帮助下编写单元测试,因为您希望快速运行它们,每次都重新运行,非常稳定并且不受浏览器等其他对象的影响。
    2. 使用一些自动化记录来编写自动化测试非常容易,但通常它比您使用适当的 API 自己编写的代码稳定得多。
    3. 我不确定我是否在这里关注你,但单元测试还是最好用不带 GUI 的代码编写,系统测试通常应该在 Selenium 等 GUI 自动化环境的帮助下编写。

    【讨论】:

      【解决方案2】:

      通过 GUI 进行的单元测试和自动化测试有不同的用途。此外,高级自动化测试不一定通过 UI 完成。

      您见过测试金字塔吗?

      当然,这是理想的情况,在现实生活中很少发生。但这是要努力的事情。

      单元测试更容易编写。不过,遗留代码可能并非如此。如果编写代码时没有考虑到可测试性,则需要进行代码重构以添加单元测试。在这种情况下,通过公共 API 或 GUI 进行的高级测试会更容易编写。但这不一定是正确的做法。

      单元测试的执行速度更快,因此开发人员可以更快地获得反馈,并且几乎可以立即发现是否有问题。同样,编写良好的单元测试可以很容易地诊断问题并快速找到错误的代码行。 使用 GUI 测试和高级测试通常需要更多时间来诊断问题。测试失败的可能性更高只是环境问题或其他一些依赖问题。

      考虑到所有这些,测试金字塔很好地总结了这一切。越早发现问题越好。因此,大部分测试工作应该进行单元测试。但总有无法在“方法级别”捕获的错误。因此,您提升了一级,这就是您的集成测试大放异彩的地方。 GUI 测试可以涵盖对产品至关重要的 E2E 案例,例如确保登录按钮确实存在并且可以点击:D

      总而言之,关于什么更好,没有简单的答案,因为它们实现了完全不同的目标。

      【讨论】:

        猜你喜欢
        • 2010-10-23
        • 2011-07-21
        • 1970-01-01
        • 2011-02-03
        • 2010-09-18
        • 2016-11-17
        • 1970-01-01
        • 2015-07-13
        • 2013-11-17
        相关资源
        最近更新 更多