当前,我们日常的端到端测试运行需要大约5个小时才能完成。我们该怎么做才能提高速度?
详细信息:
~~ 1024个测试
测试用量角器/茉莉花编写
测试可以通过单个会话在BrowserStack上远程执行
正在测试应用程序的本地版本-使用“ local” BrowserStack标志以允许本地连接
目前只有Chrome,Windows 10 >为了解决脆弱性,我们有意将量角器的控制流速度降低了150ms。
我知道我们有很多测试,端到端测试通常很慢,但是我希望我们可以降低执行速度。
如果需要更多详细信息,请告诉我。
#1 楼
请注意以下几点:仅在Chrome中运行
有争议吗?让我更充分地解释。对于多浏览器,甚至是多设备(响应网站)测试,我的问题始终是我们已经看到并且希望看到哪种特定于浏览器/设备的问题?去年发生了多少个特定于浏览器的错误。那是第一个问题。答案通常是肯定的,但是企业要求我们支持x,y,z版本a,b,这意味着每年数十万美元……而在您意识到它繁荣之前,这些组合所需的时间要长6倍。 ..因此,第二个部分是蓝色/绿色版本。这是一次可以发布两个版本的过程。这个想法是您只发布一个版本的一小部分。您可以从1%开始,然后监视该版本和浏览器故障,如果看到特定于浏览器的问题,则可以将新版本回滚到0%,将旧版本回滚到100%,然后进行调查。您只会影响到极少数的用户,但是您知道,每台设备都不会100%覆盖。关键是没有太多的金钱损失或给客户带来不便。所有这些背后的原因是要加快开发速度,而要等待几分钟才能进行完整的测试运行,而不是数小时或数天,从而实现持续集成和持续交付。这就要求负责监视分阶段发布的分析人员知道何时出现问题。您有时会选择一个安静的时间(具体取决于市场)来进行发布,以避免用户会话,Cookie等问题。在这里可能需要花点时间才能使其正确,但我已经看到了。
会话适应
这意味着要研究一种方法,您可以通过直接进入该页面来到达UI中的特定点。用户可能需要浏览许多页面,但是有一些方法可以将测试会话设置为仅转到所需页面。使用多表单页面工作流程可能非常重要。一个例子是ruby-rspec-capybara和机架会话管理器https://github.com/railsware/rack_session_access使用云中多个虚拟机的便宜能力来加快测试速度。您需要确保测试相互独立,例如,为每个测试正确设置和拆卸程序。
无头运行
这里有两种口味。首先是使用像phantomjs这样的无头浏览器,但我们发现它仅适用于某些测试,大多数是非js测试。
2017年的另一个(令人兴奋的)新闻是Google生产了无头版本的chrome,现在可以从https://developers.google.com/web/updates/2017/04/headless-chrome
下载。
我还没有玩过它。
标记浏览器的特定测试
标记测试仅针对某些功能运行其他浏览器测试
现在,您可能会从经验中发现哪些页面或区域历来具有多浏览器问题。基于这些知识,可以选择要在其他浏览器中运行的部分测试,对其进行适当的标记,然后设置完整的套件以在运行中使用这些标记。
获取资金美元
向管理层说明要为虚拟机和其他工具获得更多资金的原因。
因此测试需要5个小时。可以说,这意味着4个人每周必须等待几次。因此,这是40个小时的滞后时间,换句话说,就是完整的开发人员时间。如果一个开发人员每年花费70,000美元,相比之下,您应该在vm上花多少钱?它们是基于不同预算的不同成本中心,事实上,这不应该成为为整个企业财务做正确事情的借口。
评论
很好的分解-确实,我们在做一些事情时需要重新做一些工作才能到达所需的页面,但是由于我们应用的性质和复杂性,我们将不得不考虑直接访问所需页面的方法,而在这种情况下并不总是那么简单我们的情况。并行性和优先级是我绝对会开始的事情。非常感谢!
– alecxe♦
17年8月4日在22:52
是的,请弄清楚您的陈述方式。有时很容易,只需正确设置URL参数,其他时候更复杂,并涉及其他系统。从那时起,您开始发现良好的测试与良好的测试一样重要,这既关乎配置管理。有关于这方面的书-从字面上看-barnesandnoble.com/p/…
–迈克尔·杜兰特(Michael Durrant)
17年8月4日在23:55
+1,即使我对无头观点表示异议
– FDM
18年11月7日在9:09
#2 楼
如果您构建测试,以便每个测试可以独立运行。然后,您可以通过并行运行它们来扩展测试运行。隔离测试对于单个测试而言可能会稍慢一些,但这是扩展更大的测试套件的唯一方法。我还将研究哪些测试可以删除或向下移动。测试金字塔。大多数单项慢速2端测试也可以是几个更快的集成和(或)单元测试。
#3 楼
使用Docker-compose可以并行运行量角器测试我建议使测试完全独立,并使用Selenium Grid在dockerized容器中并行运行它们,以实现所需的速度和稳定性。
使用docker-compose,此解决方案可以通过给定的硬件功能进行扩展。
https://stackoverflow.com/questions/36773167/how-do-you-set-up-selenium-grid-using-docker-on-windows
评论
您可以并行运行多个测试吗?顺便说一句,谢谢你的链接,以减慢量角器。有趣且非常聪明的骇客。@PeterMasiar对,这是我们目前正在考虑的事情之一。我认为我们的计划允许2个并行会话-我们有一些不能并行运行的测试,但我们将分别解决。谢谢!
您是否有单个应用程序的〜1024端到端测试??
我怀疑这里有基本的气味...
@VishalAggarwal很好,在这一点上要认真得多。该应用程序对公司整体而言至关重要,但是由于前端缺乏适当的单元和集成测试,因此我们将测试金字塔颠倒了,所以,是的,它闻起来很香:)