專利名稱:基于用戶使用流程加權(quán)有向圖的測(cè)試用例自動(dòng)生成方法及測(cè)試方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)軟件測(cè)試領(lǐng)域,尤其涉及測(cè)試用例自動(dòng)生成方法及測(cè)試方法。
背景技術(shù):
軟件已經(jīng)深入到人們生活工作的各個(gè)方面。由于軟件在金融、軍事、電力、交通、航天、通訊等重要領(lǐng)域的應(yīng)用越來越深入廣泛。軟件系統(tǒng)的規(guī)模也在持續(xù)擴(kuò)大,需求日益復(fù)雜,對(duì)軟件質(zhì)量的要求也越來越高。但現(xiàn)實(shí)中軟件系統(tǒng)的質(zhì)量和穩(wěn)定性卻不盡如人意,采用有效的軟件測(cè)試是保證軟件質(zhì)量、提高軟件可靠性的重要手段。在提供給用戶之前對(duì)軟件進(jìn)行測(cè)試是不可或缺的,軟件測(cè)試通過對(duì)軟件錯(cuò)誤的原因和分布進(jìn)行歸納,來發(fā)現(xiàn)并排除當(dāng)前軟件產(chǎn)品存在的缺陷,對(duì)在需求和設(shè)計(jì)過程中存在的問題查缺補(bǔ)漏,從而確保軟件產(chǎn)品的質(zhì)量。軟件測(cè)試不只是軟件測(cè)試人員的工作,也是軟件開發(fā)人員和軟件使用者的工作。軟件測(cè)試的本質(zhì)就是針對(duì)要測(cè)試的內(nèi)容確定一組測(cè)試用例(Test Case)。測(cè)試用例是為特定的目的而設(shè)計(jì)的一組測(cè)試輸入、執(zhí)行條件和預(yù)期的結(jié)果。測(cè)試用例包括測(cè)試標(biāo)識(shí)、測(cè)試用例名稱、目標(biāo)、測(cè)試條件、測(cè)試設(shè)置、輸入數(shù)據(jù)要求、步驟、以及預(yù)期的結(jié)果等。從軟件測(cè)試用例設(shè)計(jì)方法的角度,可分為黑盒測(cè)試(Black-Box Testing)和白盒測(cè)試(White-Box Testing)。黑盒測(cè)試(又稱為功能測(cè)試或數(shù)據(jù)驅(qū)動(dòng)測(cè)試)是在已知產(chǎn)品所應(yīng)具有的功能,通過測(cè)試來檢測(cè)每個(gè)功能是否都能正常使用,在測(cè)試時(shí),把程序看作一個(gè)不能打開的黑盆子。利用黑盒測(cè)試法進(jìn)行動(dòng)態(tài)測(cè)試時(shí),需要測(cè)試軟件產(chǎn)品的功能,不需測(cè)試軟件產(chǎn)品的內(nèi)部結(jié)構(gòu)和處理過程。黑盒測(cè)試試圖發(fā)現(xiàn)以下類型的錯(cuò)誤1)功能錯(cuò)誤或遺漏; 2)界面錯(cuò)誤;3)數(shù)據(jù)結(jié)構(gòu)或外部數(shù)據(jù)庫(kù)訪問錯(cuò)誤;4)性能錯(cuò)誤;5)初始化和終止錯(cuò)誤。黑盒測(cè)試注重于測(cè)試軟件的功能性需求,也即黑盒測(cè)試使軟件工程師派生出執(zhí)行程序所有功能需求的輸入條件。白盒測(cè)試也稱結(jié)構(gòu)測(cè)試或邏輯驅(qū)動(dòng)測(cè)試,它是知道產(chǎn)品內(nèi)部工作過程, 可通過測(cè)試來檢測(cè)產(chǎn)品內(nèi)部動(dòng)作是否按照規(guī)格說明書的規(guī)定正常進(jìn)行,按照程序內(nèi)部的結(jié)構(gòu)測(cè)試程序,檢驗(yàn)程序中的每條通路是否都有能按預(yù)定要求正確工作,而不顧它的功能。用路徑分析的方法編寫測(cè)試用例時(shí),首先可將系統(tǒng)運(yùn)行過程中所涉及到的各種流程圖表化,可以先從最基本的流程入手,將流程抽象成為不同功能的順序執(zhí)行。在最基本流程的基礎(chǔ)上再去考慮次要或者異常的流程,這樣將各種流程逐漸細(xì)化,這樣既可以逐漸加深對(duì)流程的理解,還可以將各個(gè)看似孤立的流程關(guān)聯(lián)起來。完成所有流程的圖表化后就完成了所有路徑的設(shè)定。在實(shí)際應(yīng)用軟件時(shí),用戶使用流程覆蓋的路徑很復(fù)雜且很難預(yù)測(cè),這對(duì)軟件測(cè)試而言,測(cè)試任務(wù)顯得較為繁瑣。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明目的是在于建立一種基于用戶使用流程加權(quán)有向圖的測(cè)試用例自動(dòng)生成方法及測(cè)試方式,使得用戶流程測(cè)試更加規(guī)范,提高軟件在流程關(guān)聯(lián)性方面的質(zhì)fio為了實(shí)現(xiàn)前述發(fā)明目的,本發(fā)明提供了一種基于用戶使用流程加權(quán)有向圖的測(cè)試用例自動(dòng)生成方法,包括以下步驟步驟一、建立用戶使用流程明細(xì)表;步驟二、建立用戶使用流程加權(quán)有向圖;步驟三、建立使用流程加權(quán)有向圖的測(cè)試用例生成引擎。為了實(shí)現(xiàn)前述發(fā)明目的,本發(fā)明提供了一種基于用戶使用流程加權(quán)有向圖的測(cè)試方法,包括以下步驟,步驟一建立用戶使用流程明細(xì)表;步驟二 建立用戶使用流程加權(quán)有向圖;步驟三建立測(cè)試用例生成引擎;步驟四運(yùn)行測(cè)試用例,得到測(cè)試結(jié)果;步驟五評(píng)價(jià)測(cè)試結(jié)果,統(tǒng)計(jì)路徑測(cè)試覆蓋率。相較于現(xiàn)有技術(shù),本發(fā)明通過先建立用戶流程明細(xì)表,從而可得到用戶流程加權(quán)有向圖,并可自動(dòng)生成測(cè)試用例,最終實(shí)現(xiàn)測(cè)試。本發(fā)明屬于黑盒測(cè)試,建立方法簡(jiǎn)單,測(cè)試方式方便靈活,通用性強(qiáng),可適合各類具有API函數(shù)的軟件或類CPU指令測(cè)試。對(duì)不可預(yù)測(cè)的用戶使用流程的測(cè)試到問題能力大為增強(qiáng)。
圖1示意的是本發(fā)明的用戶使用流程加權(quán)有向圖。圖2為本發(fā)明的測(cè)試用例生成引擎的輸入和輸出示意圖。圖3是本發(fā)明的測(cè)試用例生成引擎的具體操作流程圖。
具體實(shí)施例方式下面參照附圖具體介紹本發(fā)明的實(shí)施例,圖中相同的結(jié)構(gòu)或功能用相同的數(shù)字標(biāo)出。應(yīng)該指出的是,附圖的目的只是便于對(duì)本發(fā)明具體實(shí)施例的說明,不是一種多余的敘述或是對(duì)本發(fā)明范圍的限制。在實(shí)際應(yīng)用軟件時(shí),用戶使用根據(jù)使用需求、使用環(huán)境、使用習(xí)慣都不一致,覆蓋的路徑會(huì)很復(fù)雜且很難預(yù)測(cè),但是,主要的流程出現(xiàn)的概率會(huì)稍大一些。為使測(cè)試更加符合實(shí)際使用,本發(fā)明建立了一種基于用戶使用流程加權(quán)有向圖的測(cè)試用例自動(dòng)生成方法及測(cè)試方法,使得用戶流程測(cè)試更加規(guī)范更加精確,大幅度提高軟件在流程關(guān)聯(lián)性方面的測(cè)試質(zhì)量。本發(fā)明基于用戶使用流程加權(quán)有向圖的測(cè)試方法包括以下步驟
步驟一、建立用戶使用流程明細(xì)表;步驟二、以用戶使用流程明細(xì)表作為數(shù)據(jù)來源,生成用戶流程測(cè)試用例;步驟三、運(yùn)行測(cè)試用例,得到測(cè)試結(jié)果;步驟四、評(píng)價(jià)測(cè)試結(jié)果,統(tǒng)計(jì)路徑測(cè)試覆蓋率覆蓋可結(jié)合權(quán)重進(jìn)行分析,按照N步覆蓋率進(jìn)行考察(N為自然數(shù))。
本發(fā)明基于用戶使用流程加權(quán)有向圖的測(cè)試用例自動(dòng)生成方法,包括以下步驟步驟一、建立用戶使用流程明細(xì)表;步驟二、建立用戶使用流程加權(quán)有向圖;步驟三、建立使用流程加權(quán)有向圖的測(cè)試用例生成引擎。
步驟一、建立用戶使用流程明細(xì)表的說明
權(quán)利要求
1.一種基于用戶使用流程加權(quán)有向圖的測(cè)試用例自動(dòng)生成方法,包括以下步驟步驟一、建立用戶使用流程明細(xì)表;步驟二、建立用戶使用流程加權(quán)有向圖;步驟三、建立使用流程加權(quán)有向圖的測(cè)試用例生成引擎。
2.如權(quán)利要求1所述的基于用戶使用流程加權(quán)有向圖的測(cè)試用例自動(dòng)生成方法,其特征在于,所述步驟一具體包括根據(jù)軟件的設(shè)計(jì)建立主要步驟;增加兩個(gè)固定的步驟用戶進(jìn)入使用狀態(tài)的開始步驟start,用戶退出使用狀態(tài)的退出步驟quit ;建立上述步驟間的權(quán)重和轉(zhuǎn)移條件;建立在每個(gè)步驟內(nèi)改變轉(zhuǎn)移條件。
3.如權(quán)利要求2所述的基于用戶使用流程加權(quán)有向圖的測(cè)試用例自動(dòng)生成方法,其特征在于,所述主要步驟為三個(gè)API函數(shù)create_project,get_pro ject_list, close— project。
4.如權(quán)利要求2所述的基于用戶使用流程加權(quán)有向圖的測(cè)試用例自動(dòng)生成方法,其特征在于,所述建立上述步驟間的權(quán)重和轉(zhuǎn)移條件的規(guī)則是步驟start根據(jù)轉(zhuǎn)移條件可以向其他步驟轉(zhuǎn)移,但其他步驟不可以向步驟start轉(zhuǎn)移,只在行出現(xiàn);步驟quit不可以向其他步驟轉(zhuǎn)移,但其他步驟根據(jù)轉(zhuǎn)移條件可以向步驟quit轉(zhuǎn)移,只在列出現(xiàn)。
5.如權(quán)利要求4所述的基于用戶使用流程加權(quán)有向圖的測(cè)試用例自動(dòng)生成方法,其特征在于,所述用戶使用流程明細(xì)表中的表格第一列代表當(dāng)前步驟,表格最后一列代表當(dāng)前步驟可改變的權(quán)重和轉(zhuǎn)移條件,兩者之間用冒號(hào)間隔,權(quán)重為整數(shù);要求一定要寫權(quán)重值, 可以沒有轉(zhuǎn)移條件;當(dāng)沒有轉(zhuǎn)移條件時(shí),冒號(hào)可不寫;表格倒數(shù)第二列表示其他步驟到步驟quit的權(quán)重和轉(zhuǎn)移條件,兩者之間用冒號(hào)間隔,權(quán)重為整數(shù);要求一定要寫權(quán)重值,可以沒有轉(zhuǎn)移條件;當(dāng)沒有轉(zhuǎn)移條件時(shí),冒號(hào)可不寫;表格第一行代表下一個(gè)步驟,表格最后一行表示從步驟start到其他步驟的權(quán)重和轉(zhuǎn)移條件,兩者之間用冒號(hào)間隔,權(quán)重為整數(shù);要求一定要寫權(quán)重值,可以沒有轉(zhuǎn)移條件;當(dāng)沒有轉(zhuǎn)移條件時(shí),冒號(hào)可不寫;其他列和行表示除步驟start和步驟quit外的各個(gè)步驟相互間跳轉(zhuǎn)的權(quán)重和轉(zhuǎn)移條件,兩者之間用冒號(hào)間隔,權(quán)重為整數(shù);要求一定要寫權(quán)重值,可以沒有轉(zhuǎn)移條件;當(dāng)沒有轉(zhuǎn)移條件時(shí),冒號(hào)可不寫。
6.如權(quán)利要求5所述的基于用戶使用流程加權(quán)有向圖的測(cè)試用例自動(dòng)生成方法,其特征在于,所述用戶使用流程加權(quán)有向圖具有圓圈作為有向圖的節(jié)點(diǎn),表示步驟,圓圈內(nèi)的名字為步驟名;圓圈間的有向連線作為有向圖的邊,代表步驟間轉(zhuǎn)移的路徑,線上的說明代表兩部分內(nèi)容權(quán)重和轉(zhuǎn)移條件,兩者之間用冒號(hào)間隔,權(quán)重為整數(shù);要求一定要寫權(quán)重值, 可以沒有轉(zhuǎn)移條件;當(dāng)沒有轉(zhuǎn)移條件時(shí),冒號(hào)可不寫;圓圈外的方框代表步驟可改變轉(zhuǎn)移條件的值,方框內(nèi)的說明代表具體改變轉(zhuǎn)移條件值得情況;無方框代表不需要改變轉(zhuǎn)移條件的值;加權(quán)有向圖還具有兩個(gè)特殊的步驟start步驟代表用戶進(jìn)入使用;quit步驟代表用戶退出使用。
7.如權(quán)利要求6所述的基于用戶使用流程加權(quán)有向圖的測(cè)試用例自動(dòng)生成方法,其特征在于,所述步驟三把用戶使用流程明細(xì)表作為輸入文件,用戶使用步驟的步數(shù)作為輸入的第二個(gè)參數(shù);測(cè)試用例腳本作為輸出。
8.如權(quán)利要求7所述的基于用戶使用流程加權(quán)有向圖的測(cè)試用例自動(dòng)生成方法,其特征在于,所述測(cè)試用例生成引擎的具體步驟包括步驟Si、按照明細(xì)表最后一行最后一列步驟“start”的“改變條件”說明代碼,初始化有向圖上所有邊的條件的初始值;步驟S2、記錄最后一列其他所有節(jié)點(diǎn)的“改變條件”說明代碼;步驟S3、給每個(gè)節(jié)點(diǎn)可前進(jìn)的下一個(gè)節(jié)點(diǎn)從0開始編號(hào),并記錄最大編號(hào)N、邊上權(quán)重、 轉(zhuǎn)移條件;步驟S5、設(shè)定當(dāng)前節(jié)點(diǎn)為步驟start節(jié)點(diǎn);步驟S6、任取隨機(jī)數(shù)r,得到r除N的余數(shù)η;設(shè)置臨時(shí)變量t=0,遍歷每條邊的權(quán)重w ; 每經(jīng)過一條邊t=t+w;所余數(shù)η落入[t,t+w]內(nèi),則選這邊所指向的節(jié)點(diǎn)作為下一步的要去的節(jié)點(diǎn)步驟S7、判斷當(dāng)前節(jié)點(diǎn)與下一步要去的節(jié)點(diǎn)之間連線上的邊是否滿足;若不滿足,返回步驟S6,否則跳到步驟S8 ;步驟S8、改變當(dāng)前節(jié)點(diǎn)為選取的節(jié)點(diǎn),并改變新的節(jié)點(diǎn)條件所要改變的狀態(tài),記錄到測(cè)試用例腳本文件;步驟S9、自增步驟變量;步驟S10、判斷步驟變量是否達(dá)到設(shè)定的步數(shù)S ;若沒有達(dá)到,返回步驟步驟S6,否則跳到步驟Sll ;步驟S11、根據(jù)引擎設(shè)置,可有兩種情況產(chǎn)生第一種情況,執(zhí)行當(dāng)前節(jié)點(diǎn)能到退出步驟quit節(jié)點(diǎn)的最短路徑,把所經(jīng)過的所有節(jié)點(diǎn)都記錄到測(cè)試用例腳本文件;第二種情況, 無論有向圖是否有連接,直接跳到步驟S12 ;步驟S12、退出用戶使用流程。
9.一種基于用戶使用流程加權(quán)有向圖的測(cè)試方法,包括以下步驟,步驟一建立用戶使用流程明細(xì)表;步驟二 建立用戶使用流程加權(quán)有向圖;步驟三建立測(cè)試用例生成引擎;步驟四運(yùn)行測(cè)試用例,得到測(cè)試結(jié)果;步驟五評(píng)價(jià)測(cè)試結(jié)果,統(tǒng)計(jì)路徑測(cè)試覆蓋率。
10.如權(quán)利要求9所述的基于用戶使用流程加權(quán)有向圖的測(cè)試方法,其特征在于,所述步驟一具體包括根據(jù)軟件的設(shè)計(jì)建立主要步驟;增加兩個(gè)固定的步驟用戶進(jìn)入使用狀態(tài)的開始步驟start,用戶退出使用狀態(tài)的退出步驟quit ;建立上述步驟間的權(quán)重和轉(zhuǎn)移條件;建立在每個(gè)步驟內(nèi)改變轉(zhuǎn)移條件。
11.如權(quán)利要求9所述的基于用戶使用流程加權(quán)有向圖的測(cè)試方法,其特征在于,所述主要步驟為三個(gè) API 函數(shù)create_project, get_pro ject_list, close_pro ject。
12.如權(quán)利要求10所述的基于用戶使用流程加權(quán)有向圖的測(cè)試方法,其特征在于,所述建立上述步驟間的權(quán)重和轉(zhuǎn)移條件的規(guī)則是步驟start根據(jù)轉(zhuǎn)移條件可以向其他步驟轉(zhuǎn)移,但其他步驟不可以向步驟start轉(zhuǎn)移,只在行出現(xiàn);步驟quit不可以向其他步驟轉(zhuǎn)移,但其他步驟根據(jù)轉(zhuǎn)移條件可以向步驟quit轉(zhuǎn)移,只在列出現(xiàn)。
13.如權(quán)利要求12所述的基于用戶使用流程加權(quán)有向圖的測(cè)試方法,其特征在于,所述用戶使用流程明細(xì)表中的表格第一列代表當(dāng)前步驟,表格最后一列代表當(dāng)前步驟可改變的權(quán)重和轉(zhuǎn)移條件,兩者之間用冒號(hào)間隔,權(quán)重為整數(shù);要求一定要寫權(quán)重值,可以沒有轉(zhuǎn)移條件;當(dāng)沒有轉(zhuǎn)移條件時(shí),冒號(hào)可不寫;表格倒數(shù)第二列表示其他步驟到步驟quit的權(quán)重和轉(zhuǎn)移條件,兩者之間用冒號(hào)間隔,權(quán)重為整數(shù);要求一定要寫權(quán)重值,可以沒有轉(zhuǎn)移條件;當(dāng)沒有轉(zhuǎn)移條件時(shí),冒號(hào)可不寫;表格第一行代表下一個(gè)步驟,表格最后一行表示從步驟start到其他步驟的權(quán)重和轉(zhuǎn)移條件,兩者之間用冒號(hào)間隔,權(quán)重為整數(shù);要求一定要寫權(quán)重值,可以沒有轉(zhuǎn)移條件;當(dāng)沒有轉(zhuǎn)移條件時(shí),冒號(hào)可不寫;其他列和行表示除步驟 start和步驟quit外的各個(gè)步驟相互間跳轉(zhuǎn)的權(quán)重和轉(zhuǎn)移條件,兩者之間用冒號(hào)間隔,權(quán)重為整數(shù);要求一定要寫權(quán)重值,可以沒有轉(zhuǎn)移條件;當(dāng)沒有轉(zhuǎn)移條件時(shí),冒號(hào)可不寫。
14.如權(quán)利要求13所述的基于用戶使用流程加權(quán)有向圖的測(cè)試方法,其特征在于,所述用戶使用流程加權(quán)有向圖具有圓圈作為有向圖的節(jié)點(diǎn),表示步驟,圓圈內(nèi)的名字為步驟名;圓圈間的有向連線作為有向圖的邊,代表步驟間轉(zhuǎn)移的路徑,線上的說明代表兩部分內(nèi)容權(quán)重和轉(zhuǎn)移條件,兩者之間用冒號(hào)間隔,權(quán)重為整數(shù);要求一定要寫權(quán)重值,可以沒有轉(zhuǎn)移條件;當(dāng)沒有轉(zhuǎn)移條件時(shí),冒號(hào)可不寫;圓圈外的方框代表步驟可改變轉(zhuǎn)移條件的值, 方框內(nèi)的說明代表具體改變轉(zhuǎn)移條件值得情況;無方框代表不需要改變轉(zhuǎn)移條件的值; 加權(quán)有向圖還具有兩個(gè)特殊的步驟start步驟代表用戶進(jìn)入使用;quit步驟代表用戶退出使用。
15.如權(quán)利要求14所述的基于用戶使用流程加權(quán)有向圖的測(cè)試方法,其特征在于,所述步驟三把用戶使用流程明細(xì)表作為輸入文件,用戶使用步驟的步數(shù)作為輸入的第二個(gè)參數(shù);測(cè)試用例腳本作為輸出。
16.如權(quán)利要求15所述的基于用戶使用流程加權(quán)有向圖的測(cè)試方法,其特征在于,所述測(cè)試用例生成引擎的具體操作步驟包括步驟Si、按照明細(xì)表最后一行最后一列步驟“start”的“改變條件”說明代碼,初始化有向圖上所有邊的條件的初始值;步驟S2、記錄最后一列其他所有節(jié)點(diǎn)的“改變條件”說明代碼;步驟S3、給每個(gè)節(jié)點(diǎn)可前進(jìn)的下一個(gè)節(jié)點(diǎn)從0開始編號(hào),并記錄最大編號(hào)N、邊上權(quán)重、 轉(zhuǎn)移條件;步驟S5、設(shè)定當(dāng)前節(jié)點(diǎn)為步驟start節(jié)點(diǎn);步驟S6、任取隨機(jī)數(shù)r,得到r除N的余數(shù)η;設(shè)置臨時(shí)變量t=0,遍歷每條邊的權(quán)重w ; 每經(jīng)過一條邊t=t+w;所余數(shù)η落入[t,t+w]內(nèi),則選這邊所指向的節(jié)點(diǎn)作為下一步的要去的節(jié)點(diǎn)步驟S7、判斷當(dāng)前節(jié)點(diǎn)與下一步要去的節(jié)點(diǎn)之間連線上的邊是否滿足;若不滿足,返回步驟S6,否則跳到步驟S8;步驟S8、改變當(dāng)前節(jié)點(diǎn)為選取的節(jié)點(diǎn),并改變新的節(jié)點(diǎn)條件所要改變的狀態(tài),記錄到測(cè)試用例腳本文件;步驟S9、自增步驟變量;步驟S10、判斷步驟變量是否達(dá)到設(shè)定的步數(shù)S ;若沒有達(dá)到,返回步驟步驟S6,否則跳到步驟Sll ;步驟S11、根據(jù)引擎設(shè)置,可有兩種情況產(chǎn)生第一種情況,執(zhí)行當(dāng)前節(jié)點(diǎn)能到退出步驟quit節(jié)點(diǎn)的最短路徑,把所經(jīng)過的所有節(jié)點(diǎn)都記錄到測(cè)試用例腳本文件;第二種情況, 無論有向圖是否有連接,直接跳到步驟S12 ;步驟S12、退出用戶使用流程。
全文摘要
本發(fā)明公開了一種基于用戶使用流程加權(quán)有向圖的測(cè)試用例自動(dòng)生成方法及包括了前述生成方法的測(cè)試方法,其中,生成方法包括以下步驟:步驟一、建立用戶使用流程明細(xì)表;步驟二、建立用戶使用流程加權(quán)有向圖;步驟三、建立使用流程加權(quán)有向圖的測(cè)試用例生成引擎。通過本發(fā)明,使得用戶流程測(cè)試更加規(guī)范精確,提高軟件在流程關(guān)聯(lián)性方面的質(zhì)量。
文檔編號(hào)G06F11/36GK102567190SQ20101058715
公開日2012年7月11日 申請(qǐng)日期2010年12月14日 優(yōu)先權(quán)日2010年12月14日
發(fā)明者胡國(guó)興 申請(qǐng)人:蘇州工業(yè)園區(qū)譜芯科技有限公司