7

我们有一个典型的 Web 应用程序堆栈。针对应用程序执行了 120 个 selenium (webdriver) 测试。这需要大约 1 小时。我们将它们作为构建链“编译 > 单元测试 > 集成测试 > gui 测试”的一部分来执行。gui 测试占用了大量时间,我们想知道如何更好地构建它们。目前它们是“快乐的案例和不快乐的”案例测试。它们非常稳定,即它们不会因为程序员错误而失败。

我们希望缩短构建时间,最重要的部分是 gui 测试。我们希望基于“客户旅程”来做到这一点,即指定(与业务人员一起)一些典型的用例并测试它们(快乐路径)而不是测试太多......

你们如何构建你的 gui 测试?这是我想到的一些想法

  • 只执行快乐路径测试
  • 做一个“客户旅程测试”,即一次做几个快乐路径测试(“点击页面”)
  • 只取业务指定的“前 10 名”(关键任务)
  • 前 10 名 + “其余所有”作为夜间构建(一次)

我会很感激你的想法

谢谢马塞尔

4

4 回答 4

7

夜间是进行 Selenium 测试的最佳时间 - 你只需要记住“不要关闭我!” 电脑上的便签:)。

此外,当夜间开始太短而无法运行所有测试时,总会有Selenium Grid 。使用 Grid,您可以在多台机器上并行运行测试!

我们有几个适用于不同情况的测试套件。在主要版本发布之前(测试、预发布、生产),一切都在运行。通常(在高峰期每天甚至每小时)只有“用户通过应用程序的快速正常路径”套件运行。如果有人“修复”了一个大错误,那么与该应用程序部分相关的测试就会运行。

于 2012-05-02T09:32:14.847 回答
4

An hour seems absolutely fine to me.

One suggestion could be to decide which of the tests come under smoke tests, and are required to run every night. That is, tests that show the core functionality of your web application is still intact and working - other more detailed tests can be run at different times (once every few days?).

With that said, ours take around 2 hours - the only problem comes when one test has failed, you fix it, commit it, but then have to wait a very long time to verify it is fixed on the CI server.

于 2012-05-02T11:50:05.157 回答
1

TeamCity允许在同一台机器上并行运行构建,因此 gui 测试不应与单元和集成测试一起在构建链中。UI 测试应该有单独的数据库和单独的构建,这样它们就不会浪费开发人员或手动测试人员或任何其他利益相关者的时间。TeamCity 将收集所有统计信息,发送有关构建失败的电子邮件等。
下一步是并行化。正如Slanec所说,您可以将 Grid(不需要几台机器)与Mbunit(c#)或TestNG(java)一起使用。在 Grid 的帮助下,您可以将测试执行时间减少 10 倍,因此运行所有测试只需 6(!)分钟。
您也可以将一些测试合并到更大的测试中(但这会导致发现失败原因的时间增加并使测试难以维护)。
在这些步骤之后,可以在每次源提交后执行 Gui 测试,并提供对应用程序错误状态的快速响应。

于 2012-05-02T23:02:57.993 回答
0

好问题,好答案。

一个额外的考虑是您可以优先考虑您的 120 个 gui 测试:您可以按顺序运行它们,以便首先运行最重要的或最有可能失败的那些。这无助于缩短构建时间,但有助于更快地从构建中获得有用的反馈。

此优先级(您的前 10 名)不需要固定,但可以根据发布/迭代/完成的故事/天等进行更改。例如,您可能希望首先运行最新的 gui 测试。或者最近更改的那些。或者涵盖了最近更改的大部分代码。

据我所知,没有工具可以立即支持这一点,尽管在测试用例优先级划分领域正在进行相当多的(学术)研究。

于 2012-05-03T20:38:49.303 回答