測試用例的運(yùn)行控制方法、控制系統(tǒng)和監(jiān)聽器的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種測試技術(shù),特別是一種測試用例的運(yùn)行控制方法、控制系統(tǒng)和監(jiān) 聽器。
【背景技術(shù)】
[0002] 軟件開發(fā)過程中為提升系統(tǒng)質(zhì)量都會做單元測試。單元測試是用于開發(fā)人員為 保證其編寫的業(yè)務(wù)代碼函數(shù)質(zhì)量而對函數(shù)編寫的測試代碼,如開發(fā)人員A編寫了一個根 據(jù)訂單ID查詢訂單的函數(shù),其正常的業(yè)務(wù)函數(shù)代碼可能為Order getOrderByld(String orderld) {},例如該函數(shù)可以是查詢訂單的具體邏輯,如打開數(shù)據(jù)庫連接,查詢數(shù)據(jù)庫,數(shù) 據(jù)加工等步驟。
[0003] 其中,上述getOrderByld為函數(shù)名稱,Order為返回值,包含了該ID的訂單明細(xì) (可能包含名稱,用戶名,時間等字段-該信息都保存在數(shù)據(jù)庫中),現(xiàn)在開發(fā)A為驗證該函 數(shù)的內(nèi)部邏輯正確需要對其編寫單元測試-如當(dāng)輸入訂單號A001時該方法返回的Order 對象中的用戶名應(yīng)該是張三,下單時間是2013-12-1012:12:11,上述提到的輸入訂單A001 并且校驗實際結(jié)果與期望值對比的過程,就是編寫單元測試的過程,編寫好的單元測試代 碼成為單元測試用例。
[0004] 由于業(yè)務(wù)系統(tǒng)大部分都是將數(shù)據(jù)存儲在數(shù)據(jù)庫中的,做單元測試時也需要對數(shù)據(jù) 庫中的數(shù)據(jù)做查詢,插入,新增或刪除操作。為了保證系統(tǒng)的質(zhì)量和可維護(hù)性,單元測試用 例要求必須可多次運(yùn)行,但是由于數(shù)據(jù)庫中的數(shù)據(jù)是隨時可能被更新刪除的,如何解決單 元測試用例不受數(shù)據(jù)庫測試數(shù)據(jù)的影響成為單元測試用例可持續(xù)執(zhí)行的一個必須解決的 問題。
【發(fā)明內(nèi)容】
[0005] 在下文中給出關(guān)于本發(fā)明的簡要概述,以便提供關(guān)于本發(fā)明的某些方面的基本理 解。應(yīng)當(dāng)理解,這個概述并不是關(guān)于本發(fā)明的窮舉性概述。它并不是意圖確定本發(fā)明的關(guān) 鍵或重要部分,也不是意圖限定本發(fā)明的范圍。其目的僅僅是以簡化的形式給出某些概念, 以此作為稍后論述的更詳細(xì)描述的前序。
[0006] 本發(fā)明的一個主要目的在于提供一種測試用例的運(yùn)行控制方法、控制系統(tǒng)和監(jiān)聽 器,可以不影響數(shù)據(jù)庫中的存儲內(nèi)容,從而使得測試用例可持續(xù)執(zhí)行。
[0007] 根據(jù)本發(fā)明的第一方面,一種測試用例的運(yùn)行控制方法,包括:
[0008] 在當(dāng)前待運(yùn)行的測試用例對應(yīng)的指定目錄下獲取準(zhǔn)備測試數(shù)據(jù);
[0009] 將獲取的所述準(zhǔn)備測試數(shù)據(jù)寫入數(shù)據(jù)庫;
[0010] 調(diào)用數(shù)據(jù)庫中的所述準(zhǔn)備測試數(shù)據(jù)運(yùn)行所述測試用例并得到測試完成數(shù)據(jù),并在 測試用例結(jié)束之后刪除數(shù)據(jù)庫中所述測試完成數(shù)據(jù)。
[0011] 根據(jù)本發(fā)明的第二方面,一種用于對測試用例進(jìn)行運(yùn)行控制的監(jiān)聽器,包括:
[0012] 數(shù)據(jù)獲取模塊,用于在當(dāng)前待運(yùn)行的測試用例對應(yīng)的指定目錄下獲取準(zhǔn)備測試數(shù) 據(jù);
[0013] 數(shù)據(jù)寫入模塊,用于將獲取的所述準(zhǔn)備測試數(shù)據(jù)寫入數(shù)據(jù)庫;
[0014] 數(shù)據(jù)調(diào)用模塊,用于調(diào)用數(shù)據(jù)庫中的所述準(zhǔn)備測試數(shù)據(jù)運(yùn)行所述測試用例并得到 測試完成數(shù)據(jù),并在測試用例結(jié)束之后刪除數(shù)據(jù)庫中所述測試完成數(shù)據(jù)。
[0015] 根據(jù)本發(fā)明的第三方面,一種測試用例的運(yùn)行控制系統(tǒng),包括數(shù)據(jù)庫、存儲單元和 用于對測試用例進(jìn)行運(yùn)行控制的監(jiān)聽器;
[0016] 所述存儲單元用于存儲測試用例;
[0017] 所述數(shù)據(jù)庫用于寫入由所述監(jiān)聽器獲取的所述準(zhǔn)備測試數(shù)據(jù)。
[0018] 采用本發(fā)明的測試用例的運(yùn)行控制方法、控制系統(tǒng)和監(jiān)聽器,可以不影響數(shù)據(jù)庫 中存儲的準(zhǔn)備測試數(shù)據(jù),從而使得測試用例可持續(xù)執(zhí)行。
【附圖說明】
[0019] 參照下面結(jié)合附圖對本發(fā)明實施例的說明,會更加容易地理解本發(fā)明的以上和其 它目的、特點(diǎn)和優(yōu)點(diǎn)。附圖中的部件只是為了示出本發(fā)明的原理。在附圖中,相同的或類似 的技術(shù)特征或部件將采用相同或類似的附圖標(biāo)記來表示。
[0020] 圖1為本發(fā)明的測試用例的運(yùn)行控制方法的一種實施方式的流程圖;
[0021] 圖2為本發(fā)明的用于對測試用例進(jìn)行運(yùn)行控制的監(jiān)聽器的一種實施方式的結(jié)構(gòu) 圖;
[0022] 圖3為本發(fā)明的測試用例的運(yùn)行控制系統(tǒng)的一種實施方式的結(jié)構(gòu)圖。
【具體實施方式】
[0023] 下面參照附圖來說明本發(fā)明的實施例。在本發(fā)明的一個附圖或一種實施方式中描 述的元素和特征可以與一個或更多個其它附圖或?qū)嵤┓绞街惺境龅脑睾吞卣飨嘟Y(jié)合。應(yīng) 當(dāng)注意,為了清楚的目的,附圖和說明中省略了與本發(fā)明無關(guān)的、本領(lǐng)域普通技術(shù)人員已知 的部件和處理的表示和描述。
[0024] 參見圖1所示,為本發(fā)明的測試用例的運(yùn)行控制方法的一種實施方式的流程圖。
[0025] 在本實施方式中,測試用例的運(yùn)行控制方法包括:
[0026] SlO:在當(dāng)前待運(yùn)行的測試用例對應(yīng)的指定目錄下獲取準(zhǔn)備測試數(shù)據(jù);
[0027] S20:將獲取的準(zhǔn)備測試數(shù)據(jù)寫入數(shù)據(jù)庫;
[0028] S30:調(diào)用數(shù)據(jù)庫中的準(zhǔn)備測試數(shù)據(jù)運(yùn)行測試用例并得到測試完成數(shù)據(jù),并在測試 用例結(jié)束之后刪除數(shù)據(jù)庫中測試完成數(shù)據(jù)。
[0029] 由于在完成測試后,將數(shù)據(jù)庫中的測試完成數(shù)據(jù)刪除,不改變數(shù)據(jù)庫中的存儲內(nèi) 容,使得測試用例影響數(shù)據(jù)庫中正常存儲的準(zhǔn)備測試數(shù)據(jù),并可持續(xù)執(zhí)行。
[0030] 在一種實施方式中,測試數(shù)據(jù)例如可以為基于測試數(shù)據(jù)準(zhǔn)備框架的xml格式數(shù) 據(jù)。
[0031] 測試用例與準(zhǔn)備測試數(shù)據(jù)可以存放于存儲空間中的同一個文件夾中,且文件名相 同。
[0032] 準(zhǔn)備測試數(shù)據(jù)放在與測試用例同目錄,同名的xml文件中,測試文件統(tǒng)一放在 測試用例用到的資源文件夾中,例如,放置在src/test/resources/com/haier/order/ service/OrderServiceTest_CreateOrder. xml 文件中,其中 src/test/resources 為系統(tǒng) 中所有單元測試配置文件的父文件夾。
[0033] 作為一種實施方式,步驟SlO可以具體包括:
[0034] S11:調(diào)用測試數(shù)據(jù)準(zhǔn)備框架,并至指定目錄下獲取準(zhǔn)備測試數(shù)據(jù)。
[0035] 測試數(shù)據(jù)準(zhǔn)備框架可以提供與數(shù)據(jù)庫進(jìn)行交互的工具類,包含讀取xml文件,將 數(shù)據(jù)庫中的記錄導(dǎo)出到xml文件中。
[0036] 作為一種實施方式,步驟S30中"將獲取的所述準(zhǔn)備測試數(shù)據(jù)寫入數(shù)據(jù)庫"可以具 體包括:
[0037] S31:判斷數(shù)據(jù)庫中是否有包含準(zhǔn)備測試數(shù)據(jù)的主鍵id的記錄,如果沒有,則在數(shù) 據(jù)庫中進(jìn)行新增操作,否則對數(shù)據(jù)庫中的已有記錄做數(shù)據(jù)更新操作。
[0038] 先判斷數(shù)據(jù)庫中是否已有準(zhǔn)備測試數(shù)據(jù)的主鍵id,可以避免準(zhǔn)備測試數(shù)據(jù)的重復(fù) 寫入,從而加快整個測試過程的速度,從而提高測試效率。
[0039] 例如,用于存放準(zhǔn)備測試數(shù)據(jù)的xml文件的根節(jié)點(diǎn)統(tǒng)一適用〈dataset〉,其子元 素的名稱為數(shù)據(jù)庫表名,子元素的各個屬性和屬性名為該數(shù)據(jù)庫表表字段及其字段對應(yīng)的 值。拿示例訂單為例,訂單表數(shù)據(jù)庫名稱為orders,表結(jié)構(gòu)如下:
[0040]
【主權(quán)項】
1. 一種測試用例的運(yùn)行控制方法,其特征在于,包括: 在當(dāng)前待運(yùn)行的測試用例對應(yīng)的指定目錄下獲取準(zhǔn)備測試數(shù)據(jù); 將獲取的所述準(zhǔn)備測試數(shù)據(jù)寫入數(shù)據(jù)庫; 調(diào)用數(shù)據(jù)庫中的所述準(zhǔn)備測試數(shù)據(jù)運(yùn)行所述測試用例并得到測試完成數(shù)據(jù),并在測試 用例結(jié)束之后刪除數(shù)據(jù)庫中所述測試完成數(shù)據(jù)。
2. 根據(jù)權(quán)利要求1所述的測試用例的運(yùn)行控制方法,其特征在于: 所述測試數(shù)據(jù)為基于測試數(shù)據(jù)準(zhǔn)備框架的xml格式數(shù)據(jù)。
3. 根據(jù)權(quán)利要求2所述的測試用例的運(yùn)行控制方法,其特征在于: 所述測試用例與所述準(zhǔn)備測試數(shù)據(jù)存放于存儲空間中的同一個文件夾中,且文件名相 同。
4. 根據(jù)權(quán)利要求1所述的測試用例的運(yùn)行控制方法,其特征在于,所述"在當(dāng)前待運(yùn)行 的測試用例對應(yīng)的指定目錄下獲取準(zhǔn)備測試數(shù)據(jù)"具體包括: 調(diào)用測試數(shù)據(jù)準(zhǔn)備框架,并至所述指定目錄下獲取所述準(zhǔn)備測試數(shù)據(jù)。
5. 根據(jù)權(quán)利要求1-4任意一項所述的測試用例的運(yùn)行控制方法,其特征在于,所述"將 獲取的所述準(zhǔn)備測試數(shù)據(jù)寫入數(shù)據(jù)庫"具體包括: 判斷所述數(shù)據(jù)庫中是否有包含所述準(zhǔn)備測試數(shù)據(jù)的主鍵id的記錄,如果沒有,則在所 述數(shù)據(jù)庫中進(jìn)行新增操作,否則對數(shù)據(jù)庫中的已有記錄做數(shù)據(jù)更新操作。
6. 根據(jù)權(quán)利要求2-4任意一項所述的測試用例的運(yùn)行控制方法,其特征在于,所述"在 測試用例結(jié)束之后刪除數(shù)據(jù)庫中所述測試完成數(shù)據(jù)"具體包括: 調(diào)用測試數(shù)據(jù)準(zhǔn)備框架,從所述xml格式數(shù)據(jù)中根據(jù)所述準(zhǔn)備測試數(shù)據(jù)的主鍵id逐條 刪除所述測試完成數(shù)據(jù)。
7.-種用于對測試用例進(jìn)行運(yùn)行控制的監(jiān)聽器,其特征在于,包括: 數(shù)據(jù)獲取模塊,用于在當(dāng)前待運(yùn)行的測試用例對應(yīng)的指定目錄下獲取準(zhǔn)備測試數(shù)據(jù); 數(shù)據(jù)寫入模塊,用于將獲取的所述準(zhǔn)備測試數(shù)據(jù)寫入數(shù)據(jù)庫; 數(shù)據(jù)調(diào)用模塊,用于調(diào)用數(shù)據(jù)庫中的所述準(zhǔn)備測試數(shù)據(jù)運(yùn)行所述測試用例并得到測試 完成數(shù)據(jù),并在測試用例結(jié)束之后刪除數(shù)據(jù)庫中所述測試完成數(shù)據(jù)。
8. 根據(jù)權(quán)利要求7所述的監(jiān)聽器,其特征在于: 所述測試數(shù)據(jù)為基于測試數(shù)據(jù)準(zhǔn)備框架的xml格式數(shù)據(jù)。
9. 根據(jù)權(quán)利要求7所述的監(jiān)聽器,其特征在于,所述數(shù)據(jù)調(diào)用模塊用于調(diào)用測試數(shù)據(jù) 準(zhǔn)備框架,并至指定目錄下獲取所述準(zhǔn)備測試數(shù)據(jù)。
10. 根據(jù)權(quán)利要求7-9任意一項所述的監(jiān)聽器,其特征在于,所述數(shù)據(jù)寫入模塊用于判 斷所述數(shù)據(jù)庫中是否有包含所述準(zhǔn)備測試數(shù)據(jù)的主鍵id的記錄,如果沒有,則在所述數(shù)據(jù) 庫中進(jìn)行新增操作,否則對所述數(shù)據(jù)庫中的已有記錄做數(shù)據(jù)更新操作。
11. 根據(jù)權(quán)利要求8或9任意一項所述的監(jiān)聽器,其特征在于: 所述數(shù)據(jù)調(diào)用模塊用于調(diào)用測試數(shù)據(jù)準(zhǔn)備框架,從所述xml格式數(shù)據(jù)中根據(jù)所述準(zhǔn)備 測試數(shù)據(jù)的主鍵id逐條刪除所述測試完成數(shù)據(jù)。
12. -種測試用例的運(yùn)行控制系統(tǒng),其特征在于,包括數(shù)據(jù)庫、存儲單元和如權(quán)利要求 7-11任一所述的用于對測試用例進(jìn)行運(yùn)行控制的監(jiān)聽器; 所述存儲單元用于存儲測試用例; 所述數(shù)據(jù)庫用于寫入由所述監(jiān)聽器獲取的所述準(zhǔn)備測試數(shù)據(jù)。
【專利摘要】本發(fā)明涉及一種測試用例的運(yùn)行控制方法、控制系統(tǒng)和監(jiān)聽器。其中,測試用例的運(yùn)行控制方法包括:在當(dāng)前待運(yùn)行的測試用例對應(yīng)的指定目錄下獲取準(zhǔn)備測試數(shù)據(jù);將獲取的準(zhǔn)備測試數(shù)據(jù)寫入數(shù)據(jù)庫;調(diào)用數(shù)據(jù)庫中的準(zhǔn)備測試數(shù)據(jù)運(yùn)行測試用例并得到測試完成數(shù)據(jù),并在測試用例結(jié)束之后刪除數(shù)據(jù)庫中測試完成數(shù)據(jù)。采用本發(fā)明的測試用例的運(yùn)行控制方法、控制系統(tǒng)和監(jiān)聽器,可以不影響數(shù)據(jù)庫中存儲的準(zhǔn)備測試數(shù)據(jù),從而使得測試用例可持續(xù)執(zhí)行。
【IPC分類】G06F11-36
【公開號】CN104731697
【申請?zhí)枴緾N201310704927
【發(fā)明人】張穎, 佘敏, 吉惠, 冷合禮, 王旭政, 張濤, 王森, 趙晨
【申請人】青島海爾空調(diào)器有限總公司, 海爾集團(tuán)公司
【公開日】2015年6月24日
【申請日】2013年12月19日