昨天吃飯的時(shí)候和同事聊到測試框架,于是決定根據(jù)自己的實(shí)戰(zhàn)工作經(jīng)驗(yàn)總結(jié)一波好用的測試框架。本來文章里一共11個(gè)的,最后想想還是剔除掉了Maxim、Cypress、Gauge和ZTF(Zentao Testing Framework)。
工具在精而不在多,畢竟還是得以我們測試工程師平常用的最多的為基準(zhǔn)。
另外,當(dāng)你學(xué)習(xí)一個(gè)新的工具時(shí),建議你直接看官方文檔。(以下工具的官網(wǎng)鏈接,我都幫大家列出來了)
雖然官網(wǎng)常常是英文的,但是它也是最權(quán)威、最官方的。百度直接查的話,有的文章常常有錯(cuò)誤,或者說文中所說內(nèi)容已經(jīng)過時(shí)了,小白很容易被誤導(dǎo)。而且程序員難免要接觸英文,當(dāng)你習(xí)慣看官方文檔后,你會發(fā)現(xiàn)自己的英文水平也在不知不覺間提高了。
好了,不說廢話直接進(jìn)入正文:
目錄如下:
1、Junit
2、Selenium
3、TestNG
4、Cucumber
5、pytest
6、Appium
7、ATX
我們一個(gè)個(gè)來說:
一、Junit(白盒測試、API自動化、UI自動化)
【官網(wǎng)】
https://junit.org/junit5/
【簡介】
Junit是一個(gè)面向Java編程語言的單元測試框架。
單元測試:針對最小的功能單元編寫測試代碼。Java程序最小的功能單元是方法,對Java編程語言進(jìn)行單元測試,說白了就是對Java的方法進(jìn)行測試。
用 Junit 編寫單元測試的好處有:
非常簡單地組織測試代碼,并隨時(shí)運(yùn)行它們。
可以自動生成測試報(bào)告,收集成功的測試用例和失敗的測試用例,統(tǒng)計(jì)測試成功率和代碼覆蓋率。
幾乎所有的IDE工具都集成了Junit。
任何Java開發(fā)者都應(yīng)當(dāng)學(xué)習(xí)并使用Junit編寫單元測試;同時(shí),Java 技術(shù)棧的測試或者測試開發(fā)工程師,也可以學(xué)習(xí) Junit 來作為自動化測試底層框架。
Junit目前最新版本是5。
【使用場景】
常用于單元測試(白盒測試)
自動化測試的用例管理和用例執(zhí)行框架(API自動化、UI自動化)。
二、Selenium(Web自動化、爬蟲)
【官網(wǎng)】
https://www.selenium.dev/
【簡介】
Selenium 是使用最為廣泛的 Web 自動化測試(UI自動化)框架之一。
Selenium 可以完全模擬用戶對主流瀏覽器進(jìn)行操作,主要包括鼠標(biāo)事件和鍵盤事件。
鼠標(biāo)事件:右擊、雙擊、拖動、懸停。
鍵盤事件:Keys()類提供了鍵盤上幾乎所有按鍵的方法,可以模擬各種鍵盤輸入。
Selenium 支持八種元素定位方式:
id定位: find_element_by_id()
name定位: find_element_by_name()
class定位:find_element_by_class_name()
tag定位:find_element_by_tag_name()
link定位:find_element_by_link_text()
partial_link定位:find_element_by_partial_link_text()
xpath定位:find_element_by_xpath()
CSS定位:find_element_by_css_selector()
兼容性方面,Selenium 支持 Chrome、FireFox、Safari 等主流瀏覽器;
并且 Selenium 對 Java 和 Python 都提供了便捷的API調(diào)用。
【使用場景】
UI 自動化
爬蟲
三、TestNG(白盒測試、API自動化、UI自動化)
【官網(wǎng)】
https://testng.org/doc/index.html
【簡介】
TestNG 是 Java中一個(gè)很流行實(shí)用的單元測試框架。
它的靈感來源于 Junit ( java 的單元測試框架) 和 Nunit ( .net 的單元測試框架)。
但是它又在此基礎(chǔ)上引入了新的東西,使得它更加強(qiáng)大。
關(guān)于注解特性方面,可以參考下表:
TestNG 和 JUnit 還有兩個(gè)比較明顯的區(qū)別:
在Junit 4 中,如果我們需要在方法前面使用 @BeforeClass 和 @AfterClass ,那么該測試方法則必須是靜態(tài)方法。TestNG 在方法定義部分則更加的靈活,它不需要類似的約束。
TestNG 中子類不會運(yùn)行父類中的 @BeforeClass 和 @AfterClass, 而在Junit中會先運(yùn)行父類的@BeforeClass,再運(yùn)行自己的 @BeforeClass;而 @AfterClass 是先運(yùn)行自己的,再運(yùn)行父類的。
經(jīng)過一番對比之后,TestNG 在參數(shù)化測試、依賴測試以及套件測試(組)方面功能比 Junit 更加強(qiáng)大,并且包含了幾乎 Junit 的所有功能,所以建議優(yōu)先選擇 TestNG。
【使用場景】
常用于單元測試(白盒測試)
自動化測試的用例管理和用例執(zhí)行框架(API自動化、UI自動化)
四、Cucumber(API自動化、UI自動化)
【官網(wǎng)】
https://cucumber.io/
【簡介】
自動化測試用例越寫越多,也越來越難維護(hù)。
開發(fā)看不懂測試寫的代碼,測試也看不懂測試寫的代碼,那是因?yàn)榇a不講人話。
如何才能做到面向“注釋”編程?BDD給出了答案。
BDD:Behavior-Driven Development ,也就是行為驅(qū)動開發(fā)。
BDD使用的叫做Gherkin的語言,它的理念是使用自然語言來描述功能,而且強(qiáng)調(diào)的是使用例子來說明需求功能。是不是跟敏捷開發(fā)中的用戶故事(User Story)很像?嗯,因?yàn)樗鼈兌际且粋€(gè)媽生的。
使用這種方法可以讓非技術(shù)人員、客戶可以參與到需求的確認(rèn)與驗(yàn)收當(dāng)中。
以下是用 Cucumber 寫出的 BDD 風(fēng)格的測試用例 Demo :
// Given 前置(預(yù)置)條件。(一般用于定義一個(gè)變量等)
@Given("today is Sunday")
public void today_is_Sunday() {
// Write code here that turns the phrase above into concrete actions
throw new io.cucumber.java.PendingException();
}
// When 當(dāng)xxx的時(shí)候(相當(dāng)于 if )
@When("I ask whether it's Friday yet")
public void i_ask_whether_it_s_Friday_yet() {
// Write code here that turns the phrase above into concrete actions
throw new io.cucumber.java.PendingException();
}
// Then 那么將要做xxx操作。
@Then("I should be told {string}")
public void i_should_be_told(String string) {
// Write code here that turns the phrase above into concrete actions
throw new io.cucumber.java.PendingException();
}
就像講故事一樣,來梳理代碼邏輯。
【使用場景】
自動化測試用例管理和用例執(zhí)行(API自動化、UI自動化)。
五、pytest(白盒測試、API自動化、UI自動化)
【官網(wǎng)】
https://docs.pytest.org/en/6.2.x/
【簡介】
pytest 是 python 語言中一款強(qiáng)大的單元測試框架(也是最好用的單元測試框架,不服來戰(zhàn)),用來管理和組織測試用例,可應(yīng)用在單元測試、自動化測試工作中。
當(dāng)然,如果你是個(gè) pythoner 的話,你可能也多多少少聽說過 unittest。
其實(shí)論用途而言,pytest 和 unittest 用途不多,都是優(yōu)秀的單元測試框架。
但是 pytest 在 unittest 的基礎(chǔ)上,豐富了不少功能,而且比 unittest 更簡潔高效,pytest + allure 還可以輸出更加美觀的測試報(bào)告,pytest在數(shù)據(jù)驅(qū)動上的支持,也是略優(yōu)于unittest。
所以還是可以優(yōu)先選擇 pytest。
【使用場景】
常用于單元測試(白盒測試)
自動化測試的用例管理和用例執(zhí)行框架(API自動化、UI自動化)。
六、Appium(移動端的UI自動化測試)
【官網(wǎng)】
http://appium.io/
【簡介】
在移動端的 UI自動化 測試領(lǐng)域,帶頭大哥當(dāng)屬 Appium。
Appium 是基于 Nodejs 的一款 UI自動化 測試框架。
支持多平臺(Android、iOS等)
支持多語言(python、java、ruby、js、c#等)
Appium是跨平臺的,可以用在OSX,Windows以及Linux桌面系統(tǒng)上運(yùn)行。
之前曾看過一則新聞,Appium 已經(jīng)進(jìn)軍 AI 測試(基于AI查找控件)的領(lǐng)域了,不愧是龍頭大哥。
【使用場景】
移動端的UI自動化測試
一般會結(jié)合單元測試框架去開發(fā)UI自動化測試框架。
Java:TestNG + Appium + Jenkins
Python:Pytest + Appium + Allure + Jenkins
七、ATX(移動端的UI自動化測試)
【官網(wǎng)】
https://github.com/NetEaseGame/ATX
【簡介】
ATX(AutomatorX) 是一款(網(wǎng)易)開源的自動化測試工具,支持測試iOS平臺和Android平臺的原生應(yīng)用、游戲、Web應(yīng)用。
使用Python來編寫測試用例,混合使用圖像識別,控件定位技術(shù)來完成游戲的自動化。
附加專用的IDE來完成腳本的快速編寫。
ATX的生態(tài)圈:
[底層驅(qū)動]
安卓(Android) https://github.com/openatx/uiautomator2 簡稱u2
蘋果(iOS) https://github.com/openatx/facebook-wda
[元素定位]
Weditor https://github.com/openatx/weditor
[設(shè)備管理]
atxserver2 https://github.com/openatx/atxserver2
[測試框架]
ATX-Test pengchenglin/ATX-Test
【使用場景】
移動端的UI自動化測試
一般會結(jié)合單元測試框架去開發(fā)UI自動化測試框架。
Python:Pytest + uiautomator2/wda + Allure + Jenkins
以上7個(gè)測試框架,都是臻叔實(shí)際工作中最常用到的。如果你是剛?cè)腴T測試的同學(xué),可能看到這里會一頭霧水。
沒關(guān)系,你可以先大概了解下這些最常用的測試框架,之后臻叔也會陸續(xù)把我之前學(xué)習(xí)這些工具的筆記整理好,發(fā)出來供大家參考。
最后再小結(jié)一下:
1)Java的白盒測試、API自動化、UI自動化:
Junit(對Java的方法進(jìn)行測試);
TestNG(相比Junit,參數(shù)化測試、依賴測試以及套件測試更好用,建議優(yōu)先選這個(gè));
2)python的白盒測試、API自動化、UI自動化:
pytest(功能更多,更簡潔高效,優(yōu)于unittest )。
3)API自動化、UI自動化:
Cucumber(面向“注釋”編程)。
4)移動端的UI自動化測試:
Appium(基于 Nodejs,多平臺多語言,OSX、Win和Linux上也能用 )
ATX(只支持iOS、Android)
5)UI自動化、爬蟲:
Selenium(兼容性好,Web自動化必選)。
學(xué)習(xí)安排上
如果你不想再體驗(yàn)一次學(xué)習(xí)時(shí)找不到資料,沒人解答問題,堅(jiān)持幾天便放棄的感受的話,在這里我給大家分享一些自動化測試的學(xué)習(xí)資源,希望能給你前進(jìn)的路上帶來幫助。
文章來源:http://www.zghlxwxcb.cn/news/detail-445569.html
視頻文檔獲取方式:
這份文檔和視頻資料,對于想從事【軟件測試】的朋友來說應(yīng)該是最全面最完整的備戰(zhàn)倉庫,這個(gè)倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你!以上均可以分享,點(diǎn)下方小卡片進(jìn)群即可自行領(lǐng)取。文章來源地址http://www.zghlxwxcb.cn/news/detail-445569.html
到了這里,關(guān)于7個(gè)超好用的測試框架(總有一款適合你)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!