基于Selenium的自动化测试研究

2016-07-26 06:22陈斌仙陈佳丽陈阿妹龙岩学院福建龙岩364012
赤峰学院学报·自然科学版 2016年9期
关键词:自动化测试

陈斌仙,陈佳丽,陈阿妹(龙岩学院,福建 龙岩 364012)



基于Selenium的自动化测试研究

陈斌仙,陈佳丽,陈阿妹
(龙岩学院,福建 龙岩 364012)

摘 要:随着软件产品的普及和发达,自动化测试已越来越多地被应用于软件开发的各个阶段,为高质量的软件产品提供了保障.本文在已有研究的基础之上,给出了自动化测试的定义、发展历程及框架,研究了自动化测试工具Selenium的构成、工作原理及使用环境,并分析了利用Selenium对具体实例进行测试的过程.本文的研究工作对高校《软件测试》课程的理论和实践教学都有一定的指导作用.

关键词:Selenium;测试框架;自动化测试;测试脚本

为了保证软件产品的质量,在软件开发的各个阶段(包括需求分析、设计、实现及发布等阶段)都需要引入软件测试工作,以期尽早地尽可能多地发现系统中存在的缺陷,最大限度确保软件产品的质量.20世纪90年代初期以前,大部分的测试工作都是由手工测试来完成,但是随着大数据时代的到来,编程语言越来越丰富,软件开发模型越来越多样化,软件产品也越来越复杂,庞大和重复性的输入输出数据给手工测试带来了极大的挑战,尤其是对产品的升级版本进行测试时,大量的人力被花费在之前进行过的重复性的测试之上,浪费了大量的人力、物力和财力[1].在这种情况之下,自动化测试的概念应运而生.经过过去二十多年的发展,在软件测试领域中不仅形成了先进的自动化测试的概念,同时也诞生了形形色色的自动化测试软件和工具,更是为软件产品的质量提供了强有力的保障.本文正是基于此,在已有研究的基础之上,对自动化测试的定义、发展历程及框架进行了概述,对测试工具Selenium的相关应用进行了研究,并结合常用实例描述了其详细的工作流程.

1 自动化测试概述

1.1 自动化测试定义

自动化测试是指在测试活动中仅需由测试人员根据测试需求开发出测试脚本,不需用户参与即可自动执行的测试程序.所开发的测试脚本可以用于单元测试阶段,用来测试某个具体的类或方法,还可以用于集成测试阶段,用来测试整个程序的功能.总之,对软件进行自动化测试的过程就是用程序(即测试脚本)测试源程序、用代码(即编辑后的测试脚本)指导测试流程、用脚本的执行取代人工测试的过程.

1.2 自动化测试发展历程

自动化测试技术的发展历经以下4个阶段.

(1)简单的录制、编辑、编程与回放阶段.即通过自动化测试工具对所需执行的操作进行录制,对录制的脚本进行编程,执行编辑后的脚本,实现自动化回放功能.适用于被测系统功能变化较少的情况.

(2)数据驱动的测试阶段[2].模拟并使用真实生活中的实例作为测试数据,并使用专门的数据文件进行读取和存储,在测试脚本中可针对不同的测试用例,引入这些测试数据及相应的变量.

(3)关键字驱动的测试阶段[3].在数据驱动测试的基础上,从测试工具中分离出一种改进的测试用例设计方案,其主要思想是:将脚本和数据区分,将外面界面对象和内部测试元素区分,同时也将测试描述与具体实现细节进行区分.

(4)模型驱动的测试阶段[4].每一个模型等同于一个测试场景,通过不同的场景设计不同的初始化条件,为用户设计出更加清晰、准确的测试用例,所构建的测试模型将减少测试用例的维护工作,实现资源的重利用.

1.3 自动化测试框架

所谓自动化测试框架,即在自动化测试过程中所使用的框架,可理解为由一个或多个自动化测试基本模块、管理模块及统计模块等所组成的工具集合.该工具集合要么提供最基础的自动化功能测试模块,如:Selenium、Watir等,当使用它们打开一个被测页面时,通过模拟鼠标和键盘,点击或操作该页面中的被测对象,验证该对象的属性是否正确,以此判断整个程序的正确性;或者提供自动化测试执行和管理所需的模块,如:Robot、STAF等,它们并不为自动化测试提供基础支撑,而仅仅用于组织、管理和执行那些已经设计好的测试用例,如:Robot框架就可以集成Selenium框架[5].

2 自动化测试工具

2.1 Selenium构成

Selenium是一套由Thought Works员工所开发的、开源的测试工具,主要用于解决在功能测试或验收测试中Junit无法胜任的自动化测试中的问题,尤其是在代码层面之上,当面临Web系统与用户之间进行交互时所需进行的回归测试、集成测试及冒烟测试等.可支持不同操作系统之下多种浏览器及各浏览器的不同版本,同时也支持各类编程语言,目前已有Selenium1.0和Selenium 2.0两个版本,其中Selenium 2.0集成了WebDriver[6],为解决复杂Web页面中重新加载和动态网页等问题提供了支持.

Selenium中主要包括:Selenium Core、Selenium IDE、Selenium Remote Control(RC)及 Selenium Grid等模块,其构成如下图1所示.

图1 Selenium构成

2.2 Selenium工作原理

Selenium是一套在网络环境中使用的测试工具集合,所有配置好的命令均可在浏览器中运行,以达到直接模拟用户操作的目的.具体的架构如下图2所示.

图2 Selenium架构

2.3 Selenium使用环境

利用Selenium进行Web自动化测试时,需首先搭建测试所需的各类环境,具体的使用环境如下表1所示.

表1 Selenium的使用环境

3 基于Selenium的测试过程

本节以下内容主要描述利用Selenium针对具体实例进行测试的过程.

3.1 分析实例系统测试需求

本文拟采用的被测对象是QQ邮箱的常用模块——用户登录模块,这也是Web应用中最常见的测试对象.具体的测试需求点如下表2所示.

表2 实例系统测试需求

3.2 设计测试用例

根据上述测试需求,对测试需求1涉及到的部分测试用例进行设计,结果如下表3所示.

3.3 录制测试过程

使用Selenium IDE录制所需脚本,步骤如下:

表3 测试需求1对应的测试用例

Step1:在Firefox中添加Selenium IDE插件;

Step2:将待测网页的 URL地址——https://mail.qq.com/,填入Selenium IDE的Baseurl栏中,点击录制按钮开始录制;

Step3:在Firefox中访问上述Baseurl网页,并模拟正常登录过程,填写账号、密码等信息,再点击登录按钮进入QQ邮件页面;

Step4:上述过程都记录在Selenium IDE中,所得脚本如下图3所示.至此,录制过程结束.

图3 Selenium IDE界面

其中,Command代表所执行的操作,Target代表操作的对象,Value代表所输入的值.Selenium IDE主要通过这三个参数,来定位网页元素,从而完成脚本的录制过程.

3.4 生成测试脚本

在Selenium IDE中,选择“文件→Export Test Case As…→Java/JUnit4/WebDriver”操作,将IDE 与Selenium 2.0相结合,同时完成IDE向Web-Driver之Java脚本的转化,并进一步生成Junit 4框架格式的脚本文件.

3.5 执行并分析测试结果

编辑并调试好3.4节的测试脚本之后,在E-clipse IDE中运行该脚本时,WebDriver会自动启动浏览器Firefox,同时“https://mail.qq.com/”网页会被打开,然后在账号和密码处分别自动填上3.2节测试用例01中的输入项,即账号:2956521682,密码:sele123456,并自动单击“登录”按钮,跳转至QQ邮箱页面.此时的测试结果是“登录成功并跳转成功”,与该测试用例的预期输出相符合.故断言成功,测试通过.

修改测试用例脚本,将密码改为3.2节测试用例02中的输入值后,再次运行该脚本,会发现有错误提示,此时断言失败,测试不能通过.

4 总结

本文在已有的研究基础之上,给出了自动化测试的定义、发展历程及框架,研究了自动化测试工具Selenium的构成、工作原理及使用环境,并结合具体的实例给出了利用Selenium的进行测试的工作过程.本文的研究工作对高校《软件测试》教学有一定的指导作用.值得注意的是,尽管自动化测试在针对大量重复性测试工作方面提供了重要的解决方案,但在该过程中,测试人员的主要时间和精力都花在如何编写、如何调试以及如何优化维护测试代码之上,这将导致软件测试有可能偏离原始的轨迹[7].因此,在实施软件测试的过程中,要正确认识自动化测试,并能根据真实的用户需求,将手工测试与自动化测试有机地结合在一起,发挥各自的作用,提高测试效率.

参考文献:

〔1〕Glenford J.Myers,Tom Badgett,Corey Sandler.软件测试的艺术(原书第3版)[M].北京:机械工业出版社,2013.

〔2〕张添.基于Selenium的Web自动化测试[D].北京:北京交通大学,2014.

〔3〕Priya Gupta,Prafullakumar Surve.Model based Approach to Assist Test Case Creation,Execution,and Maintenance for Test Automation[C].Proceedings of the First International Workshop on End-to-End Test Script Engineering, New York,USA,2011,1-7.

〔4〕秦海光.基于Selenium自动化测试框架的改进与应用[D].北京:中国科学院大学,2014.

〔5〕黄华林.使用Selenium进行Web应用自动化测试的研究[J].电脑开发与应用,2012,25(4):54-56.

〔6〕吴伶琳.基于Selenium的软件自动化测试的研究与应用[J].计算机与现代化,2013(2):65-68.

〔7〕武剑洁.软件测试使用教程——方法与实践(第2版)[M].北京:电子工业出版社,2012.

中图分类号:TP311.5

文献标识码:A

文章编号:1673-260X(2016)05-0019-03

收稿日期:2016-03-09

基金项目:福建省大学生创新创业训练计划项目(201511312007);福建省中青年教师教育科研项目(JA15489);龙岩学院第三批教学改革项目(2014JY29)

通讯作者:陈佳丽,女,湖北仙桃人,龙岩学院信息工程学院讲师,研究方向:软件测试,信息安全

猜你喜欢
自动化测试
基于Java反射的APP自动化混合测试框架的研究与实现
Hadoop性能测试自动化研究
数据驱动和关键字驱动的研究与应用
浅谈空调控制器自动化测试
基于多总线结构的电路板测试系统设计研究
航空航天与国防电子新形势下自动化测试系统的应用
基于CTI—TET和SeleniumWebdriver的Web应用自动化测试框架的设计与实现
自动化测试实现研究
一种航空交换机中CAN总线的自动化测试方法
基于Selenium进行Web应用测试研究