作者:京東零售 杜興文
隨著前端技術(shù)的不斷發(fā)展和應(yīng)用程序的日益復(fù)雜,前端自動化測試也在不斷演進(jìn)。
Web 前端 UI 自動化測試發(fā)展史可以追溯到 2000 年,當(dāng)時(shí)最早的 Web 應(yīng)用程序越來越復(fù)雜,開發(fā)人員開始使用自動化測試工具來確保應(yīng)用程序的正確性和可靠性。
在早期,自動化測試是通過使用腳本或腳本來模擬用戶的操作來完成的。這些測試工具通?;?JavaScript 編寫,并且需要對 Web 應(yīng)用程序的交互方式進(jìn)行深入了解。
隨著 Web 應(yīng)用程序變得越來越復(fù)雜,自動化測試的需求也越來越高。2005 年,Selenium 開始流行,它是一種基于 Java 的自動化測試框架,可以用于模擬用戶操作并進(jìn)行 Web 應(yīng)用程序的自動化測試。
Selenium 和其他自動化測試工具的出現(xiàn)使得 Web 前端 UI 自動化測試變得更加容易和高效。隨著 Web 應(yīng)用程序的不斷演變,自動化測試工具也在不斷更新和發(fā)展。如今,自動化測試已經(jīng)成為 Web 應(yīng)用程序開發(fā)過程中不可或缺的一部分,它們可以幫助開發(fā)人員更快地發(fā)現(xiàn)和修復(fù)錯(cuò)誤,提高應(yīng)用程序的性能和可靠性。
下面是前端自動化測試經(jīng)歷的階段:
- 手動測試:早期的前端開發(fā)過程中,開發(fā)人員需要手動測試代碼的正確性,這需要大量的時(shí)間和精力。
2.單元測試:隨著前端技術(shù)的不斷發(fā)展,單元測試開始出現(xiàn)。單元測試是一種自動化測試方法,它測試代碼中的最小可測試單元,例如函數(shù)或模塊。單元測試可以幫助開發(fā)人員更快地發(fā)現(xiàn)和修復(fù)代碼中的錯(cuò)誤。
-
集成測試:集成測試是單元測試的進(jìn)一步發(fā)展,它將單元測試集成到整個(gè)應(yīng)用程序的測試中。這種方法可以更快速地發(fā)現(xiàn)整個(gè)應(yīng)用程序中的錯(cuò)誤。
-
端到端測試:端到端測試是一種自動化測試方法,它測試從輸入到輸出整個(gè)端到端應(yīng)用程序的過程。這種方法可以幫助開發(fā)人員更快地發(fā)現(xiàn)和修復(fù)應(yīng)用程序中的整個(gè)端到端錯(cuò)誤。
-
持續(xù)集成和持續(xù)交付:持續(xù)集成和持續(xù)交付是一種自動化測試方法,它將測試集成到整個(gè)開發(fā)周期中,包括代碼提交、構(gòu)建、測試、部署等環(huán)節(jié)。這種方法可以幫助開發(fā)人員更快地交付高質(zhì)量的應(yīng)用程序。
-
自動化測試框架和庫:隨著前端自動化測試的不斷發(fā)展,出現(xiàn)了許多自動化測試框架和庫。這些框架和庫可以幫助開發(fā)人員更快速地編寫和運(yùn)行測試用例,提高測試效率和質(zhì)量。
-
人工智能和機(jī)器學(xué)習(xí):最近這些年來,人工智能技術(shù)和機(jī)器學(xué)習(xí)方法逐漸應(yīng)用于前端自動化測試中。這些方法可以幫助開發(fā)人員更快速地識別和修復(fù)錯(cuò)誤,提高測試效率和質(zhì)量。
總之,前端自動化測試是一個(gè)不斷發(fā)展的領(lǐng)域,隨著前端技術(shù)的不斷發(fā)展和應(yīng)用程序的日益復(fù)雜,測試人員需要不斷地學(xué)習(xí)新技術(shù)和方法來跟上變化。
同時(shí)呢,我們在做前端自動化的時(shí)候又會伴隨著一些挑戰(zhàn)
編寫 UI 測試腳本可能會很耗時(shí),因?yàn)檫@部分工作需要測試循環(huán)之前就要做好。但這份辛苦是值得的;只不過,UI 腳本本質(zhì)上是脆弱的。大多數(shù)測試是通過 Selenium 測試腳本完成的,這些腳本可以用多種語言編寫,例如 Java、Python 和 C++。
下面列舉一些挑戰(zhàn)事項(xiàng):
- 重知識。編寫腳本的人必須具有該方面的技術(shù)知識和經(jīng)驗(yàn)。
- 耗時(shí)。由于流程的原因,一項(xiàng)測試可能需要 5 – 10 多分鐘才能運(yùn)行。加載瀏覽器 > 執(zhí)行任務(wù) > 設(shè)置和解析測試 > 數(shù)據(jù)加載等等。
- 維護(hù)。現(xiàn)代應(yīng)用程序具有動態(tài)前端 UI。當(dāng)同一頁面重新加載時(shí),其中的元素定位器和鏈接可能會在后臺更改它們的定義方式。等待條件可能會破壞測試。如果頁面加載時(shí)間更長,則會返回一個(gè)損壞的測試。
- 處理多個(gè)錯(cuò)誤。復(fù)雜的場景意味著巨大的數(shù)據(jù)量。篩選這個(gè)可能很麻煩。
- 故障排除。根據(jù)問題的頻率和修復(fù)它所花費(fèi)的時(shí)間,找出是什么破壞了測試可能很困難。
- 動態(tài)應(yīng)用。由于敏捷開發(fā),Web 應(yīng)用程序以及應(yīng)用程序本身一直在發(fā)生變化。測試必須從維護(hù)角度和結(jié)果角度來考慮。
前端自動化測試最佳實(shí)踐又是什么呢,下面列舉一些:
由于用戶界面是用戶觸摸和看到的,因此實(shí)現(xiàn)自動化測試以縮短發(fā)布周期至關(guān)重要。與開發(fā)一樣,所有團(tuán)隊(duì)都可以遵循一些類似的最佳實(shí)踐,以確保從他們的自動化投資中獲得豐厚的投資回報(bào)。
1. 遵循一致的命名約定。
2. 查看哪些測試用例應(yīng)該自動化。
3. 創(chuàng)建質(zhì)量測試數(shù)據(jù)。
4. 保持測試獨(dú)立。
5. 不要只依賴一種類型的測試。
6. 當(dāng)您實(shí)際上應(yīng)該暫停 UI 測試時(shí),請避免系統(tǒng)休眠。
7. 并非所有測試都必須在所有目標(biāo)瀏覽器中使用。
8. 研究無頭瀏覽器測試。
9. 考慮使用BDD 框架。
10. 使用數(shù)據(jù)驅(qū)動與重復(fù)測試。
11. 簡單化測試。
12. 截取屏幕截圖以改進(jìn)故障調(diào)查。
13. 使用正確的自動化測試工具。
在過去的幾年里,至少出現(xiàn)了十幾種全新的 UI 測試自動化工具。由于每個(gè)工具都有自己的重點(diǎn)和策略,因此很難從中選擇。不過您可以參考10 個(gè)必不可少的 Web UI 測試工具,只需要辨別哪一個(gè)有您的團(tuán)隊(duì)所需要的功能。
正如任何一個(gè)UI測試人員可能會爭論的那樣,UI 測試相對簡單,只要您的 GUI 中沒有任何變化,但問題是……界面一直在變化。根據(jù)您為 UI 測試選擇的解決方案,不斷變化的條件可能是具有自我修復(fù)和 AI 定位器的革命性體驗(yàn),也可能是復(fù)雜的手動工作流程的嚴(yán)重失敗。
以下是一些常用的 Web 前端 UI 自動化測試工具:
1. Parasoft Selenic
2. Katalon
3. Selenium IDE
4. mabl
5. TestIM
6. Functionize
7. Perfecto
8. TestCraft
9. Squish
10. AutonomIQ
1. Parasoft Selenic
Parasoft Selenic最亮的功能莫過于自我修復(fù)和AI驅(qū)動建議,可幫助團(tuán)隊(duì)有效維護(hù)其現(xiàn)有的Selenium腳本,無需退出Selenium即可從高級UI測試穩(wěn)定性中受益,通過將簡單的單行代碼更改為命令行執(zhí)行,即可激活適合現(xiàn)有CI / CD管道的功能; 一個(gè)智能的測試創(chuàng)建工作流程,使測試人員可以使用頁面對象模型快速創(chuàng)建可維護(hù)的Selenium測試。
優(yōu)點(diǎn):
- 智能記錄器可以輕松創(chuàng)建使用頁面對象模型的 Selenium 測試
- 可以對現(xiàn)有的 Selenium 測試執(zhí)行故障恢復(fù),并在現(xiàn)有的 Selenium 測試中推薦智能定位器
- 通過利用您現(xiàn)有的 Selenium 腳本或創(chuàng)建新的 Selenium 腳本,直接集成到您的 CI/CD 管道中
- 提供測試影響分析技術(shù),自動識別需要在 CI/CD 管道中執(zhí)行哪些 Selenium 測試以驗(yàn)證新的代碼更改
- 提供各個(gè)級別的客戶支持(不僅僅是企業(yè))
- 支持 BDD。專注于底層Java(JUnit和TestNG)Selenium測試代碼的維護(hù)
缺點(diǎn):
- 此商業(yè)產(chǎn)品沒有免費(fèi)許可證,但可以免費(fèi)試用。
- 這個(gè)產(chǎn)品還是比較新的。當(dāng)前版本支持 Java、JUnit 4 & 5、TestNG、Cucumber、Eclipse 和 IntelliJ。未來版本將考慮其他支持。
2. Katalon
katalon是近幾年來比較流行的自動化測試工具,在自動化測試工具年度評選中僅次于selenium位居第二,他與selenium有著很多相似的地方又有很多不同,比如說他們有如下相同點(diǎn):
他們都可以進(jìn)行網(wǎng)頁自動化測試。katalon的recorder 對標(biāo)于selenium IDE,都可以進(jìn)行網(wǎng)頁的自動化腳本錄制
他們都可以導(dǎo)出代碼,其中katalon的recorder 也可以導(dǎo)出selenium的代碼
katalon 的recorder 與seleniumIDE的功能有很多相同。
Katalon的優(yōu)點(diǎn):
- 推薦智能定位器
- 使用頁面對象模型(但僅用于在 IDE 中生成和管理的測試)
- 具有故障恢復(fù)功能(通過付費(fèi)插件)
- 能夠?qū)С龅蕉喾N不同類型的測試腳本
- 支持 BDD。功能文件執(zhí)行 Katalon 測試代碼
缺點(diǎn):
- 雖然您可以將測試導(dǎo)出為 Selenium 和其他測試腳本,但是一旦導(dǎo)出,將失去 Katalon 的所有可用性,并且導(dǎo)出不包括頁面對象模型,這意味著測試變得難以重用和維護(hù)
- 他們的客戶支持僅在企業(yè)級別可用,而且非常昂貴
- 不直接集成到您現(xiàn)有的執(zhí)行框架中(使用專有框架,CI 集成可用作插件)
3. Selenium IDE
Selenium IDE應(yīng)該說是我們用的最多的web自動化測試工具了,Selenium IDE(集成開發(fā)環(huán)境)是套件中可用的最簡單的框架。 它用作為Firefox插件,因此安裝和使用非常簡單。 通過極少的編程知識和接近零的培訓(xùn),就可以開始使用Selenium IDE。 對于初學(xué)者,要了解Selenese命令,還要了解腳本語法,這是一個(gè)很好的工具。
它提供了一個(gè)GUI(圖形用戶界面),用于在Firefox瀏覽器中記錄必要的操作。選擇在Firefox瀏覽器當(dāng)前顯示的頁面上顯示的UI元素時(shí),Selenium IDE運(yùn)行時(shí)的右鍵單擊將根據(jù)所選UI元素的上下文顯示具有預(yù)定義參數(shù)的Selenium命令列表。這使腳本變得更加容易!
更多請閱讀:https://www.yiibai.com/hotnews/tempa/ide-benefits-limitations.html
優(yōu)點(diǎn):
- 很容易安裝和使用。
- 不需要編程經(jīng)驗(yàn)。
- 具有內(nèi)置的幫助功能,并顯示所選或輸入的命令的文檔
- 通過顯示信息和錯(cuò)誤消息幫助調(diào)試。
- 它允許在必要時(shí)設(shè)置斷點(diǎn),插入命令和注釋。
- 為擴(kuò)展提供良好的支持,有助于導(dǎo)出可在Selenium RC和WebDriver中執(zhí)行的測試。
缺點(diǎn):
- 作為Firefox插件,它不支持Mozilla Firefox以外的任何瀏覽器。
- 它沒有明確提供幫助來支持警報(bào),彈出窗口和導(dǎo)航。
- 它不支持監(jiān)聽器。
- 不支持錯(cuò)誤處理和數(shù)據(jù)庫測試。
- 它不能用于測試iPhone和Android應(yīng)用程序。
- 不支持從外部文件讀取和上傳文件。
- 不支持迭代和條件操作。
//更多請閱讀:https://www.yiibai.com/hotnews/tempa/ide-benefits-limitations.html
關(guān)鍵要點(diǎn):Selenium IDE 使用簡單,讓用戶能夠快速創(chuàng)建針對其 Web UI 的測試。它對 Selenium 非常友好,對于習(xí)慣了該框架的人來說會感覺很便利。
4. mabl
優(yōu)點(diǎn):文章來源:http://www.zghlxwxcb.cn/news/detail-418466.html
- 推薦智能定位器(但對用戶來說有點(diǎn)模糊)
- 故障恢復(fù)功能運(yùn)作良好
- SaaS解決方案;易于訪問和入門
- 可擴(kuò)展的定價(jià)模型
缺點(diǎn):文章來源地址http://www.zghlxwxcb.cn/news/detail-418466.html
- 記錄流程時(shí)不使用頁面對象模型
- 使用自己的框架,沒有測試腳本的導(dǎo)入導(dǎo)出
- 雖然存在 CI 集成,但您無法將解決方案直接集成到現(xiàn)有框架中
- 如果某些事情沒有按您預(yù)期的方式工作,則很難訪問“代碼”以進(jìn)行配置或操作
- 對“流程”的關(guān)注使得創(chuàng)建“功能驗(yàn)證”(即帶有斷言的測試)感到尷尬
- 僅 SaaS 解決方案;沒有內(nèi)部部署,也無法訪問公共互聯(lián)網(wǎng)中不可用的應(yīng)用程序
- 沒有對 BDD 的內(nèi)置支持
5.TestIM
優(yōu)點(diǎn):
- 測試非常容易創(chuàng)建,具有直觀的用戶界面
- 推薦智能定位器,以及維護(hù)它們的絕佳策略
- 多種測試模式:TestIM 提供了多種測試模式,包括單元測試、集成測試、端到端測試等,可以滿足不同場景和需求的測試需求。
- 自動化測試:TestIM 支持自動化測試,可以使用 Python、Java 等編程語言編寫測試腳本,提高測試效率和準(zhǔn)確性。
- 測試報(bào)告:TestIM 提供了可視化的測試報(bào)告,可以實(shí)時(shí)展示測試結(jié)果和缺陷數(shù)量,幫助開發(fā)人員快速了解測試進(jìn)展情況。
- 團(tuán)隊(duì)協(xié)作:TestIM 支持團(tuán)隊(duì)協(xié)作和任務(wù)分配,可以方便地管理和協(xié)調(diào)測試任務(wù),提高測試效率和質(zhì)量。
- 云環(huán)境支持:TestIM 支持云環(huán)境部署和運(yùn)行,可以方便地在不同設(shè)備和環(huán)境中進(jìn)行測試和部署。
缺點(diǎn):
- 在他們的測試中不使用頁面對象模型
- 缺乏導(dǎo)入和導(dǎo)出測試腳本的能力
- 用戶無法訪問代碼或從 TestIM 中進(jìn)行測試
- 供應(yīng)商鎖定框架——腳本在 TestIM 框架中
- 對 BDD 的支持不明確
6. Functionize
優(yōu)點(diǎn):
- 出色的測試流程可視化顯示
- 為元素推薦多個(gè)定位器
- 簡單易用:Functionize 的文檔和 API 非常清晰易懂,使得初學(xué)者可以快速上手。
- 功能強(qiáng)大:Functionize 支持多種 Web 應(yīng)用程序自動化功能,如請求攔截器、響應(yīng)攔截器、請求工廠、數(shù)據(jù)可視化等。
- 可擴(kuò)展性:Functionize 支持自定義插件和擴(kuò)展,使得開發(fā)人員可以輕松地添加和自定義功能。
- 跨平臺支持:Functionize 可以在 Windows、macOS 和 Linux 等多個(gè)操作系統(tǒng)上運(yùn)行,使得開發(fā)人員可以在不同的環(huán)境下進(jìn)行開發(fā)。
缺點(diǎn):
- 不能使用頁面對象模型
- 供應(yīng)商鎖定框架
- 沒有導(dǎo)入和導(dǎo)出測試腳本
- 學(xué)習(xí)曲線較陡峭:Functionize 的文檔和 API 較為復(fù)雜,需要開發(fā)人員有一定的 Python 編程基礎(chǔ)才能理解和運(yùn)用。
- 需要大量的配置:Functionize 的功能非常豐富,但這也需要大量的配置和設(shè)置,可能會讓開發(fā)人員感到繁瑣。
7. Perfecto
優(yōu)點(diǎn):
- 使用頁面對象模型(但僅在其生成的測試中)
- 為記錄的 Web 元素提供多個(gè)定位器
- 最近引入了故障恢復(fù)(雖然有點(diǎn)不清楚它的作用或性能如何)
缺點(diǎn):
- 測試腳本采用基于 TCL 的專有語言
- 不能導(dǎo)入自己的 Selenium 腳本
- 雖然它們提供 CI 集成,但它并未直接集成到您現(xiàn)有的框架中
- BDD 通過第三方實(shí)施支持,Project Quantum
8. TestCraft
優(yōu)點(diǎn):
- 使用頁面對象模型(但僅在其生成的測試中)
- 推薦智能定位器,稱為“智能綁定”
- 功能強(qiáng)大:TestCraft 提供了許多功能,能夠滿足不同類型的測試需求。
- 易于使用:TestCraft 的安裝和使用方法比較簡單,可以快速上手。
- 跨平臺支持:TestCraft 可以在不同的操作系統(tǒng)上運(yùn)行,包括 Windows、macOS 和 Linux 等。
- 支持多種測試語言:TestCraft 可以與多種測試語言集成,包括 Python、Java、c 等。
- 可以集成到其他工具中:TestCraft 可以與許多其他工具集成,例如 Git、Jenkins 等。
缺點(diǎn):
- 使用專有框架
- 您不能導(dǎo)入/導(dǎo)出測試腳本
- 不直接集成到您現(xiàn)有的框架中(CI 集成可用作插件)
- 學(xué)習(xí)曲線較陡峭:TestCraft 的功能很多,因此需要一定的學(xué)習(xí)曲線,需要花費(fèi)一定的時(shí)間來了解它的使用方法。
- 復(fù)雜度比較高:TestCraft 的使用需要一定的技術(shù)能力,如果不熟悉測試?yán)碚摗⒎椒ê凸ぞ?,可能會感到?fù)雜和困難。
- 費(fèi)用較高:TestCraft 是一種商業(yè)測試框架,需要支付一定的費(fèi)用。
9. Squish
優(yōu)點(diǎn):
- 廣泛的跨平臺測試支持
- 強(qiáng)大的光學(xué)字符識別 (OCR) 功能
- 獨(dú)立于屏幕布局的可靠對象識別和驗(yàn)證
- 對腳本語言的良好支持
缺點(diǎn):
- 可能需要改進(jìn)最終用戶培訓(xùn)和技術(shù)支持,盡管大多數(shù)反饋是有利的
- 向?qū)ο笥成涮砑有聦ο髸r(shí)報(bào)告的一些問題
10. AutonomIQ
優(yōu)點(diǎn):
- 強(qiáng)大的 NLP、AI 和 ML
- 使用頁面對象模型(但僅在其生成的測試中)
- 通過 Chrome 插件推薦智能定位器
- 在執(zhí)行過程中故障恢復(fù)
- 傳統(tǒng) BDD 的替代方法(使用專有 NLP)。如果您想做傳統(tǒng)的 BDD(即 Cucumber),可能是個(gè)缺點(diǎn)
缺點(diǎn):
- 使用專有框架
- 您無法導(dǎo)入測試腳本
- 不直接集成到您現(xiàn)有的框架中(CI 集成可用作插件)
- 不完全成熟的技術(shù)
到了這里,關(guān)于漫談前端自動化測試演進(jìn)之路及測試工具分析的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!