Testing GUI应该有自己的自动化测试吗?

Testing GUI应该有自己的自动化测试吗?,testing,automated-tests,Testing,Automated Tests,是否有任何理由让专注于GUI(而不是GUI下的东西)的测试自动化?在我看来,GUI(及其更改)应该始终由真实的人进行测试 通过自动化的GUI聚焦测试,您可以获得什么?我自己的经验是,关注GUI的测试几乎总是会中断,因为有人为了一个很好的理由改变了某些东西。他们似乎很少发现任何有趣的东西。取决于您测试的GUI的“什么”部分。您是通过运行GUI测试来测试系统的行为,还是希望测试GUI是否始终正确显示 在后一种情况下,它取决于您的应用程序。如果布局和设计很重要,我同意。然而,如果某个应用程序的核心功能

是否有任何理由让专注于GUI(而不是GUI下的东西)的测试自动化?在我看来,GUI(及其更改)应该始终由真实的人进行测试

通过自动化的GUI聚焦测试,您可以获得什么?我自己的经验是,关注GUI的测试几乎总是会中断,因为有人为了一个很好的理由改变了某些东西。他们似乎很少发现任何有趣的东西。

取决于您测试的GUI的“什么”部分。您是通过运行GUI测试来测试系统的行为,还是希望测试GUI是否始终正确显示


在后一种情况下,它取决于您的应用程序。如果布局和设计很重要,我同意。然而,如果某个应用程序的核心功能不是布局本身,那么就没有必要花时间测试布局。最好编写GUI测试,通过使用GUI而不是一些函数调用来测试功能。这样可以更好地模拟真实行为。

人类非常擅长测试GUI。不过它们很贵。至少在理论上,自动化测试工具降低了测试UI的成本。如果您经常发布,那么手动UI测试的时间可能会很快用完


我个人从未见过自动化UI测试工具为我参与的项目支付安装成本。他们的测试往往很脆弱,对布局更改的反应不好。因此,我不敢对他们有多大信心。不过,我很高兴被证明是错的。

这是可能的。对于浏览器,您有与浏览器交互的测试套件,如selenium。

视情况而定

如果您的GUI是业务逻辑上相对较薄的一层,并且GUI中的小错误对您的业务并不重要,那么您可能会选择不花时间通过单元测试彻底测试GUI。这段时间也许可以更好地投资于测试更关键的代码

如果您的GUI非常复杂,并且是应用程序的一大卖点,那么您可能希望在自动和手动测试方面投入时间。自动测试并不能完全取代手动测试,因为您仍然需要人工测试人员来确保GUI看起来正确,界面清晰直观


有关测试GUI的更多信息,请参阅-例如,记录鼠标和按键输入并重放。还有一种方法可以帮助您创建GUI单元测试。

在这种情况下,我的方法通常是对非GUI层进行单元测试,尽可能使用GUI的自动测试,然后手动测试剩下的任何内容。我还使用手动测试进行特殊缺陷检测,以识别缺失的测试用例


对我来说,这提供了测试覆盖率与成本的最佳比率。最终,这取决于您试图实现的目标-这是一个任务关键型软件还是一个简单的应用程序,失败纯粹是一种不便?

这是一个困难的问题。自动化测试工具和框架做得很好,只要GUI没有太多变化,就值得花费时间和精力。自动化测试的问题在于,当您最需要它时,它会精确地崩溃:当GUI在开发周期中快速变化时

因此,我决定对我领导和管理的项目采用混合方法。我喜欢在开发周期中快速变化的GUI区域上使用手动测试。一旦事情变得相当稳定,我们将进行某种自动化GUI测试(例如,web应用程序的Selenium),并将其放入构建过程中,以防止将来的回归。如果可能,QA人员编写自动化测试。有时,当自动化工具的代码过于密集时,开发人员必须与QA测试人员合作才能做到这一点


只要我们使用良好的设计实践,适当地分离关注点,这样单元测试就可以正确地执行所有底层逻辑,这种混合方法似乎工作得很好。您必须避免的一件事是将应用程序逻辑编织到GUI层。

您最好让可用性测试放在第一位。 此外,您将如何测试单元GUI?输出是什么?如果有人点击了什么东西,得到了他“最初”想要的东西?什么是不可接受的行为

你会看到很多废话。 可用性是一个很大的词,但简单的可用性测试是雇用你的伴侣(最好不是你认识的人,朋友的朋友),你可能会被认为是在应用程序的“目标受众”。戴上camtasia/camstudio(桌面录音软件,可能适合记录他的脸)。在一张纸上给他一些任务(或者亲自给他,有时候纸会更好,因为你不会干预——更逼真的场景)。看看他在干什么

如果他需要帮助,那么你可以看到未来发展的注意部分。 千万不要试图影响那个告诉他“但看这是按钮,我觉得这样更方便”之类的话的人

您将获得更好的测试输出,而不是浪费时间进行计算机对计算机的测试。GUI是人和计算机之间的接口。单元测试gui就像试图解析您刚写的书,看看它是否有用。
当然,例如,它会消除拼写检查错误,但与本书的真正目标相比,这是一件非常小的事情。

是的,当然GUI应该有自己的单元测试。例如,见


问题在于GUI测试非常复杂。一旦你解决了这个问题,这个世界就是你的了。

如果你在GUI测试中有重复的单调任务,并且需要对浏览器和操作系统的多种组合进行测试,那么自动化GUI是值得的。通过维护技术,著名的问题“UI更改将使自动化变得无关紧要”可以得到回答。

@Robert Harvey:A