天天看點

web自動化測試(2):選擇selenium優勢?與PhantomJS/QTP/Monkey對比

Android有monkey左壓測,也可以編寫腳本左UI互動測試。PhantomJS可以用用于頁面自動化、網絡監測、網頁截屏,但***面測試。selenium 是一套完整的web應用程式測試系統,包含了相容性測試、測試的錄制……web自動化測試,selenium

上篇 《web自動化測試(1):再談UI發展史與UI、功能自動化測試》,自動化測試工具衆多,

PC端常用的功能自動化測試工具

  • Selenium:開源工具集,用于回歸功能測試或者系統用例說明,也可浏覽器的相容性。支援JavaScript、java、C等主流語言
  • Monkey:安裝自帶的UI測試工具,主要用來對裝置上的程式進行壓力測試,檢測程式多久的時間會發生異常。monkey指令
  • Loadrunner:商業性能測試工具,收費,功能強大,适合做複雜場景的性能測試。java編寫測試用例
  • QTP(=》UFT):商業收費軟體,支援web,桌面自動化測試。主要是用于回歸測試和測試同一軟體的新版本,支援VBScript
  • WinRunner
  • QARun
  • Robot

為什麼選擇selenium做講解呢?

selenium

selenium 是一個用于Web應用程式測試的工具。Selenium測試直接運作在浏覽器中,就像真正的使用者在操作一樣。支援的浏覽器包括IE7+,Firefox,Safari,Chrome,Opera等。

selenium主要功能

  • 測試與浏覽器的相容性:測試應用程式能否相容工作在不同浏覽器和作業系統之上。
  • 測試系統功能:錄制用例自動生成測試腳本,檢驗軟體功能和使用者需求,用于回歸功能測試或者系統用例說明。支援自動錄制動作和自動生成 .Net、Java、Perl等不同語言的測試腳本。

與其他打交道的測試工具對比

Monkey

Monkey是Android自帶的一套指令行自動化測試小工具,使用 Java 語言寫成,在Android檔案系統中的存放路徑是: /system/framework/monkey.jar;Monkey.jar程式是由一個名為“monkey”的Shell腳本來啟動執行,shell腳本在Android檔案系統中 的存放路徑是:/system/bin/monkey;

web自動化測試(2):選擇selenium優勢?與PhantomJS/QTP/Monkey對比

monkey測試

Monkey測試,就像一隻猴子, 在電腦面前,亂敲鍵盤在測試。 猴子什麼都不懂, 隻知道亂敲。通過Monkey程式模拟使用者觸摸螢幕、滑動Trackball、 按鍵等操作,向系統發送僞随機的使用者事件流(點選、滑動、Application切換、橫豎屏、應用關閉),進而對裝置上的程式進行壓力測試,檢測程式多久的時間會發生異常。

web自動化測試(2):選擇selenium優勢?與PhantomJS/QTP/Monkey對比

monkey測試是一種為了測試軟體的穩定性,健壯性的快速有效的方法(如測試app 是否會Crash)。monkey測試是一種為了測試軟體的穩定性,健壯性的快速有效的方法(如測試app 是否會Crash)。app release版本(釋出)前,Monkey跑出來的結果中crash要為0,final release前,Monkey跑完的總次數應為25W,結果裡不允許有nullPointException出現。

Android monkey指令隻針對Activity做測試,不能對Service做測試。

對于前端H5測試,我們可以編寫相應的monkey腳本,完成基本的UI互動測試

關于monkey 推薦閱讀《Android壓力測試:monkey測試指令詳解與案例示範》

Loadrunner

Loadrunner之前廣州學了一下,放棄了。真的用起來還是在深圳百果園。不過現在有基本全忘記了。感覺這個東西就是測試工具中屠龍刀,奈何我隻把當殺豬刀用(有java基本功、搞下性能測試啥的還是可以的)。

loadrunner的教程非常多,書也很多。慕課網上面的課程也不錯:https://www.imooc.com/search/?words=Loadrunner

是以,這裡也就不多說了。

PhantomJS

phantomjs headless(無頭) 浏覽器,官網: http://phantomjs.org/,感覺非常硬核*_*,感動的淚流滿面。但是,我隻是使用一下其API,也确實能夠整明白咯。

PhantomJS是一個基于WebKit的伺服器端JavaScript API,它無需浏覽器的支援即可實作對Web的支援,且原生支援各種Web标準,如DOM 處理、JavaScript、CSS選擇器、JSON、Canvas和可縮放矢量圖形SVG。PhantomJS主要是通過JavaScript和CoffeeScript控制WebKit的CSS選擇器、可縮放矢量圖形SVG和HTTP網絡等各個子產品。PhantomJS主要支援Windows、Mac OS、Linux三個平台,并且提供了對應的二進制安裝包。

PhantomJS 的使用場景如下:

  1. 無需浏覽器的Web測試:無需浏覽器的情況下進行快速的Web測試,且支援很多測試架構,如YUI Test、Jasmine、WebDriver、Capybara、QUnit、Mocha等。
  2. 頁面自動化操作:使用标準的DOM API或一些JavaScript架構(如jQuery)通路和操作Web頁面。
  3. 螢幕捕獲:以程式設計方式抓起CSS、SVG和Canvas等頁面内容,即可實作網絡爬蟲應用。建構服務端Web圖形應用,如截圖服務、矢量光栅圖應用。
  4. 網絡監控:自動進行網絡性能監控、跟蹤頁面加載情況以及将相關監控的資訊以标準的HAR格式導出。

PhantomJS 已形成了一個功能非常強大的生态圈内容,相關項目如下:

  1. CasperJS:一個開源的導航腳本處理和進階測試工具
  2. Poltergeist :測試工具Capybara的測試驅動
  3. Guard::Jasmine:能夠基于Rails實作自動化測試Jasmine的Specs
  4. GhostDriver:遠端 WebDriver 有線協定的開源實作
  5. PhantomRobot:PhantomJS機器人測試架構
  6. Mocha-PhantomJS:JavaScript測試架構Mocha的用戶端

此外,生态圈還包括基于PhantomJS實作了衆多截屏工具,如capturejs、pageres、phantomjs-screenshots、manet、screenshot-app等;以及Node.js、Django、PHP、Sinatra等語言的截圖API和Confess、GhostStory、Grover等衆多工具。

之前用這玩意兒做過爬蟲。現在用的最多還是資料頁面截屏及監控。用它做測試比較少。

PhantomJS VS Selenium 

 Selenium是 ThoughtWorks專門為Web應用程式編寫的一個驗收測試工具。Selenium測試直接運作在浏覽器中,就像真正的使用者在操作一樣。支援的浏覽器包括IE(7、8、9)、Mozilla Firefox、Mozilla Suite等。這個工具的主要功能包括:測試與浏覽器的相容性——測試你的應用程式看是否能夠很好得工作在不同浏覽器和作業系統之上。測試系統功能——建立衰退測試檢驗軟體功能和使用者需求。支援自動錄制動作和自動生成 .Net、Java、Perl等不同語言的測試腳本。

用過的同學估計都有感受,就是這貨本質上是依賴于浏覽器的,每一步操作都是直接操縱圖形化的浏覽器,這樣無論是從性能還是可程式設計性上來說都差多了。

 PhantomJS 則不然,它除了擁有 Selenium 的絕大部分功能之外,更強大的地方在于他是一個“無頭浏覽器”,沒有圖形化界面,直接面向程式 API 接口,性能和可操作性比 Selenium 高了很多。

QPT

QTP是Quick Test Professional的簡稱,是HP公司的産品。

QTP是一個側重于功能回歸的自動化測試工具。使用QTP的目的是想用它來執行重複的自動化測試,主要是用于回歸測試和測試同一軟體的新版本。是以你在測試前要考慮好如何對應用程式進行測試,例如要測試哪些功能、操作步驟、輸入資料和期望的輸出資料等。

-- Selenium QTP/UFT
是否付費 開源免費 商用付費,成本涉及許可證。
IDE 沒有IDE 有IDE
作業系統 各種作業系統 隻支援Windows。
應用類型 Web,不支援處理Windows控件 Web、Java、.Net、ActiveX、VB、Oracle、PowerBuilder...支援操作Windows控件等
支援錄制 支援錄制,支援所有浏覽器 支援錄制,上手容易,能夠快速實作自動化,錄制回放成功率高。
測試類型 UI自動化、接口自動化 UI自動化
開發語言 Java、Python、Ruby、Perl、C#、PHP、HTML... VBScript
浏覽器 Internet Explorer、Firefox、Chrome、Edge、Safari、Opera...移動裝置驅動等 Firefox,Internet Explorer和Chrome的特定版本。
浏覽器功能 不能在浏覽器中通路控制。隻支援部分IE對話框??? 可以在浏覽器中通路控制,如收藏夾欄,後退和前進按鈕。支援各種IE對話框。
腳本運作 腳本作用于HTML的DOM(文檔對象模型),重點是腳本執行的進度。 腳本作用于浏覽器(模拟使用者操作),執行中需要焦點。
參數設定 必須依賴于程式設計語言,資料驅動要用程式設計實作。 參數是内置的,資料驅動支援靈活。
多線程 可以并聯使用Selenium網格運作測試。 不能并行執行測試,但将QTP整合到QC允許測試并行執行。
分布式 支援分布式運作腳本 僅支援遠端平台運作腳本
第三方擴充 靈活輕巧,支援第三方擴充,公開DOM各種技術。 功能成熟且強大,但有限的附加元件和需要附加元件的技術。
恢複方案 任何功能部件,例如對象存儲庫/恢複方案 QTP已經内置恢複方案。
測試報告 沒有預設生成測試報告。 預設的測試結果生成工具中。
移動測試 支援移動裝置。 支援第三方工具的移動裝置。
學習難易程度 資料較少,官方論壇 資料較多

UI對象的管理和存儲:QTP的内置了良好的支援。Selenium可以通過使用者擴充UI-Element來管理???,不過要在代碼中寫死,不像QTP一樣可以自動錄制添加。

selenium的優勢

官網:https://selenium.dev/ 推介:Open source record and playback test automation for the web 

selenium 是一套完整的web應用程式測試系統,包含了測試的錄制(selenium IDE),編寫及運作(Selenium Remote Control)和測試的并行處理(Selenium Grid)。

  • 終端使用者的角度來測試應用程式:

    通過編寫模仿使用者操作的 Selenium 測試腳本,可以從終端使用者的角度來測試應用程式。架構底層使用JavaScript模拟真實使用者對浏覽器進行操作。測試腳本執行時,浏覽器自動按照腳本代碼做出點選,輸入,打開,驗證等操作,就像真實使用者所做的一樣,從終端使用者的角度測試應用程式。

  • selenium可以模拟真實浏覽器,自動化測試工具,

    Selenium的核心Selenium Core基于JsUnit,完全由JavaScript編寫,是以可以用于任何支援JavaScript的浏覽器上。爬蟲中主要用來解決JavaScript渲染問題。

  • 支援語言多:C、 java、ruby、python、或都是C# ,你都可以通過selenium完成自動化測試

概況為:Selenium是一款可以錄制使用者操作,幫助 Web 測試人員簡化重複勞動的開源軟體。

反正,selenium真香!

Selenium 實作原理

Selenium1 引入了 Remote Control Server 這樣一個代理 Server,JavaScript 腳本注入和與 Server 通訊都通過這個代理 Server 來進行。如下圖所示:

web自動化測試(2):選擇selenium優勢?與PhantomJS/QTP/Monkey對比

之是以引入這個代理 Remote Control Server 是因為“同源政策”的限制,通過這個代理伺服器來“欺騙”遠端 Server,達到使其以為是從同一個地方 load 代碼以正确傳回請求資料的效果。

流程說明:

  1. 用戶端建立與 selenium-RC server 的連接配接。
  2. Selenium RC Server 啟動一個浏覽器(或是已經使用中),并注入 JS 代碼
  3. 将 Selenese 代碼傳到用戶端的 Selenium-Core 中。
  4. Selenium-Core 翻譯并解析執行使用者錄制的操作。
  5. 讓代理 Server 進行通訊
  6. Remote Control Server 負責跟遠端 Web 應用伺服器進行通訊。
  7. 操作完成,顯示結果,并執行下一指令。

以上就是 Selenium Remote Control 的執行原理,接下來的章節中将一步步以圖例加說明的方式快速說明如何使用 Selenium 來錄制腳本,導入 Java 工程,然後定期維護工程。

下篇終于回到重點,selenium 的使用實戰 《web自動化測試(3):selenium web測試用例與常用API簡介》

使用 Selenium 實作基于 Web 的自動化測試 https://www.ibm.com/developerworks/cn/web/1209_caimin_seleniumweb/index.html參考文章:

Android Monkey壓力測試使用 https://www.jianshu.com/p/c8844327f5e9

Android Monkey的使用 https://blog.csdn.net/zhaoyanjun6/article/details/71750907

Selenium與QTP的比較 https://www.jianshu.com/p/593736bd44b3

Web 自動化測試與智能爬蟲利器:PhantomJS 簡介與實戰 https://cloud.tencent.com/developer/article/1043912

轉載本站文章《web自動化測試(2):選擇selenium優勢?與PhantomJS/QTP/Monkey對比》,

請注明出處:https://www.zhoulujun.cn/html/Operation/test/2017_0518_8312.html