第3章自动化测试实战——京东系统质量保障技术实战(1)

发表于:2017-11-03 15:44

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:商城研发POP平台    来源:电子工业出版社

  3.1.3 构建一款基于Selenium 的易用WebUI 框架
  数据驱动测试有两大特点:
  (1)测试脚本与测试数据分离;
  (2)通过配置不同长度的二维数组进行每组数据的轮询测试。
  通常用一个表来存储真实的测试数据。Excel 表、数据库表、文本文件和数组都可以用作数据的载体。
  在构建WebUI 框架时,我们考虑用这种方式将测试数据写入到文件中,与测试脚本进行分离。框架考虑使用TestNG 的DataProvider 方式分发测试数据,在CSV文件中定义测试数据集的长度和值。测试脚本通过传入参数的方式接收数据。而TestNG 负责解析并分发测试数据。
框架基于Selenium WebDriver 开源技术,使用Maven 工具进行项目管理,通过TestNG 工具测试脚本串联。框架提供丰富的基于WebElement 的方法关键字来简化操作步骤。使用CSV 文件存储测试数据,实现测试数据和测试脚本的分离,方便数据管理。
  整体思路是这样的:建立Element 的父类,把操作元素的方法封装起来,形成一套关键字。例如:click、double click、input、select 等。然后通过Selenium IDE录制测试过程,导出一个CSV 文件。文件包含元素名称、测试数据、元素定位采取类型、元素位置。
  有了CSV 文件后,通过程序转化成Java 文件。这个生成的Java 文件,其实就是一个PageObjects 里面定义的一个Page。
  有了这个Page 类,我们只需要通过代码编写驱动程序即可。
  这样就完成了元素、驱动的集成。当元素位置改变后,只需要改变CSV 文件即可。
  第一,建立一套关键字驱动API
  这部分需要将WebElement 再封装一层。每个元素不是定义为WebElement 对象而是自定义的Element 对象。Element 对象有许多封装好的方法,例如:click、doubleclick、input、select 等。
  第二,如何写好驱动程序
  当有了Page 和Element 之后,驱动程序就非常好写了。通过PageFactory,把所有的Page 初始化后,驱动程序写法非常简单。如下:
  loginPage.userName.input("test");
  . loginPage 是由CSV 文件转化的Java 类。
  . userName 是loginPage 类中的属性,这个属性实际上就是元素对象,它是继承了Element 对象的。
  . input 是Element 提供的关键字方法,作用是模拟键盘的输入,内部实际是调用了WebElement 的sendKeys 方法。
  . test 是输入的实际内容,这个由驱动程序控制。可以将这部分内容通过数据驱动的方式实现。
  每个操作实际上都可以这样写,其好处是简化了许多重复的代码。编写者只需要关注业务逻辑即可。这样就可以串成一个完整的用例,然后通过TestNG 进行测试编排。
  第三,TestNG 的扩展
  TestNG 默认的HTML 报表虽然信息全面,但是不够直观。ReportNG 提供了一种简单的方式来查看测试结果,并能够对结果代码进行着色。还可以通过修改CSS文件来替换默认的输出样式。所以,我们用ReportNG 作为报表生成插件,在项目中的listener 中加入此插件。同时,生成的报告还可以通过邮件方式发送出去,这样就可以更加及时地收到用例执行结果了。
  综上所述,本节首先介绍了Selenium 基础,接着详细讲述了Selenium 原理,只有了解了原理才能更好地使用Selenium。然后介绍了Selenium 的高级技巧。之后介绍了PageFactory 这种设计模式。WebUI 测试代码经过这种设计模式的重新设计后,呈现出模块化的特点,具有高可读性、高复用性。最后给出了构建一款WebUI 框架的要素。这里主要讲述了设计思路,希望能得到读者的共鸣。

本文选自《京东系统质量保障技术实战》第三章,本站经机械工业出版社和作者的授权。
版权声明:51Testing软件测试网获机械工业出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。

22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号