现在的位置: 首页 > 综合 > 正文

web自动化测试的调研工作

2018年05月11日 ⁄ 综合 ⁄ 共 2748字 ⁄ 字号 评论关闭

 

序:此只是简单的一个打酱油似的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 inRuby) 是一个优秀的开源工具,用于开发基于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脚本,我们这里采用JAVA包)
Eclipse(执行平台)
b)、之后,可以利用IDE录制生成脚本或者自己应用selenium的API编写测试例脚本(JAVA)。
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实例的方法来完成的,具体有哪些命令可以参见JAVADOC
 关闭Selenium实例
框架设计可以如下图所示:

2) selenium+TestNG
a) 框架如下图所示:
 
b) 工具介绍:TestNG是一个设计用来简化广泛的测试需求的测试框架,从单元测试(隔离测试一个类)到集成测试(测试由有多个类多个包甚至多个外部框架组成的整个系统,例如运用服务器)。编写一个测试的过程有三个典型步骤:
    * 编写测试的 业务逻辑并在代码中插入TestNG annotation。
    * 将测试信息添加到testng.xml文件或者build.xml中。
    * 运行TestNG。
c)、结合TestNG,可以提高其脚本用例的重用性,可以实现系统级别的测试,支持数据驱动,结果报表。

抱歉!评论已关闭.