您如何以高效的方式管理基于Web的(特定于Selenium)本地化的自动化?

时间:2011-11-23 08:49:55

标签: performance localization selenium automation

在我的工作中,我们与越来越多的国家打交道。我们目前正在使用selenium来自动化这些测试案例,但我们是一个scrum团队,有两周的冲刺和每月的发布周期。

每两周,我们需要运行自动化套件。我们有一个专门负责此任务的支持团队。但是,每个国家都会增加运行测试套件的时间,而且我们有许多测试套件。我们几乎处于关键负荷状态。我们几乎没有足够的时间在每个sprint运行套件一次,我们将在未来几个月内超越这个。

有没有办法压缩每种语言花费的时间?您是否可以通过测试一种语言做出一些一般假设,您可以跳过另一种语言的相同页面吗?

特别是关于Selenium,有没有办法加快这个过程?我们必须使用大量的xpath选择器 - 是否会与开发团队合作以获得更好的HTML布局,以便使用id / css选择器显着改善时序?

3 个答案:

答案 0 :(得分:1)

如果您有多个站点要使用相同的代码进行测试,并且测试不会相互干扰,Selenium Grid应该为您完成这项工作。这将需要一些额外的努力 - 可能还需要一些额外的硬件 - 但是一旦正确配置,您可以测试的语言数量仅受硬件可以处理的并发测试数量的限制。

关于选择者,请转到CSS can yield great performance improvements。根据经验:尽可能使用CSS; XPath应仅用作后备方案。 CSS不支持的东西是例如导航到父节点,或匹配元素的内容,所以在有益的时候不要犹豫使用XPath。您还应该查看该博客上的相关帖子:它们提供了一些额外的背景和迁移提示。

答案 1 :(得分:0)

我在一个包含500个元素的页面上对当前浏览器进行了一些检查,这里有一些我得到的基准测试。您可能值得花时间设置基准测试程序,以便定期(新浏览器发布)您可以重新检查基准测试。我使用Firefox 7,IE9和Webdriver 2.11.0检查了我的。每次测试都会查找相同的元素5次,然后确定平均响应。

SUMMARY:FirefoxDriver [5 tries] =========================
Find By ID Avg: 169 ms
Find By Name Avg: 17 ms
Find By Relative XPath Avg: 7 ms
Find By Absolute XPath Avg: 6 ms
Find By CssSelector Avg: 6 ms
Find By ClassName Avg: 5 ms
=========================
SUMMARY:InternetExplorerDriver [5 tries] =========================
Find By ID Avg: 309 ms
Find By Name Avg: 90 ms
Find By Relative XPath Avg: 82 ms
Find By Absolute XPath Avg: 82 ms
Find By CssSelector Avg: 53 ms
Find By ClassName Avg: 75 ms
=========================

运行Selenium Grid以运行多个实例也是提高性能的好方法。我的猜测是,对于虚拟服务器,您应该能够轻松地实例化多个测试并且不会发生冲突。此外,如果您可以使用HTMLUnitDriver,因为它比任何其他浏览器更有效(我不确定您的要求是否表明您需要使用真正的浏览器,多个浏览器或只是验证)。

答案 2 :(得分:0)

从其他帖子和评论中可以看出,您可能需要在自己的页面上进行一些实验,以确定哪种方法可以最快地找到您的元素。我找到的一件事是,只搜索后代元素肯定会在较大的页面上加速,所以我们经常会找到一个容器元素,比如div,然后找到它的后代:

IWebElement myDiv = myWebDriver.FindElement(By.ID(“divId”)); IWebElement descendant = myDiv.FindElement(By.ID(“descendantId”));

关于你是否可以对不同的语言和市场做出一些假设,是的,你可以。有不同的语言类型。测试这些类型中的每一种都很重要,但不一定要测试这些类型中的每种语言。如果您支持任何语言,您将需要测试从右到左的语言,您还需要测试包含不同字符集的语言。

话虽如此,我认为有一个重要的问题没有被问到,那就是......你在多种语言上运行自动化测试的目的是什么?更改语言是否会导致功能问题?日期格式等的某些测试是有用的并且可以自动化,但如果唯一的区别是语言,那么除非你可以测试字符串是否正确翻译并且在上下文中是否正确(除非你说的全部都是这些语言流利,并希望用各种语言维护一个庞大的字符串列表)然后它实际上并没有给你带来太大的收益。我建议使用不同语言运行一小部分自动化测试,并根据字符集和/或格式差异将这些不同语言的数量减少到少数。您对不同语言的最大担忧是布局问题,其中长字符串可能导致元素增长超过预期并导致问题。除非您有一个非常成熟(可能不具成本效益)的自动化模型来检查页面布局,否则大多数这些布局问题都不会被您的自动化捕获。你最好得到一个Pseudo-loc构建,自动扩大字符串,并确保你实际翻译所有文本,并对伪loc构建进行一次手动测试。

有关以多种语言验证文字效率的相关帖子和答案,请访问:https://sqa.stackexchange.com/questions/1949/do-you-verify-presence-of-text-in-your-automated-tests/1958#1958