深入内部实现每个自动化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%。
继续学习
深入研究质量状况与TechBeacon指南.+:下载免费的《世界质量报告2021-22》.
实施绩效工程与这些十大性能工程技术的工作.
找到你需要的工具与TechBeacon选择软件测试自动化工具的买方指南.
发现最佳实践为降低软件缺陷与TechBeacon指南.
- 让你的测试事业更上一层楼。TechBeacon的职业话题中心为你的下一步行动提供专家建议。