Xebium詳解11-文件軟鏈接的作用

在Xebium目錄結構和頁面類型中,提到每個測試腳本(Wiki頁)都是文件夾里的目錄,用例集也就是目錄下有各個用例(目錄)的父目錄。那麼,如果我們創建文件或者目錄的軟鏈接會發生什麼,如何利用這個特性來應用到測試用例的組織中去呢?

如果接觸過Linux系統,那麼一定對軟鏈接(Symbolic Links)的創建很熟了;對於windows用戶來說,則相當於建立一個目錄或者文件的快捷圖標(.lnk)文件。現在越來越多的人都不再接觸console的命令行界面了,反而很多人熟悉於桌面圖標,但從編程領域來說,接觸並了解命令行模式才能對系統有更深入的了解:)。

先來說說Xebium如何創建軟鏈接(Symbolic Links)吧。

1. 假設我們有一個TestSuite-A(地址為:.testEntry.TestSuite-A),已經完成了相關腳本的編寫,另外我們創建了一個TestSuite-B,還沒有為TestSuite-B寫任何腳本,如圖:

2. 發覺TestSuite-B可以完全重用TestSuite-A的用例集,雖然我們用copy的方式,可以完全實現該目的,但是會有如下情況:a) 我們要修改相關測試腳本,需要同時修改2份文件;b)文件佔用硬碟的容量翻倍。當發現確實有以上的煩惱,那麼可以創建軟鏈接(Symbolic Links)。我們進入到TestSuite-B,點導航欄菜單項Tools->Properties,進入文件屬性設置界面,設置「Symbolic Links」部分,如圖:

在「Symbolic Links」部分,Name隨意,Path to Page需要填入其他測試用例集(或者測試用例)的地址,點Create按鈕即可,如圖:

顯示結果如下:

測試集後面的">"號,用來表明這是Symbolic Link,下方列出的是被引用的測試集下的所有用例(或者說子目錄),但實際的文件目錄下卻沒有相關的文件。


為什麼這裡重點以一章的重點來說呢?因為,利用這個特性,我們可以準備一套用例和不同的配置文件(用到變數的傳遞)來實現多個環境下的回歸測試。

來看看官方給出的示意圖:

看這圖不太容易理解,我們來舉個例來說:

首先我們有測試用例TestCaseA,腳本如下:

| script |

| start browser | ${BROWSER} | on url | ${url} |

| scenario | 登錄測試系統 |

| do | open | on | / |

| do | windowMaximizeAndWait | on | |

| ensure | do | waitForPageToLoad | on | 1000 |

| ensure | do | type | on | !-//input[@type=text]-! | with | ${user} |

| ensure | do | type | on | !-//input[@type=password]-! | with | ${password} |

| ensure | do | clickAndWait | on | id=btn-login |

| script |

| 登錄測試系統 |

以上wiki腳本用於實現打開${BROWSER}變數定義的瀏覽器,代開${URL}定義的地址,然後輸入${user}(用戶名)和${password}(密碼),並點擊登錄按鈕進行登錄。

那麼問題來了,如果我在測試環境和生產環境都想用這套腳本,只是不同的地址,用戶名,密碼,那我是否還需要複製一套並定義變數?答案當然是不需要,我們只要定義一個空的TestSuite(測試環境),然後增加SuiteSetUp(測試環境數據準備),用於自己定義以上變數${BROWSER},${URL},${user}和${password},然後添加Symbolic Link,為TestCaseA添加軟鏈接,這樣,就可以實現為特定的環境設置需要的變數,並採用同一套測試腳本的目的。

同樣的,如果為生產環境,那麼再定義一個TestSuite(生產環境),在SuiteSetUp中把生產環境的值賦給以上四個變數,並用Symbolic Link,執行特定環境配置的相同腳本。

一旦控制項或者空間屬性發生變化,需要維護腳本,那麼以上2個環境也只需要維護TestCaseA的腳本,那麼以上2個環境都會同時生效。是不是更為易用,減少的維護腳本的消耗?其實這種實現,也算是數據驅動測試方法的一種。


推薦閱讀:

Xebium詳解02-安裝部署
Xebium詳解10-Restful調用方式
軟體測試升職經驗分享
Xebium詳解04-wiki語法
Xebium詳解08-API測試

TAG:自動化測試 | 軟體測試 | 軟體測試和開發 |