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