当前位置:文档之家› 基于selenium的web自动化测试脚本设计研究

基于selenium的web自动化测试脚本设计研究

基于selenium的web自动化测试脚本设计研究
摘要近些年来web软件开发项目渐进复杂,因此自动化测试技术在web 测试中的作用日益重要,但是目前很多自动化测试的脚本设计不合理,造成维护测试数据与测试脚本变得极其复杂,因此如何设计拥有良好结构的自动化测试的脚本变得十分重要。

本文在selenium开源测试框架的基础上,实现了测试数据与测试脚本分离,此外采用数据驱动脚本技术以及三层脚本结构组织测试框架,提高测试效率。

关键词自动化测试;测试脚本;Selenium
1研究现状
Web自动化测试就是利用相应的自动化测试工具如Selenium、Watir、MaxQ 等,以及测试脚本模拟用户与网页交互的过程,然而目前软件项目开发周期越来越短,版本迭代越来越频繁,如果相应版本的页面更改后,如何合理组织测试数据和测试脚本,实现测试脚本的重用,同时将测试数据和测试脚本分离,这是自动化测试中的难点和重点。

Selenium IDE:
通过一个浏览器的插件,记录浏览器与用户的相互作用的动作,在Selenium 中自动生成与web对应的测脚本。

然后可以通过运行脚本完成实际用户与浏览器的交互过程。

Selenium Remote Control
主要由两部分组成:client lib和Selenium server。

Selenium server主要负责控制浏览器,Client lib使用软件测试脚本来调用Selenium server的库,当运行web测试脚本的时候,脚本将通过client lib向selenium Server发送http或者https请求,selenium server对该请求进行解析,之后发送javascript脚本命令给通Selenium 的核心组件。

虽然Selenium操作简单,但是它的用户友好度比较差,操作界面比较简单粗糙,提供的功能也很有限,虽然提供了最基本的操作,但在测试组件和测试用例调试等方面的功能较差,对浏览器页面元素的维护的支持也不全面。

1.2 自动化测试相关术语
1)数据驱动
通过预先定义的变量从外部的文件如中读取测试用例或脚本所需的测试数据。

2)数据映射
每个定义域元素被确切地映射为值域上的一个元素,映射将为每个定义域元素指派为值域中的唯一的元素,但是也可能存在未被映射的值域元素,
2 采用层次化脚本结构的测试框架
根据对web自动化测试项目的实际研究,笔者认为将测试脚本层次化对测试工作十分重要。

因此可以将自动化测试脚本分成三类:
1)映射脚本;
2)复用脚本;
3)测试脚本。

三种类型的脚本在自动化测试中分别起着不同的作用,承担着不同的角色。

2.1 复用脚本
自动化测试复用脚本在测试脚本中是底层的脚本,
其作用是通过脚本运行一些比较常用的操作,可以根据每种类型的控件设计一个比较通用的脚本,然后对脚本进行修改。

在脚本中采用不同的ID来标示浏览器中的控件,将控件进行的内容作为脚本运行时输入的参数。

测试脚本可以在不同的web项目中共享这些重用的脚本,进而减少测试的工作量,因为不同的web测试项目中,重用脚本是基本一致的。

2.2测试脚本
测试脚本是一种对具体的功能点和业务点的测试脚本,其主要功能有:从测试的数据文件中读取测试用例中的测试数据,调用重用脚本和对象映射脚本,然后将这些测试数据嵌入到被测试的web软件中,将测试结果与测试的预期结果进行比对,然后记录相应的测试日志和和测试过程中产生的错误
2.3映射脚本
通过调用测试脚本将界面的对象映射脚本组成一
个自动化测试脚本集,界面对象映射脚本是将对象逻辑名与web项目进行界面对象进行映射关联。

2.4测试数据
测试数据是根据测试脚本以及功能点和业务点的需要,通过约定相应的数据格式、顺序、类型来编写相应的测试数据,测试数据文件中包含了测试输入的数据和测试输出的预期结果。

采用层次化脚本结构的自动化测试框架的优点
1)在自动化测试中实现了数据驱动,不同的的测试用例可以复用一个软件测试脚本,有效的对测试脚本进行维护,也减少了测试脚本的数量;
2)使用界面抽象、界面对象识别录制和映射,也在很大程度上减少了测试脚本的维护工作量;
3)通过分离测试数据与测试脚本,减少测试所需要的时间,同时这种层次化的脚本结构可以将软件;
4)开发、软件测试、测试用例的设计并行进行,缩短了项目的开发周期。

层次化脚本结构的实现
根据上述论述的理论,采用层次化的脚本结构将使得自动化测试更加有效。

根据上述理论使用如下例子来进行试验。

要对“录入员工基本信息”进行功能测试,其实现的过程如下:
1)界面的抽象;
2)测试脚本和测试用例设计;
3)实现数据驱动;
4)映射界面对象;
5)自动化测试脚本执行。

界面的抽象
根据输入的数据内容来确定测试用例。

例如要对“录入员工的基本信息”进行测试,则该功能点要输入的数据有:姓名、地址、电话号码、身高、体重,利用界面抽象来确定这些对象的逻辑名分别为ButtonOk、ButtonCancel.EditName、EditPhone、
EditAddress、EditPhone、EditHeight、EditWeight、EditHeight、EditWeight
3.2 测试脚本和测试用例设计
例如测试的数据为:王莉、嘉定区480号,88720847,168,65KG,则测试用例可以设为如下所示的脚本:
测试步骤:
1)启动“录入员工基本资料”应用程序
2)分别输入:
EditName=王莉EditAddress=嘉定区480号
EditPhone=88720847
EditHeight=168
EditWeight=65
ButtonOk
对应的自动化测试脚本:
Start(“C:\App\员工基本资料登记.exe”)
WindowsSelect(“员工基本资料登记”)
Text_input(EditName,“王莉”)
Text_input(EditAddress,“嘉定区480号”)
Text_input(EditPhone,“88720847”)
Text_input(EditHeight,“168.5”)
Text_input(EditWeight,“65”)
Button_Click(ButtonOk)
3.3 数据驱动的实现
使用变量来代替以上的输入内容,从数据文件中读取变量的值,对应的测试用例共同使用同一个一个自动化测试脚本,相应的,修改对应的测试脚本。

StartApp(AppName)
WindowsSelect(FormName)
Text_input(EditName,InputName)
Text_input(EditAddress,InputAddress)
Text_input(EditPhone,InputPhone)
Text_input(EditHeight,InputHeight)
Text_input(EditWeight,InputWeight)
Button_Click(ButtonOk)
3.4 映射界面对象
在进行测试前,需要使用相应的测试工具的录制
功能对web界面的对象进行识别,可以使用C语言的#include将界面对象的识别包含在测试的脚本中,从而将测试用例、测试脚本,测试数据组成一个高效的自动化测试脚本用例集合。

从测试脚本中对程序界面对象的识别标志进行抽取,将界面对象的逻辑名映射到界面对象的标示,形成一一对应的关系,脚本头文件如下所示。

EditName=”ObjectIndex=5”
EditAddress=”ObjectIndex=4”
EditPhone=”ObjectIndex=3”
EditHeight=”ObjectIndex=2”
EditWeight=”ObjectIndex=1”
EditWeigh t=”ObjectIndex=6”
4结论
自动化测试的脚本维护对自动化测试有重要的影响,本文设计采用层次化的脚本结构,即三层脚本结构的自动化测试设计思路,通过分离测试数据与测试脚本,采用脚本中调用测试数据的方式,使得只更改测试数据而不需要对测试脚本进行大幅度的修改,使得使得测试脚本可以更加高效的执行。

在不同项目间将测
试脚本进行重用,也降低了测试脚本的数量以及测试的维护工作量和测试用例的数量,大大提高了自动化测试的工作效率,也为测试人员工作提供了有力支持。

参考文献
[1]杜庆峰.高级软件测试技术[M].北京:清华大学出版社,2011,6:104-112.
[2]焦红革,陈文,李泽民,等.基于XML的软件测试脚本生成[J],2012,30(11):145-147
[3]赖利峰,刘强.Web应用程序的一种功能自动化测试模型与实现[J].计算机工程,2010,32(17):42-44.
[4]高秋.GMTAF测试自动化框架的设计与实现[D].杭州:浙江大学,2011.。

相关主题