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


    Watir-WebDriver

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

                    自动化测试方案书

    系统架构

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

    Test用例

    1. 基于ruby的watir-webdriver开发
    2. 统一预置参数输入规则,提供规则模板,做到一个用例一个类,一个方法一个输出。(一个类可以多个方法)
    3. 统一输出规则,比如:①[info]②TiStone ③Login successful!④001011

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

        ②   TiStone:代表执行用例名称

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

        ④   001011:返回码

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

    Control控制层

    1. 一个用例对应一个Control
    2. 效验输出,判断用例执行成败,根据规则关联Linux服务器捕获相关日志、配置文件等分析失败原因,缩减定位区域范围。
    3. 对比数据,关联MySql查询数据,对比web捕获value值。

    Tools工具类

    1. 封装工具类
    2. 关联Linux与MySql
    3. 提供测试用例支持,降低用例开发难度

    Index总控

    1. 控制用例执行与展示

    方案设计

    Test用例

    涉及依赖:

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

    页面涉及:

    元素捕获

    详情可见:http://www.cnblogs.com/Javame/p/4045229.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开发框架,后期需要再行开发

  • 相关阅读:
    2019软工实践_作业4_1(结对编程实现博客)
    2019软工实践_作业3_2(团队介绍博客)
    跨域资源共享CORS
    解决IntelliJ无法导入maven包的问题
    IntelliJ IDEA中各种小图标的含义
    IntelliJ 发布Maven项目时所需的Jar没有打包的问题
    IntelliJ跳转到抽象方法的实现
    IntelliJ IDEA利用Maven下载所需的JAR包到项目中
    Java编程思想代码环境配置
    查看window用户登录日志
  • 原文地址:https://www.cnblogs.com/Javame/p/4048150.html
Copyright © 2020-2023  润新知