基于Selenium进行Web应用测试研究
2015-03-02卢晨
卢晨
摘要:基于Selenium自动化测试技术对出差管理系统进行了自动化测试设计,介绍了Selenium在Web应用程序中进行自动化测试的过程。通过案例说明Selenium对Web应用程序进行自动化测试的优势。
关键词:Selenium;自动化测试;信息管理系统
DOIDOI:10.11907/rjdk.143288
中图分类号:TP391
文献标识码:A 文章编号文章编号:16727800(2015)001015402
0 引言
随着软件应用复杂度的增加,保证软件质量变得越来越难,需要测试人员寻找很多测试方法和技术,以解决产品质量问题。自动化测试不仅可以大大减少测试人员的工作量,降低工作难度,还可以避免不必要的人为疏忽与问题,加快测试速度,保证产品质量和进度,提高效益。
目前自动化测试研究如火如荼,涌现了很多自动化测试[1]工具,例如占据主流应用HP的QTP。QTP对系统环境要求很高,运行时会占用很大的内存空间,且价格昂贵。另外,软件开发需求千变万化,自动化测试工具要不断适应这些变化。
1 Selenium概述
Selenium是一个用于Web应用程序测试的工具,它提供了一系列测试函数,用于支持Web自动化测试[2]。这些函数非常灵活,能够通过多种方式定位界面元素,并将结果与系统实际结果进行比较。作为一款强大的测试工具,Selenium具有以下几个特性:①可以对多种浏览器进行测试,如IE、Firefox、Safari、Chrome、Android手机浏览器等;②支持多种语言,如Java、C#、Python、Ruby、PHP等;③跨平台,如Windows、Lunix、iOS、Android等;④开源免费。
Selenium提供很多工具组供测试工程师选用:①Selenium IDE:用于构建脚本的初级工具;②Selenium 1(Selenium RC):Selenium最主要的测试工具之一,支持多语言和多浏览器;③ Selenium 2:集成了WebDriver,WebDriver通过原生浏览器支持或者浏览器扩展直接控制浏览器。测试者可以根据不同的平台、不同浏览器选择不同的WebDriver去执行测试。WebDriver可以驱动本地或远程机器上的浏览器。对比Selenium 1 时代的Selenium RC,WebDriver优势明显[3];④ Selenium Grid:一般用于分布式测试和集群测试,Selenium 能同时并行地、在不同环境上运行多个测试任务,极大地加快了Web应用的功能测试。
本文采用Selenium2测试工具,对某公司出差管理系统的核心功能进行了一整套Selenium自动化测试,主要步骤是:①需求分析;②测试用例设计;③根据测试用例设计测试脚本,并执行测试;④分析测试结果。
2 Selenium测试分析
以某公司外派到日本的员工出差信息管理系统为例,其功能模块如图1所示。
图1 出差管理系统功能结构
系统的核心功能主要是对各种信息进行增加、删除、修改、查找。针对这些核心功能,需要分别设计测试用例并编写测试脚本,通过脚本运行,可以有效完成各功能的测试。
3 Selenium测试设计
根据系统功能结构图和系统需求,对整个系统进行模块划分。以个人信息模块为例,其主要功能有新增个人信息、修改个人信息、按不同条件查找个人信息和删除个人信息等4大功能,功能界面如图2所示。
图2 功能界面
利用黑盒测试用例设计方法设计测试,见表1。
4 脚本编写与运行结果
根据设计的测试用例TC001编写测试脚本,代码如下:
(1) 通过driver打开网站链接:
WebDriver driver = new FirefoxDriver();
driver.get("网站地址");
(2) 获取“新增员工”按钮并点击:
WebElement element = driver.findElement (By.id("按钮id")) ;
element.click();
(3) 获取界面组件并输入内容:
WebElement element = driver.findElement(By.id("组件id"));
element.sendKeys(“输入内容”);
(4) 点击提交按钮:
WebElement element = driver.findElement (By.id("提交按钮id")) ;
element.click();
(5) 等待提交后的系统反馈:
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
(6) 获取弹出对话框信息:
Alert alert = driver.switchTo().alert();
String text = alert.getText();
System.out.println("alert:"+text);
If(text ==预期结果) System.out.println(“Pass”);
alert.accept();
5 语结
本文介绍了Selenium,并以出差管理系统的新增操作为例,对系统进行了自动化用例设计和脚本编写。使用过程中,Selenium的优势非常明显:因为使用的是面向对象的程序设计语言,编写代码简便、易懂,相比较用QTP录制脚本,Selenium脚本更易于维护,整个测试框架可以用面向对象思想进行设计,框架复用性高。不足之处是Selenium对测试步骤中的验证支持度不够。