行時間與執(zhí)行效果是相同的,可以在同類用例 集合中完成執(zhí)行時間與執(zhí)行效果上的替換,能夠減少測試工作量。
[0095] 通過對軟件失效機理的探討及對軟件失效的歸納總結,結合測試用例執(zhí)行順序以 及隨著軟件缺陷的修改而發(fā)生變化的軟件輸入與軟件失效之間的映射關系,在測試用例執(zhí) 行過程中對測試用例執(zhí)行效果進行標識,篩選出需要執(zhí)行的測試用例,形成測試用例執(zhí)行 策略,指導軟件可靠性加速測試情況下的用例執(zhí)行。
[0096] 最后,根據(jù)測試用例執(zhí)行策略,執(zhí)行所篩選的測試用例,根據(jù)加速測試情況下的失 效數(shù)據(jù)收集方法,在得到失效數(shù)據(jù)后,進行軟件可靠性評估。
[0097] 一種面向⑶I軟件的可靠性加速測試方法,如圖1所示,包括以下幾個步驟:
[0098] 步驟一:針對進行⑶I軟件可靠性測試所生成的基礎測試用例集合,提取集合中 每一個測試用例的標識詞與特征,分別形成標識詞鏈和特征集合。
[0099] 根據(jù)軟件需求規(guī)格說明與軟件設計說明,將被測GUI軟件的基本功能進行細化; 根據(jù)所構建的被測軟件可靠性測試剖面,從起始節(jié)點開始到終止節(jié)點結束,明確功能實現(xiàn) 路徑,通過遍歷剖面路徑生成基礎測試用例集合;根據(jù)被測軟件的功能路徑和軟件界面元 素中的輸入內(nèi)容,定義測試用例的標識詞和特征;
[0100] 測試用例以動賓短語形式出現(xiàn),包含一個動作和動作的受體,例如,"喝水"是一個 有效的測試用例,而"喝"和"水"卻不是。動賓結構作為軟件的輸入,經(jīng)過提取賓語定義為 特征,動詞作為測試用例的標識詞。將標識詞鏈作為特征定位與提取的基礎,在測試用例中 起識別定位的作用,有助于后面行測試用例的識別、比對和篩選;
[0101] 標識詞為測試用例所包含的一個操作步驟,用W]表示;特征為測試用例的一個操 作步驟所對應的輸入內(nèi)容,用 c]表示;每個測試用例由多個不同的標識詞和特征組成;
[0102] 將每個測試用例的標識詞與特征進行組合,形成測試用例的操作過程表達式為:
[0103] Ti= {(w !, C1), (w2, c2), . . . , (Wj, C j), . . . };
[0104] T1為測試用例;(w ,,C])為測試用例T1的標識詞與特征組合;i = 1,2,. . .,n,n為 整數(shù);
[0105] 提取測試用例!\所包含的標識詞w ,形成標識詞鏈W = (W1, W2, w_j, ..., wn};標識詞鏈是使用軟件動態(tài)過程的靜態(tài)表達,區(qū)分開不同的使用路徑,輔助對相同使用 路徑下特征的對比,通過識別標識詞鏈來明確特征位置。
[0106] 提取測試用例Ti所包含的特征c _j,形成特征集合C = Ic1, C2, Cj, ...,cn}; j = 1,2, · · ·,η,η 為整數(shù)。
[0107] 測試用例的標識詞鏈體現(xiàn)了測試用例的結構信息,特征集合體現(xiàn)了測試用例的內(nèi) 容信息。
[0108] 步驟二、對測試用例中每個特征對應的輸入內(nèi)容進行等價類劃分,得到每個特征 的等價類劃分結果;
[0109] 對每個特征Cj所對應的軟件輸入內(nèi)容,結合GUI軟件輸入內(nèi)容的數(shù)據(jù)類型及等價 類劃分規(guī)則進行等價類劃分,將對應相同輸出結果的輸入內(nèi)容合為一類,得到屬于特征(^ 的所有等價類。每個特征 C]均包括多個等價類,對每個等價類命名為:特征+序號;序號按 整數(shù)由小到大排列,最后的序號代表了特征分后所形成的等價類數(shù)目;
[0110] 步驟三、將每個測試用例的每一步輸入內(nèi)容,根據(jù)當前輸入內(nèi)容的等價類劃分結 果,歸到相應等價類下。
[0111] 根據(jù)每個特征的所有的等價類劃分結果,將測試用例中的每一步輸入內(nèi)容劃分到 相應的等價類。
[0112] 比如:測試用例T1中的一個操作步驟為:輸入密碼;特征為:密碼;
[0113] 如果在對密碼中的輸入內(nèi)容進行等價類劃分后,其中將1-10中的整數(shù)數(shù)字合為 一個等價類,將11-20中的整數(shù)數(shù)字合為一個等價類,則它們是屬于"密碼"輸入內(nèi)容的不 同的2個等價類,分別命名為:密碼1類和密碼2類。如果測試用例中的輸入為8,將8歸 到密碼1類,如果測試用例中的輸入為19,將19歸為密碼2類。
[0114] 步驟四:根據(jù)測試用例的結構信息與內(nèi)容信息,對基礎測試用例集合進行劃分,得 到結構信息與內(nèi)容信息均相同的各類測試用例集合。
[0115] 對測試用例集合進行分類的目的是:使每一類測試用例在執(zhí)行時間和執(zhí)行效果是 相同的。通過執(zhí)行一條或幾條測試用例來確定整個類的測試用例的執(zhí)行時間和執(zhí)行效果。 基于分類的軟件可靠性加速測試技術,以減少測試用例數(shù)量為手段達到減少測試時間提高 測試效率的目的,同時又能夠保證得到的失效數(shù)據(jù)可用來進行定量的軟件可靠性評估。
[0116] 根據(jù)各功能使用路徑與標識詞鏈的對應關系,將標識詞鏈完全匹配的用例合為一 類,保證了同類用例對軟件的使用路徑相同,同時也保證了同類用例的結構信息是相同的, 基于結構信息的測試用例劃分,如圖2所示,步驟如下:
[0117] 步驟401、將基礎測試用例集合中第一個測試用例放入用例庫中作為一類;
[0118] 步驟402、依次按順序對基礎測試用例集合中的測試用例標識詞鏈進行匹配分 類;
[0119] 依次從基礎測試用例集合中按順序選取測試用例作為待對比用例,與用例庫中各 類測試用例的標識詞鏈逐類匹配;
[0120] 步驟403、判斷待對比用例的標識詞鏈是否與用例庫中某類用例的標識詞鏈完全 相同;
[0121] 如果待對比用例的標識詞鏈與用例庫中某類用例的標識詞鏈完全相同,則將待對 比用例放在相應的類別下,否則,在用例庫中增加一個類別,并將待對比用例放入新增加的 類別下;
[0122] 步驟404、判斷當前的待對比測試用例T1是否為基礎測試用例集合中的最后一個 用例,如果是,轉到步驟405 ;如果不是,轉到步驟402 ;
[0123] 步驟405、經(jīng)過分類后的測試用例形成包含不同類別的用例庫,每類測試用例的標 識詞鏈和對應位置的特征均相同,同類測試用例集合中的測試用例包含相同的結構信息。
[0124] 對于結構信息相同的測試用例,結合對動賓輸入中賓語特征的等價類劃分結果, 將對應位置的軟件輸入均屬同一等價類的測試用例合為一類。
[0125] 基于內(nèi)容信息的測試用例劃分方法,如圖3所示,如下:
[0126] 步驟1、對每一類結構信息相同的測試用例集合,依次將每個測試用例的每步輸入 內(nèi)容,根據(jù)輸入內(nèi)容所屬的等價類,用等價類的命名進行替換。
[0127] 步驟2、選取每類測試用例中的第一個測試用例作為一個子類;
[0128] 步驟3、依次選取該類測試用例集合中的測試用例作為待對比用例,與該類測試用 例中的子類進行等價類命名的匹配;
[0129] 步驟4、判斷待對比用例的特征等價類的命名與子類對應位置的特征等價類的命 名是否相同,如果依次對應位置的等價類的命名均相同,則將待對比用例放在對應的子類 下;否則,將待對比用例作為一個新的子類并增加到用例庫中;
[0130] 步驟5、判斷當前的待對比用例是否為該類中的最后一個測試用例;如果"是",進 入步驟6;否則,進入步驟3;
[0131] 步驟6、判斷是否對所有結構信息相同的測試用例集合都進行了子類劃分,如果 "是",進入步驟7 ;否則,進入步驟2 ;
[0132] 步驟7、經(jīng)過分類后的基礎測試用例集合形成包含不同類別測試用例集合的用例 庫,各類測試用例在結構信息和內(nèi)容信息上均是相同的。
[0133] 基礎測試用例集合經(jīng)過劃分后,同類用例的結構信息與內(nèi)容信息是相同的。在不 考慮內(nèi)存等硬件設備在長時間運行后對用例執(zhí)行效果的影響的情況下,基礎測試用例集合 經(jīng)過劃分后,同類用例的執(zhí)行時間與執(zhí)行效果是相同的,如果發(fā)生失效,則失效發(fā)生的模式 與位置也是相同的。
[0134] 步驟五:對結構信息和內(nèi)容信息均相同的各類測試用例,根據(jù)軟件輸入與軟件失 效之間的映射關系,將每個測試用例中的每一步輸入內(nèi)容轉化為失效信息或者正常信息, 并在測試用例中的輸入內(nèi)容所在位置進行標識;
[0135] 根據(jù)軟件失效機理,由于軟件在開發(fā)過程中產(chǎn)生錯誤,當軟件執(zhí)行不當?shù)妮斎霑r, 觸發(fā)軟件中存在的缺陷,從而引起軟件發(fā)生故障,使用戶認為軟件發(fā)生失效。通過對軟件失 效機理的探討及對軟件失效的歸納總結,可在對測試用例輸入內(nèi)容等價類劃分的基礎上, 建立軟件輸入、軟件缺陷、軟件失效之間網(wǎng)絡映射關系,如圖4所示。
[0136] 通過映射關系,根據(jù)軟件發(fā)生失效的情況,找出缺陷所在位置,以便于修改軟件缺 陷。根據(jù)GUI軟件界面元素,軟件輸入可能是單點輸入,也可能是組合輸入。最終,通過軟件 輸入與軟件失效之間的映射關系,指導測試用例完成由輸入信息到失效信息的轉化,如圖5 所示。
[0137] 其中,有些軟件失效是由于觸發(fā)單一的軟件缺陷所引起,有些軟件失效需要聯(lián)合 觸發(fā)多個軟件缺陷才會發(fā)生。轉化后的測試用例保持結構不變,可根據(jù)軟件輸入(Vi)所屬 的等價類及軟件輸入與軟件失效之間的映射關系,來獲得用例中失效信息(C(Vi))存在的 具體情況。
[0138] 步驟六:對經(jīng)過失效信息和正常信息標識后的測試用例,按照基礎測試用例集合 中的測試用例編號順序執(zhí)行測試,篩選各類測試用例集合中執(zhí)行效果為"失效"和第一個執(zhí) 行效果為"正常"的測試用例;
[0139] 在測試執(zhí)行過程中,標識測試用例的執(zhí)行效果并篩選出需要被執(zhí)行的測試用例;
[0140] 對基礎測試用例集合中的用例進行執(zhí)行效果標識的前提條件是程序中的錯誤是