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

7

自动化测试GUI(而不是其下的东西)有什么理由吗?在我看来,GUI(以及其中的更改)应始终由真正的人员进行测试。

通过自动化GUI聚焦测试可以获得什么?我的经验是GUI聚焦测试几乎总是会因为某个人以非常好的原因更改了某些内容而出现故障。它们很少能找到任何有趣的东西。

9个回答

4
这是一个棘手的问题。自动化测试工具和框架非常出色,只要GUI不发生太大变化,它们就值得花费时间和精力。自动化测试的问题在于,在开发周期中GUI快速更改时,它会恰好崩溃。
因此,对于我领导和管理的项目,我采用了混合方法。我喜欢在GUI的快速变化区域使用手动测试。一旦事情比较稳定,我们就会进行某种自动化GUI测试(例如,Web应用程序的Selenium),将其放入构建过程中以防止未来的回归。如果可能的话,QA人员编写自动化测试。有时候,当自动化工具过于代码密集时,开发人员不得不与QA测试人员配对完成这项工作。
只要我们使用良好的设计实践,正确地分离关注点,以便单元测试可以适当地执行所有底层逻辑,这种混合方法似乎很有效。你必须避免的唯一一件事是将应用逻辑编织到GUI层中。

我同意你的“在开发周期后期创建自动化测试”的方法,当GUI更加稳定时。为GUI编写自动化测试非常困难,因为GUI经常变化。 - Robert Harvey

2

这要看情况而定。

如果你的GUI只是与业务逻辑相对独立的一层薄膜,GUI中的小错误并不会对业务造成重大影响,那么你可能不需要花费时间通过单元测试来彻底测试你的GUI。这些时间可以更好地投入到测试更为关键的代码上。

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

有关GUI测试的更多信息,请参见维基百科,例如通过记录鼠标和键盘输入并回放来进行测试。还有软件列表可以帮助你创建GUI单元测试。


2
@Robert Harvey:仅由内部员工使用的GUI - 可能仅由其他开发人员使用 - 可能不需要像面向客户提供的GUI那样进行大量测试。 您应该进行成本效益分析。 - Mark Byers

0

这取决于您测试GUI的哪个部分。您是通过运行GUI测试来测试系统的行为,还是想测试您的GUI是否始终正确显示。

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


0

人类在测试GUI方面非常擅长。但是,这种方法成本很高。自动化测试工具理论上可以降低UI测试的成本。如果您经常发布更新,手动UI测试时间可能会迅速增加。

就我个人而言,在我参与的项目中,我从未见过自动化UI测试工具回收其设置成本。它们的测试往往很脆弱,对布局更改反应不佳。因此,我不太相信它们。不过,如果有证据证明我错了,我会很高兴接受。


0

这是可能的。对于浏览器,您可以使用像Selenium这样与浏览器交互的测试套件。


0

在这种情况下,我的做法通常是对非GUI层进行单元测试,尽可能使用自动化测试来测试GUI,然后手动测试剩下的部分。我还使用手动测试来进行特殊缺陷检测,以识别缺少的测试用例。

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


0

最好先进行可用性测试。 此外,您将如何测试单元GUI?输出会是什么?如果有人点击某些东西并获得他“最初”想要的东西,那么应该考虑什么是不可接受的行为?

您将得到大量的垃圾信息需要查看。 可用性是一个大词,但简单的可用性测试是雇用您的朋友(最好不是您认识的人,而是朋友的朋友),他可能被视为应用程序的“目标受众”。戴上camtasia/camstudio(桌面录制软件,记录他的面部可能很好)。给他一些任务在纸上(或者当面,有时纸张更好,因为您不会干扰-更逼真的场景)。然后观察他在做什么!

如果他需要帮助,那么您可以看到未来开发的关注点。 永远不要试图影响这个人,告诉他像“但是看这里有这个按钮,我认为这样更方便”的东西。

通过这种测试,您将获得比浪费时间进行计算机对计算机测试更好的输出。GUI是人与计算机之间的接口。单元测试gui就像尝试解析您刚写的书并查看它是否好。 当然,它将消除拼写检查错误,但这是一个非常小的事情->与书的真正目标相比。


可用性测试并不是自动化测试,也没有相同的目标。 - Robert Harvey
我很确定。但是我认为单元测试界面意义不大。有太多的操作和数据需要获取结果。我知道有些公司会像这样进行大量测试。将大型超级计算机用来键入任何可能的表单-但对我来说似乎是浪费时间。 - mAm

0

当然,GUI应该有自己的单元测试。例如,可以参考IcuTest

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


0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接