一種支持表格驅(qū)動局部數(shù)據(jù)的單元測試系統(tǒng)和方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及軟件測試技術(shù),特別是涉及軟件單元測試技術(shù)。
【背景技術(shù)】
[0002] 單元測試是軟件開發(fā)過程中保證代碼質(zhì)量,提升開發(fā)產(chǎn)能的重要手段。
[0003] 單元測試的基本方法是利用測試驅(qū)動代碼,設(shè)定輸入和預(yù)期輸出,執(zhí)行被測試程 序,自動判斷實(shí)際輸出是否符合預(yù)期。輸入數(shù)據(jù)和預(yù)期輸出稱為測試用例,也就是測試數(shù) 據(jù),這是單元測試工作的基本要素,而對輸入的賦值過程和判斷輸出的比較過程,則是單元 測試執(zhí)行過程的核心。
[0004] 局部數(shù)據(jù)是實(shí)施單元測試的難點(diǎn)問題。局部數(shù)據(jù)是指被測試代碼執(zhí)行過程中,某 些變量在代碼執(zhí)行到某個位置時的數(shù)據(jù)。局部數(shù)據(jù)具有臨時性,即代碼執(zhí)行到不同的位置, 同一局部數(shù)據(jù)可能具有不同的值。
[0005] 局部數(shù)據(jù)包括局部輸入和/或局部輸出。局部輸入是指當(dāng)被測試代碼執(zhí)行到某 個位置時,測試用例對某個變量的賦值,被賦值的變量稱為局部輸入變量;局部輸出是指當(dāng) 被測試代碼執(zhí)行到某個位置時,測試用例對某個變量的實(shí)際值與預(yù)期的輸出值進(jìn)行比較判 斷,被比較判斷的變量稱為局部輸出變量。與測試用例的一般輸入與輸出一樣,局部輸入或 局部輸出也是測試用例的輸入或輸出。
[0006] 被測試函數(shù)可能涉及的所有變量都有可能成為局部輸入變量或局部輸出變量,包 括局部變量、參數(shù)、全局變量、成員變量,還可能包括這些變量的一個或多個成員,即設(shè)置局 部輸入或判斷局部輸出時,不一定針對整個變量,也可能只針對變量的一部分(一個或多個 成員),表達(dá)式或表達(dá)式的一部分也可以作為局部輸入變量或局部輸出變量。一個變量是否 需要作為局部輸入變量或局部輸出變量,是由測試的需求決定的,即如果測試用例需要對 某個變量在被測試代碼執(zhí)行到某個位置時賦值,這個變量就是局部輸入變量,如果測試用 例需要對某個變量在被測試代碼執(zhí)行到某個位置時判斷它的值,這個變量就是局部輸出變 量。局部輸入或局部輸出與一般輸入或輸出的根本區(qū)別在于,對于一般輸入或輸出,例如一 個全局變量,輸入是在被測試代碼執(zhí)行前進(jìn)行賦值,屬于前置條件,輸出則用于在被測試代 碼執(zhí)行完畢后對結(jié)果的比較判斷,屬于后置條件,而對于局部輸入或局部輸出,例如同一個 全局變量,是在被測試代碼執(zhí)行過程中進(jìn)行賦值或比較判斷。同一個變量,例如一個全局變 量,在同一個測試用例中,既可以作為一般的輸入與輸出,也可以同時作為局部輸入或局部 輸出。
[0007] 局部輸入在單元測試中常見的需求場景有:
[0008] a.模擬中斷對全局變量的修改。這在測試嵌入式項目時很常用,中斷對單元測試 的影響在于,被測試函數(shù)執(zhí)行過程中,如果系統(tǒng)產(chǎn)生了中斷,且中斷調(diào)用了其他函數(shù),而其 他函數(shù)可能修改被測試函數(shù)中涉及的變量,那么,測試時需要模擬這種可能情形,以檢測被 測試代碼在執(zhí)行過程中遇到中斷后的功能邏輯。被測試代碼在執(zhí)行過程中遇到中斷的位置 通常是不確定的,測試過程中需要由用戶指定。中斷調(diào)用的其他函數(shù),能夠修改的通常只有 全局變量,因此,只要能在用戶指定的被測試代碼的某個位置設(shè)定某個全局變量的值,就可 以滿足單元測試過程中對中斷測試需求,這種情形下,這個全局變量就是局部輸入變量。
[0009] b.控制局部靜態(tài)變量。局部靜態(tài)變量通常需像全局變量一樣,每個用例取值不同, 但卻無法像全局變量一樣外部訪問,因此也是一種局部輸入變量。
[0010] c.簡化數(shù)據(jù)的輸入設(shè)置。有些數(shù)據(jù)的設(shè)置非常困難,例如,某些復(fù)雜的全局變量, 要設(shè)置它的值可能很困難,而被測試代碼只是涉及到該全局變量的一個小部分,這種情形 下,如果將被測試代碼涉及到的部分直接設(shè)置輸入,而不是設(shè)置原來的全局變量,可以大幅 減少工作量,例如下面的函數(shù):
[0011]
【主權(quán)項】
1. 一種支持表格驅(qū)動局部數(shù)據(jù)的單元測試系統(tǒng),所述局部數(shù)據(jù)包括局部輸入和/或局 部輸出,其特征在于,包括: A:類型解析裝置,用于解析數(shù)據(jù)類型定義獲得類型信息; B:樹表裝置,由樹形控件和表格控件組成,用于樹狀顯示變量及其成員,并提供表格供 用戶填寫測試用例的輸入值和/或輸出值; C:賦值比較裝置,包括賦值裝置和/或比較裝置,所述賦值裝置用于將所述樹表裝置 中的所述輸入值賦給變量;所述比較裝置用于將所述樹表裝置中的所述輸出值與變量的實(shí) 際值進(jìn)行比較,并輸出測試失敗信息;所述變量的數(shù)據(jù)類型包括基本類型和復(fù)合類型; D:局部數(shù)據(jù)設(shè)定裝置,用于供用戶指定局部輸入變量及其輸入位置和/或局部輸出變 量及其輸出位置,并將所述局部輸入變量和/或局部輸出變量加入裝置B,及在所述輸入位 置插入賦值代碼和/或在所述輸出位置插入比較代碼,所述局部輸入變量和/或局部輸出 變量的數(shù)據(jù)類型包括基本類型和復(fù)合類型,所述輸入位置或所述輸出位置位于被測試代碼 中,所述賦值代碼用于調(diào)用所述賦值裝置,所述比較代碼用于調(diào)用所述比較裝置。
2. 根據(jù)權(quán)利要求1所述的單元測試系統(tǒng),其特征在于,所述類型信息包括:類型名稱、 內(nèi)存大小,各成員的成員名稱、類型名稱、偏移量。
3. 根據(jù)權(quán)利要求1所述的單元測試系統(tǒng),其特征在于,所述賦值裝置包括:遞歸掃描變 量及其成員,對需要初始化的變量或成員初始化,對于對應(yīng)輸入值不為空的變量或成員,拷 貝對應(yīng)輸入值;所述對應(yīng)輸入值,是指所述樹表裝置中,變量或成員對應(yīng)的當(dāng)前用例的輸入 值;所述比較裝置包括:遞歸掃描變量及其成員,對于對應(yīng)輸出值不為空的變量或成員,t匕 較實(shí)際值與對應(yīng)輸出值,如比較結(jié)果為假,則輸出測試失敗信息;所述對應(yīng)輸出值,是指所 述樹表裝置中,變量或成員對應(yīng)的當(dāng)前用例的輸出值。
4. 根據(jù)權(quán)利要求1所述的單元測試系統(tǒng),其特征在于,所述局部輸入變量或局部輸出 變量包括以下變量之一或以下變量的任意組合或以下變量的一部分:參數(shù)、全局變量、成員 變量、局部變量、表達(dá)式。
5. 根據(jù)權(quán)利要求1至4任一權(quán)利要求所述的單元測試系統(tǒng),其特征在于,裝置D進(jìn)一步 包括以下步驟之一: 刪除用戶選中的代碼; 刪除賦值操作符的右邊表達(dá)式。
6. 根據(jù)權(quán)利要求5所述的單元測試系統(tǒng),其特征在于,裝置D進(jìn)一步包括:將靜態(tài)關(guān)鍵 字替換為空。
7. -種支持表格驅(qū)動局部數(shù)據(jù)的單元測試方法,所述局部數(shù)據(jù)包括局部輸入和/或局 部輸出,其特征在于,包括以下步驟: A:類型解析步驟,用于解析數(shù)據(jù)類型定義獲得類型信息; B:樹表步驟,所述樹表由樹形控件和表格控件組成,用于樹狀顯示變量及其成員,并提 供表格供用戶填寫測試用例的輸入值和/或輸出值; C:賦值比較步驟,包括賦值步驟和/或比較步驟,所述賦值步驟用于將所述樹表中的 所述輸入值賦給變量;所述比較步驟用于將所述樹表中的所述輸出值與變量的實(shí)際值進(jìn)行 比較,并輸出測試失敗信息;所述變量的數(shù)據(jù)類型包括基本類型和復(fù)合類型; D:局部數(shù)據(jù)設(shè)定步驟,用于供用戶指定局部輸入變量及其輸入位置和/或局部輸出變 量及其輸出位置,并將所述局部輸入變量和/或局部輸出變量加入所述樹表,及在所述輸 入位置插入賦值代碼和/或在所述輸出位置插入比較代碼,所述局部輸入變量和/或局部 輸出變量的數(shù)據(jù)類型包括基本類型和復(fù)合類型,所述輸入位置或所述輸出位置位于被測試 代碼中,所述賦值代碼用于調(diào)用所述賦值步驟,所述比較代碼用于調(diào)用所述比較步驟。
8. 根據(jù)權(quán)利要求7所述的單元測試方法,其特征在于,步驟D進(jìn)一步包括以下步驟之 刪除用戶選中的代碼; 刪除賦值操作符的右邊表達(dá)式。
9. 根據(jù)權(quán)利要求8所述的單元測試方法,其特征在于,步驟D進(jìn)一步包括:將靜態(tài)關(guān)鍵 字替換為空。
10. -種根據(jù)要求1所述的單元測試系統(tǒng),其特征在于,用特征E代替特征B: E:表格裝置,用于供用戶填寫測試用例的輸入值和/或輸出值。
【專利摘要】本發(fā)明公開了一種支持表格驅(qū)動局部數(shù)據(jù)的單元測試系統(tǒng)和方法,所述局部數(shù)據(jù)包括局部輸入和/或局部輸出,其特征在于,包括:類型解析裝置,用于解析數(shù)據(jù)類型定義獲得類型信息;樹表裝置,由樹形控件和表格控件組成;賦值比較裝置,包括賦值裝置和/或比較裝置,用于給變量賦值和/或比較變量的實(shí)際值與預(yù)期值;局部數(shù)據(jù)設(shè)定裝置,用于供用戶指定局部輸入變量及其輸入位置和/或局部輸出變量及其輸出位置。本發(fā)明使實(shí)現(xiàn)了局部數(shù)據(jù)的表格驅(qū)動,不需要額外的測試驅(qū)動代碼,不需要額外生成函數(shù),支持復(fù)合類型,用戶不需要編寫、調(diào)試和維護(hù)額外的測試驅(qū)動代碼和額外的函數(shù),大幅提升了單元測試效率。
【IPC分類】G06F11-36
【公開號】CN104731700
【申請?zhí)枴緾N201310714445
【發(fā)明人】不公告發(fā)明人
【申請人】廣州凱樂軟件技術(shù)有限公司
【公開日】2015年6月24日
【申請日】2013年12月20日