專(zhuān)利名稱(chēng):一種單元測(cè)試方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)技術(shù),尤其涉及一種單元測(cè)試方法及裝置。
背景技術(shù):
目前,在進(jìn)行開(kāi)發(fā)過(guò)程中,通常使用測(cè)試用例進(jìn)行單元測(cè)試,而使用測(cè)試用例進(jìn)行單元測(cè)試的過(guò)程中,容易出現(xiàn)測(cè)試用例耦合的情況。測(cè)試用例間耦合是指兩個(gè)或兩個(gè)以上的測(cè)試用例之間存在相互影響,改變一個(gè)測(cè)試用例會(huì)導(dǎo)致其他測(cè)試用例運(yùn)行不正?;驕y(cè)試結(jié)果發(fā)生變化的現(xiàn)象。避免測(cè)試用例之間的耦合是單元測(cè)試中非常重要的問(wèn)題。測(cè)試用例間獨(dú)立無(wú)耦合,會(huì)使測(cè)試工程的多個(gè)測(cè)試用例更加健壯,即使改變測(cè)試用例的執(zhí)行順序也不會(huì)影響測(cè)試結(jié)果。如果測(cè)試耦合在一起,即使在一個(gè)測(cè)試用例中的一個(gè)小的更新,可能也會(huì)導(dǎo)致其他測(cè)試用例的運(yùn)行不正常,甚至引發(fā)意想不到的錯(cuò)誤。另外,不同的運(yùn)行環(huán)境,執(zhí)行測(cè)試用例的順序是不確定的。即在不同的運(yùn)行環(huán)境中,同一測(cè)試用例,可能產(chǎn)生不同的結(jié)果。通常,在以下情況下,認(rèn)為不同測(cè)試用例之間發(fā)生了耦合:(1) 一個(gè)測(cè)試用例直接使用其他測(cè)試用例的輸出數(shù)據(jù);(2) 一個(gè)測(cè)試用例未執(zhí)行完畢,非正常的轉(zhuǎn)到其他測(cè)試用例繼續(xù)執(zhí)行;(3)操作公共數(shù)據(jù)的函數(shù)接口未初始化的情況,多個(gè)測(cè)試用例同時(shí)調(diào)用了該函數(shù)接口 ;(4) 一個(gè)測(cè)試用例有多個(gè)入口,即測(cè)試用例的執(zhí)行順序是不確定的。在實(shí)際的單元測(cè)試中,測(cè)試用例之間的耦合經(jīng)常出現(xiàn),尤其在測(cè)試一些復(fù)雜的函數(shù)時(shí),公共的數(shù)據(jù)和調(diào)用接口比較多,各個(gè)測(cè)試用例如果直接使用這些數(shù)據(jù)或接口,就造成了測(cè)試用例間的耦合。測(cè)試用例間的耦合,經(jīng)常導(dǎo)致測(cè)試用例執(zhí)行后的測(cè)試結(jié)果發(fā)生改變,導(dǎo)致程序異常發(fā)生未知錯(cuò)誤,甚至導(dǎo)致程序崩潰。并且,在實(shí)際應(yīng)用中,被測(cè)程序都是相對(duì)復(fù)雜,測(cè)試用例的構(gòu)造也會(huì)相應(yīng)的復(fù)雜,此時(shí)很難定位問(wèn)題。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種單元測(cè)試方法及裝置,以實(shí)現(xiàn)降低測(cè)試用例間的數(shù)據(jù)耦
入
口 ο一種單元測(cè)試方法,包括:初始化被測(cè)數(shù)據(jù)和/或測(cè)試用例數(shù)據(jù);使用所述測(cè)試用例對(duì)所述被測(cè)數(shù)據(jù)進(jìn)行單元測(cè)試。一種單元測(cè)試裝置,包括:初始化單元,用于初始化被測(cè)數(shù)據(jù)和/或測(cè)試用例數(shù)據(jù);測(cè)試單元,用于使用所述測(cè)試用例對(duì)所述被測(cè)數(shù)據(jù)進(jìn)行單元測(cè)試。
本發(fā)明實(shí)施例提供一種單元測(cè)試方法及裝置,在進(jìn)行單元測(cè)試前,先初始化被測(cè)數(shù)據(jù)和/或測(cè)試用例數(shù)據(jù),從而使得測(cè)試過(guò)程中所涉及的數(shù)據(jù)均為初始化后的數(shù)據(jù),大大降低甚至消除測(cè)試用例間的數(shù)據(jù)耦合,提高測(cè)試用例代碼的健壯性,使每個(gè)測(cè)試用例相互獨(dú)立,互不影響,從而提高單元測(cè)試效率。
圖1為本發(fā)明實(shí)施例提供的單元測(cè)試方法流程圖;圖2為本發(fā)明實(shí)施例提供的單元測(cè)試前準(zhǔn)備工作流程圖;圖3為本發(fā)明實(shí)施例提供的單元測(cè)試裝置結(jié)構(gòu)示意圖。
具體實(shí)施例方式本發(fā)明實(shí)施例提供一種單元測(cè)試方法及裝置,在進(jìn)行單元測(cè)試前,先初始化被測(cè)數(shù)據(jù)和/或測(cè)試用例數(shù)據(jù),從而使得測(cè)試過(guò)程中所涉及的數(shù)據(jù)均為初始化后的數(shù)據(jù),大大降低甚至消除測(cè)試用例間的數(shù)據(jù)耦合,提高測(cè)試用例代碼的健壯性,使每個(gè)測(cè)試用例相互獨(dú)立,互不影響,從而提高單元測(cè)試效率。如圖1所示,本發(fā)明實(shí)施例提供的單元測(cè)試方法,包括:步驟S101、初始化被測(cè)數(shù)據(jù)和/或測(cè)試用例數(shù)據(jù);步驟S102、使用測(cè)試用例對(duì)被測(cè)數(shù)據(jù)進(jìn)行單元測(cè)試。由于在步驟S102中進(jìn)行單元測(cè)試前,先在步驟SlOl中對(duì)被測(cè)數(shù)據(jù)和/或測(cè)試用例數(shù)據(jù)進(jìn)行了初始化,避免了其它數(shù)據(jù)或其它測(cè)試對(duì)本次單元測(cè)試的影響,降低了測(cè)試用例間的數(shù)據(jù)耦合。具體的,在步驟SlOl中,初始化被測(cè)數(shù)據(jù)和/或測(cè)試用例數(shù)據(jù),具體包括:( I)初始化被測(cè)數(shù)據(jù):首先查找到被測(cè)文件中定義的被測(cè)數(shù)據(jù),主要為被測(cè)文件中的全局?jǐn)?shù)據(jù),這些數(shù)據(jù)是單元測(cè)試的重點(diǎn)。在確定被測(cè)數(shù)據(jù)后,即可對(duì)所確定的被測(cè)數(shù)據(jù)進(jìn)行初始化,對(duì)于簡(jiǎn)單的被測(cè)數(shù)據(jù),可以通過(guò)測(cè)試用例設(shè)定的初始化值進(jìn)行初始化,對(duì)于復(fù)雜被測(cè)數(shù)據(jù)可以通過(guò)構(gòu)造的函數(shù)進(jìn)行,這樣的好處在于,每次進(jìn)行同一環(huán)境下的測(cè)試時(shí),均可調(diào)用該函數(shù)進(jìn)行初始化。在進(jìn)行被測(cè)數(shù)據(jù)的初始化后,即可消除測(cè)試用例之間被測(cè)全局?jǐn)?shù)據(jù)的耦合,從而使得先執(zhí)行的測(cè)試用例不會(huì)影響后執(zhí)行的測(cè)試用例。(2)必要時(shí)還需要初始化測(cè)試用例數(shù)據(jù),具體包括:確定測(cè)試用戶(hù)所涉及的測(cè)試公共數(shù)據(jù);初始化測(cè)試公共數(shù)據(jù)。通常,在單元測(cè)試中,不同測(cè)試用例會(huì)用到一些相同的用于輔助測(cè)試的數(shù)據(jù),稱(chēng)為測(cè)試公共數(shù)據(jù)。例如,同一模塊的不同的接口都要對(duì)一個(gè)鏈表進(jìn)行操作。那么對(duì)于這些接口測(cè)試時(shí),所構(gòu)建的測(cè)試用例也都要操作該鏈表。但是為了消除測(cè)試用例間的耦合性,每個(gè)測(cè)試用例在開(kāi)始進(jìn)行測(cè)試時(shí),都要重新構(gòu)造這樣的數(shù)據(jù),顯然這樣的測(cè)試效率是非常低的,為了解決這個(gè)問(wèn)題,提高測(cè)試效率,需要構(gòu)造一些測(cè)試公共數(shù)據(jù),供不同的測(cè)試用例使用;首先從被測(cè)的整個(gè)文件或整個(gè)模塊來(lái)確定需要構(gòu)造的公共數(shù)據(jù),通??梢詮膶?shí)際功能出發(fā)來(lái)構(gòu)造數(shù)據(jù),比如特定模塊需要的協(xié)議報(bào)文數(shù)據(jù),存儲(chǔ)鏈表數(shù)據(jù)等。由于大多數(shù)情況下這些數(shù)據(jù)都比較復(fù)雜,所以不直接采取變量定義的方式(因?yàn)樽兞慷x的方式需要占用大量的棧空間),通過(guò)編寫(xiě)函數(shù)來(lái)實(shí)現(xiàn)測(cè)試公共數(shù)據(jù)的構(gòu)造較佳(函數(shù)中使用動(dòng)態(tài)分配的方式來(lái)為復(fù)制數(shù)據(jù)分配堆空間)。測(cè)試用例中使用測(cè)試公共數(shù)據(jù),提高了測(cè)試效率,但也容易出現(xiàn)數(shù)據(jù)耦合,造成測(cè)試用例之間的相互影響。因此,需要在使用每個(gè)測(cè)試用例前,調(diào)用相應(yīng)初始化接口對(duì)測(cè)試數(shù)據(jù)進(jìn)行初始化,從而保證測(cè)試數(shù)據(jù)使用前都經(jīng)過(guò)了處理。除了初始化接口,針對(duì)測(cè)試公共數(shù)據(jù)還可以通過(guò)函數(shù)進(jìn)行其它操作,例如,創(chuàng)建,查找,修改,刪除等。構(gòu)造這些函數(shù)的目的是方便在測(cè)試用例中對(duì)測(cè)試公共數(shù)據(jù)的操作,通過(guò)這種函數(shù)調(diào)用的方法,使測(cè)試用例的代碼量大大減少,測(cè)試用例看上去精簡(jiǎn)易懂,而且非常利于后期的測(cè)試維護(hù)。下面,對(duì)單元測(cè)試過(guò)程進(jìn)行具體說(shuō)明:首先,如圖2所示,在進(jìn)行單元測(cè)試前,需要進(jìn)行的準(zhǔn)備工作包括:步驟S201、確定被測(cè)公共數(shù)據(jù),即進(jìn)行單元測(cè)試時(shí)的被測(cè)數(shù)據(jù);步驟S202、構(gòu)造被測(cè)數(shù)據(jù)的初始化接口 ;通過(guò)該初始化接口即可將相應(yīng)的被測(cè)數(shù)據(jù)進(jìn)行初始化,初始化的具體值根據(jù)實(shí)際測(cè)試環(huán)境確定,對(duì)于同一組被測(cè)數(shù)據(jù)的不同的測(cè)試環(huán)境,可以構(gòu)造不同的初始化接口來(lái)進(jìn)行初始化;步驟S203、確定測(cè)試公共數(shù)據(jù),即進(jìn)行單元測(cè)試時(shí)的測(cè)試用例數(shù)據(jù);步驟S204、構(gòu)造測(cè)試用例數(shù)據(jù)的初始化接口及操作函數(shù)。在進(jìn)行上述準(zhǔn)備后,即可進(jìn)行單元測(cè)試,進(jìn)行單元測(cè)試的過(guò)程如圖1所示,其中,步驟SlOl的初始化被測(cè)數(shù)據(jù)可以通過(guò)調(diào)用步驟S202構(gòu)造的被測(cè)數(shù)據(jù)初始化接口來(lái)實(shí)現(xiàn),初始化測(cè)試用例數(shù)據(jù)可以通過(guò)調(diào)用步驟S204構(gòu)造的測(cè)試用例數(shù)據(jù)初始化接口來(lái)實(shí)現(xiàn);同時(shí),可以通過(guò)步驟S204構(gòu)造的操作函數(shù)來(lái)對(duì)測(cè)試公共數(shù)據(jù)進(jìn)行相應(yīng)的操作。最后,進(jìn)行步驟S102,執(zhí)行單元測(cè)試,輸出測(cè)試結(jié)果。本發(fā)明實(shí)施例還相應(yīng)提供一種單元測(cè)試裝置,如圖3所示,包括:初始化單元301,用于初始化被測(cè)數(shù)據(jù)和/或測(cè)試用例數(shù)據(jù);測(cè)試單元302,用于使用測(cè)試用例對(duì)被測(cè)數(shù)據(jù)進(jìn)行單元測(cè)試。其中,初始化單元301初始化被測(cè)數(shù)據(jù),具體包括:確定所述被測(cè)數(shù)據(jù)中的全局?jǐn)?shù)據(jù);根據(jù)預(yù)先設(shè)定的初始化值,對(duì)被測(cè)數(shù)據(jù)中的全局?jǐn)?shù)據(jù)進(jìn)行初始化。預(yù)先設(shè)定的初始化值,可以根據(jù)測(cè)試環(huán)境進(jìn)行設(shè)定。初始化單元301初始化測(cè)試用例數(shù)據(jù),具體包括:確定測(cè)試用例所涉及的測(cè)試公共數(shù)據(jù);初始化測(cè)試公共數(shù)據(jù)。其中,初始化單元301初始化測(cè)試公共數(shù)據(jù),具體為:通過(guò)相應(yīng)的初始化接口調(diào)用相應(yīng)的初始化函數(shù),初始化測(cè)試公共數(shù)據(jù);初始化單元301初始化被測(cè)數(shù)據(jù),具體為:通過(guò)相應(yīng)的初始化接口調(diào)用相應(yīng)的初始化函數(shù),初始化被測(cè)數(shù)據(jù)。本發(fā)明實(shí)施例提供一種單元測(cè)試方法及裝置,在進(jìn)行單元測(cè)試前,先初始化被測(cè)數(shù)據(jù)和/或測(cè)試用例數(shù)據(jù),從而使得測(cè)試過(guò)程中所涉及的數(shù)據(jù)均為初始化后的數(shù)據(jù),大大降低甚至消除測(cè)試用例間的數(shù)據(jù)耦合,提高測(cè)試用例代碼的健壯性,使每個(gè)測(cè)試用例相互獨(dú)立,互不影響,從而提高單元測(cè)試效率。本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤(pán)存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專(zhuān)用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。盡管已描述了本發(fā)明的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本發(fā)明范圍的所有變更和修改。顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1.一種單元測(cè)試方法,其特征在于,包括: 初始化被測(cè)數(shù)據(jù)和/或測(cè)試用例數(shù)據(jù); 使用所述測(cè)試用例對(duì)所述被測(cè)數(shù)據(jù)進(jìn)行單元測(cè)試。
2.按權(quán)利要求1所述的方法,其特征在于,所述初始化被測(cè)數(shù)據(jù),具體包括: 確定所述被測(cè)數(shù)據(jù)中的全局?jǐn)?shù)據(jù); 根據(jù)預(yù)先設(shè)定的初始化值,對(duì)被測(cè)數(shù)據(jù)中的全局?jǐn)?shù)據(jù)進(jìn)行初始化。
3.按權(quán)利要求2所述的方法,其特征在于,所述預(yù)先設(shè)定的初始化值,根據(jù)測(cè)試環(huán)境進(jìn)行設(shè)定。
4.按權(quán)利要求1所述的方法,其特征在于,所述初始化測(cè)試用例數(shù)據(jù),具體包括: 確定所述測(cè)試用例所涉及的測(cè)試公共數(shù)據(jù); 初始化所述測(cè)試公共數(shù)據(jù)。
5.按權(quán)利要求4所述的方法,其特征在于,所述初始化所述測(cè)試公共數(shù)據(jù),具體為: 通過(guò)相應(yīng)的初始化接口調(diào)用相應(yīng)的初始化函數(shù),初始化所述測(cè)試公共數(shù)據(jù); 所述初始化被測(cè)數(shù)據(jù),具體為: 通過(guò)相應(yīng)的初始化接口調(diào)用相應(yīng)的初始化函數(shù),初始化所述被測(cè)數(shù)據(jù)。
6.一種單元測(cè)試裝置,其特征在于,包括: 初始化單元,用于初始化被測(cè)數(shù)據(jù)和/或測(cè)試用例數(shù)據(jù); 測(cè)試單元,用于使用所述測(cè)試用例對(duì)所述被測(cè)數(shù)據(jù)進(jìn)行單元測(cè)試。
7.按權(quán)利要求6所述的裝置,其特征在于,所述初始化單元初始化被測(cè)數(shù)據(jù),具體包括: 確定所述被測(cè)數(shù)據(jù)中的全局?jǐn)?shù)據(jù); 根據(jù)預(yù)先設(shè)定的初始化值,對(duì)被測(cè)數(shù)據(jù)中的全局?jǐn)?shù)據(jù)進(jìn)行初始化。
8.按權(quán)利要求7所述的裝置,其特征在于,所述預(yù)先設(shè)定的初始化值,根據(jù)測(cè)試環(huán)境進(jìn)行設(shè)定。
9.按權(quán)利要求6所述的裝置,其特征在于,所述初始化單元初始化測(cè)試用例數(shù)據(jù),具體包括: 確定所述測(cè)試用例所涉及的測(cè)試公共數(shù)據(jù); 初始化所述測(cè)試公共數(shù)據(jù)。
10.按權(quán)利要求9所述的裝置,其特征在于,所述初始化單元初始化所述測(cè)試公共數(shù)據(jù),具體為: 通過(guò)相應(yīng)的初始化接口調(diào)用相應(yīng)的初始化函數(shù),初始化所述測(cè)試公共數(shù)據(jù); 所述初始化單元初始化被測(cè)數(shù)據(jù),具體為: 通過(guò)相應(yīng)的初始化接口調(diào)用相應(yīng)的初始化函數(shù),初始化所述被測(cè)數(shù)據(jù)。
全文摘要
本發(fā)明公開(kāi)了一種單元測(cè)試方法及裝置,涉及計(jì)算機(jī)領(lǐng)域。在進(jìn)行單元測(cè)試前,先初始化被測(cè)數(shù)據(jù)和/或測(cè)試用例數(shù)據(jù),從而使得測(cè)試過(guò)程中所涉及的數(shù)據(jù)均為初始化后的數(shù)據(jù),大大降低甚至消除測(cè)試用例間的數(shù)據(jù)耦合,提高測(cè)試用例代碼的健壯性,使每個(gè)測(cè)試用例相互獨(dú)立,互不影響,從而提高單元測(cè)試效率。
文檔編號(hào)G06F11/36GK103092750SQ20121045540
公開(kāi)日2013年5月8日 申請(qǐng)日期2012年11月13日 優(yōu)先權(quán)日2012年11月13日
發(fā)明者張曉華, 胡志文 申請(qǐng)人:瑞斯康達(dá)科技發(fā)展股份有限公司