APP下载

Web系统Selenium WebDriver自动化测试框架搭建

2018-01-18刘瑾

电子技术与软件工程 2017年21期

刘瑾

摘 要自动化测试技术对帮助提高回归测试效率很大,对于BS架构的系统,Selenium WebDriver非常适合做自动化测试,利用Selenium技术搭建出一套方便运行维护的自动化测试框架。

【关键词】自动化测试框架 Selenium WebDriver testNG ant

1 引言

随着Web程序发展的复杂性,急切需要自动化测试来提升执行效率,目前市场上用得最多且最有代表性的自动化测试工具Selenium。

2 Selenium简介

Selenium是一个广泛用于 Web 应用程序的开源自动化测试工具,尤其是现在的Selenium2.0-Selenium WebDriver通过原生浏览器支持或者浏览器扩展直接控制浏览器,更解决了Selenium1.0不能解决的本机键盘和鼠标事件、同源策略XSS/HTTP(S)以及弹出框,对话框(基本身份认证,自签名的证书和文件上传/下载)问题,使selenium能够做出更多更准确的用户操作。

(1)支持多种语言,如python、ruby、java、c#等;

(2)支持多种浏览器,如IE, Firefox,Chrome,Safari和Opera等;

(3)在浏览器后台执行,它通过修改HTML的DOM(文档对象模型)来执行操作,实际上是通过JavaScript来控制的。执行时窗口可以最小化,可以在同一机器执行多个测试;

(4)开源的测试工具,使用免费;

(5)无软件界面;

(6)支持B/S應用架构;

(7)支持python,java,可以跨平台;

(8)支持更丰富的测试开发环境;

(9)支持hudson集成工具,更方便实现持续集成;

(10)轻量级测试框架,支持二次开发,更容易设计出自己想要的测试框架。

综上所述,Selenium WebDriver使用灵活,简单,可跨平台支持多种浏览器和多种开发语言,且有较好的扩展性,方便实现持续集成,针对Web系统的特点,Selenium WebDriver非常适合。

3 测试流程

测试流程图如图1。

4 自动化测试框架设计

按照操作对象→对象属性→功能实现→结果验证的流程设计测试框A架如图2。

Selenium WebDriver是一款开源的自动化测试工具,也是市面上用得较多的一款支持二次开发的工具,可支持多种浏览器和跨平台使用,更好地实现持续集成,非常适合Web系统,搭配使用testng测试框架,可生成测试报告以供查看,但是testng生成的测试报告往往不够美观,可采用reportng格式的报告,只需加入相应的jar包即可。

5 自动化测试框架维护

自动化的测试脚本维护成为自动化实施的一个关键性的依据。对于一个规范化的系统开发流程来说,实现测试的自动化是很有必要的。但是自动化的脚本维护使得我们的自动化测试在成本上变得较为昂贵,每一个系统的开发都是时刻随着需求的变更而改变,然而在大多数的情况下,就是很微小的一点系统修改都会导致我们去大量的修改自动化的测试脚本。

这里采用Page Object模式,将测试对象封装在每个page对象中,将page作为对象来管理。Page Object模式来源于Selenium目前比较流行的测试设计模式,把每一个页面当成一个Class来设计,将页面中的按钮、输入框、标题等测试元素包含进去,在用例中可以调用页面Class中的页面元素属性,当页面元素id或者位置变化时,不需要更改测试用例代码,只需更改测试页面的属性即可。可以通过id,class或者XPath来获取页面中元素的属性,在id唯一的情况下,可以使用id获取页面元素,否则可以使用XPath定位页面元素。

而测试数据也会放在单独的文件里,测试用例中调用文件即可。

上述测试模式,将页面元素属性、数据及用例分离开来,便于以后的维护使用。

6 自动化测试框架执行

在调试单个测试用例时,可单个运行,随着代码项目的不断增多,每次依靠人工重新编译,打包,部署等这些复杂重复的工作由工具完成将会带来很大的便捷,而ANT构建工具很好地解决了这一问题。它具有以下的优点:

6.1 跨平台性

纯Java语言编写,具有很好的跨平台性。

6.2 操作简单

通过XML构建文件中丰富的标签来构建任务。

6.3 维护简便

XML格式文件结构清晰,容易维护和书写。

6.4 方便集成

具有的跨平台性和操作简单性,方便与其他开发环境集成。

7 自动化测试用例设计原则

(1)自动化测试用例的范围是核心业务流程或者重复执行率较高的。

(2)自动化测试用例的选择一般以“正向”为主。

(3)自动化测试用例需要回归原点。

(4)自动化测试用例不需要每个步骤都写预期结果。

8 自动化测试用例设计示例

系统模块:系统首页。

概述:实现首页中登录功能。

目标:验证首页中登录功能实现,通过标准的功能对象做为前提,使脚本可维护,可被其他测试用例重复调用,可以得到各个基本动作,基本功能验证结果,自动生成测试结果报告。

以首页功能实现为例,说明测试包含内容,测试用例选择testlink中的登录测试用例,步骤如下:

(1)建立WebDriver初始类,供每个测试用例调用。endprint

(2)建立初始化基类,用以初始化要访问的页面。

(3)建立存放各页面元素属性的page类,供测试用例调用。

(4)建立读取数据文件操作类,供测试数据调用。

(5)建立外部存放测试数据的文件,供测试用例读取数据。

最后登录测试用例中主体为页面的元素动作,比如登录页面的用户名输入数据文件的用户名,格式为登陆页面.用户名.输入数据文件的用户名,此用例看起来较好理解,当页面元素属性或者测试数据有变化时,我们只需改变page中的属性值或存放数据文件的数据,其余地方不用改变,这样大大降低了以后维护的成本,而且以后其他测试用例也可調用登录的方法,提高了代码的复用率。

测试报告格式如图3所示:绿色代表通过,红色代表失败,并显示原因。

9 实施自动化测试的目标和意义

(1)对于功能已经比较成熟完整的软件,也就是稳定性比较好,可以将主流程用例自动化,当版本增加新功能的时候,自动化用例可用作主流程回归测试。

(2)在一些大的项目组,自动化测试所带来的高效率是人工测试完全所不能比的,尤其是在测试周期很短的情况下,自动化运行上千个测试用例也只要几个小时而已,但是人工测试要几十个工作日才能完成。

(3)自动化测试每次运行的脚本相同,也就是自动化测试具有一致性和可重复性,可重复地执行以发现被测试软件的任何变化,保证被测软件的一致性。

(4)自动化测试可以更好的利用资源,自动化测试可以安排在晚上和周末,充分的利用了非工作时间和公司的资源,完成更多的测试执行任务。

(5)自动化测试将繁琐的测试任务自动化,大量重复繁琐的测试任务,消耗的是大量的人力物力,而自动化测试能够很好的支持手工测试,将人力从简单重复的繁琐的劳动中解放出来。

(6)自动化测试脚步可以不断地运行,经过大量的测试用例执行,保证了版本的稳定性。

10 结束语

自动化测试框架Selenium WebDriver+testNG+ant基本满足了Web系统的自动化测试需求,也是市面上比较流行的自动化测试框架之一,所选取的各个组件具有一定的优势和代表性,能很好地帮助我们开展自动化测试工作,值得我们采用。

作者单位

上海清算信息技术有限公司 上海市 200010endprint