web自动化测试

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

web自动化测试
序:此只是简单的一个打酱油似的B/S架构的自动化测试调研,希望能对大家一点点启发,最好集大家之所成能给我一些建议和启发,万分感谢
一、目的
为了能够提高B/S架构的应用程序测试的测试效率。

二、应用范围
B/S架构的应用程序的应用功能测试与验证测试。

三、工具选型与比较
3.1 主要应用工具介绍
主要应用的测试工具包括以下几种
1)QTP, QuickTest Professional. 采用了关键词驱动(Keyword-Driven)测试的理念,关键字驱动或者称为关键词驱动(Keyword-Driven),是为了解决通过录制的方法来产生脚本的问题。

就是先把所有需要的Web对象都添加到对象库中,然后在关键字视图中手动添加测试步骤.
2)RFT, Rational Functional Tester,是一个面向对象的、自动测试工具,它能够测试各种应用程序。

可以应用其进行WEB对象的抓取。

3)Selenium,ThoughtWorks 专门为Web 应用而开发的自动化测试工具,适合进行功能测试、验收测试。

4)Watir ( Web Application Testing in Ruby) 是一个优秀的开源工具,用于开发基于Web 应用的自动化测试程序。

它使用Ruby 脚本语言,提供了轻量级的自动化测试程序框架和丰富的开发库,有效地加速了自动化测试程序开发。

3.2、工具应用比较
1)、QTP采用关键词驱动和描述性编程的方法,其成熟度广,应用普及率较广,框架搭建较简单,但其价格昂贵,采用的是activex驱动模式,灵活性低,不易与自身平台进行结合。

2)、RFT可以支持WEB自动化测试,但仅仅是对其对象的获取,而且其还对C/S架构的APP支持,其灵活性低,价格昂贵,但其的自动化测试架构可以重用C/S类型的。

自动化测试项目。

3)、selenium
优点:a)其原理即基于WEB内核机制。

其直接运行在浏览器之上,所见即所得,就像真实用户所做的一样。

Selenium 的核心,也称browser bot,是用JavaScript. 编写的。

这使得测试脚本可以在受支持的浏览器中运行。

b)灵活性高,易整合到自己平台,其测试用例可以采用两种方式撰写:test runner (HTML 文件)和driven(脚本语言编写),其语言包括Java, .NET, Perl, Python 和Ruby. 使用driven 脚本,测试有一部分在浏览器之外运行,而如果使用test runner 脚本的话,测试是完全在浏览器中运行的。

c)开源,且应用较广泛,有一定的技术基础。

缺点:a)selenium不能简单的处理WEB上一些第三方插件,例如:当要从Web 上下载一些东西,自然此时就会弹出一个“下载框”,由于那个框框是Windows窗口,Selenium 是处理不了的,所以必须通过第三方的脚本处理。

b)selenium是轻量的测试框架,脚本所处理的测试用例构成简单,其实质就是通过HTTP协议,发送请求(request)来完成测试用例,所以很困难处理业务逻辑关系强的测试用例。

3.3 应用总结
可以考虑先采用selenium进行预研究工作,将其轻量级的自动化框架搭建出来进行应用。

四、应用框架和策略
4.1 WEB自动化关注
1)Case的选择
尽量采用google提出的721原则,即70%的测试工作在底层接口测试和单元测试;20%的测试工作在集成测试;10%的测试工作在界面测试。

因此,对于B/S架构自动化测试,原则上若能采用二层的机制(API与底层命令机制)的话,尽量用二层机制;若无,则采用第三层机制,且主要定位在功能测试。

2)对业务变更的处理
1)使用不便的元素进行定位,ID/name。

2)动态的ID好于没有id,即尽量抓取WEB对象的唯一标示值去识别对象。

动态生成的ID,先利用Beautifulsoup等分析源码,通过属性,text(),css等定位到节点,然后获取id,操作的时候直接利用这个id进行操作。

这样好于直接在代码中书写xpath . UI MAP建立元素和一个别名的关联,以xml或者配置的形式存储,
当页面发生改变的时候,只需要更改这个关联文件即可。

因此,原则上要求研发人员在某些元素一定要设定id,name,并且不要改变。

展示的目的就是为了确认。

4.2 框架的设计思想
主要分为三层:
业务(关键字、业务分层)λ
数据(数据驱动、数据存储)λ
结果(结果验证、结果报表)λ
因此,可以将selenium框架分为三个层次:
appObjectsλ—— Web 页面元素定位信息,如按钮与文本框等;
appLibs ——测试步骤中可复用的行为;λ
test cases ——由tasksλ组成的测试用例。

4.3 具体方案策略
1) selenium+eclipse+JUnit
a)、首先,工具包括:
Selenium IDE(可以结合Firefox进行录制,然后生成脚本用例,包括:ruby、java等) Selenium RC(可以进行脚本的编辑和对浏览器的控制,其实其即为一个包,里面封装了对WEB进行控制的各种JS脚本,我们这里采用JA V A包)
Eclipse(执行平台)
b)、之后,可以利用IDE录制生成脚本或者自己应用selenium的API编写测试例脚本(JA V A)。

c)、启动selenium server(java -jar selenium-server.jar 启动selenium server)
d)、在Eclipse创建一个项目,右键项目build path,里面加上junit.jar和selenium-java-client-driver.jar
e)、编写Selenium测试用例,编写一个JUNIT的单元测试,要构建一个Selenium,包括步骤:构建一个Selenium实例λ
启动Selenium实例λ
执行Selenium命令,并验证结果。

要执行一个命令是通过调用Selenium实例的方法来完成的,具体有哪些命令可以参见JA V ADOCλ
关闭Selenium实例λ
框架设计可以如下图所示:
2) selenium+TestNG
a)框架如下图所示:
b) 工具介绍:TestNG是一个设计用来简化广泛的测试需求的测试框架,从单元测试(隔离测试一个类)到集成测试(测试由有多个类多个包甚至多个外部框架组成的整个系统,例如运用服务器)。

编写一个测试的过程有三个典型步骤:
* 编写测试的业务逻辑并在代码中插入TestNG annotation。

* 将测试信息添加到testng.xml文件或者build.xml中。

* 运行TestNG。

c)、结合TestNG,可以提高其脚本用例的重用性,可以实现系统级别的测试,支持数据驱动,结果报表。

相关文档
最新文档