selenium自动化测试用例设计注意事项

上传人:第*** 文档编号:30999283 上传时间:2018-02-03 格式:DOCX 页数:12 大小:37.43KB
返回 下载 相关 举报
selenium自动化测试用例设计注意事项_第1页
第1页 / 共12页
selenium自动化测试用例设计注意事项_第2页
第2页 / 共12页
selenium自动化测试用例设计注意事项_第3页
第3页 / 共12页
selenium自动化测试用例设计注意事项_第4页
第4页 / 共12页
selenium自动化测试用例设计注意事项_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《selenium自动化测试用例设计注意事项》由会员分享,可在线阅读,更多相关《selenium自动化测试用例设计注意事项(12页珍藏版)》请在金锄头文库上搜索。

1、Selenium 自动化测试用例设计注意事项 UI 元素映射 元素验证 等待加载 日志记录 结果收集Selenium 自动化测试用例设计注意事项(一) 自动化测试设计简介我们在本章提供的信息,对自动化测试领域的新人和经验丰富的老手都是有用的。本篇中描述最常见的自动化测试类型, 还描述了可以增强您的自动化测试套件可维护性和扩展性的“设计模式” 。还没有使用这些技术的、有经验的自动化测试工程师会对这些技术更加感兴趣。测试类型您应该测试应用程序中的哪些部分?这取决于您的项目的各种影响因素:用户的期望,时间期限,项目经理设置的优先事项等等。但是,一旦项目边界定义完成,作为测试工程师,你必须做出要测试什

2、么的决定。为了对 Web 应用的测试类型进行分类,我们在这里创建了一些术语。这些术语并不意味着标准,但是这些概念对 web 应用测试来说非常典型。 测试静态内容静态内容测试是最简单的测试,用于验证静态的、不变化的 UI 元素的存在性。例如: 每个页面都有其预期的页面标题?这可以用来验证链接指向一个预期的页面。 应用程序的主页包含一个应该在页面顶部的图片吗? 网站的每一个页面是否都包含一个页脚区域来显示公司的联系方式,隐私政策,以及商标信息? 每一页的标题文本都使用的标签吗?每个页面有正确的头部文本内吗?您可能需要或也可能不需要对页面内容进行自动化测试。如果您的网页内容是不易受到影响手工对内容进

3、行测试就足够了。如果,例如您的应用文件的位置被移动,内容测试就非常有价值。 测试链接Web 站点的一个常见错误为的失效的链接或链接指向无效页。链接测试涉及点各个链接和验证预期的页面是否存在。如果静态链接不经常更改,手动测试就足够。但是,如果你的网页设计师经常改变链接,或者文件不时被重定向,链接测试应该实现自动化。 功能测试在您的应用程序中,需要测试应用的特定功能,需要一些类型的用户输入,并返回某种类型的结果。通常一个功能测试将涉及多个页面,一个基于表单的输入页 面,其中包含若干输入字段、提交“和” 取消“操作,以及一个或多个响应页面。用户输入可以通过文本输入域,复选框,下拉列表,或任何其他的浏

4、览器所支持的 输入。功能测试通常是需要自动化测试的最复杂的测试类型,但也通常是最重要的。典型的测试是登录,注册网站账户,用户帐户操作,帐户设置变化,复杂的数据检索操作等等。功能测试通常对应着您的应用程序的描述应用特性或设计的使用场景。 测试动态元素通常一个网页元素都有一个唯一的标识符,用于唯一地定位该网页中的元素。通常情况下,唯一标识符用 HTML 标记的id属性或name 属性来实 现。这些标识符可以是一个静态的,即不变的、字符串常量。它们也可以是动态生产值,在每个页面实例上都是变化的。例如,有些 Web 服务器可能在一个页面实 例上命名所显示的文件为 doc3861,并在其他页面实力上显示

5、为 doc6148,这取决于用户在检索的文档。验证文件是否存在的测试脚本,可能无法 找到不变的识别码来定位该文件。通常情况下,具有变化的标识符的动态元素存在于基于用户操作的结果页面上,然而,显然这取决于 Web 应用程序。下面是一个例子。这是一个 HTML 标记的复选框,其 ID (addForm:_ID74:_ID75:0:_ID79:0:checkBox) 是一个动态生成的值。这个页面下次被打开时,复选框的 ID 将可能是一个不同的值。 Ajax 的测试Ajax 是一种支持动态改变用户界面元素的技术。页面元素可以动态更改,但不需要浏览器重新载入页面,如动画,RSS 源,其他实时数据更新等等

6、。 Ajax 有不计其数的更新网页上的元素的方法。但是了解 AJAX 的最简单的方式,可以这样想,在 Ajax 驱动的应用程序中,数据可以从应用服务器检索,然 后显示在页面上,而不需重新加载整个页面。只有一小部分的页面,或者只有元素本身被重新加载。验证结果 断言 assert 与验证 verify什么时候使用断言命令,什么时候使用验证命令?这取决于你。差别在于在检查失败时,你想让测试程序做什么。你想让测试终止,还是想继续而只简单地记录检查失败?这需要权衡。如果您使用的断言,测试将在检查失败时停止,并不运行任何后续的检查。有时候,也许是经常的,这是你想要的。如果测试失败,你会立刻知道测 试没有通

7、过。TestNG 和 JUnit 等测试引擎提供在开发测试脚本时常用的插件,可以方便地标记那些测试为失败的测试。优点:你可以直截了当地看到检查 是否通过。缺点:当检查失败,后续的检查不会被执行,无法收集那些检查的结果状态。相比之下,验证命令将不会终止测试。如果您的测试只使用验证,可以得到保证是假设没有意外的异常测试会被执行完毕,而不管是否发现缺陷。缺点:你必 须做更多的工作,以检查您的测试结果。也就是说,你不会从 TestNG 和 JUnit 得到反馈。您将需要在打印输出控制台或日志文件中查看结果。每次运行测 试,你都需要花时间去查看结果输出。如果您运行的是数以百计的测试,每个都有它自己的日志

8、,这将耗费时间。及时得到反馈会更合适,因此断言通常比验证更常 使用。 权衡:assertTextPresent,assertElementPresent 和 assertText您现在应该熟悉这些命令及使用它们的机制。如果没有,请参阅相关章节。在构建你的测试时,你需要决定 只检查在页面上的文本吗?(verify/ assertTextPresent) 只检查是否在页面上存在 HTML 元素吗?即文本,图像,或其他没被检查的内容,只要和 HTML标记相关。(verify/ assertElementPresent) 需要同时检查元素和它的文本内容?(verify/ assertText)没有正确

9、的答案。这取决于您的测试要求。如有疑问,请使用 assertText,因为这是最严格的类型检查点。您可以随后更改它,但至少你不会遗漏任何潜在的故障。Verify/ assertText 是最特殊的测试类型。 HTML 元素(标签)或文本的不符合都会导致测试失败。也许你的网页设计师经常改变页面面,而你不希望在他们改 变页面时,你的测试失败,因为这是期望中的周期性变更。但是,假如你仍然需要检查的页面上的东西,如段落、标题文本或图像。在这种情况下,您可以使用 verify/ assertElementPresent。这将确保一个特定类型的元素存在(如果使用 XPath,可以确保它相对页面内其他对象的

10、存在)。但你不关心的 内容是什么,你只关心某个特定的元素,比方说,一个图片在一个特定的位置。随着时间的推移和经验的积累,如何决定使用还是非常简单的。定位元素的策略 选择一个定位策略有多种方式选择页面上的对象。但面对这些定位类型,如何权衡呢?回想一下,我们定位一个对象的方式: 元素的 ID 元素的 name 属性 XPath 语句 通过一个链接的文本 文档对象模型(DOM )使用元素的 ID 或 name 定位符,在测试执行方面来说,是最有效的方式。也让你的测试代码更具可读性,如果在页面源代码中的 ID 或 name 属性被友好命 名的话。XPath 语句需要更长的时间来处理,因为浏览器必须运行

11、它的 XPath 处理器。在 Internet Explorer 7,XPath 出了名的慢。使用链接的文本进行定位是很方便的,并运行起来也不错。这种技术只适用于链接。另外,如果链接文本很可能会经常改变,使用标签定位元素将是更好的选择。不过,有时你必须使用 XPath 定位。如果一个页面元素没有一个 ID 或者 name 属性,除了 XPath 定位没得选择。(DOM 定位器不再普遍使用,因为, XPath 可以做得更好。 DOM 定位器只简单地为遗留测试而存在)。相对使用 ID 或 name 属性定位,使用 XPath 进行定位有一个独特的优势。使用 XPath(DOM)中,你可以找到页面上

12、相对于其他对象的一个对象。 例如,如果有一个链接必须存在标签里的第二个段落内,您可以使用 XPath 进行定位。使用 ID 和 name 属性定位,你只能得出它们 存在指定的页面,而不知具体的页面位置。如果你必须测试显示公司标志的图像出现在页面顶部的头部分,XPath 定位可能是更好的选择。 定位动态元素正如前面测试类型部分所述,动态元素的页面标识在不同的页面实例上市不同的。例如,View Archived Allocation Events这个 HTML 锚标记定义了一个 ID 属性为“adminHomeForm”按钮。和大部分 HTML 标签相比,这是一个相当复杂的锚标记,但它仍然是一个静

13、态 标签。每次页面被浏览器加载时,HTML 将保持不变。它的 ID在所有的页面实例里保持不变,也就是说,页面被展示时,这个 UI 元素总是有同样的标识符。所 以,点击此按钮的测试脚本(Selenium Server)如下所示:selenium.click(adminHomeForm);然而,你的应用程序,可能生成动态的 HTML 标识符。在不同的网页实例中,标识符发生改变。例如,一个动态的页面的 HTML 元素可能会是这个样子:这是一个复选框,id 和 name 属性都是 addForm:_ID74:_ID75:0:_ID79:0:checkBox。在这种情况下,使用标准的定位,测试脚本应该是

14、这样子的:selenium.click(addForm:_ID74:_ID75:0:_ID79:0:checkBox);对于动态生成的标识符,这种做法行不通。下一次页面加载时,标识符将是一个不同的值,执行上述脚本会遇到“element not found”错误。要更正该问题,一个简单的解决办法是使用 XPath 定位替代 ID 定位器。因此,对于该复选框,可以简单地使用selenium.click(/input);或者,如果它不是在页面上的第一个文本输入域,尝试一个更详细的 XPath 语句。selenium.click(/input3);或selenium.click(/div/p2/inp

15、ut3);但是,如果你确实需要使用 ID 来定位元素,可以换一种不同的解决方案。您可以先捕捉到网站的这个 ID,然后再使用它,例如:String checkboxids = selenium.getAllFields(); / Collect all input IDs on page.for(String checkboxid:checkboxids) if(checkboxid.contains(addForm) selenium.click(expectedText);如果页面上只有一个复选框的 ID 文本为“expectedText” 时,这种方法工作。 定位 Ajax 元素定位、验证

16、 AJAX 元素的最好的方式是使用 Selenium 2.0 webdriver 的 API,它专门解决 Selenium 1.0测试 AJAX 元素的一些限制。在 Selenim 2.0 中,可以使用 waitfor()方法来等待一个页面元素变得可用。该参数是一个 WebDriver 用来实现定位的 By 对象。这是 WebDriver 的章节中详细解释。在 Selenium 1.0(Selenium-RC 的)中,要做到这一点需要编写更多的编码,但它并不难。首先检查元素,如果它存在,等待预定义的时间段,然后再重新检查。这在循环内执行,如果超过一个预定的超时,元素不存在则终止循环。让我们考虑页面上实现 AJAX 效果的一个链接(链接= ajaxLink),可以使用循环处理:/ Loop initialization.for (int second = 0; second+) / If loop is reach

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号