自动化单元测试与GUI自动化

时间:2016-04-28 19:51:18

标签: automated-tests manual-testing

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

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

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

2)在SDLC生命周期中,使用自动化测试工具使用代码与GUI自动化编写自动化测试需要付出多少努力?

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

你见过测试金字塔吗? enter image description here

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

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

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

考虑到所有这些,测试金字塔总结得非常好。你越早发现问题就越好。因此,大多数测试工作应该进行单元测试。但总是存在一些无法在“方法级别”上捕获的错误。所以你向上移动一级,这就是你的集成测试闪耀的地方。 GUI测试可以涵盖对产品至关重要的E2E案例,例如:确保“登录”按钮实际存在且可点击:D

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