天天看點

常用軟體自動化測試工具彙總

話說自動化測試方面的工具還是非常多的,不可能也沒有必要檢視所有的測試工具,個人覺得當學習衆多同類知識或相關主題時,分幾步走:

1. 學習所有同類知識的共同理論、原理部分【此為共性】

2. 學習所有同類知識的獨有特性、技巧部分【此為個性】

3. 根據具體的實際場景,适當的運用所學知識的【即運用知識的個性部分去解決特定的問題】

學習自動化測試工具也是這樣的,之前不願意學習太多是怕混淆視聽,現在對原有知識已有了一定的固化認識【即了解了基本原理】,也就可以從新學習個性化的東西了;而這一步正是為了以後能夠适當運用所掌握的知識,順利的進行自動化測試任務的開展和實施。其目标達矣!

一、商業工具:

1、kylinTOP:

這是一款國産的自動化測試工具,支援Web和APP的自動化測試,其中元素智能定位是這款自動化軟體主要特點,是設計理念比較超前的測試工具,算是國内衆多自動化測試工具中,做的比較突出的一款。與傳統的RFT和UFT相比,的确有過人之處,算是後起之秀吧。

2、RFT

Rational Functional Tester 的基礎是針對于java、.NET的對象技術和基于 Web 應用程式的錄制、回放功能。工具為測試者的活動提供的自動化的幫助,如資料驅動測試。

IBM RFT是一個用于功能和回歸測試的資料驅動的測試平台。它支援大範圍的應用,例如.Net、Java、SAP、Flex和Ajax。RFT使用Visual Basic。Net和Java作為腳本語言。RFT有一個獨特的功能,稱為 Storyboard 測試,使用者的動作被記錄下來,并通過應用截圖在 Storyboard 格式中可視化。

RFT的另一個有趣特性是它與IBM Jazz應用生命周期管理系統(如IBM Rational Team Concert和Rational Quality Manager)的內建。

3、UFT:

UFT(别名:QuickTest Professional簡稱)QTP是一種自動化測試工具,以VBScirpt為内嵌語言,其前身是QTP。UFT支援功能測試和回歸測試自動化,可用于軟體應用程式和環境的測試。UFT自動化測試的基本功能包括:建立測試、檢驗資料、增強測試、運作測試腳本、分析測試結果、維護測試;UFT支援兩種視圖,一種是Keyword View(關鍵字視圖),另一種是Expert View(專家視圖)。是一款老牌的自動化測試工具。

4、SilkTest:

這個也是比較相對著名的工具,不過同樣還是沒有了解過,對于商業的工具,因為其占地面積大,還要破解等麻煩事,最關鍵的是使用的公司少,是以隻使用過QTP,其它的一概未了解過。

二、開源工具:

1、Selenium:

這個應該大多數人都知道的,現在也是大多數網際網路公司在使用的測試架構;

Selenium僅支援Web的UI級别測試,但是其優點在于:

  1. 支援多種語言編寫測試腳本,比如:java、python、ruby、perl等;同時也就意味着其後的支援類庫也是很多的
  2. 支援多浏覽器,如:ie,ff,safari、chrome等
  3. 支援多平台,如:windows、linux、MAC、android、iphone等
  4. 支援分布式執行,一套測試用例可以同時分布到不同的測試機上執行,而且還可以進行任務細化,比如:針對liunx執行系統隻配置設定linux下需要執行的用例

此外還有錄制工具支援,簡單也說,Web類測試基本上是首選,不過對flash的支援好像不是太好。

其主要分2個版本:1.X版本是以js驅動來進行自動化實作的;2.X重新開發了webdriver來代替js驅動,直接調用浏覽器底層接口來完成自動化實作的

前提:如果使用remote或者RC功能,需安裝jre

2、EFT【easy function testing】:

這個是在.net3.0 的UIAutomatuon的基礎上封裝的一個dll檔案,同樣還封裝了部分windows api以實作滑鼠和鍵盤事件。是以這個隻能叫測試類庫,且僅支援windows程式,而且同樣支援uiautomain所支援的WPF程式的測試。

前提:安裝了.net3.0

使用:引入該檔案,uiautomation 相關dll,VS環境下編寫測試用例

3、UIAutomation:

這個是微軟提供的UI自動化架構,當然它的初衷并不僅僅是為自動化測試而産生的,它的任務是給更多的開發或者應用去調用windows的UI控件,不過還是可以用于自動化測試的;因為之前微軟就有類似的工具,而這個是重新設計的ui操作類架構,其目的是為了相容支援windows系列作業系統的UI自動化操作【xp,vista,server2003】,還有就是天然支援WPF。當然其設計與通常的自動化工具就不一樣了,比如:沒有把控件支援的方法綁定在控件對象本身,沒有提供專門的滑鼠/鍵盤事件,但是卻提供了特定控件對象的事件響應監聽及處理方法的定制。

其工作流程大概是這樣的:

  1. 先擷取特定的元素對象,有多種方法。如:句柄,屬性值
  2. 擷取這個元素對象的模式。模式是這個架構的設計的獨具之處,成就了它的靈活性,統一性
  3. 通過這個模式在進行具體的方法調用,屬性值擷取等
  4. 監聽指定對象的特定事件,一旦發生則執行指定的事件處理函數

4、Robot Framework

Robot Framework是一個完全基于關鍵字測試驅動的架構,它即能夠基于它的一定規則,導入你需要的測試庫(例如:其內建了selenium的測試庫,即可以了解為操作web控件的測試底層庫),然後基于這些測試庫,你能應用HTML、TXT等文檔形式編寫自己的關鍵字(這些關鍵字即你的庫組成),之後,再編寫測試用例(測試用例由測試關鍵字組成)進行測試。例如:一個簡單的登陸測試由 登陸+輸入密碼+登出 三個關鍵字組成,也可以由一個關鍵字登陸組成,關鍵字顆粒的大小可以自行定制。

三、總結

最後才是幹貨,掌握和了解這麼工具為嘛使,不能總是為了好玩,而是為了能在以後的自動化實施過程中用于支援政策的制定;

比如新接收了一個測試項目需要進行自動化實施,那麼需要考慮哪些點?使用哪個工具,有哪些工具可以作為備選?那麼自然就要對常用自動化工具有一個初步的了解,同時對影響自動化過程的其它元素也要有一定的掌握,不過這裡可以跳過,這裡隻是說與工具相關的因素的抉擇。

大體可以分為如下來考慮:

1. 考慮被測試産品的類型,B/S,,C/S,web service,SOAP,SDK或者API;過濾支援某類功能測試的工具

2. 考慮是否支援錄制,可以錄制就相對于說開發效率有較大的提高

3. 考慮工具的價格,通常首選開源或免費産品

4. 考慮工具擴充性,可能某類工具可以支援現在的業務需求,但日後需求有變化的話,是否有很好的擴充性,支援被測産品的新特性,如flex,flash,wpf等

5. 考慮工具的支援性,即後期的更新及版本更新的特性,不要選用即将不再支援的工具

6. 考慮工具的廣泛性,即這個工具在外部的流行程度,這樣以後招人容易,有問題也有較活躍的社群可以求助

7. 考慮工具的成熟性,即這個工具不能還在beta版本,需要有一個較穩定的版本,而且估計較長時間内不會有大版本的更疊

8. 考慮工具的可開發性,即工具是否提供插件接口,用于可以自定義自己的基礎類庫和識别機制

9. 考慮工具的易用性,即是否有強大的背景支援,如windows、.net、java類庫支援

10. 考慮工具的适應性,即是否容易被封裝,可以很容易被嵌入或引入到其它的架構中,比如:功能架構被引入到執行架構中