为什么要实施自动化测试?
•应用系统日趋复杂的客观要求
一个不可避免的问题是,应用系统变得日趋复杂,并且造成了更大的风险。测试消耗的成本越来越高,花费的时间也越来越长。而成本与时间是有限的。为了在限制的成本与时间范围内,控制发布的软件产品的质量,测试人员被要求在尽量短的时间内对软件进行足够的测试。
•避免重复测试的主观要求
迭代式开发过程:目前的软件开发或多或少使用了迭代式开发过程,这就导致了我们需要进行一轮又一轮的测试。
回归测试:为了检验软件版本是否正确,或者当发现软件中出现了一个或多个以前曾经被修复的缺陷时,不可避免的需要进行回归性的测试。
自动化测试实施失败的因素?
1.期望值过高。就像管理人员要求完全测试一样,期望100%的测试自动化,也同样是一个不现实的需求。
1.自动化的收益和成本:
成本=用例的开发+用例的维护
收益 = 重复运行次数 (时间) + 节约的时间
自动化测试的成长过程?
Testing often begins as freestyle, expands toward scripted.
测试总是从自由式的探索开始,朝脚本化方向扩张
自动化测试的应用时机?
重头戏
测试方案设计
1 自动化测试的功能方案设计的流程:
操作对象—>对象属性—>功能实现—>结果验证
2 自动化测试的功能方案设计操作用例图:
Web对象的识别—Watir-WebDriver
•输入框 input •按钮 button •下拉框 select • 链接 link •点击 click •单选 radio •多选 checkbox •模拟键盘 send_keys :enter
自动化测试开放平台框架设计
自动化测试框架的用例设计示例
•一、基于ruby的watir-webdriver开发
•二、统一预置参数输入规则,提供规则模板,做到一个用例一个类,一个方法一个输出。(一个类可以多个方法)
•三、统一输出规则,比如:①[info]②TiStone ③Login successful!④001011
① [Info]:代表该用例执行成功![error]代表失败![warn]代表警告!
② TiStone:代表执行用例名称
③ Login successful!:描述或捕获的value值,以“!”结尾
④ 001011:返回码
•四、统一用例名称,应与输出②保持一致
•五、入参统一通过RubyBean介入
•六、浏览器实例化、被测系统跳转、用户登录、浏览器实例化等统一继承Tools工具类
自动化测试框架的Control设计示例
•一、一个用例对应一个Control
•
•二、效验输出,判断用例执行成败,根据规则关联Linux服务器捕获相关日志、配置文件等分析失败原因,缩减定位区域范围。
•
•三、对比数据,关联MySql查询数据,对比web捕获value值。
自动化测试框架的Tools设计示例
•一、封装常用工具类
•
•二、Linux与MySql业务接口
•
•三、面向对象,实现继承Tools,降低用例开发难度
自动化测试框架的Model设计示例
•一、提供统一执行、单一执行与批量执行模式
•二、关联JAVA前端,通过RubyBean实现两端交互
自动化测试框架的JAVA前端设计示例
•一、通过被测系统与ruby节点
被测系统:需要测试的系统
Ruby节点:实现前端与底层ruby关联(可选)
•二、用例管理
提供创建用例节点
提供上传指定节点自动化用例
•三、用户管理
自动化测试框架的结果展示设计示例