《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 醫(yī)用電子直線加速器控制軟件的測試方法
醫(yī)用電子直線加速器控制軟件的測試方法
來源:微型機與應用2013年第12期
涂 施1, 蔡建平1, 謝會東2
(1. 北京工業(yè)大學 軟件學院,北京100124; 2. 北京大基康明醫(yī)療設備有限公司,北京1001
摘要: 為了實現對嵌入式控制軟件的測試,利用開發(fā)工具Realview MDK提供的仿真測試技術進行前期測試,并設計一種基于XML腳本語言描述測試用例的自動化測試方法完成功能測試,從而較完善地滿足了對該軟件的測試需求。
Abstract:
Key words :

摘 要: 為了實現對嵌入式控制軟件的測試,利用開發(fā)工具Realview MDK提供的仿真測試技術進行前期測試,并設計一種基于XML腳本語言描述測試用例的自動化測試方法完成功能測試,從而較完善地滿足了對該軟件的測試需求。
關鍵詞: 電子直線加速器; 嵌入式軟件測試; 控制軟件

    醫(yī)用電子直線加速器控制軟件是一種使用在醫(yī)療設備上的嵌入式應用軟件。目前市面上對嵌入式軟件測試的工具一般都價格昂貴,而且不同的嵌入式軟件不完全適合醫(yī)用電子直線加速器控制軟件的測試;其次,嵌入式軟件都與硬件相結合,測試起來更有難度。為解決這一難題,設計一套較為通用的測試方法來滿足對該軟件的功能測試需求,具有很好的現實意義。
1 醫(yī)用電子直線加速器控制軟件的硬件系統(tǒng)
    放射治療在對惡性腫瘤的治療中起著重要的作用,而放射治療技術的發(fā)展與加速器技術的發(fā)展緊密相關[1]。當前,醫(yī)用加速器的代表是醫(yī)用直線加速器,因而對其軟件的可靠性和功能性的要求更高于其他領域。
    本文中的醫(yī)用電子直線加速器控制軟件采用CE9200-3 ARM開發(fā)板,為開發(fā)提供基本的底層硬件、系統(tǒng)和驅動等資源。其主要配置包括:CPU為AT91RM9200, 7片16路輸入的ADC板子,3片數字輸入輸出板。對于該軟件的測試,與一般軟件的很多測試方法是通用的,但是由于它是嵌入式軟件,而且涉及到硬件,需要采用一些特殊的測試方法來區(qū)別對待。
2 基于MDK的軟件仿真測試
    在一般的嵌入式系統(tǒng)開發(fā)中,軟件的開發(fā)和測試都是在目標硬件平臺初步開發(fā)完成之后進行的。Keil公司開發(fā)的ARM開發(fā)工具MDK是用來開發(fā)基于ARM 核的系列微控制器的嵌入式應用程序[2]。RealView MDK可以使嵌入式系統(tǒng)的軟硬件協同開發(fā)、同步進行。
2.1 MDK軟件仿真器
     大多開發(fā)工具僅局限于對內核指令集的仿真,而Realview MDK的軟件仿真器不但可以仿真ARM的指令集,還能仿真許多外圍設備,包括串口、外部I/O、中斷以及片上外設在內的整個目標硬件[3]。不僅如此,其強大之處還體現在它的各種調試工具上,通過與這些調試工具進行交互,MDK的軟件仿真器可以精確地仿真各種片上外圍接口以及這些接口與外部芯片通信的過程。AT91RM9200軟件仿真器包括以下仿真模塊:PWM、UART、I2C、SPI、DMA、ADC、NAN Flash控制器、看門狗定時器等[4]。其中,每一個仿真模塊都對應一個對話框,該對話框包含了相應接口的所有寄存器。
    當使用AT91RM9200軟件仿真器調試程序時,可以在這些外圍接口對話框中觀察到每一個寄存器值的狀態(tài)及其改變的情況;還可以通過修改這些寄存器的值來達到控制程序運行的目的。軟件仿真器的每一個接口模塊都提供了引腳寄存器VTREG,用于記錄CPU引腳的狀態(tài)。這些引腳寄存器的值可以通過邏輯分析儀、調試腳本顯示和修改,使得嵌入式軟件的調試變得更加簡單易行。圖1為通過調試腳本向AT91RM9200軟件仿真器的ADC模塊的引腳ADC2輸入正弦信號,然后通過邏輯分析儀將這個引腳寄存器的狀態(tài)顯示出來的仿真圖。

2.2 UART通信仿真
    很多微處理器都提供了UART或RS232串行接口[5]。μVision4調試器可仿真微處理器UART接口,并提供了3個像操作終端那樣方便的串行接口。通過Peripherals菜單很容易查看并設置通信的波特率和其他參數,當然也可以在程序中編寫通信設置的參數。通過模擬超級終端, 軟件就可以在沒有硬件支持的情況下得到如圖2所示結果。

2.3 GPIO仿真
    GPIO的仿真功能可以通過以下的小程序實現:依次閃爍每個LED,先從前向后,再由后至前,如此反復連續(xù)。其功能函數代碼如下:
int main (void) {
    unsigned int i;                                       /*LED var */
    IODIR1 = 0x00FF0000;    
                                    /* P1.16..23 defined as Outputs */
    while (1)  {                                      /*Loop forever */
     for (i = 1<<16; i < 1<<23; i <<= 1){
                                 /* Blink LED 0,1,2,3,4,5,6 */
        IOSET1 = i;                             /*Turn on LED */
        wait ();                                 /*call wait function*/
        IOCLR1 = i; }                           /*Turn off LED*/
     for (i = 1<<23; i>1<<16; i>>=1){
                         /* Blink LED 7,6,5,4,3,2,1 */
        IOSET1 = i;                           /* Turn on LED */
        wait ();                             /* call wait function */
        IOCLR1 = i; }                        /* Turn off LED */
        }
    }
    仿真調試的片上外圍設備狀態(tài)如圖3所示,GPIO Port1外設對話框中的Output的第22位被置位,表示對應的LED燈被點亮。從圖中GPIO的邏輯分析儀信號中可以清晰看出LED 閃爍的全過程,并直接查看IO引腳的值。

2.4 性能測試
     RealView作為對醫(yī)用電子直線加速器控制軟件仿真測試還能做到對其代碼覆蓋率進行測試,這在開發(fā)和測試過程中都比較實用。μVision4仿真器的執(zhí)行剖析器能夠顯示已知地址區(qū)域執(zhí)行統(tǒng)計的信息。對沒有調試信息的地址區(qū)域,顯示列表中不會顯示這塊區(qū)域的執(zhí)行情況。μVision4的性能分析儀則可用于顯示整個模塊的執(zhí)行時間及各個模塊被調用的次數。μVision4的仿真器可以記錄整個程序代碼的執(zhí)行時間及函數調用情況。
    當需要優(yōu)化代碼時,可以修改后直接進行仿真,從執(zhí)行的時間測試出代碼優(yōu)化程度,很方便直觀。
2.5 覆蓋統(tǒng)計
    μVision4提供了一個代碼統(tǒng)計執(zhí)行情況的功能,該功能以代碼統(tǒng)計對話框的形式表示出來。在調試框中,已執(zhí)行的代碼行在左側以綠色標出。當測試嵌入式應用程序時,可用此功能查看哪些程序還沒有被執(zhí)行。代碼統(tǒng)計框提供了程序中各個模塊及函數的執(zhí)行情況, 如圖4所示。

    在Current Module下拉列表框中列出了程序中的所有模塊,在下面的列表框中顯示了相應模塊中指令的執(zhí)行情況,即每個模塊或函數的指令執(zhí)行的百分比,只要執(zhí)行了的部分均以綠色標出,在Output Window的Command頁中可以用Coverage調試命令將此信息輸出到輸出窗口中。當某個函數的執(zhí)行率覆蓋不足90%以上,可以查看沒有被綠色覆蓋的代碼,然后通過改寫代碼或是加上宏定義的測試函數執(zhí)行未執(zhí)行的代碼和路徑,這也是一種測試覆蓋率的好方法。
3 基于XML腳本的自動化測試
    醫(yī)用電子直線加速器控制軟件的大部分測試用例都是從上位機發(fā)送給下位機的操作指令,從而控制下位機的治療床運動,因此測試部分的指令是測試該控制軟件的核心。由于指令部分的測試用例多,而且需要反復測試,單純依靠手工測試非常耗時,因而需要考慮自動化測試來提高測試效率。
3.1 測試用例的XML設計
    作為W3C的一個數據交換推薦標準,XML已經被廣泛應用于很多領域。用XML作為測試腳本的統(tǒng)一格式,可以降低測試腳本與測試工具之間的耦合度,提高測試的可擴展性[6]。XML允許定義自己的標記集,“形式良好”的XML文件才能被正確地解釋處理。在XML中一個標簽用于描述一段數據;另一個標簽可分為開始標簽和結束標簽。在開始標簽和結束標簽之間,又可以使用其他標簽描述其他數據,以此來實現數據關系的描述。XML與HTML的差別在于,HTML是用來顯示的,而XML是用于數據的傳輸網絡傳輸數據、存儲數據的。利用這一點,可以用XML來描述測試用例,然后通過串口或網口對下位機傳送指令并進行測試。其XML的格式為:
<commands>
         <type>HELP</type>
         <type>RESET<set></set></type>
         <type>INPUT<set>SET</set></type>
         <type>INPUT<set>SET BIN</set></type>
         <type>OUTPUT<set>SET WINDOW</set></type>
    <type>OUTPUT <set>A </set><para>GANTRY HEAD
         FLOLON </para></type>
</commands>
3.2 測試平臺的設計
    為將測試得到的信息顯示出來,并進行下一步的自動化測試,需要搭建一個測試平臺,模擬上位機給下位機發(fā)送指令。本測試平臺采用宿主機與目標機交聯測試的方式,程序的編譯、測試分析運行在宿主機上,程序運行后得到的測試信息在目標機上產生,通過物理/邏輯連接傳輸到宿主機上,由顯示模塊執(zhí)行。通常物理連接為串口或局域網絡,邏輯連接為串口通信協議或TCP/IP網絡協議,本文研究的測試平臺宿主機與目標機之間的通信采用串口連接。
3.3 自動化測試的實現
    將控制軟件每個模塊的XML腳本文件作為測試用例獨立存放在一個文件夾中,然后把宿主機與目標機通過串口連接起來,并在目標機上下載好所需要測試的軟件。本測試平臺由用戶選擇需要導入的XML測試腳本,采用DOM解析編寫的XML腳本,文檔對象模型DOM(Document Object Model)采用與平臺和語言無關的方式表示XML文檔的W3C標準。通俗地說,就是通過解析XML文檔,為XML文檔在邏輯上建立一個樹模型,樹的節(jié)點是一個個對象。通過存取這些對象就能夠存取XML文檔的內容,然后執(zhí)行向串口定時發(fā)送經過解析的測試用例,查看從串口得到的反饋,可以判斷測試用例是否通過。將所有的測試用例文檔(即XML文件)管理起來,有利于之后的回歸測試,大大提高測試的效率。
3.4 測試結果的顯示
    由于測試用例很多,所以隨機選取50個對治療床的控制的測試用例來進行測試,查看執(zhí)行結果與執(zhí)行效率,圖5為測試用例的通過情況,并通過圖6的餅狀圖直觀顯示測試用例的通過率。

 

 

    在軟件開發(fā)階段中模擬仿真得出正確的結果,可以減少下載到硬件調試的時間,大大提高效率[7],本文中實例均在開發(fā)板上調試通過。利用RealView MDK的軟件仿真功能可以大大提高項目的前期開發(fā)效能,幫助縮短開發(fā)周期;需要上位機發(fā)送指令控制下位機的運動時,透過醫(yī)用電子直線加速器控制軟件特有的性質,可以實現測試用例的自動化執(zhí)行;減少人工投入,而且便于軟件更新或是軟件升級的回歸測試,這種測試方法同樣比較適合類似于醫(yī)用電子的控制軟件的測試。
參考文獻
[1] 程敬海.放射治療設備[D].上海:上海理工大學醫(yī)療器械學院,2009.
[2] ARM 公司. RealView MDK—引領ARM 開發(fā)工具新潮流[J]. 電子產品世界,2007(11):125-127.
[3] 庫少平,徐良平. RealView MDK 軟件仿真器的測試技術研究[J].單片機與嵌入式系統(tǒng)應用,2008(8):18-21.
[4] 李寧.ARM開發(fā)工具RealView MDK 使用入門[M].北京:北京航空航天大學出版社,2008.
[5] 邵榮防,羅克露.嵌入式系統(tǒng)仿真測試平臺的體系結構研究[J].福建電腦,2004(7):4-5.
[6] 朱經緯. XML技術在軟件測試自動化中的應用[J].計算機工程,2005,31(02):94-95.
[7] 蔡建平. 嵌入式軟件測試實用技術[M]. 北京:清華大學出版社,2010.

此內容為AET網站原創(chuàng),未經授權禁止轉載。