"IT有得聊”是機械工業出版社旗下IT專業資訊和服務平台,緻力于幫助讀者在廣義的IT領域裡,掌握更專業、實用的知識與技能,快速提升職場競争力。

作者 | George Pérez
策劃 | 萬佳
我們都希望為 Web 應用程式建構易維護的測試。作為這個目标的一部分,我們都希望能集中精力在測試本身,而盡量避免困在實施的具體細節中。從長遠來看,測試應該是可維護的,對軟體定期的變更并不會破壞測試本身或者讓團隊的開發節奏變慢。
疊代速度 / 現實環境
某些測試工具可以在做出更改和檢視結果之間提供簡短的回報循環,但不能精确地模仿浏覽器的行為。其他工具可能會使用實際的浏覽器環境,但會降低疊代速度,并且在連續內建系統中可能會變得更加脆弱。
1 Selenium
知名的浏覽器 web 應用測試架構,可以用 Java、C#、Ruby、JavaScript、R 和 Python 等多種程式設計語言編寫測試案例。
Selenium 為每種語言提供用戶端 API。
Selenium WebDriver 盡可能使用原生作業系統級别的功能,而非基于浏覽器 JavaScript 的指令來驅動浏覽器。
這樣就繞過了原生功能和 JavaScript 指令之間由于細微差别而産生的問題(包括安全限制)。它提供了很大的靈活性,甚至還支援 iframe 和多個浏覽器标簽。
卓越的跨浏覽器功能令人印象深刻。可以在主流浏覽器(Chrome、Firefox、Safari、Edge、Internet Explorer)上執行 Selenium 測試。
Selenium Grid 可以與 WebDriver 一起使用,以在遠端系統上執行測試。
使用 Selenium 的唯一缺點是,它需要大量的技能,并且編寫測試非常耗時。對沒有程式設計經驗的人來說,乍一看用 Selenium 編寫測試似乎很容易;但是如果沒有最佳實踐,将導緻項目内的測試自動化架構難以維護且不夠穩定可靠。
2 Endtest
Endtest 是智能自動化測試解決方案,它使用多個開源和閉源元件去簡化建立和執行測試的流程。其中之一就是 Recorder 元件可以讓使用者不用程式設計技巧就能建立和執行測試。你可以用圖形化界面編輯管理自己的測試案例,而不用編寫任何代碼。
它和 Selenium 一樣擁有靈活性,允許你自動化測試場景,其中包含 iframe、多個浏覽器标簽、檔案上傳、ShadowDOM, 等等。它同 Selenium 一樣擁有跨浏覽器的特性, 支援所有主流的浏覽器(Chrome、Firefox、Safari、Edge、Internet Explorer)。同時,它也包括跨浏覽器的雲架構,支援 Windows、Mac 以及移動裝置上的浏覽器。
此外,它還有支援 JavaScripts 執行的元件,以及發送 API 請求和連接配接資料庫執行 SQL 語句的元件。
這些元件可用于在測試中添加額外的驗證步驟,并可準備或清理測試環境。
3 Watir
Watir 是一個 Ruby 的浏覽器自動化測試開源庫。
Watir 與對浏覽器的互動方式和人類是一樣的:如點選一個網頁元素,填輸入字元。
它的底層使用了 Selenium 并且提供同樣的靈活性,也支援跨浏覽器。同時,它也支援 iframes 以及多個浏覽器标簽。
Watir 最大的優點是 API 很容易使用,它在繁複的 Selenium API 之上增加了一層簡單性。
不過,它的主要缺點是,它不如 Selenium 受歡迎,在尋找答案和解決方案方面你會遇到一些困難。
4 Puppeteer
一個 Node 庫,它提供了進階的 API 并通過 DevTools 協定來控制 Chrome(或 Chromium)。
我認為未來它可以代替 Selenium。它也具有支援 iframe 和多個浏覽器标簽的靈活性。
值得一提的是,它有 2 種不同的軟體包:puppeteer-core 和 puppeteer
唯一的差別是 puppeteer-core 在安裝後不會自動下載下傳 Chromium。
puppeteer 的主要缺點是缺乏跨浏覽器功能,因為它僅适用于基于 Chromium 的浏覽器。
即使 Opera 和 Edge 遷移到 Chromium,也無法保證 Firefox 和 Safari 将來也會這樣做。
另一個缺點是,唯一受支援的語言是 Node.js。即使到 2020 年一切似乎都圍繞 JS 展開,但是仍然有一些使用者可能想使用其他語言進行自動化測試的開發。
5 Playwright
一個 Node 庫,可通過單個 API 在 Chromium、Firefox 和 WebKit 浏覽器上執行自動化測試。
Playwright 旨在不斷增長的 Web 浏覽器集上實作自動化操作。Playwright 類似于 Puppeteer。
它支援多頁面、多域名和 iframes 測試,還可以模拟移動端裝置,地理指向和權限控制也是可以測試的。
即使它具有更廣泛的跨浏覽器支援,但它也不支援 Internet Explorer。
因為它是一個相對較新的庫,是以你可能現在線上上找不到很多資源。
如果你在編寫 Node.js 代碼方面有紮實的經驗,那麼 Playwright 可以一試。
6 Sikuli
在運作 Windows、Mac 或 Linux 的台式計算機螢幕上看到的任何内容,都可以使用 Sikuli 執行自動化測試。
它使用由 OpenCV 支援的圖像識别來識别視覺元件。如果無法輕松通路 GUI 内部或要操作的應用程式或網頁的源代碼,這個工具會非常友善。實際上,這是大多數現代 RPA 解決方案背後的技術。
Sikuli 的優點是,元素具有唯一屬性或屬性是否更改都無關緊要,因為 Sikuli 僅依賴于視覺識别。
它的主要缺點是視覺容忍度讓使用者很難在不同的浏覽器和螢幕尺寸之間實作自動化。
并且,使用 Sikuli 庫需要程式設計技巧,并且你可以在 Python、Ruby 和 Java 之間選擇。
如果你有涉及 Web 應用程式和桌面應用程式的混合自動化測試,則較好的做法是将 Selenium 用于 Web 元件,将 Sikuli 用于桌面元件。
7 Micro Focus UFT (QTP)
專有解決方案,以前稱為 QuickTest Professional(QTP)。它提供了使 Web 應用程式和桌面應用程式自動化的功能。
它使用 Visual Basic 腳本語言來定位應用程式中的元素并與之互動。同時,它還提供了一個 IDE,你隻需在 GUI 中建立一個流程即可在不編寫任何代碼的情況下建構測試。
該工具已經存在很長時間,并且确實使 Selenium 失去了很多市場佔有率。
8 IBM Rational Functional Tester
一個提供功能、回歸、GUI 和資料驅動測試的自動化測試的專業工具。它确實包括有限的跨浏覽器功能,因為它僅适用于 Chrome、Firefox 和 Internet Explorer。主要優點是它還可用于自動化桌面應用程式。
優勢之一是它具有 Eclipse Java Developer Toolkit 編輯器,這讓你的團隊可以輕松地使用 Eclipse 在 Java 中編寫測試腳本。自帶的 IDE 工具箱編輯器包含以下功能,如代碼自動完成和進階調試選項。
将 IBM Rational Functional Tester 與 CI/CD 系統內建可能會很困難,因為它被設計用在你自己的工作站上
9 Jest
Jest 是一個 JavaScript 架構,允許你通過 jsdom 通路 DOM。
值得一提的是,jsdom 隻是浏覽器工作方式的一個近似值,用于 React 應用程式的測試架構,但不是跨浏覽器測試的可靠選擇。
Jest 确實提供了良好的疊代速度,并且具有強大的功能,例如模拟子產品和計時器。
理想情況下,開發人員應使用它來測試某些元件,但結果不能保證該應用程式在實際的浏覽器中可以正常工作。
10 Cucumber
Cucumber 是一個開源的行為驅動測試工具,支援多種程式設計語言,包括 Ruby,Java,Scala 和 Groovy。
建立測試案例需要程式設計技術。實際功能可以通過使用 Gherkin 來調用。
使用 Cucumber 的明顯優勢是,非技術使用者可以輕松了解這些方案。
可以說 Cucumber 并不是 Selenium 的替代品,而僅僅是對 Selenium 進行了一層包裝。
Selenium 和 Cucumber 的組合可提高代碼的可讀性,并使其更易于重用元件。
-End-
免費直播課程
4月8日(本周四)
擁有大型自動化測試項目的用例維護及落地實施經驗
從業十餘年的行業專家
盧家濤 老師
為您帶來免費直播課:
自動化測試工程師的修行之路
開放時間:2021年4月8日(周四)20:00
主講老師:盧家濤
課程類型:視訊直播
觀看平台: 九州雲播平台
當當直播平台
京東直播平台
機械工業出版社官方騰訊直播間
機械工業出版社百度百家号直播間
講師介紹
盧家濤,精通自動化測試,負責過大型自動化測試項目的用例維護及整個公司自動化測試的實際項目落地。除了自動化測試,也擅長全棧測試開發,原創開源項目有testauto、WFT和IMS等。曾著有《全棧自動化測試實戰——基于TestNG、HttpClient、Selenium和Appium》一書,并創辦公衆号“自動化測試理論和實戰”,分享技術經驗。
相關著作:
以實際用例提煉自動化測試領域的熱門主題
提高建設效率、執行效率和維護效率
作者:盧家濤 編著
關鍵詞:自動化測試 軟體品質 軟體測試及維護
适合人群:中進階測試工程師、 測試開發工程師
本書共12章,第1章首先以一個自動化測試用例為引子,接下來的10章對由此引申出的自動化測試中的多個熱門專題,包括測試用例分層、資料驅動測試、關鍵字驅動測試、Page Object設計模式、等待、斷言、測試報告、測試替身、并行執行、分布式執行和持續內建等進行了詳細介紹,第12章以展望的形式對自動化測試平台以及容器化和人工智能技術在自動化測試中的應用做了簡介。
分享内容
★ 自動化測試工程師的修行之路
1. 必備理論知識
2. 掌握程式設計語言
3. 學習工具和架構
4. 熟悉CI和CD
5. 開發架構和平台