施雯 洪小駿 胡浩 陸靈君 鄭璧青
摘要:針對(duì)MCS-51單片機(jī)軟件中使用匯編語言存在單元測(cè)試難度大的問題,采用了TBrun for ASM測(cè)試工具和腳本指令解釋器進(jìn)行解決。以某嵌入式軟件的單元測(cè)試為例給出具體應(yīng)用,結(jié)果表明,TBrun for ASM測(cè)試工具既滿足軟件匯編語言的覆蓋率測(cè)試要求,又保證了軟件測(cè)試的質(zhì)量。
關(guān)鍵詞:匯編語言;MCS-51單片機(jī);單元測(cè)試;TBrun for ASM測(cè)試工具
引言
匯編語言具有非結(jié)構(gòu)化、非標(biāo)準(zhǔn)化、硬件相關(guān)性高、靈活性極大的特性[1],所以在的嵌入式實(shí)時(shí)軟件和操作系統(tǒng)等對(duì)時(shí)間、空間要求較高的軟件系統(tǒng)中仍經(jīng)常使用匯編語言。但是,由于匯編語言結(jié)構(gòu)化程序低、程序不易理解,與硬件關(guān)系緊密(使用絕對(duì)地址或固定相對(duì)位移地址)目前市面上大多是針對(duì)高級(jí)程序設(shè)計(jì)語言的測(cè)試工具,針對(duì)匯編語言的單元測(cè)試工具卻很少,增加了匯編語言測(cè)試難度。本文介紹了TBrun for ASM測(cè)試工具,解決了匯編語言單元測(cè)試難度大的問題,針對(duì)該工具的測(cè)試用例設(shè)計(jì),不僅方便了匯編語言的測(cè)試,還提高匯編語言軟件的測(cè)試的覆蓋率。
1 單元測(cè)試基本方法
單元測(cè)試是發(fā)現(xiàn)軟件缺陷的重要測(cè)試手段,是對(duì)軟件單元進(jìn)行正確性檢查,它所包含的測(cè)試項(xiàng)目有功能測(cè)試、結(jié)構(gòu)覆蓋率測(cè)試以及性能測(cè)試[2]。驅(qū)動(dòng)模塊:是調(diào)用被測(cè)單元的模塊,被測(cè)模塊的主程序;樁模塊(Stub):是被測(cè)單元調(diào)用的其他模塊。軟件單元測(cè)試通過構(gòu)造隔離的測(cè)試環(huán)境來實(shí)現(xiàn)測(cè)試,即構(gòu)造一個(gè)驅(qū)動(dòng)程序代替該單元的驅(qū)動(dòng)模塊,以傳送測(cè)試數(shù)據(jù)給被測(cè)單元,同時(shí)為被測(cè)單元調(diào)用的接口(即樁模塊)打樁,以返回一定的測(cè)試結(jié)果給被測(cè)單元,并實(shí)現(xiàn)對(duì)被測(cè)單元不同邏輯分支的覆蓋控制[3]。
2 匯編語言測(cè)試的難點(diǎn)
2.1 語言特點(diǎn)
匯編是一種低級(jí)語言,面向機(jī)器,非結(jié)構(gòu)化、非標(biāo)準(zhǔn)化且程序不易理解,與硬件關(guān)系緊密。軟件在進(jìn)行單元測(cè)試時(shí),匯編語言使用絕對(duì)地址或固定相對(duì)位移地址,一旦進(jìn)行插裝,將會(huì)改變地址的特性,使地址原功能特性改變,增加測(cè)試用例設(shè)計(jì)的難度。
2.2 測(cè)試腳本
匯編語言不能自動(dòng)識(shí)別出全局變量、形參等,需要測(cè)試人員在測(cè)試腳本中自己手動(dòng)添加寄存器變量、地址和賦值,然后再對(duì)地址進(jìn)行賦值。在進(jìn)行結(jié)構(gòu)覆蓋率測(cè)試時(shí),測(cè)試人員需在代碼審查的基礎(chǔ)上進(jìn)行數(shù)據(jù)流和控制流分析,增加測(cè)試難度。
2.3 測(cè)試界面
匯編語言運(yùn)行測(cè)試用例無法運(yùn)行于后臺(tái),測(cè)試界面一旦顯示語法錯(cuò)誤和警告信息,則需要測(cè)試人員手動(dòng)設(shè)置斷點(diǎn)、以查看內(nèi)部寄存器變量調(diào)試測(cè)試腳本。相比高級(jí)語言,測(cè)試結(jié)果輸出顯示困難。
3 匯編語言單元測(cè)試方法
3.1匯編語言測(cè)試工具——TBrun for ASM
TBrun for ASM測(cè)試工具是一個(gè)使用腳本語言來構(gòu)建測(cè)試用例,通過對(duì)指令的解釋執(zhí)行來進(jìn)行測(cè)試的匯編語言單元測(cè)試工具,使用簡(jiǎn)捷的腳方便的進(jìn)行測(cè)試用例的構(gòu)建,具有精確的指令解釋執(zhí)行、簡(jiǎn)捷的腳言、靈活的函數(shù)打樁、全面的功能驗(yàn)證、詳細(xì)的覆蓋率分析、方便靈活的用例管理和可定制的中文測(cè)試報(bào)告等功能,使匯編語言的單元測(cè)試更加可靠、高效和易于管理。
3.2測(cè)試用例設(shè)計(jì)
在進(jìn)行用例設(shè)計(jì)前,首先需要確認(rèn)函數(shù)的結(jié)束標(biāo)識(shí)和調(diào)用語句:RET(匯編語言的子程序返回語句)或RETI(匯編語言的中斷程序返回語句)、CALL和LCALL(匯編語言的函數(shù)調(diào)用和長調(diào)用語句)。TBrun for ASM具有高可靠性的指令解釋器,來實(shí)現(xiàn)匯編語言的指令解釋執(zhí)行。
3.3 TBrun for ASM在匯編軟件中的應(yīng)用
以某嵌入式軟件為例,該嵌入式系統(tǒng)采用Intel8031微處理器,軟件采用MCS 51匯編語言編制,軟件主要通過1553B總線完成數(shù)據(jù)發(fā)送至數(shù)管總線。測(cè)試人員通過TBrun for ASM工具來實(shí)現(xiàn)匯編指令模擬、CPU環(huán)境模擬以及外部事件模擬等手段來構(gòu)建匯編應(yīng)用程序的運(yùn)行環(huán)境,在該環(huán)境下實(shí)現(xiàn)了匯編語言程序模擬運(yùn)行、代碼調(diào)試、代碼分析(包括代碼規(guī)則檢查)、代碼測(cè)試、外部事件仿真及測(cè)試報(bào)告生成。
bit_sys對(duì)應(yīng)的地址是0x01,而它是內(nèi)部存儲(chǔ)器,則使用“%%INPUT.IDATA.{BIT∣BYTE∣WORD∣DWORD} ADDRESS={address} VALUE={value}”命令集,JNB bit_sys,NEXT1,要使程序跳轉(zhuǎn)至NEXT分支,bit_sys變量為0,因此測(cè)試腳本為:%%INPUT.IDATA.BIT ADDRESS=0x01 VALUE=0
從以上測(cè)試用例得出TBrun for ASM不需要對(duì)被測(cè)軟件手工編寫測(cè)試驅(qū)動(dòng)。用工具自帶的指令集來模擬匯編語言,從而使得被測(cè)匯編程序在TBrun for ASM模擬運(yùn)行環(huán)境下。這種自編程模擬功能很好地解決匯編語言難測(cè)試的問題。執(zhí)行動(dòng)態(tài)測(cè)試后,還能查看已完成的測(cè)試語句覆蓋率和分支覆蓋率,并生成測(cè)試報(bào)告,能夠滿足嵌入式匯編語言編程的軟件單元測(cè)試的要求。
4 結(jié)論
本文結(jié)合實(shí)踐,針對(duì)嵌入式匯編語言的軟件的單元測(cè)試難點(diǎn)展開討論,通過TBrun for ASM測(cè)試工具解決了匯編語言單元測(cè)試難度大的問題,并應(yīng)用在某嵌入式軟件的單元測(cè)試,滿足了的測(cè)試覆蓋率要求,取得了較好的測(cè)試效果,為后續(xù)軟件測(cè)試工作提供了重要保障。
參考文獻(xiàn)
[1]劉利權(quán) 基于51系列的嵌入式軟件測(cè)試系統(tǒng)研究與實(shí)現(xiàn)[J],電子科技大學(xué),2005.
[2]蔡建平 嵌入式軟件測(cè)試[M].北京:清華大學(xué)出版社,2010.
[3]張巍,尹海波,孫立財(cái).軟件的單元測(cè)試方法[J].光電技術(shù)應(yīng)用,2006,21(2):36-38.
作者簡(jiǎn)介:施雯(1984.1---)女,漢族,浙江諸暨人,華東師范大學(xué)本科,上海航天電子技術(shù)研究所,工程師,研究方向:軟件設(shè)計(jì)與測(cè)試技術(shù)。
(作者單位:上海航天電子技術(shù)研究所)