【Web自动化测试——代码篇十一】自动化测试模型——线性测试和模块化驱动测试 线性测试 模块化驱动测试  

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

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

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

模块化驱动测试

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

  • 提高了开发效率,不用重复编写相同的操作脚本。
  • 简化了维护的复杂性,重复操作的脚本发生变化时只需要修改公共模块的部分。
    【Web自动化测试——代码篇十一】自动化测试模型——线性测试和模块化驱动测试
线性测试
模块化驱动测试
 

Java

测试目录:
【Web自动化测试——代码篇十一】自动化测试模型——线性测试和模块化驱动测试
线性测试
模块化驱动测试
 

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

测试目录:
【Web自动化测试——代码篇十一】自动化测试模型——线性测试和模块化驱动测试
线性测试
模块化驱动测试
 

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

测试目录:
【Web自动化测试——代码篇十一】自动化测试模型——线性测试和模块化驱动测试
线性测试
模块化驱动测试
 

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

【Web自动化测试——代码篇十一】自动化测试模型——线性测试和模块化驱动测试
线性测试
模块化驱动测试