1

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

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

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

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

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

4

2 回答 2

2

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

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

通过 GUI 进行的单元测试和自动化测试服务于不同的目的。此外,高级自动化测试不一定通过 UI 完成。

你见过测试金字塔吗? 在此处输入图像描述

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

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

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

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

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

于 2017-04-27T10:35:19.437 回答