前言
使用watir做自动化测试已经很长很长时间了,确实是简洁实用的一个框架,尤其对于有一定coding经验的测试人员来说,可以说是如虎添翼。但是在使用过程中,也渐渐的感受到了仅仅一个watir是很难满足自动化测试的方方面面,比如说,自动化测试的多环境统一管理执行。
我们都知道作为通用产品,必须要测试它在不同的操作系统和浏览器下的表现,而单机本地执行的自动化测试脚本要实现这样的目的,不得不需要一些手工操作做衔接;这样一来,每一次测试都将重复的投入人力成本,尤其是对于测试成本紧缺的部门来说,这无疑是很郁闷的一件事情。
那么,如何才能改变这种状况呢?同时又可以将之前单机执行的测试脚本利用起来呢?这就是我的框架所解决的问题。
第一节 简介
下面就对这个框架作一个基本的介绍:
名称:Automatic Test Management
结构:B/S/C;
实现:Watir、Rails、Staf;
开发周期:2个月;
author:Nick Wang
整体设计简介:
此项目分为两个字项目,其一是提供web访问执行测试服务的QAWeb,使用ROR实现; 其二是将原有的自动化测试框架改造后的AutoTestscrīpt测试脚本框架,主要通过Ruby+Watir实现. 测试的具体执行由AutoTestscrīpt部分完成, 而QAWeb主要是提供对测试任务管理,及结果展现的功能;此外,通过staf实现任务下发及结果收集。
整体框架层次图
http://www.51testing.com/attachments/2008/01/84753_200801311520381.thumb.jpg
功能模块图
http://www.51testing.com/attachments/2008/01/84753_200801311548051.thumb.jpg
总流程图
http://www.51testing.com/attachments/2008/01/84753_200801311528511.thumb.jpg
第二节 QAWEB
这里对QAWeb作一个简要的介绍,QAWeb为测试人员提供一个管理自动化测试的gui界面,同时实现对Staf的调用,以完成测试任务的下发和结果的收集;
具体而言,它主要解决了以下几个问题:
1、统一的自动化测试执行管理平台,实现远程管理测试执行;
2、根据不同测试任务,生成不同的任务配置文件(stax标准的xml);
3、将测试任务下发至指定的测试机(测试环境);
4、收集由staf返回的测试结果;
5、心跳功能,保证服务器与测试机的通讯以及测试环境正常;
6、更新测试机上的测试脚本(从配置管理服务器);
具体测试机上的执行过程,是由staf读取任务配置文件中的信息一步一步完成的,首先会启动测试,测试结束后将测试结果及日志上传到服务器(qaweb)的指定文件夹,最后将测试机上的测试结果及日志备份。
要想实现如上所述的功能,则服务器与客户端(测试机)都需要安装staf,同时要配置它们之间的信任级别。具体的staf使用,大家可以参见崔俊涛的《利用 STAF 实现程序更新包的自动部署测试》:
http://www.ibm.com/developerworks/cn/opensource/os-cn-staf/index.html?ca=drs-cn
第三节
下面介绍最核心的部分--测试脚本(AutoTestscrīpt):
开发语言:Ruby;
开发包: Watir;
集成开发工具: eclipse
在这里,是以工程的概念来管理脚本的,工程目录结构如下:
-AutoTestscrīpt_XXX
-TestSuites 存放测试套件
-TestXxxSuite.rb 组织执行测试用例
-TestCases 存放测试用例
-TestXxxCase.rb 用例脚本
+TestResults 存放测试结果数据
+Data 存放测试数据
+Log 存放测试执行日志
+Lib 自定义类库
每个产品对应一个工程(AutoTestscrīpt_XXX),每个项目对应一个suite文件,即测试套件;
测 试套件(suite)在执行过程中接收由qaweb传递来的参数(测试地址url),调用存放在TestCases中的测试脚本执行测试,同时,定义了一 个全局变量,用来收集各个用例执行的结果信息.当所有用例都执行完成后,将结果信息(用例名称|通过/未通过|未通过原因|执行时间)保存到xml文件. 在qaweb中会解析此xml文件,以展现测试结果.
具体的脚本调用关系见下面的链接
http://www.51testing.com/attachments/2008/01/84753_200801311659511.thumb.jpg
未完待续