自動化測試作為非常專業的市場,不光對自動化測試的工程師技術要求很高,而且在工具選擇也非常關鍵。很多公司的軟件在以手動測試為主轉換到更多應用自動化測試的過程中,一大困惑是如何選擇自動化測試產品。工具產品的選擇不僅決定着今后測試質量和自動化測試的開發效率。而且影響到技術人員的招聘,運營成本等多種因素。
僅從成本角度考慮,開源軟件沒有工具軟件的購置成本,但是開源工具的集成和測試框架的搭建需要耗費大量人力。另外,疑難問題如果沒有廠商支持,會影響項目進度,也會導致大量的支出。如果從總擁有成本角度考慮(TCO),未必是最優的。
為幫助各位根據自己的實際情況選擇合適的工具,本文選取了自動化測試的幾款典型的工具,從工具軟件的各個方面進行比較。方便各位在選擇工具的時候做有效的決策。UFT,RFT是老牌的自動化測試工具、生態相對封閉。CukeTest是開源軟件Cucumber演變而來的軟件,在開源社區被廣泛的采用。
特性 | 惠普 Unified Function Testing | IBM Rational Functional Tester | 聆播科技CukeTest |
腳本管理 | 腳本文件的方式管理腳本,后期維護困難,復用率很低。目前不少廠商開發了UFT的腳本管理工具,但無法脫離腳本文件的基礎,很難有質的改變。 | 分散管理腳本,用戶在使用時需到相應用戶處查找腳本,查找到腳本后才能夠調用,無形增加了工作量。分散管理模式不能實現腳本實時更新,不能實現實時共享,導致腳本的復用率較低。 | 腳本管理采用先進的行為驅動(BDD)方式,基於測試場景管理測試用例。測試步驟與代碼相關聯。腳本易於維護。因為基於自然語言編寫測試場景,有很強的可讀性,非測試開發也可審閱和貢獻測試用例。 |
易用性 | 工具的圖形化操作功能比較簡單; |
工具的圖形化操作功能比較簡單; |
用例開發部分采用可視化模式和文本模式兩種方式,根據需要切換。代碼部分使用流行的腳本編輯器。可從用例跳轉到代碼,或從代碼轉到用例文本。 |
使用配置 | 需要安裝一系列工具,並配置licence。 | RFT安裝復雜,配置步驟多。 | 多平台開發支持,包括MacOS、Windows等,開發的腳本還可在Linux上運行。從免費版開始,一定用量需安裝License。 |
腳本語言 | VBS | Java、VB.NET | JavaScript,Node.js |
支持應用
|
默認支持windows控件,VB,和ActiveX; |
默認支持大部分常用的應用程序。 |
支持各類應用包括Windows、移動端、Web、API等。移動端、Web、API等開發時需引入免費的開源庫,無需額外成本。Windows應用測試可跟本公司另一產品LeanRunner結合使用。 |
錄制腳本 | 支持圖形化的操作錄制腳本; |
支持圖形化的操作錄制腳本; |
不提供錄制,Web采用開源方案的對象識別,有豐富的公開文檔,簡單培訓即可了解。Windows支持對象識別,添加到對象管理庫后再自動生成對象調用代碼。 |
參數化 | 支持圖形化的數據表格式數據操作; |
支持指參數化數據; |
支持參數化。內置了行為驅動參數化功能。支持數據驅動,數據表可從外部導入,或將測試用例中已有的數據導出到Excel。 |
測試數據 加載 |
測試數據加載簡單,使用內置函數能方便實現。 | 可以用封裝的方法來動態加載數據,不過比較復雜,而且還得修改腳本中參數化的地方。 | 提供加載數據表的API。 |
對象識別 能力 |
有內置識別的比較標准的控件識別強; |
有內置識別的比較標准的控件識別強; |
對象識別使用了開源庫Selenium的功能。是廣泛使用的成熟方案,支持多種識別方式,包括Id,css, linkText, name, className, xPath等多種方式。 |
手動添加 對象 |
提供樹形的對象選取方式,可以選擇當前節點,也可以選擇父節點或子節點,使用挺方便。 | 提供節點直接選擇和對象遍歷選擇, |
手動添加對象是基於流行的Selenium的對象添加,市場上有眾多的技術人員了解這些添加對象的方式,也有非常多的免費培訓講解。 |
腳本編輯 | 提供步驟編輯界面,方便不會不會編程的人員使用; |
只有腳本編輯器,沒有步驟編輯器; |
集成流行的vscode引擎,類似vscode的腳本編輯器,提供智能提示 |
腳本調試 | HP為QTP加入了VBS調試功能; |
直接使用Eclipse調試Java的強大功能。 | JavaScript的調試方式,無需編譯。另有多種按照場景的調試方式。因為是JavaScript語言,前端工程師也可參與開發調試。 |
回放速度 | 速度比較快。 | 速度一般。 | 采用Node.js引擎,和成熟的Selenium庫,速度較快。 |
結果報告 | 樹形顯示各個步驟的執行情況。 |
提供多種形式的結果顯示。 |
提供多種類型的html報告,其中有按照場景的匯總數據,以及每個場景步驟的詳細數據。每個場景詳細內容可以添加截屏或自定制數據。可以導出到PDF,另提供json報表數據,方便自定制。運行時可以自動錄制視頻。 |
擴展性 | 插件擴展,插件都由UFT廠商提供 | 有Jar包,幾乎就可以擴展。 | 能夠與多種開源的自動化庫相結合使用,擴展自動化功能。因為基於流行的Node.js技術,Github上有眾多數量的JavaScript庫擴展功能。 |
集成性 | 提供了與其他程序結合的接口,對C#、VB和VBS結合性比較好。 |
提供了編寫用例腳本的API,但產品本身功能不易擴展 | 提供多種類型html報表,json報表數據,方便自定制報表,有Jenkins插件支持,可在Jenkins中輕松實現持續集成 |
安全性 | 架構較封閉,不支持提供源碼,安全性無法評估 | 架構較封閉,不支持提供源碼,安全性無法評估 | 基於開源實現,提供執行引擎及自動化庫源碼,便於自主可控 |
價格 | 昂貴 | 較貴 | 一般 |
總結 | 功能全面,價格昂貴,自動化測試腳本生成較快,但對需求的頻繁變化自適應能力差,重新錄制的風險較大,腳本維護困難,回歸持續100%通過率較低。在國內的市場占有率有逐年下降的趨勢。 | RFT 的驗證結構的功能比較強大,通過對 TestObject 的獲取和使用,可以對 Eclipse 中的很多的 SWT/JFace 圖形對象提供支持,而且也可以支持很多的驗證種類;其次,它直觀、易於理解。但RFT驗證 API 的使用繁瑣、可重用性低;也沒有區分各個具體對象類型的差異,造成驗證形式比較單一,從而不利於用戶進行擴展操作;用例執行失敗定位不方便,自動生成的腳本維護較困難。 | 性價比較高,可擴展性強。產品支持Web、接口、Android、IOS、Windows、Qt等。行為驅動讓腳本維護更為方便。開發的腳本基於開源引擎執行,避免了供應商綁定。靈活開放能引入眾多的開源庫和解決方案,易擴展。 |
各軟件在支持的語言、腳本開發、自動化技術、可擴展性、報告方面各有強項。相信大家在進行綜合的比較后。對這幾款工具有了初步的了解。在開源軟件盛行的今天,由單一廠商提供大而全且價格昂貴的產品已不再是潮流,反之,支持開源、開放、提升價值是軟件產品的新的趨勢。
因為篇幅關系,本文只比較了幾款主流工具,如果要參考其它工具,也可填寫類似的表格做詳細的比較分析。