我們都希望為 Web 應用程序構(gòu)建易維護的測試。作為這個目標的一部分,我們都希望能集中精力在測試本身,而盡量避免困在實施的具體細節(jié)中。從長遠來看,測試應該是可維護的,對軟件定期的變更并不會破壞測試本身或者讓團隊的開發(fā)節(jié)奏變慢。
迭代速度 / 現(xiàn)實環(huán)境
某些測試工具可以在做出更改和查看結(jié)果之間提供簡短的反饋循環(huán),但不能精確地模仿瀏覽器的行為。其他工具可能會使用實際的瀏覽器環(huán)境,但會降低迭代速度,并且在連續(xù)集成系統(tǒng)中可能會變得更加脆弱。
Selenium
知名的瀏覽器 web 應用測試框架,可以用 JAVA、C#、Ruby、JavaScript、R 和 Python 等多種編程語言編寫測試案例。
Selenium 為每種語言提供客戶端 API。
Selenium WebDriver 盡可能使用原生操作系統(tǒng)級別的功能,而非基于瀏覽器 JavaScript 的命令來驅(qū)動瀏覽器。
這樣就繞過了原生功能和 JavaScript 命令之間由于細微差別而產(chǎn)生的問題(包括安全限制)。它提供了很大的靈活性,甚至還支持 iframe 和多個瀏覽器標簽。
卓越的跨瀏覽器功能令人印象深刻。可以在主流瀏覽器(Chrome、Firefox、Safari、Edge、Internet Explorer)上執(zhí)行 Selenium 測試。
Selenium Grid 可以與 WebDriver 一起使用,以在遠程系統(tǒng)上執(zhí)行測試。
使用 Selenium 的唯一缺點是,它需要大量的技能,并且編寫測試非常耗時。對沒有編程經(jīng)驗的人來說,乍一看用 Selenium 編寫測試似乎很容易;但是如果沒有最佳實踐,將導致項目內(nèi)的測試自動化框架難以維護且不夠穩(wěn)定可靠。
https://www.selenium.dev/
Endtest
Endtest 是智能自動化測試解決方案,它使用多個開源和閉源組件去簡化創(chuàng)建和執(zhí)行測試的流程。其中之一就是 Recorder 組件可以讓用戶不用編程技巧就能創(chuàng)建和執(zhí)行測試。你可以用圖形化界面編輯管理自己的測試案例,而不用編寫任何代碼。
它和 Selenium 一樣擁有靈活性,允許你自動化測試場景,其中包含 iframe、多個瀏覽器標簽、文件上傳、ShadowDOM, 等等。它同 Selenium 一樣擁有跨瀏覽器的特性, 支持所有主流的瀏覽器(Chrome、Firefox、Safari、Edge、Internet Explorer)。同時,它也包括跨瀏覽器的云框架,支持 windows、mac 以及移動設備上的瀏覽器。
此外,它還有支持 JavaScripts 執(zhí)行的組件,以及發(fā)送 API 請求和連接數(shù)據(jù)庫執(zhí)行 SQL 語句的組件。
這些組件可用于在測試中添加額外的驗證步驟,并可準備或清理測試環(huán)境。
https://endtest.io
Watir
Watir 是一個 Ruby 的瀏覽器自動化測試開源庫。
Watir 與對瀏覽器的互動方式和人類是一樣的:如點擊一個網(wǎng)頁元素,填輸入字符。
它的底層使用了 Selenium 并且提供同樣的靈活性,也支持跨瀏覽器。同時,它也支持 iframes 以及多個瀏覽器標簽。
Watir 最大的優(yōu)點是 API 很容易使用,它在繁復的 Selenium API 之上增加了一層簡單性。
不過,它的主要缺點是,它不如 Selenium 受歡迎,在尋找答案和解決方案方面你會遇到一些困難。
http://watir.com/
Puppeteer
一個 Node 庫,它提供了高級的 API 并通過 DevTools 協(xié)議來控制 Chrome(或 Chromium)。
我認為未來它可以代替 Selenium。它也具有支持 iframe 和多個瀏覽器標簽的靈活性。
值得一提的是,它有 2 種不同的軟件包:puppeteer-core 和 puppeteer
唯一的區(qū)別是 puppeteer-core 在安裝后不會自動下載 Chromium。
puppeteer 的主要缺點是缺乏跨瀏覽器功能,因為它僅適用于基于 Chromium 的瀏覽器。
即使 Opera 和 Edge 遷移到 Chromium,也無法保證 Firefox 和 Safari 將來也會這樣做。
另一個缺點是,唯一受支持的語言是 Node.js。即使到 2020 年一切似乎都圍繞 JS 展開,但是仍然有一些用戶可能想使用其他語言進行自動化測試的開發(fā)。
https://pptr.dev/
Playwright
一個 Node 庫,可通過單個 API 在 Chromium、Firefox 和 WebKit 瀏覽器上執(zhí)行自動化測試。
Playwright 旨在不斷增長的 Web 瀏覽器集上實現(xiàn)自動化操作。Playwright 類似于 Puppeteer。
它支持多頁面、多域名和 iframes 測試,還可以模擬移動端設備,地理指向和權(quán)限控制也是可以測試的。
即使它具有更廣泛的跨瀏覽器支持,但它也不支持 Internet Explorer。
因為它是一個相對較新的庫,所以你可能現(xiàn)在在線上找不到很多資源。
如果你在編寫 Node.js 代碼方面有扎實的經(jīng)驗,那么 Playwright 可以一試。
https://playwright.dev/
Sikuli
在運行 Windows、Mac 或 linux 的臺式計算機屏幕上看到的任何內(nèi)容,都可以使用 Sikuli 執(zhí)行自動化測試。
它使用由 OpenCV 支持的圖像識別來識別視覺組件。如果無法輕松訪問 GUI 內(nèi)部或要操作的應用程序或網(wǎng)頁的源代碼,這個工具會非常方便。實際上,這是大多數(shù)現(xiàn)代 RPA 解決方案背后的技術(shù)。
Sikuli 的優(yōu)點是,元素具有唯一屬性或?qū)傩允欠窀亩紵o關(guān)緊要,因為 Sikuli 僅依賴于視覺識別。
它的主要缺點是視覺容忍度讓用戶很難在不同的瀏覽器和屏幕尺寸之間實現(xiàn)自動化。
并且,使用 Sikuli 庫需要編程技巧,并且你可以在 Python、Ruby 和 Java 之間選擇。
如果你有涉及 Web 應用程序和桌面應用程序的混合自動化測試,則較好的做法是將 Selenium 用于 Web 組件,將 Sikuli 用于桌面組件。
http://sikulix.com/
Micro Focus UFT (QTP)
專有解決方案,以前稱為 QuickTest Professional(QTP)。它提供了使 Web 應用程序和桌面應用程序自動化的功能。
它使用 Visual Basic 腳本語言來定位應用程序中的元素并與之交互。同時,它還提供了一個 IDE,你只需在 GUI 中創(chuàng)建一個流程即可在不編寫任何代碼的情況下構(gòu)建測試。
該工具已經(jīng)存在很長時間,并且確實使 Selenium 失去了很多市場份額。
https://www.microfocus.com/en-us/products/uft-one/overview
IBM Rational Functional Tester
一個提供功能、回歸、GUI 和數(shù)據(jù)驅(qū)動測試的自動化測試的專業(yè)工具。它確實包括有限的跨瀏覽器功能,因為它僅適用于 Chrome、Firefox 和 Internet Explorer。主要優(yōu)點是它還可用于自動化桌面應用程序。
優(yōu)勢之一是它具有 Eclipse Java Developer Toolkit 編輯器,這讓你的團隊可以輕松地使用 Eclipse 在 Java 中編寫測試腳本。自帶的 IDE 工具箱編輯器包含以下功能,如代碼自動完成和高級調(diào)試選項。
將 IBM Rational Functional Tester 與 CI/CD 系統(tǒng)集成可能會很困難,因為它被設計用在你自己的工作站上
https://www.ibm.com/us-en/marketplace/rational-functional-tester
Jest
Jest 是一個 JavaScript 框架,允許你通過 jsdom 訪問 DOM。
值得一提的是,jsdom 只是瀏覽器工作方式的一個近似值,用于 React 應用程序的測試框架,但不是跨瀏覽器測試的可靠選擇。
Jest 確實提供了良好的迭代速度,并且具有強大的功能,例如模擬模塊和計時器。
理想情況下,開發(fā)人員應使用它來測試某些組件,但結(jié)果不能保證該應用程序在實際的瀏覽器中可以正常工作。
https://jestjs.io/
Cucumber
Cucumber 是一個開源的行為驅(qū)動測試工具,支持多種編程語言,包括 Ruby,Java,Scala 和 Groovy。
創(chuàng)建測試案例需要編程技術(shù)。實際功能可以通過使用 Gherkin 來調(diào)用。
使用 Cucumber 的明顯優(yōu)勢是,非技術(shù)用戶可以輕松理解這些方案。
可以說 Cucumber 并不是 Selenium 的替代品,而僅僅是對 Selenium 進行了一層包裝。
Selenium 和 Cucumber 的組合可提高代碼的可讀性,并使其更易于重用組件。
https://cucumber.io/
原文鏈接:
https://medium.com/swlh/the-10-best-test-automation-tools-a51e76c091df