zoukankan      html  css  js  c++  java
  • 【Web自动化测试——代码篇十一】自动化测试模型——线性测试和模块化驱动测试

    自动化测试模型可以看作自动化测试框架与工具设计的思想。随着自动化测试技术的发展,演化为以下几种模型:

    • 线性测试
    • 模块化驱动侧式
    • 数据驱动测试
    • 关键字驱动测试

    线性测试

    线性测试较为简单,前几篇文章编写的脚本就属于线性测试,因此就在该篇文章中顺便提一下。
    线性测试的每个脚本都是相对独立的(不产生其他依赖和调用),所以任何一个测试用例脚本拿出来都可以单独执行。
    优点: 每一个脚本都是完整且独立的
    缺点: 1、开发成本高。测试用例之间可能会存在重复的操作。
                2、维护成本高。因为测试用例之间存在重复操作,所以当这些重复操作发生变化时,需要对它们逐一更改。

    模块化驱动测试

    由于线性测试的缺点太过于明显,因此我们需要新的模型来代替它。做法很简单,借鉴编程语言中的模块化思想,把重复的操作独立成公共模块(公共方法),当脚本需要时我们就可以调用该公共模块。

    • 提高了开发效率,不用重复编写相同的操作脚本。
    • 简化了维护的复杂性,重复操作的脚本发生变化时只需要修改公共模块的部分。
      图片.png

    Java

    测试目录:
    图片.png

    share.java
    
    package PublicMethods;
    
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import java.util.concurrent.TimeUnit;
    import org.openqa.selenium.firefox.FirefoxDriver;
    
    public class share {
        private static WebDriver driver;
        
        public static WebDriver OpenDriver(String url)
        {
            driver = new FirefoxDriver();
            driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
            driver.get(url);
            return driver;
        }
        
        public static void UserLogin(WebDriver driver) throws InterruptedException
        {
            Thread.sleep(2000);
            driver.findElement(By.xpath("//*[@id='username']")).sendKeys("admin");
            driver.findElement(By.xpath("//*[@id='password']")).sendKeys("123456");
            Thread.sleep(2000);
            driver.findElement(By.xpath("//*[@id='login_button']")).click();
            Thread.sleep(2000);
        }
        
        public static void UserLogout(WebDriver driver) throws InterruptedException
        {
            driver.findElement(By.xpath("//*[@id='logout_button']")).click();
            Thread.sleep(2000);
        }
    }
    LoginTest.java
    
    package Test;
    
    import PublicMethods.share;
    import org.openqa.selenium.WebDriver;
    
    public class LoginTest {
        public static void main(String[] args) throws InterruptedException {
            // TODO Auto-generated method stub
            WebDriver driver = OpenDriver("file:///D:/%E7%99%BB%E5%BD%95.html");
            
            UserLogin(driver);
            share.UserLogout(driver);
            driver.quit();
        }
    }

    Python

    测试目录:
    图片.png

    share.py
    
    from time import *
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    
    class share():
        # 启动浏览器
        def open_driver(self, url):
            driver = webdriver.Firefox()
            driver.implicitly_wait(10)
            driver.get(url)
            return driver
    
        # 登录账号
        def user_login(self, driver):
            sleep(2)
            driver.find_element(By.XPATH, "//*[@id='username']").send_keys('admin')
            driver.find_element(By.XPATH, "//*[@id='password']").send_keys('123456')
            sleep(2)
            driver.find_element(By.XPATH, "//*[@id='login_button']").click()
            sleep(2)
    
        # 退出账号
        def user_logout(self, driver):
            driver.find_element(By.XPATH, "//*[@id='logout_button']").click()
            sleep(2)
    LoginTest.py
    
    from public import share
    
    # 调用启动浏览器方法
    driver = share.share().open_driver('file:///D:/%E7%99%BB%E5%BD%95.html')
    
    share.share().user_login(driver) # 调用登录账号方法
    share.share().user_logout(driver) # 调用退出账号方法

    Ruby

    测试目录:
    图片.png

    module Share
      require 'rubygems'
      require 'selenium-webdriver'
    
      # 启动浏览器
      def openDriver(url)
        driver = Selenium::WebDriver.for :firefox
        driver.manage.timeouts.implicit_wait = 10
        driver.navigate.to url
        return driver
      end
    
      # 登录账号
      def userLogin(driver)
        sleep(2)
        driver.find_element(:xpath => "//*[@id='username']").send_keys('admin')
        driver.find_element(:xpath => "//*[@id='password']").send_keys('123456')
        sleep(2)
        driver.find_element(:xpath => "//*[@id='login_button']").click
        sleep(2)
      end
    
      # 退出账号
      def userLogout(driver)
        driver.find_element(:xpath => "//*[@id='logout_button']").click
        sleep(2)
      end
    end
    require File.expand_path('../../publicMethods/share',__FILE__)
    
    class LoginTest
      extend Share
    
      driver = LoginTest.openDriver('file:///D:/%E7%99%BB%E5%BD%95.html')
      LoginTest.userLogin(driver)
      LoginTest.userLogout(driver)
      driver.quit
    end

    图片.gif

     

  • 相关阅读:
    MySQL创建用户及用户授权
    kubectl 更新容器镜像
    harbor安装报权限错误问题解决
    docker拉取harbor仓库镜像报x509: certificate signed by unknown authority的解决方案
    pkexec提权(限制条件:用户必须在sudo组里且知道用户密码)
    sudo useradd提权
    Linux下绕过空格的方式总结
    Solved: cannot kill Docker container permission denied
    nginx和Docker的打怪升级
    三种免费Terminal工具推荐
  • 原文地址:https://www.cnblogs.com/CSgarcia/p/9548212.html
Copyright © 2011-2022 走看看