1. 程式人生 > >自動化測試框架STAF介紹

自動化測試框架STAF介紹

bash get 快速 rbo 支持 keyword i386 ref 外部

STAF全稱是Software Testing Automation Framework,如其官網(http://staf.sourceforge.net/)所說,STAF是一個開源、跨平臺、支持多語言的自動化測試框架,它圍繞於組件重用的理念,通過服務調用(比如Process Service、Resource Manage Service、Logging Service、Monitoring Service等)幫助我們省去繁瑣的跨平臺的自動化框架的建設工作,而我們只需集中精力在自身自動化實施上。

簡而言之,STAF就是一個在不同機器、不同的操作系統之間提供一個溝通通訊的平臺。STAF利用其開源的優勢,經歷了最近幾年的發展,已經越來越成熟,其具有以下特點:
1. 簡單易用,可快速搭建一個跨平臺自動化測試環境。
2. 開源,易於擴展,用戶可以方便的在STAF中創建一個新的服務。
3. 環境要求低。支持多種平臺多種操作系統。
4. 支持多種語言,可以在Java,Linux Shell , C/C++,Python,Perl等各種語言中調用

一、原理

假設我們有2臺機器 A和B,A是主控機,如下圖所示:
技術分享圖片

由上圖可以看出,機器A和B都安裝了STAF,並且相互配置了信任關系。那麽用戶就可以通過在機器A上調用STAF的Service 來實現與機器B的相互通訊。如傳輸文件、操作機器B等等。所以,STAF的作用實際上就是提供機器之間的通信通道並提供基於這個通道的基礎服務。

二、多層封裝概念

通過上面的介紹,我們了解了STAF是一個可重用並對各種應用提供廣泛支持的基礎框架。於是,就有了根據不同應用產生的不同封裝。比如我們構造了一個復雜的分布式測試環境,我們可以單獨通過STAF將我們的測試任務分發到不同的測試環境去執行,但如果測試任務太多,並且是不斷添加新的任務的進來,單獨依靠STAF就不利於測試任務的執行、管理與維護了。從而也就引入STAX的概念。如下圖所示:

技術分享圖片

由上圖可以看出,機器A安裝了STAF/STAX,那麽用戶可以把一批STAF Service調用通過XML格式寫在一個文檔裏,然後由STAX調用這個文檔並翻譯成STAF Service通過STAF傳遞給機器B執行。

另外,在實際測試中,有些工作光靠STAF是完不成的。我們往往需要利用一些工具來完成自動化測試。如Robot。這就需要提供一個自動化測試工具與STAF框架之間的接口。SAFS(Software Automation Framework Support)就是幹這個的。在SAFS裏,引入了關鍵字驅動(keyword-driven)和數據驅動(Data-Driven)的概念。通俗點說,SAFS就是為了給第三方軟件提供支持,將一些常用動作(Action)進行封裝。並提供對大量數據操作的接口。如下圖:

技術分享圖片

目前基於SAFS的成熟應用接口是RRAFS(Rational Robot Automation Framework Support)。現在已經支持下列第三方軟件:

IBM Rational Robot

IBM Rational Functional Tester

SAFS Image-Based Testing

Mercury Interactive WinRunner

三、服務(Services)

1. 服務(Services)概念:STAF是基於服務(Services)來構建自動化框架的,服務就是STAF的可重用組件,服務還是一系列功能的集合。 STAF是一個後臺程序,在STAF中使用的所有組件都是服務,STAF提供輕量級分發機制,負責將請求轉發給這些服務。

STAF中服務分兩種:Internal (內部服務)和 External(外部服務)。內部服務被集成進 STAFProc,提供一些關鍵性的功能,比如數據管理與同步,外部服務則由 STAFProc 動態裝入,通過共享庫(shared libraries)來訪問。

2. STAF 常見服務列表:

2.1 Delay Service: 內部服務,在調用的程序傳遞返回值前等待一個指定的時間
2.2 Diagnostics (DIAG) Service :內部服務,用於記錄或者列出診斷數據
2.3 Echo Service :內部服務,提供類似於Ping服務的功能,不同的是Echo允許返回指定的字符
2.4 File System (FS) Service :內部服務,可以對文件進行復制、刪除、查看等操作
2.5 Log Service :外部服務,用於日誌的記錄和查看
2.6 Monitor Service :外部服務,提供運行監控功能
2.7 Ping Service :內部服務,用來檢測遠程STAF是否在運行
2.8 Process Service :內部服務,用來調用外部程序,如調用windows 命令 CMD/NOTEPAD等。
2.9 Resource Pool (ResPool) Service :外部服務,提供查看、創建、刪除等針對資源池的管理或操作
2.10 Semaphore (SEM) Service :內部服務,提供mutex和event信號操作
2.11 Zip Service :外部服務,提供壓縮與解壓操作

STAF基礎用法及簡單配置

1. 基礎用法
STAF [-verbose] <Endpoint> <Service> <Request>
-verbose 指定輸出采用verbose模式,verbose是一種數據結構
<Endpoint> 操作對象IP。指定目標STAF系統,由STAFProc解析以便確定是在本地處理還是發送到遠端STAF系統。本機的話可直接寫local。
<Service> 指定要調用的服務
<Request> 調用服務的所需的參數
STAF的返回值:當服務處理結束將返回兩類數據,一是表示服務處理結果的返回碼既服務是成功還是失敗,二是該服務返回的特定數據。

2. STAF的簡單安裝配置

我們假設有2臺機器,機器A是windows機器,IP是10.2.5.100,機器B是Linux機器,IP是10.2.5.101

1. 安裝包下載
從http://staf.sourceforge.net/getcurrent.php 下載所需安裝包,有Windows、Linux、Solaris、Mac等不同平臺不同的版本的安裝包。如果機器上未安裝JDK,可以下載含JDK的安裝包。

2. Windows 下的安裝
2.1 在windows平臺上,雙擊STAF的安裝包,按照提示進行安裝即可.
2.2 修改STAF安裝目錄/STAF/bin中的STAF.cfg文件,配置機器間的信任關系。把Linux機器的IP配置進config文件。如下:

  1. # Set default local trust

  2. trust machine local://local level 5

  3. trust machine 10.2.5.101 level 5

2.3 重新啟動STAFProc
2.4 在CMD下鍵入下列命令來確認STAF已經安裝正確:
staf local service list

3. Linux 下的安裝
註意,有的Linux版本需要先安裝C庫,否則STAF起不來。參考下載地址:
http://rpm.pbone.net/index.php3/stat/4/idpl/2790009/com/libstdc++-3.4.5-2.i386.rpm.html
Linux下的STAF有兩種安裝模式,一種是直接下載bin包進行安裝,另一種則是下載tar包進行安裝,以tar包安裝為例:
3.1. 解壓安裝包:
tar xzvf STAF331-linux.tar.gz
3.2 解壓後會出現一個STAF文件夾,進入該文件夾
./STAFInst
進行安裝,默認會被安裝到/usr/local/staf下

3.3 配置環境變量,將下列代碼加入到要運行STAF的用戶名目錄下.bash_profile文件裏:

copy

  1. PATH=/usr/local/staf/bin:$PATH

  2. export PATH

  3. LD_LIBRARY_PATH=/usr/local/staf/lib

  4. export LD_LIBRARY_PATH

  5. CLASSPATH=/usr/local/staf/lib/JSTAF.jar:/usr/local/staf/samples/demo/STAFDemo.jar

  6. export CLASSPATH

  7. STAFCONVDIR=/usr/local/staf/codepage

  8. export STAFCONVDIR

  9. STAFCODEPAGE=LATIN_1

  10. export STAFCODEPAGE

3.4 修改STAF安裝目錄/usr/local/staf/bin目錄下的STAF.cfg文件,配置機器間的信任關系。把Windows機器的IP配置進config文件

  1. # Set default local trust

  2. trust machine local://local level 5

  3. trust machine 10.2.5.100 level 5

3.5 啟動STAFProc
守護進程啟動STAFProc輸出log到stafproc.out nohup /usr/local/staf/bin/STAFProc > /usr/local/staf/stafproc.out

3.6 確認STAF已經安裝正確:
staf local service list

4. 測試機器A、B的STAF是否配置成功
在機器B上輸入如下命令,執行後機器B則會啟動記事本:
STAF 10.2.5.100 PROCESS START COMMAND notepad

自動化測試框架STAF介紹