测试自动化中的GUI映射策略

时间:2009-02-11 17:43:26

标签: user-interface testing automated-tests

在我的测试自动化实践中,我总是使用gui映射策略来减少维护工作。

例如,如果我需要识别“ Google搜索”按钮(www.google.com),其XPAth将

//input[@name='q']
而不是
/html/body/center/form/table/tbody/tr/td[2]/input[3]
在第二种情况下很明显 页面结构的一点变化可能会破坏我的测试。

但也许我错过了什么?也许如果文档结构发生变化,我应该知道这一点,我的一些测试应该会失败?

你怎么看?你会推荐什么样的最佳实践?

3 个答案:

答案 0 :(得分:4)

如果元素具有脚本/ css使用的id,我们在测试中使用该ID。否则,我们会主动检测HTML以进行测试。我的意思是我们可以添加一个id 仅用于测试以避免任何歧义。我们通常给它一个前缀来表示这一点,即。 ID = “ftGoogleButton”。这样,只使用HTML的人才会理解与元素相关的自动化测试。这个约定是实用的,因为它们通常只在css / js中查找对给定id的引用。

答案 1 :(得分:3)

我会这样做,选择第一个配方而不是第二个配方......对于大多数测试。

您希望测试能够在相关的更改中突破这些测试所涵盖的功能,并且您希望相同的测试忽略应用程序的大多数其他更改

因此,如果您检查搜索“foo”应该返回的文档数量超过零,那么这与页面结构无关,应该忽略这些更改。

但是,在为确保搜索表单配备了提交按钮而编写的测试中,您希望在用于从表单导航到按钮的XPath中体现这些假设。

答案 2 :(得分:2)

正如krosenvold所说,让开发人员对html name和/或id属性进行标准化并使用这些属性是最好的策略之一。 我的论文Test Automation as a Development Requirement讨论了这个主题以及开发人员可以做的其他事情,以使应用程序更加自动化。

您还应确保将所有对象标识属性存储在一个中央存储库中,以便进行任何后续维护。大多数商业工具都内置了此功能,但使用开源工具可能需要使用自己的机制。