一、什么是web自動化測試
自動化(Automation)是指機(jī)器設(shè)備、系統(tǒng)或過程(生產(chǎn)、管理過程)在沒有人或較少人的直接參與下,按照人的要求,經(jīng)過自動檢測、信息處理、分析判斷、操縱控制,實(shí)現(xiàn)預(yù)期的目標(biāo)的過程。
這是教科書里面的自動化的定義,回歸到自動化測試其實(shí)自動化測試就是什么呢?
指的是測試的過程在沒有人或者較少的人為的干預(yù)的情況下進(jìn)行的測試,再簡單點(diǎn)說就是用程序或者腳本來測試程序,那么在web自動化測試中主要用來把測試人員從繁瑣的內(nèi)容中解放出來,主要做一些比如需要多次輸入,多次運(yùn)行的,比如我們用邊界值,等價(jià)類設(shè)計(jì)的很多測試數(shù)據(jù)需要執(zhí)行,比如業(yè)務(wù)流程需要執(zhí)行很多遍的時(shí)候我們就可以使用web自動化測試
二、web自動化測試的工具
現(xiàn)在主流的web測試工具我們常用的就是selenium的那一套工具包括
- 瀏覽器一般選擇chrome
- 瀏覽器對應(yīng)的driver(chromedriver)
- Python
- Selenium庫
三、web自動化測試的環(huán)境安裝
- 瀏覽器安裝 下載瀏覽器下一步按照就好了
- chromedriver 下載 可以到?npmmirror.com/
- 注:100的大版本對的上就Ok了
?文章來源地址http://www.zghlxwxcb.cn/news/detail-786017.html
四、web自動化測試的方法
Web自動化測試一般使用設(shè)計(jì)測試用例的方法跟功能測試相同,使用等價(jià)類劃分,邊界值,因果圖,場景法等等就好了
Web自動化測試實(shí)施的使用我們一般會采用po模式設(shè)計(jì)
PO是page object的簡稱,核心思想是通過對界面元素的封裝減少冗余代碼,同時(shí)在后期維護(hù)中,若元素定位發(fā)生變化, 只需要調(diào)整頁面元素封裝的代碼,提高測試用例的可維護(hù)性、可讀性。
PO模式可以把一個(gè)頁面分為三層,對象庫層、操作層、業(yè)務(wù)層。
對象庫層:封裝定位元素的方法。
操作層:封裝對元素的操作。
業(yè)務(wù)層:將一個(gè)或多個(gè)操作組合起來完成一個(gè)業(yè)務(wù)功能。
比如登錄:需要輸入帳號、密碼、點(diǎn) 擊登錄三個(gè)操作。
測試腳本只需要調(diào)用業(yè)務(wù)層代碼就可以完成
當(dāng)出現(xiàn)頁面需要的時(shí)候只需要測試代碼可以完全不用修改只需要修改操作層就好了
五、web自動化測試的流程實(shí)施
web自動化測試流程和功能測試基本一致:
下面我們已登錄需求為例
(1)需求分析
這里我們以手機(jī)登錄為例
(2)設(shè)計(jì)測試用例與測試數(shù)據(jù)
自動化測試測試用例不用像手工測試設(shè)計(jì)的那么詳細(xì)
ID | 測試模塊 | 標(biāo)題 | 前置條件 | 測試輸入 |
---|---|---|---|---|
login_001 | 登錄 | 錯(cuò)誤的手機(jī)號登錄 | 網(wǎng)絡(luò)正常,功能正常 | 手機(jī)號錯(cuò)誤其他輸入項(xiàng)正常 |
【下方為測試數(shù)據(jù)】
[
{
"username": "21888888888",
"code": "8888",
"ast_msg": "賬號格式不匹配",
"desc": "用戶名錯(cuò)誤"
},
{
"username": "12888888888",
"pwd": "123456",
"code": "8888",
"ast_msg": "賬號格式不匹配",
"desc": "用戶名錯(cuò)誤"
},
{
"username": "1088888888",
"pwd": "123456",
"code": "8888",
"ast_msg": "賬號格式不匹配",
"desc": "用戶名錯(cuò)誤"
},
{
"username": "138888888889",
"pwd": "123456",
"code": "8888",
"ast_msg": "賬號格式不匹配",
"desc": "用戶名錯(cuò)誤"
},
{
"username": "32888888888",
"pwd": "123456",
"code": "8888",
"ast_msg": "賬號格式不匹配",
"desc": "用戶名錯(cuò)誤"
},
{
"username": " ",
"pwd": "123456",
"code": "8888",
"ast_msg": "用戶名不能為空",
"desc": "用戶名錯(cuò)誤"
}
]
?
(3)搭建web自動化測試環(huán)境
在上面環(huán)境安裝那里已經(jīng)搭建了
(4)設(shè)計(jì)web自動化測試框架
一般測試po模式的內(nèi)容包括
(5)編寫代碼
在po文件夾中創(chuàng)建page_login
from selenium.webdriver.common.by import By
from utils import UtilsDriver
from base.page_base import BasePage
# 界面對象層
class PageLogin(BasePage):
# 賬號元素
def find_username(self):
return self.driver.find_element_by_id("username")
# return self.driver.find_element(*self.username)
# return self.get_element(self.username)
# 密碼元素
def find_pwd(self):
return self.driver.find_element(By.ID,"password")
# 驗(yàn)證碼元素
def find_vcode(self):
return self.driver.find_element_by_id("verify_code")
# 按鈕開始登錄元素
def find_login_btn(self):
# return self.driver.find_element_by_name("sbtbutton")
return self.driver.find_element(By.NAME,"sbtbutton")
# 操作層
class HandleLogin(object):
def __init__(self):
self.page_login=PageLogin()
def input_username(self,username):
self.page_login.find_username().send_keys(username)
def input_pwd(self,pwd):
self.page_login.find_pwd().send_keys(pwd)
def input_vcode(self,code):
self.page_login.find_vcode().send_keys(code)
def click_login_btn(self):
self.page_login.find_login_btn().click()
# 業(yè)務(wù)層
# 輸入用戶名密碼驗(yàn)證碼 點(diǎn)擊登錄
class LoginProxy(object):
def __init__(self):
self.handle_login = HandleLogin()
def login(self,username,pwd,code):
self.handle_login.input_username(username)
self.handle_login.input_pwd(pwd)
self.handle_login.input_vcode(code)
self.handle_login.click_login_btn()
?
?腳本執(zhí)行代碼 創(chuàng)建test_login
# from selenium import webdriver
from po.page_home import HomeProxy
from po.page_login import LoginProxy
from utils import UtilsDriver,get_data
import time
import pytest
import allure
@allure.feature("登錄功能")
class Test_login:
def setup_class(self):
self.login_p=LoginProxy()
self.home_p=HomeProxy()
def setup(self):
# 進(jìn)入首頁
UtilsDriver.get_driver().get("http://127.0.0.1/")
# 進(jìn)入到login界面
self.home_p.go_login_page()
def teardown_class(self):
time.sleep(2)
UtilsDriver.quit_driver()
@pytest.mark.parametrize(["username","pwd","code","asrt_msg"],get_data())
@allure.story("登錄用戶名錯(cuò)誤")
def test_login_username_error(self,username,pwd,code,asrt_msg):
self.login_p.login(username,pwd,code)
time.sleep(1)
# 登錄是否成功的預(yù)期結(jié)果
res = UtilsDriver.get_msg()
assert asrt_msg in res
?
(6)執(zhí)行測試用例
可以使用pytest控制測試用例的執(zhí)行
@pytest.mark.parametrize([“username”,“pwd”,“code”,“asrt_msg”],get_data())
[pytest]
addopts = -s --alluredir report
testpaths = ./script
python_files = test_*.py *test.py
python_classes = Test_*
python_functions = test_*
?
7)生成測試報(bào)告
可以使用allure生成測試報(bào)告
最后感謝每一個(gè)認(rèn)真閱讀我文章的人,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走:
這些資料,對于【軟件測試】的朋友來說應(yīng)該是最全面最完整的備戰(zhàn)倉庫,這個(gè)倉庫也陪伴上萬個(gè)測試工程師們走過最艱難的路程,希望也能幫助到你!有需要的小伙伴可以點(diǎn)擊下方小卡片領(lǐng)取??文章來源:http://www.zghlxwxcb.cn/news/detail-786017.html
?
到了這里,關(guān)于Web自動化測試怎么做?Web自動化測試的詳細(xì)流程和步驟的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!