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

上篇 《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;

monkey執行示意圖

monkey測試

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

2222.png

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 來進行。如下圖所示:

image003.jpg

 

之所以引入這個代理 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章