999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于UML狀態圖測試用例生成的策略研究?

2020-05-15 05:19:44欒家偉
計算機與數字工程 2020年2期

欒家偉 吳 陳

(江蘇科技大學 鎮江 212003)

1 引言

隨著軟件行業的蓬勃發展,軟件的逐漸規范化以及軟件規模的日益遞增,不僅僅表面上繁重軟件開發工作,規模遞增的軟件也意味著有著大量的軟件測試工作,甚至往往軟件測試工作占據一半以上的軟件開發周期。所以面對巨大的軟件測試工作量必須提高測試效率,減少開發周期降低開發成本,并且能夠同時完成測試目標提高軟件質量。

面向對象的統一建模語言UML主要由圖形、模型元素、視圖以及通用機制組成。主要用于描述軟件規格、可視化研究、軟件系統的建模與分析。UML可以針對不同的軟件開發方法,貫穿軟件生命周期的各個階段。UML通常用來描述對象、子系統、系統的狀態遷移關系。描述面向對象類的某一對象整個生存周期的具體行為。直觀地給出了特定對象可能進入的所有狀態,以及該對象的狀態如何影響該對象的事件。

本文選取UML圖形中的狀態圖用以研究如何基于UML實現測試用例的自動生成。狀態圖主要是由狀態和變遷組成的圖,包括事件、狀態、變遷三個部分。UML狀態圖是UML中對系統的動態行為進行建模的表示方法,它包括對反應型對象的行為建模。UML狀態圖能夠直觀地給出了特定對象可能進入的所有狀態和觸發狀態轉移的條件,以及對象的動作行為,通常表現為狀態所經歷的狀態序列,也包含引起狀態轉移的事件,以及狀態轉移伴隨的動作,它可以對一個對象的生命周期建模[1]。UML狀態圖其實就是代表一個狀態機,刻畫描述對象狀態變遷。

J.Offutt等曾經提出關于UML狀態圖主要有四個測試覆蓋準則:狀態覆蓋準則、狀態變遷覆蓋準則、狀態變遷對覆蓋準則、全序列覆蓋準則。并開發了一個驗證性的測試用例生成工具UMLTest實現了對Rational Rose模型文件的解析,從而讀出狀態圖模型,然后利用相應的測試準則來產生測試用例[2]。

2 基于深度優先算法的路徑覆蓋策略

基于UML模型生成軟件測試主要是對軟件系統進行UML建模,根據需求規格說明所建立的UML模型的狀態圖,提取對應信息將其轉化為有向圖,用深度優先算法對有向圖進行遍歷得到相應的測試用例。

路徑覆蓋:在白盒測試中,路徑覆蓋能夠滿足設計出足夠多的測試用例,覆蓋程序中所有可能的路徑以達到覆蓋度最高。但是當程序過于復雜,判斷和循環過多時,實現路徑的完全覆蓋卻幾乎是不可能的。程序中的路徑數(復雜度)通過公式V(G)=e-n+2得到(e為邊數,n為節點數)。

深度優先算法思想從圖的頂點V出發,訪問V的未被訪問鄰接點V',再從V'出發,繼續訪問未被訪問的鄰接點,直至一個不存在未被訪問鄰接點的某節點,此時返回上一個存在未被訪問鄰接點的節點,當所有節點的鄰接點都處于已被訪問狀態,結束遍歷。路徑覆蓋策略實現過程如圖1。

圖1 路徑覆蓋策略

利用深度優先算法對有向圖進行遍歷從而實現路徑覆蓋的目的。從圖的開始節點進行遍歷,一直到路徑的結尾,遇到分支即進行拷貝,用二維數組event[rows][0]存儲事件集合,path[rows][1]存儲路徑集合,當path是完整路徑時結束遍歷循環。

不過在開始路徑尋找之前,首先判斷是否有分支

Isbranch(s,n,i){

If(s[i].start==s[num].start&&s[i].end!=s[num].end);

如果存在分支的話,還需要進行起始節點和分支節點的判斷,如果該節點為起始節點,則進行下面的處理:

If(s[i].start==“start”){

event[rows][0]=s[i].sevent+“”;

path[rows][1]=s[i].start+“->”+s[i].end;

如果判斷為該節點為分支節點,則如下處理:

event[rows][0]=event[rows][0]+s[i].sevent+“”;

path[rows][1]=path[rows][1]+“->”+s[i].end;

3 基于貪心算法和回溯法的語句覆蓋策略

在采用語句覆蓋策略時,先通過貪心算法對進行第一次遍歷,每個節點只遍歷一次。如果節點為聚合節點或者分支節點的特殊情況下,可能會出現節點遍歷遺漏的情況,這種情況下基于回溯法的思想,采用雙向回溯,實現回溯功能。

對節點的上下遍歷過程進行檢查,如果該節點存在下一個未遍歷過程則返回該節點在數組中的下標,則進行如下的處理:

isnext=Istrackingnext(s,n,finals);//測試是否存在下一個

未訪問過的節點

intIstrackingnext(Swant s[],int n,String finals){

for(int j=0;j<n;j++){

if(s[j].state==1&&s[j].start==finals)

return j;

}}

當只存在下節點未遍歷時,對下節點進行遍歷,然后將結束節點標記置為下節點的結尾,并將下結點設置為已遍歷訪問。

If(isnext=!-1&&ispre==-1)//當只存在下節點時操作

getnxtevent=s [isnext].DateOfConditionOrPredicateAnd?Condition(s[isnext].sevent);

event[rows][0]=event[rows][0]+“”+getnxtdate[1];

path[rows][1]=path[rows][1]+“->”+s[isnext].end;

finals=s[isnext].end;//將結束節點標記置為下節點的末尾

s[isnext].state=0;//下節點置已訪問標記

如果該節點存在上一個未遍歷的過程則進行如下處理:

ispre=Istrackingpre(s,n,begin);//測試是否存在上一個未訪問過的節點

int Istrackingpre(Swant s[],int n,String begin){

for(int j=0;j<n;j++){

if(s[j].state==1&&s[j].end==begin)

return j;

}}

當存在上節點未遍歷時,對上節點進行遍歷,然后將開始節點標記置為上節點的開頭,并將上節點設置為已遍歷訪問。

If(isnext==-1&&ispre!=-1)//當只存在上節點時操作

getpreevent=s [ispre].DateOfConditionOrPredicateAnd?Condition(s[ispre].sevent);

event[rows][0]=getpreevent[1]+“ ”+event[rows][0];

path[rows][1]=s[ispre].start+“->”+path[rows][1];

begin=s[ispre].start;//將開始節點標記置為上節點的開頭

s[ispre].start=0;//上節點置已訪問標記

如果上下節點都存在未訪問的情況,將開始節點標記設置為上節點的開頭,結束節點標記設置為下節點的末尾,并將上下節點設置為已遍歷訪問。

if(isnext!=-1&&ispre!=-1)//上下節點都存在時進行的操作

getpreevent=s [ispre].DateOfConditionOrPredicateAnd?Condition(s[ispre].sevent);

getnxtevent=s [isnext].DateOfConditionOrPredicateAnd?Condition(s[isnext].sevent);

event[rows][0]=getpreevent[1]+“”+event[rows][0]+“”+getnxtevent[1];

path[rows][1]=s[ispre].start+“->”+path[rows][1]+“->”+s[isnext].end;

begin=s[ispre].start;//將開始節點標記置為上節點的開頭

finals=s[isnext].end;//將結束節點標記置為下節點的末尾

s[ispre].state=0;//上節點置已訪問標記

s[isnext].state=0;//下節點置已訪問標記}

4 結語

軟件測試是為了發現軟件開發的錯誤,測試用例的自動生成對于整個軟件開發的效率和軟件質量有著巨大的促進作用。UML狀態圖能夠通過描述對象的狀態變化,提供對象在整個生命周期中的詳細狀態信息。本文研究了基于UML狀態圖實現測試用例的生成,主要介紹了兩種生成策略,將白盒測試技術中的路徑覆蓋以及語句覆蓋和UML狀態圖相結合,以此實現測試用例的自動生成。今后可能還會嘗試基于UML中其他如類圖,活動圖等實現測試用例的生成進行更多研究探討。

主站蜘蛛池模板: 国产一级在线观看www色 | 日本在线亚洲| 国产黄色视频综合| 1769国产精品视频免费观看| 中文字幕中文字字幕码一二区| 无码免费试看| 99精品在线视频观看| 亚洲天堂在线免费| yy6080理论大片一级久久| 国产欧美日韩专区发布| 九九热视频在线免费观看| 毛片免费试看| 亚洲AV无码乱码在线观看裸奔| 无码精品国产dvd在线观看9久| 毛片免费视频| 九月婷婷亚洲综合在线| 成人在线观看一区| 干中文字幕| 在线欧美国产| 亚洲欧美精品一中文字幕| www欧美在线观看| 国产小视频网站| 国产三级毛片| 91色国产在线| 中文字幕在线视频免费| 日韩A∨精品日韩精品无码| 久久精品国产电影| 国产极品美女在线播放| 九九热这里只有国产精品| 美女潮喷出白浆在线观看视频| 久久黄色小视频| 中文字幕永久在线观看| 一本大道视频精品人妻| 亚洲国产av无码综合原创国产| 国产剧情一区二区| 国产h视频免费观看| 国产主播喷水| 国产一区二区色淫影院| 欧美激情视频二区三区| 亚洲第一网站男人都懂| 久久99精品久久久久纯品| 99ri精品视频在线观看播放 | 综合亚洲色图| 国产毛片基地| 在线视频一区二区三区不卡| a色毛片免费视频| 在线观看国产黄色| 亚洲视频免| 一级爱做片免费观看久久| 全免费a级毛片免费看不卡| 亚洲h视频在线| 第一区免费在线观看| 亚洲V日韩V无码一区二区| 亚洲免费成人网| 色综合中文字幕| 青青青伊人色综合久久| 青青青国产免费线在| 日韩免费毛片| 免费人成网站在线高清| 久久久久无码国产精品不卡 | 最新精品久久精品| 久久久受www免费人成| 在线播放国产一区| 久久婷婷六月| 欧美精品不卡| 亚洲天堂精品视频| 动漫精品啪啪一区二区三区| 婷婷六月综合| 欧美日韩北条麻妃一区二区| 国产幂在线无码精品| 欧美激情第一欧美在线| 亚洲综合九九| 国产三级韩国三级理| 91在线精品麻豆欧美在线| 全午夜免费一级毛片| 一级毛片无毒不卡直接观看 | 欧美日韩精品一区二区视频| 国产成人免费手机在线观看视频| 婷婷五月在线| 欧美成a人片在线观看| 午夜人性色福利无码视频在线观看| 亚洲av片在线免费观看|