自動化測試模型分為四大類: 線性測試、 子產品化驅動測試、 資料驅動測試和關鍵字驅動測試。
本地Web測試站點搭建,下載下傳:【一鍵安裝包(運作環境+ECMS)】(含安裝說明)。
- 工具:帝國CMS
- 通道:帝國軟體
線性模式
通過錄制或編寫對web的操作步驟産生相對應的線性腳本,并且每個測試腳本相對獨立,不依賴或調用其他子產品,單純的模拟使用者操作場景。
'''
自動化測試模型--線性測試
案例:在帝國軟體首頁模拟自動登入和退出操作。
'''
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
url = "http://localhost/"
driver.get(url)
# 設定隐性等待5s
driver.implicitly_wait(5)
userName = "XXXXX"
passWord = "XXXXX"
# 輸入登入資訊
driver.find_element_by_xpath("//form[@name='login']/input[3]").clear()
driver.find_element_by_xpath("//form[@name='login']/input[3]").send_keys(userName)
driver.find_element_by_xpath("//form[@name='login']/input[4]").clear()
driver.find_element_by_xpath("//form[@name='login']/input[4]").send_keys(passWord)
# 登入
driver.find_element_by_xpath("//form[@name='login']/input[5]").click()
sleep(3)
# 退出
driver.find_element_by_xpath("/html/body/table[1]/tbody/tr/td/table/tbody/tr/td[1]/a[6]").click()
sleep(3)
# 警告框處理
driver.switch_to_alert().accept()
sleep(3)
driver.quit()
子產品化驅動測試
把重複的操作代碼封裝為獨立的公共子產品,當需要用到這些子產品時就直接調用,最大限度地消除了重複,進而提高測試用例的可維護性。
'''
自動化測試模型--子產品化驅動測試
執行個體:将登入和退出操作封裝為獨立的公共子產品進行調用。
'''
from selenium import webdriver
import time
class Login_OUT_Test():
'''登入與退出'''
def login_Test(driver):
'''登入方法'''
# self.userName=userName
# self.passWord=passWord
driver.find_element_by_xpath("//form[@name='login']/input[3]").clear()
driver.find_element_by_xpath("//form[@name='login']/input[3]").send_keys("XXXX")
driver.find_element_by_xpath("//form[@name='login']/input[4]").clear()
driver.find_element_by_xpath("//form[@name='login']/input[4]").send_keys("XXXX")
# 登入
driver.find_element_by_xpath("//form[@name='login']/input[5]").click()
def loginOut_Test(driver):
'''退出方法'''
driver.find_element_by_xpath("/html/body/table[1]/tbody/tr/td/table/tbody/tr/td[1]/a[6]").click()
time.sleep(3)
# 警告框處理
driver.switch_to_alert().accept()
if __name__ == '__main__':
driver = webdriver.Chrome()
driver.get('http://localhost/')
driver.maximize_window()
driver.implicitly_wait(5)
Login_OUT_Test.login_Test(driver)
Login_OUT_Test.loginOut_Test(driver)
編寫調用上段代碼子產品。
'''
調用Test_1230_02_MKHQD_CS子產品
功能:登入和退出。
'''
from Test_1230_02_MKHQD_CS import *
browser = webdriver.Chrome()
browser.get('http://localhost/')
browser.maximize_window()
browser.implicitly_wait(5)
Login_OUT_Test.login_Test(browser)
Login_OUT_Test.loginOut_Test(browser)
browser.quit()
資料驅動測試
類似于資料的參數化,因資料的改變進而讓測試的結果産生變化。
'''
自動化測試模型--資料驅動測試
執行個體:實作多個賬戶登入。
'''
import time
class Login_OUT_Test():
'''登入與退出'''
def login_Test(driver, userName, passWord):
'''登入方法'''
# self.userName=userName
# self.passWord=passWord
driver.find_element_by_xpath("//form[@name='login']/input[3]").clear()
driver.find_element_by_xpath("//form[@name='login']/input[3]").send_keys(userName)
driver.find_element_by_xpath("//form[@name='login']/input[4]").clear()
driver.find_element_by_xpath("//form[@name='login']/input[4]").send_keys(passWord)
# 登入
driver.find_element_by_xpath("//form[@name='login']/input[5]").click()
# 驗證登入資訊
Login_Validate = driver.find_element_by_xpath(
"/html/body/table[1]/tbody/tr/td/table/tbody/tr/td[1]/font/b").text
print('登入名:', Login_Validate)
def loginOut_Test(driver):
'''退出方法'''
driver.find_element_by_link_text('退出').click()
time.sleep(3)
# 警告框處理
driver.switch_to_alert().accept()
編寫調用上段代碼子產品。
'''
調用Test_1230_04_SJQD_CS子產品。
執行個體:實作不同賬戶資訊登入。
'''
from Test_1230_04_SJQD_CS import *
from selenium import webdriver
import time
browser = webdriver.Chrome()
browser.get("http://localhost/")
browser.maximize_window()
browser.implicitly_wait(5)
Login_OUT_Test.login_Test(browser, 'XXXX1', 'XXXX1')
time.sleep(3)
Login_OUT_Test.loginOut_Test(browser)
# 第二次不同賬戶資訊登入
Login_OUT_Test.login_Test(browser, 'XXXX2', 'XXXX1')
time.sleep(5)
Login_OUT_Test.loginOut_Test(browser)
關鍵字驅動測試
通過關鍵字的改變引起測試結果的改變。
目前的關鍵字驅動測試工具有:QTP、RIDE(Robot Framework)和selenium IDE。
selenium IDE工具頁面如下:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHLyElaOVzYU9UNNpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL5QDN2QTO1UTMwMjMxkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)