專利名稱:一種具有測試柔性的集成軟件測試方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種針對基于消息激勵的應(yīng)用軟件進(jìn)行黑盒測試的集成的測試執(zhí)行方法,尤其涉及通信領(lǐng)域的嵌入式應(yīng)用系統(tǒng)中信令控制流的集成的黑盒測試執(zhí)行方法。
背景技術(shù):
通信產(chǎn)品是應(yīng)用嵌入式軟件最為廣泛的一個領(lǐng)域,設(shè)備制造商在商用的實(shí)時操作系統(tǒng)RTOS基礎(chǔ)上開發(fā)出了多種多樣實(shí)現(xiàn)其業(yè)務(wù)功能的應(yīng)用軟件,如何有效地對集成在硬件設(shè)備上的嵌入式應(yīng)用軟件進(jìn)行測試,成為產(chǎn)品開發(fā)者以及專業(yè)軟件測試工具公司所共同關(guān)注的對象。由專業(yè)工具公司開發(fā)的針對嵌入式軟件測試的商用工具層出不窮,但是在實(shí)際應(yīng)用中卻有著一些先天的缺陷,在很多方面并不能達(dá)到有效的利用,主要問題是存在測試針對性不強(qiáng),操作復(fù)雜,成本高等問題,尤其是對通信產(chǎn)品所特有的業(yè)務(wù)功能測試,很難有方便通用的商用工具使用。因此根據(jù)自身產(chǎn)品的構(gòu)建特點(diǎn)形成有效的測試方法并開發(fā)出相應(yīng)自制軟件測試工具是必不可少的。
按照一定測試方法形成的自制軟件測試工具大多具有較強(qiáng)的針對性,基本上是根據(jù)實(shí)際被測對象的測試特點(diǎn)來專門設(shè)計(jì)的,但是同樣有著不斷發(fā)展優(yōu)化的過程。從所形成的測試模式的角度來看是希望有較強(qiáng)的通用性,即能夠適用于盡量多的軟件對象;從測試應(yīng)用的角度來看則希望有較強(qiáng)的靈活性,具有較高測試效率;同時也希望實(shí)現(xiàn)測試方法的工具本身具有方便易用的特點(diǎn)。為了進(jìn)一步衡量測試工具的適用狀況,這里將測試過程的通用性、靈活性、高效性及易用性等綜合定義為測試的柔性。
在對應(yīng)用軟件進(jìn)行業(yè)務(wù)功能測試時,大多數(shù)采用的手段就是以常規(guī)編程的方法來構(gòu)建所需的測試用例,比如嵌入式系統(tǒng)應(yīng)用軟件大都是用C/C++語言實(shí)現(xiàn)的,測試者就根據(jù)所測試對象的特點(diǎn)來直接編寫相對應(yīng)的.c用例文件。它的針對性是最強(qiáng)的,通過直接用C語言來描述,需要測試什么內(nèi)容就編寫相應(yīng)的用例代碼,在表達(dá)上不會有任何問題,在測試的最初階段只用來驗(yàn)證基本處理流程是否通過時顯得最為直接;但是隨著測試逐漸深入,我們會發(fā)現(xiàn)它的靈活性會越來越弱,流程的任何一個變動都需要測試人員修改用例源程序,然后再編譯,下載,重新測試,如此循環(huán)。為了防止無休止的編譯調(diào)測的循環(huán),一些此類型的工具將需要經(jīng)常變化的數(shù)據(jù)部分留出控制的接口,由用戶終端來進(jìn)行設(shè)置而運(yùn)行(比如用于數(shù)據(jù)庫函數(shù)調(diào)用接口的專用測試工具),但是對于要經(jīng)常變化的流程測試則不易控制。而且這種模式最大的問題還不在于此,而是通用性。專用.c模式的測試方式基本上都針對被測對象的內(nèi)容來定制生成的,它的實(shí)現(xiàn)就具有專用性,處理過程與被測對象是直接關(guān)聯(lián)的,測試環(huán)境的構(gòu)成也各不相同,沒有一個統(tǒng)一的標(biāo)準(zhǔn),這種情況下的測試就是各自為政,隨著一個新的軟件模塊的開發(fā)完成就須再重建一個新的程序來進(jìn)行測試。
為了改變常規(guī)模式的缺陷,出現(xiàn)了采用TTCN(樹表結(jié)合表述法)來描述測試用例的方法,如申請?zhí)枮?2145002.1的《碼分多址系統(tǒng)中基站控制器/基站收發(fā)信機(jī)模擬器》就是按照國際標(biāo)準(zhǔn)規(guī)范的定義來形成TTCN模式的測試方法進(jìn)行的系統(tǒng)級測試應(yīng)用,與前面相比較,在用例描述上具有了一定的通用性,因?yàn)門TCN語言是與具體執(zhí)行平臺無關(guān)的表述,測試者在編寫用例時就只用把精力全部放在如何按照規(guī)范編制合理的TTCN測試用例,而不用關(guān)心付諸實(shí)現(xiàn)的平臺過程。從編寫用例的一致性與測試環(huán)境的統(tǒng)一性來看使用此方法具有一定的好處,使用者利用相同的工具,采用相同的模式來進(jìn)行用例編寫與運(yùn)行實(shí)現(xiàn),規(guī)范了大多數(shù)的測試過程,在一定程度上有所裨益;但是在進(jìn)一步使用過程中卻發(fā)現(xiàn)用例的編寫與維護(hù)并不是一個輕松的過程,它大大限制了此方法的推廣應(yīng)用。要生成一個完整的測試用例,用戶需要將所有大大小小的數(shù)據(jù)信息進(jìn)行申明,然后層層鑲嵌得到最終要收發(fā)的消息結(jié)構(gòu),這個過程是十分繁瑣的,同時也不應(yīng)是測試人員需要重點(diǎn)關(guān)注的,無端耗費(fèi)了大量的精力,降低了測試的效率。另外此方法仍然是采用的靜態(tài)編譯過程,即用戶以TTCN語言描述好測試用例,還是需要翻譯成.c文件,再加上適配模塊一同編譯生成可執(zhí)行文件再運(yùn)行,它與前面的專用.c模式相比只相當(dāng)于在用例描述上增加了一層,在測試過程中仍然存在靈活性的問題。
綜合說,現(xiàn)有技術(shù)的上述的軟件黑盒測試執(zhí)行方法在測試柔性方面具有較低的水平。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種具有測試柔性的集成軟件測試方法,要解決的技術(shù)問題是克服現(xiàn)有技術(shù)中的測試柔性水平較低的缺點(diǎn),提出一種新的測試用例生成及執(zhí)行的方法,可以用于基于消息激勵的應(yīng)用軟件進(jìn)行模塊單調(diào)、集成、系統(tǒng)黑盒測試的各個方面,并由此形成了一套完整的集成軟件測試工具。
本發(fā)明的技術(shù)方案如下一種具有測試柔性的集成軟件測試方法,其用于一被測對象前臺單板與一后臺計(jì)算機(jī)組成的系統(tǒng)中,所述方法包括以下步驟A)所述系統(tǒng)進(jìn)行測試用例的靜態(tài)編輯,生成測試用例,其采用自動掃描方法和腳本描述方法,利用自動掃描消息結(jié)構(gòu)從而使用例中消息/結(jié)構(gòu)體自動生成,進(jìn)行腳本編輯測試用例及文件保存用例信息從而使測試用例可隨時改變;B)所述系統(tǒng)實(shí)現(xiàn)測試用例的動態(tài)運(yùn)行,形成具體的測試執(zhí)行過程,其采用信息轉(zhuǎn)化方法及動態(tài)運(yùn)行方法,所述信息轉(zhuǎn)化方法提供多種測試執(zhí)行的過程信息,同具體測試業(yè)務(wù)無關(guān)的運(yùn)行方式;動態(tài)生成測試流程以實(shí)現(xiàn)用例執(zhí)行過程的自動化。
所述的方法,其中,所述步驟A)又包括下列各步驟A1)構(gòu)建一消息庫,輸入為被測應(yīng)用軟件源程序,采用自動掃描的方法提取其中定義的消息及結(jié)構(gòu)信息;所述自動掃描方法按照標(biāo)準(zhǔn)語法將源文件中所定義的消息宏及所定義的數(shù)據(jù)結(jié)構(gòu)信息提取出來保存到數(shù)據(jù)庫中相應(yīng)的定制數(shù)據(jù)表中,并提供可用戶定義的匹配規(guī)則來關(guān)聯(lián)消息及其對應(yīng)的結(jié)構(gòu)體;A2)從所述消息庫中挑選測試流程中用到的消息,將消息及其關(guān)聯(lián)的結(jié)構(gòu)體信息取出形成測試用例的靜態(tài)區(qū)部分;A3)對取出的消息結(jié)構(gòu)體部分進(jìn)行取值設(shè)定,對需要發(fā)生變化的字段按支持的變化取值方式進(jìn)行設(shè)置;A4)將測試用例中對消息的動態(tài)處理過程進(jìn)行腳本描述,通過對黑盒測試中各種操作的抽象,腳本由一組定義好的操作集合組成,用于描述測試過程中的動態(tài)運(yùn)行信息;該編輯好的腳本形成測試用例的動態(tài)區(qū)部分;A5)上述靜態(tài)區(qū)部分與動態(tài)區(qū)部分保存在同一個文件中,以保存此用例的所有信息,形成本地測試用例文件。
所述的方法,其中,在進(jìn)行軟件模塊級測試時,還可將被測模塊之外的公有變量、樁函數(shù)返回值等環(huán)境變量進(jìn)行提取,構(gòu)成靜態(tài)區(qū)的一部分。
所述的方法,其中,所述步驟A)在當(dāng)被測軟件對象版本升級而導(dǎo)致數(shù)據(jù)結(jié)構(gòu)發(fā)生變化時,還包括以下步驟A6)進(jìn)行消息同步以使本地測試用例文件靜態(tài)區(qū)的數(shù)據(jù)內(nèi)容得以更新。
所述的方法,其中,所述步驟B)又包括下列各步驟B1)構(gòu)建測試后臺計(jì)算機(jī)與所述前臺單板之間的通信鏈路,實(shí)現(xiàn)基于TCP/IP的以太網(wǎng)通訊;B2)以本地測試用例文件為輸入,結(jié)合靜態(tài)區(qū)、動態(tài)區(qū)兩部分的信息轉(zhuǎn)化成動態(tài)內(nèi)存中的二進(jìn)制信息,供執(zhí)行實(shí)體使用,提取所要進(jìn)行的操作,并根據(jù)操作提取所需的變量,調(diào)用相應(yīng)函數(shù),實(shí)現(xiàn)測試用例所定義的功能。
所述的方法,其中,測試用例的動態(tài)運(yùn)行可設(shè)置為在后臺運(yùn)行以及在前臺運(yùn)行兩種模式。
所述的方法,其中,所述步驟B)還包括進(jìn)行一致性測試下有序消息流程的測試,以及穩(wěn)健性測試下隨機(jī)消息流程的測試的不同過程。
所述的方法,其中,所述步驟B)還包括B3)所述系統(tǒng)進(jìn)行多個測試用例串行的自動執(zhí)行,以及每個測試用例設(shè)定多次的循環(huán)次數(shù);對于同一用例,所述動態(tài)運(yùn)行的運(yùn)行模塊轉(zhuǎn)化分配好二進(jìn)制內(nèi)存后就按循環(huán)次數(shù)多次執(zhí)行,當(dāng)某次運(yùn)行結(jié)束,自動發(fā)起下一次的重新運(yùn)行;當(dāng)一個用例運(yùn)行次數(shù)結(jié)束,所述運(yùn)行模塊將此測試用例占用的內(nèi)存釋放,再載入下一個測試用例進(jìn)行相同的處理。
所述的方法,其中,所述步驟B)還包括以下步驟B4)在測試運(yùn)行過程中,同步提供運(yùn)行信息的日志記錄以及信令跟蹤功能,所述日志記錄設(shè)定權(quán)級,即不同權(quán)級對應(yīng)記錄不同詳細(xì)程度的日志內(nèi)容;所述信令跟蹤則反應(yīng)仿真?zhèn)扰c被測對象之間交互消息的即時跟蹤。
所述的方法,其中,所述本地測試用例文件的文件形式為文本形式。
本發(fā)明所提供的一種具有測試柔性的集成軟件測試方法,采用黑盒測試執(zhí)行方法,與現(xiàn)有技術(shù)相比,提高了測試柔性,達(dá)到了較好的測試效果,按照測試的通用性、靈活性、高效性、易用性方面來分析,都具有非常強(qiáng)的有益效果。
圖1是本發(fā)明測試方法的流程示意圖;圖2是本發(fā)明測試方法的測試系統(tǒng)構(gòu)架圖;圖3a是本發(fā)明的模塊級測試的測試模型,其中用例運(yùn)行在后臺;
圖3b是本發(fā)明的系統(tǒng)級測試的測試模型,其中用例運(yùn)行在前臺。
具體實(shí)施例方式
下面結(jié)合附圖,對技術(shù)方案的實(shí)施作進(jìn)一步的描述本發(fā)明的一種具有測試柔性的集成軟件測試方法,從測試應(yīng)用的角度看,為了對應(yīng)用軟件更有效地進(jìn)行黑盒測試,本發(fā)明方法按照測試設(shè)計(jì)方便快捷地生成測試用例,對于基于消息激勵的的軟件對象來說就是要快捷地生成測試所用到的消息序列及消息體數(shù)據(jù)信息,另外在測試執(zhí)行時進(jìn)行了簡單的運(yùn)行實(shí)現(xiàn)及明了的運(yùn)行跟蹤;從實(shí)現(xiàn)的角度看本發(fā)明方法盡量提高了通用性與易用性,使測試的運(yùn)行與具體被測業(yè)務(wù)無關(guān)。
為此,本發(fā)明方法把整個測試執(zhí)行的步驟分為用例靜態(tài)編輯與動態(tài)運(yùn)行兩大部分,如圖1所示,本發(fā)明方法首先以被測對象的源程序?yàn)檩斎胪ㄟ^自動掃描技術(shù)形成消息庫,然后按照測試設(shè)計(jì)將所需要的測試消息及結(jié)構(gòu)信息從庫中提取出來,以一定形式表達(dá)為用例的靜態(tài)區(qū)內(nèi)容,此處還可以在軟件版本升級時通過消息同步過程來更新已有用例文件的靜態(tài)區(qū)內(nèi)容,用戶再根據(jù)數(shù)據(jù)設(shè)計(jì)模型來進(jìn)行結(jié)構(gòu)體的取值設(shè)置,然后以腳本來表述用例運(yùn)行的動態(tài)操作信息,形成用例的動態(tài)區(qū),兩者結(jié)合可形成測試用例的文本文件;動態(tài)運(yùn)行時,以測試用例文件為輸入進(jìn)行信息轉(zhuǎn)化,生成內(nèi)存二進(jìn)制數(shù)據(jù)信息,如果是后臺運(yùn)行模式則開始后臺運(yùn)行用例,如果是前臺運(yùn)行模式則通過數(shù)據(jù)信息下載至前臺單板,再開始前臺運(yùn)行用例,此外測試還提供了一種中間模式,即將文本用例轉(zhuǎn)化成內(nèi)存二進(jìn)制信息后保存為二進(jìn)制形式的數(shù)據(jù)文件,在前臺運(yùn)行模式下可以將此二進(jìn)制文件做為輸入直接進(jìn)行數(shù)據(jù)信息下載,提高運(yùn)行的速度。
以下為本發(fā)明的方法的具體步驟第一步,進(jìn)行測試用例的靜態(tài)編輯,生成測試用例。本步驟的主要是為盡量降低測試者的非本質(zhì)工作,提高測試用例生成的效率,其實(shí)現(xiàn)的主要思想是自動掃描消息結(jié)構(gòu)從而使用例中消息/結(jié)構(gòu)體自動生成,腳本編輯測試用例及文件保存用例信息,用例信息可采用文本形式,從而使測試用例可隨時改變,不需要重新編譯,多種數(shù)據(jù)取值方式從而支持用例數(shù)據(jù)信息的靈活變化。其關(guān)鍵技術(shù)是自動掃描方法及腳本描述方法。
第二步,實(shí)現(xiàn)測試用例的動態(tài)運(yùn)行,形成具體的測試執(zhí)行過程。本步驟的主要是為實(shí)現(xiàn)同具體測試業(yè)務(wù)無關(guān)的運(yùn)行方式,提供多種測試執(zhí)行的過程信息,其實(shí)現(xiàn)的主要思想是動態(tài)生成測試流程以實(shí)現(xiàn)用例執(zhí)行過程的自動化,附加地可分級設(shè)定用例運(yùn)行信息的記錄以及提供信令跟蹤功能,方便測試過程的信息分析與問題定位。其關(guān)鍵技術(shù)是信息轉(zhuǎn)化方法及動態(tài)運(yùn)行方法。
上述第一步又包括下列各步驟1、構(gòu)建一消息庫,輸入為被測應(yīng)用軟件源程序,采用自動掃描的方法提取其中定義的消息及結(jié)構(gòu)信息;自動掃描過程按照標(biāo)準(zhǔn)語法將源文件中所定義的消息宏及所定義的數(shù)據(jù)結(jié)構(gòu)信息提取出來保存到數(shù)據(jù)庫中相應(yīng)的定制數(shù)據(jù)表中,并提供了可用戶定義的匹配規(guī)則來關(guān)聯(lián)消息及其對應(yīng)的結(jié)構(gòu)體;2、從所述消息庫中挑選測試流程中用到的消息,將這些消息及其關(guān)聯(lián)的結(jié)構(gòu)體信息取出形成測試用例的靜態(tài)區(qū)部分;做軟件模塊級測試時,還可將被測模塊之外的公有變量、樁函數(shù)返回值等環(huán)境變量進(jìn)行提取,以便控制,它們也可構(gòu)成靜態(tài)區(qū)的一部分;3、對取出的消息結(jié)構(gòu)體部分進(jìn)行取值設(shè)定,對需要發(fā)生變化的字段按支持的變化取值方式進(jìn)行設(shè)置;4、將用例中對消息的動態(tài)處理過程進(jìn)行腳本描述,通過對黑盒測試中各種操作的抽象,腳本由一組定義好的操作集合組成,用于描述測試過程中的動態(tài)運(yùn)行信息;編輯好的腳本形成測試用例的動態(tài)區(qū)部分;5、上述靜態(tài)區(qū)部分與動態(tài)區(qū)部分保存在同一個文件中,以保存此用例的所有信息,形成本地測試用例文件,此測試用例文件可采用文本形式保存;6、當(dāng)被測軟件對象版本升級而導(dǎo)致數(shù)據(jù)結(jié)構(gòu)發(fā)生變化時,本發(fā)明方法則提供了消息同步的方法可以使本地測試用例文件靜態(tài)區(qū)的數(shù)據(jù)內(nèi)容得以更新。
上述第二步又包括下列各步驟1、構(gòu)建測試后臺的PC機(jī)與被測對象前臺的嵌入式單板之間的通信鏈路,實(shí)現(xiàn)基于TCP/IP的以太網(wǎng)通訊;2、以本地測試用例文件為輸入,結(jié)合靜態(tài)區(qū)、動態(tài)區(qū)兩部分的信息轉(zhuǎn)化成動態(tài)內(nèi)存中的二進(jìn)制信息,供執(zhí)行實(shí)體使用,提取所要進(jìn)行的操作,并根據(jù)操作提取所需的變量,調(diào)用相應(yīng)的函數(shù),實(shí)現(xiàn)測試用例所定義的功能;可以進(jìn)行一致性測試下有序消息流程的測試,以及穩(wěn)健性測試下隨機(jī)消息流程的測試;支持測試用例在后臺運(yùn)行以及在前臺運(yùn)行兩種模式;3、由于每個測試用例在執(zhí)行時流程是動態(tài)生成的,所以很方便地支持測試自動化的實(shí)現(xiàn)??梢赃M(jìn)行多個測試用例串行的自動執(zhí)行,每個測試用例還可以設(shè)定多次的循環(huán)次數(shù)。對于同一用例,運(yùn)行模塊轉(zhuǎn)化分配好二進(jìn)制內(nèi)存后就可按循環(huán)次數(shù)多次執(zhí)行,當(dāng)某次運(yùn)行結(jié)束,本發(fā)明方法會自動發(fā)起下一次的重新運(yùn)行。當(dāng)一個用例運(yùn)行次數(shù)結(jié)束,運(yùn)行模塊將此用例占用的內(nèi)存釋放,再載入下一個用例進(jìn)行相同的處理;4、在測試運(yùn)行過程中,還可以同步提供運(yùn)行信息的日志記錄以及信令跟蹤功能,日志記錄可以設(shè)定權(quán)級,即不同權(quán)級對應(yīng)記錄不同詳細(xì)程度的日志內(nèi)容;信令跟蹤則反應(yīng)了仿真?zhèn)扰c被測對象之間交互消息的即時跟蹤。
如圖2所示是本發(fā)明方法的整個測試系統(tǒng)構(gòu)架圖,前臺為嵌入式單板,包括前臺模式的用例運(yùn)行模塊、輔助環(huán)境模塊、前后臺通信的前臺模塊,以及被測對象;后臺為PC機(jī),包括有消息庫模塊、用例生成模塊、后臺模式的用例運(yùn)行模塊,另外還包括轉(zhuǎn)化模塊和前后臺通信的后臺模塊;所述前臺/后臺用例運(yùn)行模塊負(fù)責(zé)生成具體的運(yùn)行實(shí)體,完成用例內(nèi)容的實(shí)際操作;所述輔助環(huán)境模塊除用于接受后臺向前臺發(fā)送的初始配置信息外主要用來控制被測對象所需要調(diào)用的環(huán)境變量如公有變量、樁函數(shù)返回值等;前后臺通信模塊以TCP/IP為標(biāo)準(zhǔn),后臺模塊作為客戶端,前臺模塊作為服務(wù)器端使用;后臺的消息庫模塊負(fù)責(zé)生成消息庫及掃描錄入消息、結(jié)構(gòu)體信息,并提供訪問接口;用例生成模塊負(fù)責(zé)形成本地測試用例文件;轉(zhuǎn)化模塊實(shí)現(xiàn)用例從文本信息向二進(jìn)制數(shù)據(jù)的轉(zhuǎn)化。所述前臺的輔助環(huán)境模塊還包括控制接口區(qū)、公有數(shù)據(jù)區(qū)、樁模塊區(qū),控制接口區(qū)實(shí)現(xiàn)了統(tǒng)一的前后臺控制交互功能,以固定的模式進(jìn)行控制數(shù)據(jù)的上傳與下載,公有數(shù)據(jù)區(qū)用來定義全局變量的存在,樁模塊區(qū)用來將自定義的打樁函數(shù)所需控制的返回值等數(shù)據(jù)進(jìn)行定義,這些數(shù)據(jù)都可由控制接口進(jìn)行訪問;前臺模式下的用例運(yùn)行模塊還包括二進(jìn)制信息模塊、運(yùn)行統(tǒng)計(jì)模塊以及控制運(yùn)行模塊等,分別實(shí)現(xiàn)運(yùn)行信息的二進(jìn)制數(shù)據(jù)控制、運(yùn)行日志記錄、運(yùn)行實(shí)體的操作控制功能。所述后臺PC機(jī)的消息庫模塊還包括消息庫構(gòu)建模塊和消息庫接口模塊;所述用例生成模塊還包括消息構(gòu)建模塊、消息取值模塊、序列組合模塊以及存儲編輯模塊,分別完成用例靜態(tài)區(qū)生成、用例數(shù)據(jù)模型付值、動態(tài)區(qū)生成及文件存儲功能;后臺模式下的用例運(yùn)行模塊還包括二進(jìn)制信息模塊、運(yùn)行統(tǒng)計(jì)模塊以及控制運(yùn)行模塊等,其功能與前臺模式下的對應(yīng)模塊相似。
如圖3a所示為本發(fā)明方法的用例后臺運(yùn)行模式下進(jìn)行軟件模塊級測試的測試模型圖,后臺為PC機(jī),前臺為單板,該前臺單板上運(yùn)行嵌入式系統(tǒng),以及基于該嵌入式系統(tǒng)上的通訊模塊、被測試對象和輔助環(huán)境,通訊模塊用于與PC機(jī)進(jìn)行端口通信,所述被測試對象為被測軟件模塊;這屬于宿主機(jī)-目標(biāo)機(jī)環(huán)境測試Host-Target Testing的測試模式,除被測對象外,其它部分都屬于仿真測試環(huán)境,被測軟件模塊載入前臺環(huán)境的嵌入式系統(tǒng)之上被驅(qū)動而運(yùn)行,與后臺PC機(jī)上運(yùn)行的用例形成端到端的交互,完成流程的測試。對于軟件模塊級的測試,內(nèi)部接口多而且需要構(gòu)造被測對象外圍的仿真輔助環(huán)境如控制公有變量、樁函數(shù)返回等,所以輔助環(huán)境模塊要起到很大作用。
如圖3b所示,為本發(fā)明方法的用例前臺運(yùn)行模式下進(jìn)行軟件系統(tǒng)級測試的測試模型圖,本發(fā)明方法的系統(tǒng)結(jié)構(gòu)依然包括前臺單板和后臺的PC機(jī),但被測對象自己獨(dú)立運(yùn)行,自成體系,環(huán)境就只仿真另一個網(wǎng)元與之交互即可,這時兩者之間為外部接口,也不用構(gòu)建被測對象的仿真輔助環(huán)境。但是由于系統(tǒng)對象在功能上都是分層處理的,一般包括最上層的信令處理層以及下面若干層的底層處理,集成軟件測試工具所仿真的用例都是對最上層信令流程的模擬,所以在系統(tǒng)級測試模型中就必須包括仿真信令層之外的其它底層處理部分,因此在所述前臺單板的嵌入式系統(tǒng)上除通訊模塊和輔助環(huán)境之外還加入了一專用處理模塊,一般都可以從真實(shí)系統(tǒng)中方便的移植而來,而且與業(yè)務(wù)內(nèi)容無關(guān),規(guī)則固定,簡單移植后就不用改變。
本發(fā)明方法通過上述技術(shù)方案,具有以下優(yōu)點(diǎn)在體現(xiàn)通用性方面,首先表現(xiàn)在掃描消息庫的過程,它是以C語言的定義格式來記錄消息定義及結(jié)構(gòu)定義的,所以只要被測軟件是用C編寫的,就可以提取出這些信息;其次表現(xiàn)在用例的生成過程,用例的靜態(tài)數(shù)據(jù)的構(gòu)成信息是從庫里直接提取的,數(shù)據(jù)的字段組成與取值信息都以相同的格式文本保存的,要在用例編輯的窗口上顯示時按照一套固定的規(guī)則就可一一列出,對于動態(tài)流程信息則以腳本進(jìn)行編輯,所有操作類型都已嚴(yán)格定義;另外在用例運(yùn)行前進(jìn)行文本信息->二進(jìn)制信息的轉(zhuǎn)化時也有通用的轉(zhuǎn)化規(guī)則,不依賴于要實(shí)現(xiàn)的業(yè)務(wù)內(nèi)容;測試的靈活性為了有效支持測試時用例信息的靈活變更,將數(shù)據(jù)與流程分開控制,數(shù)據(jù)取值賦于了多種變化模式,如缺省值、設(shè)定值、隨機(jī)取值、離散取值、固定步長的線性變化取值,由用戶根據(jù)需要靈活設(shè)置,當(dāng)選擇的消息結(jié)構(gòu)每調(diào)用一次就會按要求變化取值;對于動態(tài)流程信息則以腳本表達(dá),不需要編譯成可執(zhí)行文件,隨改隨用,方便快捷;當(dāng)被測對象需要調(diào)用公有變量以及樁函數(shù)時,提供了從后臺進(jìn)行取值控制的接口,使得被測對象的輔助環(huán)境靈活可控,進(jìn)而更多角度地測試代碼;并且這種控制方法也是非常通用的;另外不僅支持用例在后臺運(yùn)行的模式,還提供了用例運(yùn)行于前臺的模式,使測試者可以根據(jù)測試過程的復(fù)雜程度靈活選用;測試的高效性用例運(yùn)行是動態(tài)生成的,根據(jù)用戶設(shè)定來裝載測試文件,進(jìn)行文本->二進(jìn)制信息轉(zhuǎn)化后開始運(yùn)行,執(zhí)行退出后清空內(nèi)存;所以自然而然地可以支持自動化測試流程,用戶選擇多個測試用例排成列表,工具串行的裝載執(zhí)行,并可設(shè)置不同的記錄權(quán)級來保存運(yùn)行及結(jié)果信息;另外在測試過程中可以充分收集運(yùn)行信息,一方面在運(yùn)行信息窗口可以顯示所有操作流程及消息內(nèi)容(二進(jìn)制數(shù)),另一方面也提供了一個信令跟蹤的功能,將仿真?zhèn)扰c被測對象之間的所有消息交互都記錄下來(數(shù)據(jù)信息),當(dāng)需要查看消息結(jié)構(gòu)內(nèi)容時還可以關(guān)聯(lián)到對應(yīng)數(shù)據(jù)取值的消息樹結(jié)構(gòu),這個操作也具有通用性;這樣就可進(jìn)一步加快用戶對測試結(jié)果的分析以及問題的探查;另外當(dāng)被測軟件版本升級數(shù)據(jù)結(jié)構(gòu)發(fā)生變化時提供了消息同步方法,可以使本地測試用例文件靜態(tài)區(qū)的數(shù)據(jù)內(nèi)容隨之更新;測試的易用性測試后臺可以充分利用PC機(jī)的GUI人機(jī)界面,用戶使用一目了然;另外在掃描消息庫的方式上以較高的自動化程度來自行處理,用戶只需選擇好要掃描的源文件/目錄即可;對于掃描出現(xiàn)的問題都記錄到日志文件及信息窗口中,用戶可進(jìn)一步操作以增補(bǔ)的形式人工修正;在用例生成時也提供了方便的消息選擇功能,用戶可以從庫中提取消息及結(jié)構(gòu)信息存到本地用例文件中;在設(shè)置數(shù)據(jù)取值信息及編輯動態(tài)流程腳本時,可提供快捷的操作方式,不僅便于設(shè)置還減少了出錯。
權(quán)利要求
1.一種具有測試柔性的集成軟件測試方法,其用于一被測對象前臺單板與一后臺計(jì)算機(jī)組成的系統(tǒng)中,所述方法包括以下步驟A)所述系統(tǒng)進(jìn)行測試用例的靜態(tài)編輯,生成測試用例,其采用自動掃描方法和腳本描述方法,利用自動掃描消息結(jié)構(gòu)從而使用例中消息/結(jié)構(gòu)體自動生成,進(jìn)行腳本編輯測試用例及文件保存用例信息從而使測試用例可隨時改變;B)所述系統(tǒng)實(shí)現(xiàn)測試用例的動態(tài)運(yùn)行,形成具體的測試執(zhí)行過程,其采用信息轉(zhuǎn)化方法及動態(tài)運(yùn)行方法,所述信息轉(zhuǎn)化方法提供多種測試執(zhí)行的過程信息,同具體測試業(yè)務(wù)無關(guān)的運(yùn)行方式;動態(tài)生成測試流程以實(shí)現(xiàn)用例執(zhí)行過程的自動化。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟A)又包括下列各步驟A1)構(gòu)建一消息庫,輸入為被測應(yīng)用軟件源程序,采用自動掃描的方法提取其中定義的消息及結(jié)構(gòu)信息;所述自動掃描方法按照標(biāo)準(zhǔn)語法將源文件中所定義的消息宏及所定義的數(shù)據(jù)結(jié)構(gòu)信息提取出來保存到數(shù)據(jù)庫中相應(yīng)的定制數(shù)據(jù)表中,并提供可用戶定義的匹配規(guī)則來關(guān)聯(lián)消息及其對應(yīng)的結(jié)構(gòu)體;A2)從所述消息庫中挑選測試流程中用到的消息,將消息及其關(guān)聯(lián)的結(jié)構(gòu)體信息取出形成測試用例的靜態(tài)區(qū)部分;A3)對取出的消息結(jié)構(gòu)體部分進(jìn)行取值設(shè)定,對需要發(fā)生變化的字段按支持的變化取值方式進(jìn)行設(shè)置;A4)將測試用例中對消息的動態(tài)處理過程進(jìn)行腳本描述,通過對黑盒測試中各種操作的抽象,腳本由一組定義好的操作集合組成,用于描述測試過程中的動態(tài)運(yùn)行信息;該編輯好的腳本形成測試用例的動態(tài)區(qū)部分;A5)上述靜態(tài)區(qū)部分與動態(tài)區(qū)部分保存在同一個文件中,以保存此用例的所有信息,形成本地測試用例文件。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,在進(jìn)行軟件模塊級測試時,還可將被測模塊之外的公有變量、樁函數(shù)返回值等環(huán)境變量進(jìn)行提取,構(gòu)成靜態(tài)區(qū)的一部分。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述步驟A)在當(dāng)被測軟件對象版本升級而導(dǎo)致數(shù)據(jù)結(jié)構(gòu)發(fā)生變化時,還包括以下步驟A6)進(jìn)行消息同步以使本地測試用例文件靜態(tài)區(qū)的數(shù)據(jù)內(nèi)容得以更新。
5.根據(jù)權(quán)利要求1~4任意權(quán)項(xiàng)所述的方法,其特征在于,所述步驟B)又包括下列各步驟B1)構(gòu)建測試后臺計(jì)算機(jī)與所述前臺單板之間的通信鏈路,實(shí)現(xiàn)基于TCP/IP的以太網(wǎng)通訊;B2)以本地測試用例文件為輸入,結(jié)合靜態(tài)區(qū)、動態(tài)區(qū)兩部分的信息轉(zhuǎn)化成動態(tài)內(nèi)存中的二進(jìn)制信息,供執(zhí)行實(shí)體使用,提取所要進(jìn)行的操作,并根據(jù)操作提取所需的變量,調(diào)用相應(yīng)函數(shù),實(shí)現(xiàn)測試用例所定義的功能。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,測試用例的動態(tài)運(yùn)行可設(shè)置為在后臺運(yùn)行以及在前臺運(yùn)行兩種模式。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述步驟B)還包括進(jìn)行一致性測試下有序消息流程的測試,以及穩(wěn)健性測試下隨機(jī)消息流程的測試的不同過程。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述步驟B)還包括B3)所述系統(tǒng)進(jìn)行多個測試用例串行的自動執(zhí)行,以及每個測試用例設(shè)定多次的循環(huán)次數(shù);對于同一用例,所述動態(tài)運(yùn)行的運(yùn)行模塊轉(zhuǎn)化分配好二進(jìn)制內(nèi)存后就按循環(huán)次數(shù)多次執(zhí)行,當(dāng)某次運(yùn)行結(jié)束,自動發(fā)起下一次的重新運(yùn)行;當(dāng)一個用例運(yùn)行次數(shù)結(jié)束,所述運(yùn)行模塊將此測試用例占用的內(nèi)存釋放,再載入下一個測試用例進(jìn)行相同的處理。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,所述步驟B)還包括以下步驟B4)在測試運(yùn)行過程中,同步提供運(yùn)行信息的日志記錄以及信令跟蹤功能,所述日志記錄設(shè)定權(quán)級,即不同權(quán)級對應(yīng)記錄不同詳細(xì)程度的日志內(nèi)容;所述信令跟蹤則反應(yīng)仿真?zhèn)扰c被測對象之間交互消息的即時跟蹤。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述本地測試用例文件的文件形式為文本形式。
全文摘要
本發(fā)明的一種具有測試柔性的集成軟件測試方法,其用于一被測對象前臺單板與一后臺計(jì)算機(jī)組成的系統(tǒng)中,所述方法包括以下步驟所述系統(tǒng)進(jìn)行測試用例的靜態(tài)編輯,生成測試用例,其采用自動掃描方法和腳本描述方法,利用自動掃描消息結(jié)構(gòu)從而使用例中消息/結(jié)構(gòu)體自動生成,進(jìn)行腳本編輯測試用例及文件保存用例信息從而使測試用例可隨時改變;所述系統(tǒng)實(shí)現(xiàn)測試用例的動態(tài)運(yùn)行,形成具體的測試執(zhí)行過程,其采用信息轉(zhuǎn)化方法及動態(tài)運(yùn)行方法。本發(fā)明方法提高了測試柔性,達(dá)到了較好的測試效果,按照測試的通用性、靈活性、高效性、易用性方面來分析,都具有非常強(qiáng)的有益效果。
文檔編號H04L12/26GK1755642SQ200410051689
公開日2006年4月5日 申請日期2004年9月30日 優(yōu)先權(quán)日2004年9月30日
發(fā)明者左軍, 杜曉東, 汪增建, 楊建梅, 劉劍峰 申請人:中興通訊股份有限公司