讓我們先看一下tao專案的工作流程及其三個關鍵組成部分:
圖1. tao專案的工作流程
一、使用者引導的測試用例生成器
對於任何對話方塊,有經驗的軟體測試開發工程師都可以很快給出一些標準gui測試用例。例如,測試乙個輸入框,你可能建立輸入最長和最短字串的測試用例,或者輸入帶有特殊字元但匹配正規表示式的字串,或者輸入帶有unicode的字串。我們將這些經驗歸納成知識基礎,並輸入到測試用例生成器(簡稱tag)中,tag把它們抽象成了模型。然後,使用者只需提供最少的引導,tag會自動完成這些模型的例項化,包括生成gui狀態、gui操作、和測試準則等,並自動生成測試用例和相應測試用例自動化**。測試用例自動化**中包括如何開啟對話方塊,如何發現gui物件,如何實施gui操作,gui物件的輸入資料是否合法,以及測試準則等。這些都會輸入到自動化框架中,從而執行測試自動化。
這裡我們只用簡單的例子來闡述測試用例生成器tag是如何工作的,省去複雜的數學模型和公式的介紹。比如,檢查textbox只接收包含 「.」的「字母數字」字串。如果使用者輸入乙個沒有「.」的字串,在編輯框旁邊會出現乙個錯誤提示圖示。那麼就有:
gui初始狀態:控制項textbox的值為空
gui操作1:輸入字串「abc」給控制項textbox
gui操作1:輸入字串「microsoft.com」 給控制項textbox
gui結果狀態1:textbox的值為「abc」,控制項旁顯示錯誤提示圖示
gui結果狀態2: textbox的值為「microsoft.com」,沒有錯誤提示圖示
那麼tag生成的測試自動化就會去驗證:
gui初始狀態 => 執行gui操作1 => gui變化到結果狀態1,驗證結果
gui初始狀態 => 執行gui操作2 => gui變化到結果狀態2,驗證結果
這裡需要的使用者引導是指出哪些gui物件(比如控制項textbox)和它們的哪些屬性(比如值)需要進行測試。軟體測試開發工程師需要做的是開啟「測試用例自動化生成器」,指向對話方塊中的控制項,指出哪些輸入是合法的,哪些是非法的;我們稱這些是檢測規則。根據這些檢測規則,tag中資料生成器可以為這些控制項隨機生成合法的和非法的資料集,「abc」就是乙個非法輸入。檢測規則包括允許的長度,正規表示式,字符集和型別等各種資訊。圖4顯示乙個xml格式的檢測規則:
圖2. 包含「.」的字母數字字串的測試規則
此外,如果gui的編寫語言支援反射(reflection),那麼可以通過static binary analysis (靜態二進位制分析器)獲得指定對話方塊上所有的控制項,tag可以根據標準的gui測試規則實施靜態二進位制分析,例如:tab order(tab鍵順序), hotkey(快捷鍵),alignment(對齊方式),和truncation(截斷)等。
二、可視樹圖
可視樹圖在這個工具組中扮演聯結者的角色,它提供綜合的、直觀的報告機制。最開始,我們要麼手動要麼自動把需要測試的gui結構表達輸入可視樹圖,從此這個gui結構表達會作為可視樹圖的基石,整個工具集收集到的資料都可以關聯到可視樹圖。從而可視樹圖可以為gui樹的每個節點提供直觀的報告,使用者很容易把它和所測試的gui聯絡起來,如:測試用例報告,自動化報告,test pass 結果報告,**覆蓋率的報告和ui差別的結果報告等。
三、ui差別***
gui 層面,它會通知軟體測試開發工程師gui的結構變化,如:增加或者刪除乙個對話方塊。
源**層面:它會用視覺化形式顯示源**的變化,這些變化可能影響gui的顯示,它也會通知軟體測試開發工程師去注意這些變化。
ui差別***的工作過程:
當軟體的新build發布後,ui差別***會自動執行。
任何結構變化,需要更新的測試用例和測試自動化建議資訊都一起會自動發給軟體測試開發工程師。
任何潛在的**層的改變也會通知軟體測試開發工程師,然後他們會相應評估這些變化對gui的影響。
軟體測試開發工程師更新相關的測試用例和自動化**。
我們的產品中有乙個典型功能,包含110個測試用例,我們使用tao之後看到了顯著的變化。過去乙個軟體測試開發工程師平均兩個小時自動化乙個測試用例,現在使用tao,只需要10分鐘,從而大大提高了測試效率。更進一步,這個工具顯著節省了軟體測試開發工程師原本需要花在對比gui變化上的時間,並告知軟體測試開發工程師測試用例需要的修改和補充。目前,我們正在使用該工具集對乙個有超過2,000個對話方塊的複雜系統上進行測試。
未來我們計畫進一步增加該工具集的通用性,使它可以用於其它產品或網路應用程式,同時也計畫在以下兩個方面擴充套件這個工具集:
第二,從gui bug資料庫中抽取出一些模式(pattern)並定義一些規則。有些bug即使是在ad-hoc測試中也很難發現。通過分析這個bug資料庫,我們希望可以抽取出一些模式並有效地處理這種情況。
王景村(測試經理)、
李敏(測試主管)
TAO 專案 乙個直觀的UI 測試工具集 一
如今,幾乎所有的商業軟體都有乙個圖形使用者介面 gui 從使用者的角度看,乙個直觀的功能正確的gui往往比軟體的功能更重要。根據 a comprehensive framework for testing graphical user inte ces 的統計顯示,gui通常佔總 量的45 60 測...
乙個輕型的效能測試工具 Locust
1.乙個開源的效能測試用具 2.使用python開發 3.使用python編寫使用者行為 官方 安裝1.pip install locustio 2.安裝成功後,用locust v 來驗證 編寫簡單的測試指令碼 httplocust 用來傳送http請求 taskset 定義使用者行為,相當於loa...
c 製作乙個TCP UDP測試工具
目標 使用c 製作乙個簡單的tcp udp測試工具,並且熟悉c 中的socket程式設計,具備tcp客戶端和upd客戶端的功能,並能進行資料收發。知識準備 1 socket為何物?2 c 中需要包含的標頭檔案及用到的api 3 建立乙個tcp連線 udp連線的流程 4 編碼測試,發現問題 socke...