上篇 《web自動化測試(1):再談UI發展史與UI、功能自動化測試》,自動化測試工具衆多,html
Selenium:開源工具集,用於迴歸功能測試或者系統用例說明,也可瀏覽器的兼容性。支持JavaScript、java、C等主流語言前端
Monkey:安裝自帶的UI測試工具,主要用來對設備上的程序進行壓力測試,檢測程序多久的時間會發生異常。monkey命令java
Loadrunner:商業性能測試工具,收費,功能強大,適合作複雜場景的性能測試。java編寫測試用例python
QTP(=》UFT):商業收費軟件,支持web,桌面自動化測試。主要是用於迴歸測試和測試同一軟件的新版本,支持VBScriptweb
WinRunnershell
QARun編程
Robot瀏覽器
爲何選擇selenium作講解呢?ruby
selenium 是一個用於Web應用程序測試的工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操做同樣。支持的瀏覽器包括IE7+,Firefox,Safari,Chrome,Opera等。服務器
測試與瀏覽器的兼容性:測試應用程序可否兼容工做在不一樣瀏覽器和操做系統之上。
測試系統功能:錄製用例自動生成測試腳本,檢驗軟件功能和用戶需求,用於迴歸功能測試或者系統用例說明。支持自動錄製動做和自動生成 .Net、Java、Perl等不一樣語言的測試腳本。
與其餘打交道的測試工具對比
Monkey是Android自帶的一套命令行自動化測試小工具,使用 Java 語言寫成,在Android文件系統中的存放路徑是: /system/framework/monkey.jar;Monkey.jar程序是由一個名爲「monkey」的Shell腳原本啓動執行,shell腳本在Android文件系統中 的存放路徑是:/system/bin/monkey;
Monkey測試,就像一隻猴子, 在電腦面前,亂敲鍵盤在測試。 猴子什麼都不懂, 只知道亂敲。經過Monkey程序模擬用戶觸摸屏幕、滑動Trackball、 按鍵等操做,向系統發送僞隨機的用戶事件流(點擊、滑動、Application切換、橫豎屏、應用關閉),從而對設備上的程序進行壓力測試,檢測程序多久的時間會發生異常。
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以前廣州學了一下,放棄了。真的用起來仍是在深圳百果園。不過如今有基本全忘記了。感受這個東西就是測試工具中屠龍刀,奈何我只把當殺豬刀用(有java基本功、搞下性能測試啥的仍是能夠的)。
loadrunner的教程很是多,書也不少。慕課網上面的課程也不錯:https://www.imooc.com/search/?words=Loadrunner
因此,這裏也就很少說了。
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 的使用場景以下:
無需瀏覽器的Web測試:無需瀏覽器的狀況下進行快速的Web測試,且支持不少測試框架,如YUI Test、Jasmine、WebDriver、Capybara、QUnit、Mocha等。
頁面自動化操做:使用標準的DOM API或一些JavaScript框架(如jQuery)訪問和操做Web頁面。
屏幕捕獲:以編程方式抓起CSS、SVG和Canvas等頁面內容,便可實現網絡爬蟲應用。構建服務端Web圖形應用,如截圖服務、矢量光柵圖應用。
網絡監控:自動進行網絡性能監控、跟蹤頁面加載狀況以及將相關監控的信息以標準的HAR格式導出。
PhantomJS 已造成了一個功能很是強大的生態圈內容,相關項目以下:
CasperJS:一個開源的導航腳本處理和高級測試工具
Poltergeist :測試工具Capybara的測試驅動
Guard::Jasmine:可以基於Rails實現自動化測試Jasmine的Specs
GhostDriver:遠程 WebDriver 有線協議的開源實現
PhantomRobot:PhantomJS機器人測試框架
Mocha-PhantomJS:JavaScript測試框架Mocha的客戶端
此外,生態圈還包括基於PhantomJS實現了衆多截屏工具,如capturejs、pageres、phantomjs-screenshots、manet、screenshot-app等;以及Node.js、Django、PHP、Sinatra等語言的截圖API和Confess、GhostStory、Grover等衆多工具。
以前用這玩意兒作過爬蟲。如今用的最多仍是數據頁面截屏及監控。用它作測試比較少。
Selenium是 ThoughtWorks專門爲Web應用程序編寫的一個驗收測試工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操做同樣。支持的瀏覽器包括IE(七、八、9)、Mozilla Firefox、Mozilla Suite等。這個工具的主要功能包括:測試與瀏覽器的兼容性——測試你的應用程序看是否可以很好得工做在不一樣瀏覽器和操做系統之上。測試系統功能——建立衰退測試檢驗軟件功能和用戶需求。支持自動錄製動做和自動生成 .Net、Java、Perl等不一樣語言的測試腳本。
用過的同窗估計都有感覺,就是這貨本質上是依賴於瀏覽器的,每一步操做都是直接操縱圖形化的瀏覽器,這樣不管是從性能仍是可編程性上來講都差多了。
PhantomJS 則否則,它除了擁有 Selenium 的絕大部分功能以外,更強大的地方在於他是一個「無頭瀏覽器」,沒有圖形化界面,直接面向程序 API 接口,性能和可操做性比 Selenium 高了不少。
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同樣能夠自動錄製添加。
官網: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真香!
Selenium1 引入了 Remote Control Server 這樣一個代理 Server,JavaScript 腳本注入和與 Server 通信都經過這個代理 Server 來進行。以下圖所示:
之因此引入這個代理 Remote Control Server 是由於「同源策略」的限制,經過這個代理服務器來「欺騙」遠程 Server,達到使其覺得是從同一個地方 load 代碼以正確返回請求數據的效果。
流程說明:
客戶端創建與 selenium-RC server 的鏈接。
Selenium RC Server 啓動一個瀏覽器(或是已經使用中),並注入 JS 代碼
將 Selenese 代碼傳到客戶端的 Selenium-Core 中。
Selenium-Core 翻譯並解析執行用戶錄製的操做。
讓代理 Server 進行通信
Remote Control Server 負責跟遠程 Web 應用服務器進行通信。
操做完成,顯示結果,並執行下一指令。
以上就是 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