你在这里

你在这里

如何将硒测试运行时间减少70%

公众:/ /图片/ nicolay.jpg
Nikolay Advolodkin 首席执行官和高级测试自动化工程师,终极QA

深入内部实现每个自动化UI测试只需添加额外的Selenium命令,就有可能把简单的东西变成缓慢和不可靠的东西。原因是:考试时间越长,通过考试的可能性越小。

这里有一个在现实生活中发生的例子。在下面的情况下,我将分析一个测试,以揭示和解决测试运行时70%的低效率。您可以将学到的经验应用到自己的测试中。

这个问题

测试中的许多Selenium命令会使测试变得非常慢和不可靠,原因之一是每个Selenium命令都可能导致无效的元素定位器或同步问题。

在本例中,一个遗留版本测试需要300秒来运行并执行364个Selenium请求。

但是在下面描述的测试优化之后,同样的测试执行时间为92秒——几乎快了4倍。


识别效率低下

在这种情况下,失败的根本原因是无法定位下面的元素(Scheduler)。测试开始72秒后出现故障。

测试的其余部分用于执行不相关的重复操作,这些操作不会导致进展。例如,测试将继续搜索Scheduler 60秒,直到2:12。

此时,测试执行一些随机操作,可能会刷新状态,然后继续搜索Scheduler,如果它在前60秒内没有出现,则永远不会这样做(见下文)。

300秒中只需要72秒就可以发现Scheduler元素不存在。因此,76%的测试时间是浪费的;它没有提供新的或有意义的信息。这意味着你的团队的反馈循环会慢76%。

解决方案

绝大多数现代web应用程序加载的时间都不超过20秒,所以等待元素出现的时间超过20秒是一种浪费。这一说法可以用更多测试应用的数据来支持。

在下图中,您可以看到从加载URL(11点)到查找用户名字段并发送密钥只需要5.75秒。从页面打开到呈现到第一次与元素交互用了5.75秒。

因此,20秒显式等对于这个应用程序来说当然足够了。显式等待是这样的:

这个测试只需要92秒,而最初的测试需要300秒,但结果是一样的。

结论:关注结果

创建高效的Selenium测试是非常容易的。首先,计算出等待一个元素出现在网页上的最长时间。不,那不是60秒;对于大多数现代web应用程序来说,推荐20秒。

然后使用显式wait等待元素处于特定状态最多20秒。此时,测试应该会失败,并出现一个超时异常,让您知道元素在预期的时间内不在页面上可见。这种策略适用于大多数现代web应用程序。

要了解掌握自动化测试的更多信息,注册Advolodkin的完成Selenium Java Bootcamp。输入您的电子邮件,您将收到一张优惠券,在黑色星期五减价45%。

继续学习

阅读更多关于:应用开发与测试测试
推特 推特 脸谱网 Watsapp 电子邮件 分享