專利名稱:一種軟件自動化測試系統(tǒng)及方法
技術領域:
本發(fā)明涉及一種軟件自動化測試系統(tǒng)及方法,具體地說,涉及基于圖形視圖的軟件自動化測試系統(tǒng)及方法,通過該系統(tǒng)或方法,用戶可以很輕松地完成絕大多數(shù)類型軟件的自動化功能測試。
背景技術:
傳統(tǒng)的軟件自動化測試工具或框架都是以純代碼的形式實現(xiàn)業(yè)務流程控制,這導致了以下幾個問題開發(fā)和維護測試腳本的成本很高;實施自動化測試對工程師的編碼能力有著很苛刻的要求;只能采用函數(shù)封裝或類封裝的方法實現(xiàn)腳本分層,增加了腳本的復雜程度。正因為這些原因,許多項目團隊對軟件自動化測試望而卻步。使用本發(fā)明提出的基于圖形視圖的軟件自動化測試框架平臺及方法,用戶可以將每一個步驟封裝在一個獨立的、基于圖形視圖的業(yè)務節(jié)點中,這些節(jié)點可以在測試場景界面中隨意拖動,通過添加有向連線進行連接,從而構建出一個完整的業(yè)務流程。業(yè)務節(jié)點可以在當前場景或不同場景中隨意復制粘貼,只要簡單修改連線順序就可以構建一個新的業(yè)務流程。這種業(yè)務流程構建方式就像繪制流程圖一樣直觀和方便。另外,參數(shù)化是自動化測試中一個非常重要的環(huán)節(jié)。使用傳統(tǒng)工具實現(xiàn)這一工作往往十分繁瑣,需要設置很多選項,并使腳本變得復雜和難以維護。使用本發(fā)明提出的基于圖形視圖的軟件自動化測試框架平臺及方法,參數(shù)化可以簡單地通過拖動鼠標,繪制一個循環(huán)體的方式實現(xiàn)(循環(huán)體的覆蓋范圍就是參數(shù)化的作用范圍)。接下來只要在循環(huán)體對應的數(shù)據(jù)表格中填入?yún)?shù)名稱和數(shù)值,參數(shù)化就完成了。最后,傳統(tǒng)的軟件自動化測試工具一般根據(jù)對象的句柄等屬性值來進行對象識別,而且對于不同的對象類型,往往需要不同的插件支持。對于一些采用了非標準控件的被測程序,傳統(tǒng)工具就顯得力不從心了。而在本發(fā)明提出的基于圖形視圖的軟件自動化測試框架平臺及方法中,對象識別是采用先進的計算機視覺技術來完成的,這不僅使得自動化測試腳本的開發(fā)和維護難度大大降低,還使得傳統(tǒng)自動化測試方法中讓人頭痛的跨應用對象識別、非標準對象識別、結果捕獲等問題得以迎刃而解。
發(fā)明內容
本發(fā)明的軟件自動化測試系統(tǒng)包括腳本編輯模塊、場景組織模塊、參數(shù)化模塊、 調試和運行模塊、測試報告輸出模塊。所述腳本編輯模塊提供一個標準的文本編輯界面,借此可快捷輸入自動化測試常用函數(shù);腳本編輯模塊還允許用戶使用復制粘貼或拖放的方式在腳本中加入圖片;另外, 通過腳本編輯模塊還可以快速截圖,使得腳本中圖像片段的獲取、存儲和處理更加方便。場景組織模塊提供一個用于搭建測試場景的圖形視圖界面,借此可以創(chuàng)建多種圖形元素,并且可以拖動、復制、剪切、粘貼、刪除該圖形元素,還可以將多個圖形元素用有向連線連接起來,從而構成一個完整的測試過程。所述場景組織模塊的核心父類是Qt ( 一種跨平臺的C++圖形用戶界面庫)中用于組織二維圖元的QGraphicdcene類(用于組織二維圖元的類)。參數(shù)化模塊提供參數(shù)表格編輯界面,借此可以進行參數(shù)信息導入、導出、循環(huán)次數(shù)設定、參數(shù)表格規(guī)模設定。所述參數(shù)化模塊中表達參數(shù)表格的核心父類是Qt中QTextTable 類(用于表達參數(shù)表格的類)。調試和運行模塊能夠整合處理場景中的腳本信息,生成Python (—種面向對象、 直譯式計算機程序設計語言)腳本文件和圖片文件,并調用外部接口運行腳本。測試報告輸出模塊提供輸出測試結果的專用函數(shù),并依據(jù)用戶的需要生成 HTML (Hypertext Markup Language,即超文本標記語言,是用于描述網頁文檔的一種標記語言)格式的測試報告文件和文本格式的測試腳本運行日志文件。所述測試報告輸出模塊具有維護框架平臺的日志文件的功能。根據(jù)本發(fā)明的軟件自動化測試系統(tǒng),其基于圖形視圖的軟件自動化測試方法包括如下步驟步驟1,場景組織模塊進行業(yè)務流分解;步驟2,腳本編輯模塊開發(fā)業(yè)務節(jié)點;步驟3,場景組織模塊構建業(yè)務流;步驟4,對腳本進行必要的參數(shù)化(由參數(shù)化模塊、調試和運行模塊完成);步驟5,調試和運行模塊調試運行業(yè)務流;步驟6,測試報告輸出模塊輸出測試報告。以上步驟與各模塊的對應關系如圖14所示。在所述步驟1中,為了提高腳本的可復用性,或是為了實現(xiàn)協(xié)作式開發(fā),首先通過場景組織模塊,把一個業(yè)務流程分解為N個步驟,每個步驟用一個業(yè)務節(jié)點來封裝和實現(xiàn); 分解的策略和顆粒度完全由用戶根據(jù)實際需要決定。在所述步驟2中,完成業(yè)務流程分解后,在測試場景中加入業(yè)務節(jié)點,在腳本編輯模塊提供的腳本編輯界面上開發(fā)可視化測試腳本。所述腳本遵循Python 2. 5格式規(guī)范,在腳本中可以使用任何Python 2. 5支持的系統(tǒng)函數(shù)或純Python模塊。腳本編輯模塊在SIKULI API (基于圖像腳本語言SIKULI的一套應用程序編程接口)的基礎上擴展了一批自動化測試專用函數(shù),形成了獨有的一套 APKApplication Programming hterface,應用程序編程接口),其中的所有函數(shù)均在腳本編輯界面上以快捷方式的形式列出,雙擊鼠標即可在腳本中加入指定的函數(shù)。在使用SIKULI API函數(shù)的時候,可以將硬盤中的圖片文件(支持常見的png、jpg、 gif、bmp等格式)復制粘貼、拖動到腳本中作為函數(shù)的參數(shù);也可以將其它格式文檔(如 Word, PowerPoint)中的圖像片段以復制粘貼的方式插入到腳本中。開發(fā)完成的可視化測試腳本如圖2所示。此外,腳本編輯模塊還提供了快速截圖功能,使得腳本中圖像片段的獲取、存儲和處理更加方便。快速截圖功能示意圖如圖3所示。腳本編輯模塊的核心父類是Qt中用于純文本或富文本編輯的QTextEdit類(用于純文本或富文本編輯的類)。在所述步驟3中,完成業(yè)務節(jié)點中腳本的開發(fā)后,可以在場景組織模塊提供的圖形視圖界面中將多個業(yè)務節(jié)點用有向連線連接起來,從而構建一個完整的業(yè)務流。構建完成的業(yè)務流如圖4所示。場景組織模塊的核心父類是Qt中用于組織二維圖元的QGraphicdcene 類。場景中的業(yè)務節(jié)點、有向連線、循環(huán)體等的核心父類是Qt中用于表示二維圖元的 QGraphicsItem類(用于表示二維圖元的類)。在所述步驟4中,完成業(yè)務流的構建后,可以根據(jù)測試的需要,使用參數(shù)化模塊對腳本進行必要的參數(shù)化。在測試場景中繪制一個循環(huán)體,通過縮放、移動等操作調整其覆蓋范圍,將與參數(shù)化有關的業(yè)務節(jié)點包含在這一范圍內,如圖5所示;之后雙擊循環(huán)體打開參數(shù)表格編輯界面,編輯各個參數(shù)的名稱和取值,如圖6所示;最后修改業(yè)務節(jié)點中的腳本,將需要參數(shù)化的常量替換為參數(shù)名。參數(shù)化模塊中表達參數(shù)表格的核心父類是Qt中QTextTable類。為了實現(xiàn)循環(huán)嵌套,每一個業(yè)務節(jié)點對象中都有一個循環(huán)體列表,記錄該業(yè)務節(jié)點在哪些循環(huán)體范圍內。在生成可執(zhí)行的Python腳本時,調試和運行模塊將根據(jù)各個業(yè)務節(jié)點的循環(huán)體列表計算出循環(huán)的作用范圍,確定語句的縮進量,并在Python腳本中加入FOR循環(huán)結構(Python中用于流程控制的一種語法結構)。這一算法的原理示意圖如圖7所示。在所述步驟5中,完成必要的參數(shù)化之后,運行整個業(yè)務流。調試和運行模塊將業(yè)務流中各個業(yè)務節(jié)點的腳本信息整合起來,加入API函數(shù)定義、Python模塊引入、異常處理等信息,生成臨時腳本文件和臨時圖片文件。之后調用SIKULI (—種圖形腳本語言)腳本運行接口來執(zhí)行腳本。調試和運行模塊的工作流程如圖8所示。在業(yè)務流運行完成后,在步驟6中,測試報告輸出模塊將根據(jù)用戶需要生成一份 HTML格式的測試報告(是否生成報告取決于業(yè)務流中是否加入了報告節(jié)點),將腳本中報告函數(shù)(包括testfassed、testFailed, testlnfo)定義的測試結果信息打印到測試報告中。生成的測試報告如圖9所示。另外測試報告輸出模塊還負責維護框架平臺的日志文件。日志文件中的信息有以下兩種腳本運行中產生的所有異常信息;用戶使用printLog函數(shù)自定義的日志信息。日志文件的保存位置為框架平臺臨時目錄SF temp下的log文件夾,單個日志文件只保存當天的運行日志信息,日志文件名即當天日期,如“2011-05-16. log”。
圖1為本發(fā)明的軟件自動化測試系統(tǒng)結構方框圖;圖2為在本發(fā)明基于圖形視圖的軟件自動化測試系統(tǒng)平臺上開發(fā)的可視化測試腳本示例;圖3為本發(fā)明基于圖形視圖的軟件自動化測試框架系統(tǒng)提供的快速截圖功能使用示例;圖4為在本發(fā)明基于圖形視圖的軟件自動化測試系統(tǒng)平臺上搭建的業(yè)務流示例;圖5為在本發(fā)明基于圖形視圖的軟件自動化測試系統(tǒng)平臺上實現(xiàn)參數(shù)化的操作示例;圖6為本發(fā)明基于圖形視圖的軟件自動化測試系統(tǒng)平臺提供的參數(shù)表格編輯窗口示意圖7為本發(fā)明基于圖形視圖的軟件自動化測試系統(tǒng)平臺根據(jù)圖形視圖生成腳本循環(huán)結構的算法示意圖;圖8為本發(fā)明基于圖形視圖的軟件自動化測試系統(tǒng)平臺的調試和運行模塊的工作流程圖;圖9為本發(fā)明基于圖形視圖的軟件自動化測試系統(tǒng)平臺生產的測試報告示例;圖10為本發(fā)明的軟件自動化測試方法流程圖;圖11為示例業(yè)務流程的說明;圖12為本發(fā)明基于圖形視圖的軟件自動化測試框架平臺實現(xiàn)循環(huán)嵌套的場景示意圖;圖13為在業(yè)務流中加入報告節(jié)點的示意圖;圖14為本發(fā)明的軟件自動化測試方法各個步驟與執(zhí)行該步驟的各模塊的對應關系圖。
具體實施例方式本發(fā)明中使用到的部分術語圖元指測試場景中的圖形視圖構件,圖元的種類目前有業(yè)務節(jié)點、有向連線、循環(huán)體三種。在本發(fā)明的基于圖形視圖的軟件自動化測試框架平臺中,對圖元的操作類似于在Visio 等流程圖軟件中對圖形組件的操作。業(yè)務節(jié)點指測試場景中的一種圖元,可以通過鼠標拖放改變其位置。業(yè)務節(jié)點中包含腳本信息。一個業(yè)務節(jié)點可以對應一個測試步驟、一個測試用例或一個子業(yè)務流程,顆粒度的劃分由用戶根據(jù)需要決定。業(yè)務流指由一系列業(yè)務節(jié)點通過有向連線連接起來所形成的節(jié)點序列,代表由這些業(yè)務節(jié)點組裝而成的一個完整的業(yè)務流程。一個業(yè)務流中最少有兩個業(yè)務節(jié)點,而且具有唯一的起點和終點。報告節(jié)點一種特殊的業(yè)務節(jié)點。將其加入業(yè)務流的唯一目的是在運行業(yè)務流后,生成一份 HTML格式的測試報告。循環(huán)體指測試場景中的一種圖元,外觀為矩形,可以通過拖拽四角和四邊中點改變其形狀,也可以通過鼠標拖放改變其位置。循環(huán)體中包含腳本的參數(shù)信息和循環(huán)執(zhí)行次數(shù)配置信息,其作用域由其在場景中的覆蓋區(qū)域決定。有向連線指測試場景中的一種圖元,外形為直線型箭頭。在本發(fā)明的基于圖形視圖的軟件自動化測試框架平臺中,用這種圖元連接兩個業(yè)務節(jié)點,表示這兩個節(jié)點在業(yè)務流上的先后關系。循環(huán)體層級
指循環(huán)體在圖形視圖上的層次水平,層級高的循環(huán)體會覆蓋層級低的循環(huán)體。在本發(fā)明的基于圖形視圖的軟件自動化測試框架平臺中,用層級表示循環(huán)的內外層嵌套關系,層級越高的循環(huán)體其嵌套深度也越大。場景編輯模式指某種特定的場景編輯效果。一般通過工具欄來選擇和切換。在本發(fā)明的基于圖形視圖的軟件自動化測試框架平臺中,目前提供五種場景編輯模式,包括默認模式、增加業(yè)務節(jié)點模式、連線模式、增加循環(huán)模式、增加報告節(jié)點模式。腳本層和場景層在本發(fā)明的基于圖形視圖的軟件自動化測試框架平臺中,自動化測試工程的建設分為兩個層次腳本層和場景層。腳本層的主要任務是開發(fā)測試腳本,實現(xiàn)諸如鼠標點擊、 鍵盤輸入、輸出觀察等一系列基本的測試動作,從而完成一個相對獨立的業(yè)務環(huán)節(jié);場景層的主要任務是通過圖形視圖的手段將一系列業(yè)務節(jié)點聯(lián)系起來,構成一條完整的業(yè)務流, 并完成參數(shù)化和循環(huán)設置,以實現(xiàn)一個或多個完整的測試過程。SIKULI在自動化軟件測試領域中應用計算機視覺技術,是近兩年來在業(yè)界逐漸引起關注的一個前沿課題,并且已經出現(xiàn)了一些成功的案例——SIKULI正是其中的優(yōu)秀典范。這個開源項目提供了一套用于可視化編程的API,使得“用截圖來編程”成為了可能。如圖1所示,本發(fā)明的基于圖形視圖的軟件自動化測試框架平臺包括腳本編輯模塊、場景組織模塊、參數(shù)化模塊、調試和運行模塊、測試報告輸出模塊。該框架平臺的開發(fā)基于 Qt 4. 7. O0腳本編輯模塊給出了一個標準的文本編輯界面,并在此基礎上提供了自動化測試常用函數(shù)快捷輸入功能,鼠標雙擊函數(shù)快捷方式即可在腳本中插入此函數(shù);腳本編輯模塊還允許用戶使用復制粘貼或拖放的方式在腳本中加入圖片;另外,腳本編輯模塊還提供了快速截圖功能,使得腳本中圖像片段的獲取、存儲和處理更加方便。場景組織模塊給出了一個用于搭建測試場景的圖形視圖界面,在這里用戶可以創(chuàng)建多種圖形元素,并對圖形元素進行拖動、復制、剪切、粘貼、刪除等操作,還可以將多個圖形元素(每個圖形元素代表一定的測試步驟或內容)用有向連線連接起來,從而構成一個完整的測試過程。所述場景組織模塊的核心父類是Qt中用于組織二維圖元的 QGraphicsScene 類。參數(shù)化模塊給出了一個參數(shù)表格編輯界面,并提供參數(shù)信息導入、導出、循環(huán)次數(shù)設定、參數(shù)表格規(guī)模設定等功能。所述參數(shù)化模塊中表達參數(shù)表格的核心父類是Qt中 QTextTable 類。調試和運行模塊用于對場景中的腳本信息進行整合處理,生成Python腳本文件和圖片文件,并調用外部接口運行腳本。測試報告輸出模塊提供了輸出測試結果的專用函數(shù),并依據(jù)用戶的需要生成HTML 格式的測試報告文件和文本格式的測試腳本運行日志文件。所述測試報告輸出模塊具有維護框架平臺的日志文件的功能。如圖10所示,本發(fā)明的軟件自動化測試系統(tǒng),其基于圖形視圖的軟件自動化測試方法包括如下步驟
步驟1,業(yè)務流分解(由場景組織模塊完成);步驟2,開發(fā)業(yè)務節(jié)點(由腳本編輯模塊完成);步驟3,構建業(yè)務流(由場景組織模塊完成);步驟4,參數(shù)化(由參數(shù)化模塊、調試和運行模塊完成);步驟5,調試和運行模塊調試運行業(yè)務流;步驟6,測試報告輸出模塊輸出測試報告。以上步驟與各模塊的對應關系如圖14所示。在所述步驟1中,為了提高腳本的可復用性,或是為了實現(xiàn)協(xié)作式開發(fā),用戶可以首先把一個業(yè)務流程分解為N個步驟,每個步驟用一個業(yè)務節(jié)點來封裝和實現(xiàn)。分解的策略和顆粒度完全由用戶根據(jù)實際需要決定。在所述步驟2中,完成業(yè)務流程分解后,用戶可以在測試場景中加入業(yè)務節(jié)點,在腳本編輯模塊提供的腳本編輯界面上開發(fā)可視化測試腳本。腳本遵循Python 2. 5格式規(guī)范,用戶可以在腳本中使用任何Python 2. 5支持的系統(tǒng)函數(shù)或純Python模塊。腳本編輯模塊在SIKULI API的基礎上擴展了一批自動化測試專用函數(shù),形成了自己獨有的一套API, 其中的所有函數(shù)均在腳本編輯界面上以快捷方式的形式列出,雙擊鼠標即可在腳本中加入指定的函數(shù)。在使用SIKULI API函數(shù)的時候,用戶可以通過復制粘貼、拖動等方式將硬盤中的圖片文件(支持常見的png、jpg、gif、bmp等格式)直接插入到腳本中作為函數(shù)的參數(shù);也可以將其它格式文檔(如Word、PowerPoint)中的圖像片段以復制粘貼的方式插入到腳本中。開發(fā)完成的可視化測試腳本如圖2所示。此外,腳本編輯模塊還提供了快速截圖功能,使得腳本中圖像片段的獲取、存儲和處理更加方便??焖俳貓D功能示意圖如圖3所示。腳本編輯模塊的核心父類是Qt中用于純文本或富文本編輯的QTextEdit類。完成業(yè)務節(jié)點中腳本的開發(fā)后,用戶可以在場景組織模塊提供的圖形視圖界面中將多個業(yè)務節(jié)點用有向連線連接起來,從而構建一個完整的業(yè)務流。構建完成的業(yè)務流如圖4所示。場景組織模塊的核心父類是Qt中用于組織二維圖元的QGraphicdcene 類。場景中的業(yè)務節(jié)點、有向連線、循環(huán)體等的核心父類是Qt中用于表示二維圖元的 QGraphicsItem 類。完成業(yè)務流的構建后,在所述步驟4中,用戶可以根據(jù)測試的需要對腳本進行必要的參數(shù)化。這時用戶可以在測試場景中繪制一個循環(huán)體,通過縮放、移動等操作調整其覆蓋范圍,將與參數(shù)化有關的業(yè)務節(jié)點包含在這一范圍內,如圖5所示;之后雙擊循環(huán)體打開參數(shù)表格編輯界面,編輯各個參數(shù)的名稱和取值,如圖6所示;最后修改業(yè)務節(jié)點中的腳本,將需要參數(shù)化的常量替換為參數(shù)名。參數(shù)化模塊中表達參數(shù)表格的核心父類是Qt中 QTextTable 類。為了實現(xiàn)循環(huán)嵌套,每一個業(yè)務節(jié)點對象中都有一個循環(huán)體列表,記錄該業(yè)務節(jié)點在哪些循環(huán)體范圍內。在生成可執(zhí)行的Python腳本時,調試和運行模塊將根據(jù)各個業(yè)務節(jié)點的循環(huán)體列表計算出循環(huán)的作用范圍,確定語句的縮進量,并在Python腳本中加入 FOR循環(huán)結構。這一算法的原理示意圖如圖7所示。完成必要的參數(shù)化之后,在所述步驟5中,用戶就可以運行整個業(yè)務流了。調試和運行模塊將業(yè)務流中各個業(yè)務節(jié)點的腳本信息整合起來,加入API函數(shù)定義、Python模塊引入、異常處理等信息,生成臨時腳本文件和臨時圖片文件。之后調用SIKULI腳本運行接口來執(zhí)行腳本。調試和運行模塊的工作流程如圖8所示。在業(yè)務流運行完成后,在所述步驟6中,測試報告輸出模塊將根據(jù)用戶需要生成一份HTML格式的測試報告(是否生成報告取決于業(yè)務流中是否加入了報告節(jié)點),將腳本中報告函數(shù)(包括testfassecUtestFailecUtesthfo)定義的測試結果信息打印到測試報告中。生成的測試報告如圖9所示。另外測試報告輸出模塊還負責維護框架平臺的日志文件。日志文件中的信息有以下兩種腳本運行中產生的所有異常信息;用戶使用printLog 函數(shù)自定義的日志信息。日志文件的保存位置為框架平臺臨時目錄SF_temp下的log文件夾,單個日志文件只保存當天的運行日志信息,日志文件名即當天日期,如“2011-05-16. log,,。現(xiàn)舉例說明如下用戶要對一個網上銀行繳納電話費的交易流程進行自動化測試。首先對這個業(yè)務流程進行分解,將其劃分為“登錄”、“查詢”、“交易”、“退出”四個步驟。 各個步驟的操作說明和預期結果如圖11所示。用戶為每一個步驟創(chuàng)建一個業(yè)務節(jié)點,在腳本編輯模塊提供的腳本編輯界面上開發(fā)可視化測試腳本,以實現(xiàn)該步驟對應的操作和結果檢查。完成的腳本如圖2所示。編寫腳本的過程中,用戶可以隨時調用調試與運行模塊執(zhí)行當前業(yè)務節(jié)點中的腳本。調試與運行模塊將根據(jù)腳本信息生成臨時Python腳本文件和臨時圖片文件,繼而調用SIKULI腳本運行接口來執(zhí)行腳本。完成各個業(yè)務節(jié)點的開發(fā)后,用戶需要在場景組織模塊提供的圖形視圖界面中將這四個業(yè)務節(jié)點用有向連線連接起來,從而構建一個完整的業(yè)務流。構建完成的業(yè)務流如圖4所示。如果用戶希望測試多個月份的繳費情況,則需要對“查詢”、“交易”兩個業(yè)務節(jié)點中的月份信息進行參數(shù)化。這時用戶可以在測試場景中繪制一個循環(huán)體,將“查詢”和“交易”兩個業(yè)務節(jié)點囊括在循環(huán)區(qū)域內,如圖5所示;然后,用戶可以雙擊循環(huán)體打開參數(shù)表格編輯界面,編輯月份參數(shù)的名稱和取值,如圖6所示;最后修改業(yè)務節(jié)點中的腳本,將月份常量替換為參數(shù)名“time”。如果用戶還希望測試這樣的情形多個不同用戶分別對多個時間段進行繳費。這不僅意味著需要將“登陸”節(jié)點中的用戶名和密碼進行參數(shù)化,還意味著需要實現(xiàn)循環(huán)嵌套。這時,用戶可以通過在上面場景的基礎上再添加一重循環(huán)體(循環(huán)嵌套的內外層關系是通過循環(huán)體在視圖上的層級關系來表達的),如圖12所示。至此,用戶就可以運行整個業(yè)務流了。調試和運行模塊將業(yè)務流中各個業(yè)務節(jié)點的腳本信息整合起來,加入API函數(shù)定義、Python模塊引入、異常處理等信息,生成臨時腳本文件和臨時圖片文件。之后調用SIKULI腳本運行接口來執(zhí)行腳本。調試和運行模塊的工作流程如圖8所示。如果用戶希望在運行業(yè)務流之后生成一份測試報告,則需要在業(yè)務流中加入報告節(jié)點,如圖13所示。測試報告將根據(jù)用戶在腳本中的設定輸出測試結果信息。
權利要求
1.一種基于圖形視圖的軟件自動化測試系統(tǒng),其特征在于包括腳本編輯模塊、場景組織模塊、參數(shù)化模塊、調試和運行模塊、測試報告輸出模塊。
2.根據(jù)權利要求1所述的軟件自動化測試系統(tǒng),其中,所述腳本編輯模塊提供一個標準的文本編輯界面,借此能夠快捷輸入自動化測試常用函數(shù);所述腳本編輯模塊允許用戶使用復制粘貼或拖放的方式在腳本中加入圖片,通過腳本編輯模塊能夠快速截圖,使得腳本中圖像片段的獲取、存儲和處理更加方便。
3.根據(jù)權利要求1所述的軟件自動化測試系統(tǒng),其中,所述的場景組織模塊提供一個用于搭建測試場景的圖形視圖界面,借此創(chuàng)建多種圖形元素,并且能夠拖動、復制、剪切、粘貼、刪除該圖形元素,還能夠將多個圖形元素用有向連線連接起來,從而構成一個完整的測試過程;所述場景組織模塊的核心父類是Qt中的QGraphicdcene類。
4.根據(jù)權利要求1所述的軟件自動化測試系統(tǒng),其中,所述的參數(shù)化模塊提供參數(shù)表格編輯界面,借此進行參數(shù)信息導入、導出、循環(huán)次數(shù)設定、參數(shù)表格規(guī)模設定;所述參數(shù)化模塊的核心父類是Qt中QTextTable類。
5.根據(jù)權利要求1所述的軟件自動化測試系統(tǒng),其中,所述的調試和運行模塊能夠整合處理場景中的腳本信息,生成Python腳本文件和圖片文件,并調用外部接口運行腳本。
6.根據(jù)權利要求1所述的軟件自動化測試系統(tǒng),其中,所述的測試報告輸出模塊提供輸出測試結果的專用函數(shù),并依據(jù)用戶的需要生成HTML格式的測試報告文件和文本格式的測試腳本運行日志文件;所述測試報告輸出模塊具有維護框架平臺的日志文件的功能。
7.一種基于圖形視圖的軟件自動化測試方法,其特征在于包括如下步驟 步驟1,場景組織模塊進行業(yè)務流分解;步驟2,腳本編輯模塊開發(fā)業(yè)務節(jié)點; 步驟3,場景組織模塊構建業(yè)務流; 步驟4,對腳本進行必要的參數(shù)化; 步驟5,調試和運行模塊調試運行業(yè)務流; 步驟6,測試報告輸出模塊輸出測試報告。
8.根據(jù)權利要求7所述的軟件自動化測試方法,其中,在所述步驟1中,為了提高腳本的復用性,或是為了實現(xiàn)協(xié)作式開發(fā),首先通過場景組織模塊,把一個業(yè)務流程分解為N個步驟,每個步驟用一個業(yè)務節(jié)點來封裝和實現(xiàn);分解的策略和顆粒度完全由用戶根據(jù)實際需要決定;在所述步驟2中,在測試場景中加入業(yè)務節(jié)點,在腳本編輯模塊提供的腳本編輯界面上開發(fā)可視化測試腳本;在所述步驟3中,在場景組織模塊提供的圖形視圖界面中將多個業(yè)務節(jié)點用有向連線連接起來,從而構建一個完整的業(yè)務流;在所述步驟4中,根據(jù)測試的需要,使用參數(shù)化模塊對腳本進行必要的參數(shù)化,S卩,在測試場景中繪制一個循環(huán)體,通過縮放、移動操作調整其覆蓋范圍,將與參數(shù)化有關的業(yè)務節(jié)點包含在這一范圍內;然后在打開的參數(shù)表格編輯界面編輯各個參數(shù)的名稱和取值;最后修改業(yè)務節(jié)點中的腳本,將需要參數(shù)化的常量替換為參數(shù)名;在所述步驟5中,運行整個業(yè)務流,調試和運行模塊將業(yè)務流中各個業(yè)務節(jié)點的腳本信息整合起來,加入API函數(shù)定義、Python模塊引入、異常處理信息,生成臨時腳本文件和臨時圖片文件,然后調用SIKULI腳本運行接口來執(zhí)行腳本;在所述步驟6中,所述測試報告輸出模塊將根據(jù)用戶需要生成一份HTML格式的測試報告,將腳本中報告函數(shù)定義的測試結果信息打印到測試報告中。
9.根據(jù)權利要求8所述的軟件自動化測試方法,其中,在所述步驟2中,所述腳本遵循Python 2. 5格式規(guī)范,在腳本中使用任何Python 2. 5 支持的系統(tǒng)函數(shù)或純Python模塊;所述腳本編輯模塊在SIKULI API的基礎上擴展了一批自動化測試專用函數(shù),形成了獨有的一套API,其中的所有函數(shù)均在腳本編輯界面上以快捷方式的形式列出,雙擊鼠標即可在腳本中加入指定的函數(shù);在使用SIKULI API函數(shù)的時候,將硬盤中的圖片文件復制粘貼、拖動到腳本中作為函數(shù)的參數(shù);或者將其它格式文檔中的圖像片段以復制粘貼的方式插入到腳本中;所述腳本編輯模塊能夠快速截圖,所述腳本編輯模塊的核心父類是Qt中的QTextEdit類;在所述步驟3中,所述場景組織模塊的核心父類是Qt中用于組織二維圖元的 QGraphicsScene類;場景中的業(yè)務節(jié)點、有向連線、循環(huán)體等的核心父類是Qt中的 QGraphicsItem 類;在所述步驟4中,參數(shù)化模塊中表達參數(shù)表格的核心父類是Qt中QTextTable類;為了實現(xiàn)循環(huán)嵌套,每一個業(yè)務節(jié)點對象中都有一個循環(huán)體列表,記錄該業(yè)務節(jié)點在哪些循環(huán)體范圍內;在生成可執(zhí)行的Python腳本時,調試和運行模塊將根據(jù)各個業(yè)務節(jié)點的循環(huán)體列表計算出循環(huán)的作用范圍,確定語句的縮進量,并在Python腳本中加入FOR循環(huán)結構。
全文摘要
本發(fā)明提供一種基于圖形視圖的軟件自動化測試系統(tǒng)和方法。所述系統(tǒng)包括腳本編輯模塊、場景組織模塊、參數(shù)化模塊、調試和運行模塊、測試報告輸出模塊。所述方法包括步驟場景組織模塊進行業(yè)務流分解;腳本編輯模塊開發(fā)業(yè)務節(jié)點;場景組織模塊構建業(yè)務流;對腳本進行必要的參數(shù)化;調試和運行模塊調試運行業(yè)務流;測試報告輸出模塊輸出測試報告。
文檔編號G06F11/36GK102521120SQ20111036297
公開日2012年6月27日 申請日期2011年11月16日 優(yōu)先權日2011年11月16日
發(fā)明者周海旭 申請人:中國民航信息網絡股份有限公司