您的位置:首页 > 编程语言 > Ruby

基于Ruby的Watir-WebDriver自动化测试方案

2014-10-24 13:57 351 查看

Watir-WebDriver

                 —— 软件测试的自动化时代 QQ群:160409929

自动化测试方案书

系统架构

该自动化测试框架分三个模块:Test用例、Control控制层、Tools工具类、Index总控。

Test用例

基于ruby的watir-webdriver开发

统一预置参数输入规则,提供规则模板,做到一个用例一个类,一个方法一个输出。(一个类可以多个方法)

统一输出规则,比如:①[info]②TiStone ③Login successful!④001011

    ① [Info]:代表该用例执行成功![error]代表失败![warn]代表警告!

    ② TiStone:代表执行用例名称

    ③ Login successful!:描述或捕获的value值,以“!”结尾

    ④ 001011:返回码

  4.统一用例名称,应与输出②保持一致

Control控制层

一个用例对应一个Control

效验输出,判断用例执行成败,根据规则关联Linux服务器捕获相关日志、配置文件等分析失败原因,缩减定位区域范围。

对比数据,关联MySql查询数据,对比web捕获value值。

Tools工具类

封装工具类

关联Linux与MySql

提供测试用例支持,降低用例开发难度

Index总控

控制用例执行与展示

方案设计

Test用例

涉及依赖:

require 'watir-webdriver'
require 'watir-webdriver-performance'


页面涉及:

元素捕获

详情可见:/article/5055973.html

页面加载性能监控

1.times do

b.goto("https://192.168.10.1/web")

load_secs = b.performance.summary[:response_time]/1000

puts "Load Time: #{load_secs} seconds."

End


功能成败判别

if b.text.include? 'T_100M'
#捕获web属性value值
#后续操作
puts "①[info]②TiStone ③Login successful!000000"
else
#后续操作
#输出错误码
puts "①[error]②TiStone ③Login failed!001011"
end


参数化提取

class BasicNumber
def initialize(number,name)
@number = number
@name = name
end
def add(x)
@number + x
end
end


Control控制层

涉及依赖:

load 'Linux.rb'
load 'MySql.rb'


具体实现需与田利荣讨论,商议具体业务逻辑的可测试性。

Tools工具类

涉及依赖:

require 'net/ssh'
require 'scp/ssh'
require "test/unit"


关联Linux

#ip/用户名/密码

host = "192.168.48.233"

username = "root"

password = "root"

#调用linux命令

server_cmd1 = 'tail -1000 /home/log/web.log  | grep ERROR'

server_shell= 'sh /home/wyong/w.sh'


关联MySql

具体实现略…

单元测试

class TC_MyTest  < Test::Unit::TestCase

def test_add

n=BasicNumber.new(10)

assert_equal(134,n.add(4),"This test about add is failure!")

end

end


Index总控

涉及依赖:

load Control_用例名称.rb'


统一调用

t = Control_用例名称.new

test_methods = t.public_methods.grep(/^test_/)

test_methods.each do |test|

t.send(test)

end


页面展示

涉及Ruby Web开发框架,后期需要再行开发
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: