陳翠娟
(閩江學(xué)院 軟件學(xué)院,福建 福州 350001)
基于UML活動(dòng)圖的場(chǎng)景法測(cè)試用例生成策略的研究
陳翠娟
(閩江學(xué)院 軟件學(xué)院,福建 福州 350001)
傳統(tǒng)的軟件場(chǎng)景測(cè)試法存在著構(gòu)造場(chǎng)景難度大,場(chǎng)景數(shù)量龐大、冗余度高等問題.針對(duì)這些問題,本文提出了一種基于UML活動(dòng)圖的場(chǎng)景法測(cè)試用例生成策略,利用活動(dòng)圖和基本路徑覆蓋法壓縮、優(yōu)化測(cè)試場(chǎng)景和測(cè)試數(shù)據(jù),為軟件系統(tǒng)測(cè)試提供有效、可行、系統(tǒng)的方法.
UML;場(chǎng)景測(cè)試;基本路徑覆蓋法;控制流圖;獨(dú)立路徑
UML是一種可視化的建模語(yǔ)言,它通過圖形表示法從多個(gè)側(cè)面對(duì)系統(tǒng)的分析、設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試等進(jìn)行刻畫.研究表明,采用有效的形式化方法來(lái)描述問題域,并選擇適當(dāng)?shù)臏y(cè)試策略,是設(shè)計(jì)和生成完備的測(cè)試用例集合的關(guān)鍵環(huán)節(jié)[1].活動(dòng)圖是UML中的一種行為圖,它描述系統(tǒng)為完成某項(xiàng)功能而執(zhí)行的操作序列,其實(shí)質(zhì)就是流程圖,可用于描述程序流程和工作流程.所以活動(dòng)圖是軟件系統(tǒng)測(cè)試,尤其是業(yè)務(wù)流程測(cè)試的重要手段.
場(chǎng)景測(cè)試法是通過構(gòu)建各種測(cè)試場(chǎng)景,對(duì)系統(tǒng)的功能點(diǎn)或業(yè)務(wù)流程進(jìn)行描述來(lái)設(shè)計(jì)測(cè)試用例的一種方法.場(chǎng)景測(cè)試法的關(guān)鍵就是構(gòu)建測(cè)試場(chǎng)景和生成測(cè)試數(shù)據(jù).本文通過研究如何運(yùn)用UML中的活動(dòng)圖來(lái)構(gòu)建測(cè)試場(chǎng)景,然后利用基本路徑覆蓋法導(dǎo)出基本路徑集合,從中尋找獨(dú)立路徑,生成測(cè)試用例.
活動(dòng)圖(Activity Diagram)是一種特殊形式的狀態(tài)機(jī)[2].活動(dòng)圖中的狀態(tài)表示計(jì)算過程或業(yè)務(wù)流程中所處的各種狀態(tài).我們將活動(dòng)圖做如下定義.
定義1一個(gè)活動(dòng)圖是一個(gè)四元組AD={V0,VF(AD),V (AD),E(AD)}.
(1)V0表示活動(dòng)圖中起始結(jié)點(diǎn),活動(dòng)圖的起始結(jié)點(diǎn)只有一個(gè);
(2)VF(AD)表示活動(dòng)圖中的所有終止結(jié)點(diǎn)的集合;
(3)V(AD)={v1,v2,……,vn}表示活動(dòng)圖中所有結(jié)點(diǎn)的集合;
(4)E(AD)={e1,e2,……,em}表示活動(dòng)圖中所有邊的集合.
活動(dòng)圖中的分支結(jié)點(diǎn)用于表示具有條件的行為,只有一個(gè)輸入轉(zhuǎn)換,可以有多個(gè)帶互斥的守衛(wèi)條件的輸出轉(zhuǎn)換.分叉用于表示多個(gè)控制并發(fā)執(zhí)行.
基本路徑覆蓋法是在控制流程圖的基礎(chǔ)上,分析環(huán)路復(fù)雜性,導(dǎo)出獨(dú)立路徑集合,從而設(shè)計(jì)測(cè)試用例的方法.控制流圖是一種用來(lái)描述控制流的圖形,圓圈表示結(jié)點(diǎn),帶箭頭的邊表示控制流的方向,結(jié)點(diǎn)和邊圈起的部分稱為區(qū)域.為了方便描述,我們做如下定義.
定義2基本路徑集合是從控制流圖的起始結(jié)點(diǎn)開始到終止結(jié)點(diǎn),由邊連接而成的結(jié)點(diǎn)序列的集合,記為PS={p1, p2,……,pnp},p為一條路徑,np為控制流程圖中的路徑總數(shù).
定義3環(huán)路度量又稱為環(huán)路復(fù)雜性,是基本路徑集合中獨(dú)立路徑的條數(shù).記為V(G).環(huán)路度量有三種方法:
(1)V(G)=M-N+2,其中M為圖中的總邊數(shù),N為圖的總結(jié)點(diǎn)數(shù);
(2)V(G)=P+1,其中P為圖中的判定結(jié)點(diǎn)數(shù),判定結(jié)點(diǎn)是該結(jié)點(diǎn)輸出邊數(shù)大于等于2的結(jié)點(diǎn);
(3)V(G)=A,A表示圖中的區(qū)域數(shù),區(qū)域是圖中邊和結(jié)點(diǎn)圈起來(lái)的部分,當(dāng)計(jì)算區(qū)域時(shí),圖形最外圈應(yīng)記為一個(gè)區(qū)域.
定義4環(huán)路是指在控制流圖中,由邊和結(jié)點(diǎn)構(gòu)成了一個(gè)閉合回路.
定義5獨(dú)立路徑是指至少包含一條新邊的路徑,所謂的新邊就是指在前面已定義的獨(dú)立路徑集合中未曾用到的邊.我們將獨(dú)立路徑集合記為IDPS={idp1,idp2,……,idpmp},idp為一條獨(dú)立路徑.生成獨(dú)立路徑時(shí),需要對(duì)環(huán)路進(jìn)行限制,采取不進(jìn)入環(huán)路或只進(jìn)入環(huán)路一次處理.
場(chǎng)景測(cè)試法是基于IBM公司提出的RUP的測(cè)試用例生成方法,該方法從系統(tǒng)分析的結(jié)果——用例出發(fā),首先從用例開始到結(jié)束遍歷其中的所有基本流和備選流,從基本流開始,再將基本流和備選流結(jié)合起來(lái),可以確定用例場(chǎng)景,然后通過確定某個(gè)特定條件來(lái)生成每個(gè)場(chǎng)景的測(cè)試用例[3].
基于活動(dòng)圖的場(chǎng)景測(cè)試策略就是利用可視化的UML的活動(dòng)圖來(lái)構(gòu)建測(cè)試場(chǎng)景,然后將活動(dòng)圖映射成為控制流圖,利用基本路徑覆蓋法導(dǎo)出獨(dú)立路徑集合,從而確定測(cè)試場(chǎng)景和測(cè)試用例的一種方法.傳統(tǒng)的場(chǎng)景測(cè)試法對(duì)于一些復(fù)雜的業(yè)務(wù)流程,選擇測(cè)試場(chǎng)景有一定難度,且容易遺漏.而且復(fù)雜業(yè)務(wù)流程中并發(fā)和分支較多,錯(cuò)綜復(fù)雜,導(dǎo)致測(cè)試場(chǎng)景數(shù)量爆炸.采用基于活動(dòng)圖的場(chǎng)景測(cè)試法,通過合并業(yè)務(wù)流程中并發(fā)執(zhí)行的活動(dòng)和順序執(zhí)行的活動(dòng),從而大大減少測(cè)試場(chǎng)景和測(cè)試用例,提高測(cè)試的效率.
本節(jié)就某教務(wù)管理系統(tǒng)中的添加課程設(shè)置的系統(tǒng)功能為例,論述基于活動(dòng)圖的場(chǎng)景法測(cè)試用例生成的全過程. 5.1 活動(dòng)圖建模
在每個(gè)學(xué)期開學(xué)前,教務(wù)管理人員通過教務(wù)管理系統(tǒng)能為每門課程選擇任課教師、上課的時(shí)間和地點(diǎn),生成課程設(shè)置.根據(jù)需求,構(gòu)建課程設(shè)置功能的活動(dòng)圖,如圖1所示.教務(wù)管理人員登錄系統(tǒng)后,可以添加教師信息和課程信息,這兩個(gè)活動(dòng)可以并發(fā)執(zhí)行.然后選擇已有的教師和課程,以及上課時(shí)間、上課地點(diǎn)等,添加為課程設(shè)置,此時(shí)系統(tǒng)將進(jìn)行沖突檢查,檢查同一教師在同一時(shí)間是否有其他的課程,或是同一教室在同一時(shí)間是否已排了其他課程等.檢查通過的課程設(shè)置再檢查課時(shí)數(shù)是否符合課程要求,都符合要求則添加成功.
圖1 課程設(shè)置活動(dòng)圖和控制流圖
根據(jù)前面的定義,此活動(dòng)圖記為AD={V0,VF(AD),V(AD), E(AD)},其中結(jié)點(diǎn)集合V(AD)={V1,V2,……,V10},邊集合E(AD) ={e1,e2,……,e18},終止結(jié)點(diǎn)集合VF(AD)={Vf}.
活動(dòng)圖中的各種并發(fā)活動(dòng)總是從某個(gè)結(jié)點(diǎn)開始分叉,然后于某個(gè)結(jié)點(diǎn)匯合結(jié)束,可以把它看成是一個(gè)單入口和單出口的結(jié)點(diǎn).對(duì)于只有單一入口和單一出口的結(jié)點(diǎn),我們可以對(duì)它們進(jìn)行合并.假設(shè)對(duì)于活動(dòng)圖中的分叉和匯合不做壓縮合并,那么并發(fā)活動(dòng)的任意排列組合勢(shì)必造成場(chǎng)景數(shù)量爆炸.所以,我們將活動(dòng)圖中V2和V3結(jié)點(diǎn)壓縮合并成一個(gè)活動(dòng)的結(jié)點(diǎn)N1,合并后刪除e3、e4、e5、e6邊,則V(AD)’={V1, N1,……,V10},E(AD)’={e1,e7,e8,……,e18}.
5.2 活動(dòng)圖映射為控制流圖
在實(shí)際應(yīng)用中,一個(gè)不太復(fù)雜的功能的測(cè)試場(chǎng)景,其路徑組合都是一個(gè)龐大的數(shù)字,為了能好地分析路徑,我們將活動(dòng)圖映射為表現(xiàn)形式更為簡(jiǎn)單的控制流圖.活動(dòng)圖中順序執(zhí)行的結(jié)點(diǎn)沒有分支和分叉,只有一條輸入邊和一條輸出邊,可以合并為一個(gè)結(jié)點(diǎn),使得控制流圖進(jìn)一步簡(jiǎn)化,有利于分析環(huán)路復(fù)雜和生成獨(dú)立路徑集合.如圖1,映射為控制流圖時(shí)可以將V0、V1和N1結(jié)點(diǎn)合并為M0,V5和V6結(jié)點(diǎn)合并為M1,V10和Vf結(jié)點(diǎn)合并為Mf結(jié)點(diǎn).合并后,得到右邊的控制流圖.
5.3 生成獨(dú)立路徑
(1) 按照定義3,計(jì)算環(huán)路復(fù)雜性,采用公式V(G) =M-N+2=8-7+2=3,或V(G)=P+1=2+1=3,或計(jì)算區(qū)域數(shù)V(G) =A=3;
(2) 按照定義4,生成獨(dú)立路徑集合IDPS={idp1,idp2, idp4},其中idp1表示獨(dú)立路徑M0→V4→M1→V8→Mf,idp2示獨(dú)立路徑M0→V4→M1→V7→V4→M1→V8→Mf,idp3示獨(dú)立路徑M0→V4→M1→V8→V9→M4→M1→V8→Mf.
每條獨(dú)立路徑就是一個(gè)測(cè)試場(chǎng)景,為每個(gè)測(cè)試場(chǎng)景設(shè)置一個(gè)測(cè)試用例.然后,在測(cè)試場(chǎng)景中運(yùn)行測(cè)試用例.最后,將期望的結(jié)果與實(shí)際輸出的結(jié)果做比較,如果兩個(gè)結(jié)果不相符,則表示在此路徑上存在錯(cuò)誤,以此來(lái)達(dá)到測(cè)試軟件功能的目的.
本文采用可視化的UML活動(dòng)圖對(duì)測(cè)試場(chǎng)景進(jìn)行描述,并對(duì)UML活動(dòng)圖進(jìn)行壓縮、合并,然后采用基本路徑覆蓋法將化簡(jiǎn)后的UML活動(dòng)圖映射為更為形式化更為簡(jiǎn)單的控制流圖,最后通過對(duì)控制流圖的分析得到獨(dú)立路徑集合,完成了場(chǎng)景測(cè)試中場(chǎng)景的構(gòu)建和測(cè)試用例的生成.通過實(shí)例的分析和演示,有效地證明了,基于UML活動(dòng)圖的場(chǎng)景法測(cè)試用例生成技術(shù),能有效地解決由于活動(dòng)并發(fā)執(zhí)行帶來(lái)的數(shù)量爆炸問題,大大減少了場(chǎng)景集的數(shù)量,提高了測(cè)試效率.——————————
〔1〕張楣,劉超,孫昌愛.基于UML活動(dòng)圖模型的測(cè)試用例生成技術(shù)研究 [J].北京航空航天大學(xué)學(xué)報(bào),2001,27(4) 433~437.
〔2〕Tombros D,Geppert A,Dittrieh K.Semantics of reactive componentsin event.driven workflow execution[C]// Proceedingsofthe InternationalConference on Advanced Information Systems Engineering.Barcelona,Spain,1997:409—422.
〔3〕徐宏喆,陳建明,等.UML自動(dòng)化測(cè)試技術(shù)[M].西安:西安交通大學(xué)出版社,2006(8).
TP311.5
:A
:1673-260X(2017)05-0024-02
2017-01-16