毕业论文基于Selenium框架的Web自动化测试系统的设计与实现.doc

上传人:wj 文档编号:352996 上传时间:2023-04-29 格式:DOC 页数:45 大小:2.32MB
下载 相关 举报
毕业论文基于Selenium框架的Web自动化测试系统的设计与实现.doc_第1页
第1页 / 共45页
毕业论文基于Selenium框架的Web自动化测试系统的设计与实现.doc_第2页
第2页 / 共45页
毕业论文基于Selenium框架的Web自动化测试系统的设计与实现.doc_第3页
第3页 / 共45页
毕业论文基于Selenium框架的Web自动化测试系统的设计与实现.doc_第4页
第4页 / 共45页
毕业论文基于Selenium框架的Web自动化测试系统的设计与实现.doc_第5页
第5页 / 共45页
毕业论文基于Selenium框架的Web自动化测试系统的设计与实现.doc_第6页
第6页 / 共45页
毕业论文基于Selenium框架的Web自动化测试系统的设计与实现.doc_第7页
第7页 / 共45页
毕业论文基于Selenium框架的Web自动化测试系统的设计与实现.doc_第8页
第8页 / 共45页
毕业论文基于Selenium框架的Web自动化测试系统的设计与实现.doc_第9页
第9页 / 共45页
毕业论文基于Selenium框架的Web自动化测试系统的设计与实现.doc_第10页
第10页 / 共45页
毕业论文基于Selenium框架的Web自动化测试系统的设计与实现.doc_第11页
第11页 / 共45页
毕业论文基于Selenium框架的Web自动化测试系统的设计与实现.doc_第12页
第12页 / 共45页
毕业论文基于Selenium框架的Web自动化测试系统的设计与实现.doc_第13页
第13页 / 共45页
毕业论文基于Selenium框架的Web自动化测试系统的设计与实现.doc_第14页
第14页 / 共45页
毕业论文基于Selenium框架的Web自动化测试系统的设计与实现.doc_第15页
第15页 / 共45页
毕业论文基于Selenium框架的Web自动化测试系统的设计与实现.doc_第16页
第16页 / 共45页
毕业论文基于Selenium框架的Web自动化测试系统的设计与实现.doc_第17页
第17页 / 共45页
毕业论文基于Selenium框架的Web自动化测试系统的设计与实现.doc_第18页
第18页 / 共45页
毕业论文基于Selenium框架的Web自动化测试系统的设计与实现.doc_第19页
第19页 / 共45页
毕业论文基于Selenium框架的Web自动化测试系统的设计与实现.doc_第20页
第20页 / 共45页
亲,该文档总共45页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

毕业论文基于Selenium框架的Web自动化测试系统的设计与实现.doc

《毕业论文基于Selenium框架的Web自动化测试系统的设计与实现.doc》由会员分享,可在线阅读,更多相关《毕业论文基于Selenium框架的Web自动化测试系统的设计与实现.doc(45页珍藏版)》请在冰点文库上搜索。

毕业论文基于Selenium框架的Web自动化测试系统的设计与实现.doc

此处为论文中文题目,要求居中填写

主标题不超过24个汉字;可加副标题(副标题前加破折号),副标题与主标题间空一行的位置

主标题:

黑体,小二,居中

副标题:

楷体_GB2312,四号,居中

阅后删除此文本框。

本科生毕业论文(设计)

题目:

基于Selenium框架的Web自动化测试系统的设计与实现

学生姓名崔青青

学号100104200104

指导教师朱凌

二级学院信息学院

专业名称计算机科学与技术

班级10计算机1班

2014年05月

声明及论文使用的授权

本人郑重声明所呈交的论文是我个人在导师的指导下独立完成的。

除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写的研究成果。

论文作者签名:

年月日

本人同意浙江财经大学有关保留使用学位论文的规定,即:

学校有权保留送交论文的复印件,允许论文被查阅和借阅;学校可以上网公布全部内容,可以采用影印、缩印或其他复制手段保存论文。

论文作者签名:

年月日

浙江财经大学本科生毕业论文(设计)

基于Selenium框架的Web自动化测试系统的设计与实现

摘要:

随着应用软件的发展普及,规模和复杂度不断增加,人们对软件质量的重视,使得软件测试技术逐渐成为人们关注的焦点。

在此以Web系统软件为例,传统的软件测试技术和方法并不完全适用于Web测试,手工测试效率又十分低下,Web自动化测试工具的使用极大地提高了测试的效率。

本系统包含日志管理模块、页面对象模块、测试用例脚本模块、远程控制管理模块、UI驱动模块、多线程管理模块、屏幕截图管理模块及测试驱动模块,具有针对web访问的不同系统、不同业务、不同主流浏览器进行自动化测试的开发、调试、项目构建、部署、运行、监控、分析、告警、生成报告等一系列功能,在规范测试流程、提高测试效率、测试覆盖率方面具有一定的现实意义。

关键词:

SeleniumWebdriver;Web测试;自动化测试;测试工具

DesignandImplementationofWebAutomaticTestSystembasedonSeleniumFramework

Abstract:

Withthepopularityoftheapplicationsoftware,theincreasingsizeandcomplexity,itistheimportanceofsoftwarequality,makingthesoftwaretestingtechnologyhasbecomethefocusofattention.IntheWebsystemsoftware,forexample,traditionalsoftwaretestingtechniquesandmethodsarenotfullyapplicabletoWebtesting,manualtestingefficiencyandverylow,theuseofautomatedtestingtoolsforWebhasgreatlyimprovedtheefficiencyofthetest.Thesystemcontainsalogmanagementmodule,thepageobjectmodules,testscriptmodule,remotecontrolandmanagementmodule,UIdrivermodule,multi-threadmanagementmodule,managementmodulesandtestscreenshotdrivemodule,withdifferentsystemsforwebaccess,anddifferentbusinesses,differentmajorbrowsersdevelopedautomatedtesting,commissioning,projectbuilding,deploying,operating,monitoring,analysis,alerting,generatereportsandaseriesoffunctionsinregulatingthetestingprocess,improvetestefficiency,testcoveragehascertainpracticalsignificance.

KeyWords:

SeleniumWebdriver;WebTest;AutomaticTest;Testingtools

II

目录

1引言 1

2需求分析 2

3可行性分析 4

4自动化测试平台 5

5基于数据驱动自动化测试的实施 6

6系统概要设计 9

6.1系统总体结构设计 9

6.2测试用例层 9

6.2.1模块类库 10

6.2.2测试用例脚本 10

6.3代理(Agent)层 10

6.4UIDriver层 10

7系统实现 12

7.1日志管理模块 12

7.1.1准确定位 12

7.1.2提高开发效率 14

7.2页面对象模块 15

7.3测试用例脚本模块 17

7.4远程控制管理模块 21

7.5屏幕截图管理模块 25

7.6测试驱动模块 26

8系统总体运行 29

9遇到的问题及解决方法 34

9.1ATS线程中断问题 34

9.2xPath路径错误 35

9.3被测系统存在bug 36

10总结与展望 37

参考文献 38

致谢 39

IV

1引言

随着社会的不断发展和信息化的不断普及,各种软件越来越多,在日常生活中也起着越来越重要的作用,再加上客观系统的复杂性,无论经验多丰富的开发人员、无论采用哪种开发模型开发出来的软件,每个阶段的技术复审也不可能毫不遗漏地查出和纠正所有的错误,因此如何才能把新的软件做得更稳定、错误更少是开发人员非常关注的一个重要问题。

测试是解决以上问题的一个十分有效的手段。

统计表明,在典型的软件开发项目中,软件测试工作量往往占软件开发总工作量的40%以上,当然这只是大多数情况。

测试是软件能否通向市场的最后也是最重要的一关。

传统的测试方法是手工测试,目前大部分都是采用此方法,其特点就是简单,但是它存在的问题非常多。

手工测试可能引入人为的输入错误,尤其在数据量大的情况下;另外大量重复性的手工测试可能成本较高,如果考虑软件发生改动而需要重复手工测试的情况,这个成本还会更高;没有办法对组件进行隔离的测试,从而导致发现问题和解决问题的成本都太高。

在很多项目中,测试人员的所有任务实际上都是手动处理的,而实际上有很大一部分重复性强的测试工作是可以独立出来自动实现的。

针对手工测试的缺点,自动化测试应运而生。

相比手工测试,自动化测试的优势很多;规范测试流程,提高测试效率、测试覆盖率等。

很多人对自动化测试存在误区,把其理解为找到一种自动化测试工具,把它应用到软件工程项目中,自动化测试工具只是被看作是一种录制和回放的工具。

事实上自动化测试远不止这么简单,录制和回放仅是自动化测试中的最低级别。

现在常用的是基于数据驱动的测试,它是以数据来控制自动化测试的流程和动作的测试。

本次毕业设计的目的就是在设计中实现针对web访问的不同系统、不同业务、不同主流浏览器进行自动化测试的开发、调试、项目构建、部署、运行、监控、分析、告警、生成报告等一系列功能的自动化测试系统。

并能通过生成的报告对当前被测系统提出一些建设性的改进意见。

2需求分析

正如开发软件需要有需求分析一样,基于数据驱动的自动化测试本质上也是开发,所以在制定测试方案之前也需要收集测试需求,这样才能保证自动化测试的成功。

随着IT技术的发展,传统的开发人员兼任测试人员的模式已经不能满足需求,目前大多数较正规的软件公司均已采用独立的测试人员来对软件进行测试,所以形成了开发人员、开发管理者、测试人员、测试管理者的模式。

如图2-1所示:

图2-1开发模式

规范的测试过程需要上述人员的通力配合,因此在做自动化测试之前可以有一份规范的文档,用来描述测试内容、人员安排、测试流程、缺陷管理等。

其中开发管理人员和测试管理人员分别作为开发团队和测试团队的接口,协调两个团队的工作,一般来说开发人员需要提供自动化测试所需要的数据、稳定的可执行文件等相关资源,测试人员根据功能测试用例创建适合做自动化的测试用例,并建立基于测试驱动的自动化测试工程。

自动化测试工程是建立在自动化测试平台之上,在自动化测试平台上做开发。

测试脚本开发必须通过详细、合理的设计,要对脚本代码进行划分,脚本文件或数据文件分层管理。

这样有利于自动化脚本的开发与维护,从而节省自动化测试的投入成本,也使得不同测试人员或开发人员可以协调开发脚本。

脚本开发完成、提交发布之后,首先是测试人员,测试人员可以运用自动化测试进行回归测试等,节约人力成本的效果尤其显著。

其次是开发人员,开发人员可以在版本提交测试之前,在开发环境进行自动化测试,来确保当前的新版本不会影响固有功能的正常使用。

工程维护人员也可以进行自动化测试,在系统维护升级之后,对部分系统功能进行自动化测试验证,提高升级效率。

既要有一个设计合理的测试脚本运行平台,又要有一个功能完善的测试执行控制平台,所以建立一个自动化测试平台就显得极为重要。

3可行性分析

基于对自动化测试优点的分析,很多人对自动化测试存在另一个误区,认为对于所有的软件都适合引入自动化测试,且只要引入自动化测试,就会提高测试的效率,降低测试的成本。

实际上并非如此,自动化测试也需要开发和搭建测试框架,创建测试用例,这也就意味着成本的投入。

对于一个项目周期很紧的测试项目,按测试方案进行手工测试的效率可能要比自动化测试的效率好得多。

对于一个一次性开发、没有后续版本更新的软件而言,自动化测试是毫无意义的。

但是现在很多软件都会不断推出新的版本,在推出新版本的过程中,每次除了测试新加或修改过的模块,相关联的旧模块同样需要测试,才能保证产品的质量,这样就需要做大量的重复工作,自动化测试的价值就体现在可以创建测试中的可重用模块,同时还可以覆盖大部分的功能测试,这样可以使测试人员从回归测试中解脱出来,专注于新模块的测试。

所以可以说自动化测试的最大价值在于回归测试。

因此,对于一个软件或其中某些模块是否适合自动化测试必须要先进行可行性分析,以证明我们所选的测试方法的正确性,通常可进行自动化测试的软件需要满足以下几点:

   

(1)手工测试复杂度高:

   

(2)所选测试用例,实现自动测试的难度低;

    (3)软件用于自动化测试的模块界面变化相对不大;

    (4)软件生命周期长,经常推出新的版本;

    (5)软件开发已基本完成,主要用于测试升级版本;

    (6)所选自动化测试框架必须对所测软件应用界面有有效的支持,且维护管理成本较低。

另外自动化测试前期需要投入时间和一定的成本投入,故不要一开始就期望有高的回报,其效应会在不断完善积累中显现。

而且不要期待自动化测试可以发现每个版本中的大部分错误,因为自动化测试主要用于回归测试,而且产品中每个新版本的大部分bug会在新模块中出现,所以自动化测试在于长期效应,能保证每个版本产品质量的稳定。

4自动化测试平台

自动化测试架构一般可以分为上下两个层次,上层是管理整个自动化测试的开发,执行以及维护,在比较庞大的项目中,它体现重要的作用,它可以管理整个自动测试,包括自动化测试用例执行的次序、测试脚本的维护、以及集中管理测试用例、测试报告和测试任务等。

下层主要是测试脚本的开发,充分的使用相关的测试服务,构建测试驱动,并完成测试业务逻辑。

自动化测试平台一般由管理端和执行端组成,由管理端发出信号通知执行端开始执行相应的测试任务,从而执行相应的脚本进行测试,并将测试结果报告管理端。

平台划分如图4-1所示。

图4-1平台划分

本毕业设计主要是针对自动化测试平台的开发(即测试服务执行端),主要是对执行端(ATS)功能的开发。

ATS摒弃了录制和回放的机制,采用主流的测试驱动的方式进行自动化测试。

测试驱动是一个自动化测试框架的核心,其决定整个自动化脚本设计。

当前比较流行的测试驱动有数据驱动和关键字驱动,使用不同的测试驱动,关系到脚本重用率,以及后期的可维护性。

而本系统采用数据驱动的自动化测试。

5基于数据驱动自动化测试的实施

基于数据驱动的自动化测试不是简单的录制回放,而且通过编程的形式来实现每个自动化测试用例,其中数据文件独立于测试用例,这样数据的更新对整个测试工程的维护会降低到最小,因此创建自动化测试框架需要有一定的编程基础。

自动化测试系统(ATS)的运行机制如图5-1所示。

图5-1运行机制图解

(1)加载并解析ATS平台配置文件ats.properties

(2)加载log4j.jar,解析log4j.xml配置文件,并动态重定向日志文件存储路径

(3)动态查询到xxx.xml数据配置文件

(4)加载xxx.xml数据配置文件到测试套件中

(5)初始化测试套件

(6)启动TestNG类

(7)testng框架对测试套件进行解析

(8)testng框架通过对测试套件中的xxx.xml数据配置文件的解析找到相应具有

@Test注解的类方法并运行

(9)执行页面对象模型库中某个页面对象的方法如:

增加报告,删除报告等封装好

的方法

(10)执行UI驱动层中封装好的针对元素的方法:

如点击按钮,给输入框赋值等

操作

(11)执行selenium框架提供的api方法,如获得元素等

(12)通过selenium提供的api驱动浏览器模拟手工就行操作,如登录,进入到公

告页面等

(13)对页面进行操作后获得的反馈原始数据

(14)对反馈的原始数据进行逻辑处理,取得可用的数据

(15)把处理后的数据和预定好的数据进行匹配

(16)反馈匹配后的数据给脚本类

(17)把最终结果反馈给Testng框架

(18)Tesng框架根据获得的结果生成相应的测试报告

注:

在1-18步骤之间都会生成相应的日志;

在9-18步骤之间都会有可能生成相应的截图。

6系统概要设计

6.1系统总体结构设计

本系统采用Selenium2(Selenium1.0 + WebDriver)自动化测试框架、Spring框架、TestNG测试框架、SDP(SRTDevelopmentPlatform世导开发平台)作为本系统的总体集成框架,集成开发环境(IDE)采用MyEclipse,开发环境采用Java语言,运行环境采用Windows和Linux两种。

本系统的开发主要实现了针对web访问的不同系统、不同业务、不同主流浏览器进行自动化测试的开发、调试、项目构建、部署、运行、监控、分析、告警、生成报告等一系列功能。

本系统采取的是三层框架结构,分别包括测试用例层(测试用例脚本模块)、代理(Agent)层(页面对象模块等)、UIDriver层(测试驱动模块等)三层,如图6-1所示。

图6-1三层框架结构

6.2测试用例层

在本系统中测试用例层(脚本)又分为“模块类库”和“测试用例脚本”两部分。

6.2.1模块类库

“模块类库”分为“模块公共类库”和“模块特定类库”。

“模块公共类库”是在模块内部将可以为各个模块共享使用的方法抽象出来,作为一个公共类。

它可以是一个单的逻辑操作,也可以是复杂逻辑实现。

比如用户打开浏览器、登录、点击菜单等操作。

“模块特定类库”是指各个业务模块类的特定操作,可以是某个检查点的校验,也可以是针对页面上的某个操作。

“测试用例脚本”在最上层,它根据测试点进行设计,面向具体的应用。

它可直接调用“模块类库”的方法,即调单个逻辑操作,而不关心这个逻辑的实现有多复杂。

它是单个或多个逻辑操作的集合,即一个测试用户脚本。

比如,在客户端访问资源的测试用例,它调用了客户端登录方法和访问资源方法。

6.2.2测试用例脚本

脚本与页面对象库分离使得脚本在一定程度上独立于WEB页面,脚本没有直接的处理页面元素,代码通过元素对象映射表获取赋有WEB页面标签值的变量。

目前实现了一半,页面对象库已经独立于脚本单独管理,但暂时是写死在常量类当中再赋给变量,后期可做扩展维护。

WEB页面对象包括HTML标签、XPath和页面内容(文本、图片、对话框中的值等),当页面对象变更后,一般情况下不需要再修改脚本,只要修改页面对象库即可。

6.3代理(Agent)层

代理(Agent)层主要包括“页面元素操作组件”和一系列“工具组件”。

“页面元素操作组件”通过在接口(interface)中定义例如打开浏览器、在输入框中输入值、点击页面元素等抽象方法,并开发了针对IE浏览器的具体实现类,实现针对IE浏览器页面元素的各种操作,并提供给脚本调用。

脚本层只需要关心被测试的应用是针对什么浏览器即可。

通过配置,动态选择创建的对象,调用针对指定浏览器的页面元素操作。

“工具组件”目前包括例如Comparator(对象比较器,用于页面对象排序),Log(功能实现和调用封装),DateUtils(日期、时间处理),Random(各种随机文本生成接口),ClassForName(根据配置动态创建对象),Regex(各种正则表达式判断功能实现),Dynamicfilelookup(动态文件查找),Threadsleep(线程等待封装)等一系列功能。

6.4UIDriver层

底层功能和测试业务并不相关,主要是控制ATS正常运行的一些机制,包括了多线程脚本运行管理机制、多远程客户端控制管理机制,ATS启动控制机制,ATS运行环境管理机制,多种类浏览器测试管理机制等底层功能实现。

7系统实现

7.1日志管理模块

日志管理模块主要是通过Apache的一个开放源代码项目即Log4j来实现,在本系统设计中主要有两大作用。

7.1.1准确定位

日志管理便于开发人员在开发过程中运行测试用例时,可以准确定位当前程序已完成的某种处理的记录及正在进行的操作,当然更易于找到问题出现的位置,提高开发效率。

配置文件log4j.xml如下所示:

xmlversion="1.0"encoding="UTF-8"?

>

DOCTYPElog4j:

configurationSYSTEM"log4j.dtd">

configurationxmlns:

log4j='http:

//jakarta.apache.org/log4j/'>

mm:

ss}](%c:

%L)%n%n"/>

%L[%p]-%m%n"/>

--限制输出级别-->

%L[%p]-%m%n"/>

--限制输出级别-->

--通过的定义可以将各个包中的类日志输出到不同的日志文件

中-->

--ATS平台的日志管理-->

--ezg平台的日志

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2