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