李建軍1,2
?。?. 中國電子科技集團公司第三十二研究所,上海 201808,;2. 國家工程軟件產(chǎn)品質(zhì)量監(jiān)督檢驗中心,,上海 201808)
摘要:隨著自主可控戰(zhàn)略的實施,國內(nèi)多家基礎(chǔ)軟件廠商推出了相關(guān)的國產(chǎn)化嵌入式實時操作系統(tǒng)軟件,,作為底層系統(tǒng)級軟件,,目前業(yè)界普遍缺少相關(guān)的測試經(jīng)驗和規(guī)范。分析并給出了國產(chǎn)化嵌入式實時操作系統(tǒng)測試內(nèi)容,、測試方法和測試技術(shù)等,,為從事嵌入式實時操作系統(tǒng)測試驗證活動提供參考指南。
關(guān)鍵詞:國產(chǎn)化,;嵌入式實時操作系統(tǒng),;驗證與測試;測試規(guī)范
中圖分類號:TP311.5文獻標(biāo)識碼:ADOI: 10.19358/j.issn.16747720.2016.24.007
引用格式:李建軍. 國產(chǎn)化嵌入式實時操作系統(tǒng)軟件測試方法研究[J].微型機與應(yīng)用,,2016,35(24):22-24,,29.
0引言
嵌入式系統(tǒng)已經(jīng)在眾多行業(yè)和領(lǐng)域獲得了廣泛且成功的應(yīng)用,比如機載航空,、軌道交通,、工業(yè)控制等方面。就嵌入式應(yīng)用開發(fā)來看,,目前絕大部分功能較復(fù)雜的嵌入式系統(tǒng)都基于嵌入式實時操作系統(tǒng)進行開發(fā),,一方面可以使嵌入式應(yīng)用軟件開發(fā)人員避開繁瑣的硬件管理, 而把主要精力放在目標(biāo)應(yīng)用的算法研究以及應(yīng)用程序自身的構(gòu)架上,另一方面應(yīng)用實時操作系統(tǒng)提供的各種服務(wù) , 可以更容易地構(gòu)建出復(fù)雜的嵌入式實時應(yīng)用系統(tǒng),,并且在軟件重用性和開放性方面實時操作系統(tǒng)也起到了非常重要的作用,。國產(chǎn)化嵌入式實時操作系統(tǒng)基礎(chǔ)軟件是我國自主信息化能力和水平的重要體現(xiàn),更是保障我國信息安全的重要組成部分,,因此研究其軟件測試方法和技術(shù)具有重要的意義,,國內(nèi)外研究人員已經(jīng)對嵌入式實時操作系統(tǒng)的測試進行了一定研究[13],但目前還未形成系統(tǒng)成熟的測試方法,。本文主要針對國產(chǎn)化嵌入式實時操作系統(tǒng)的測試內(nèi)容和測試方法進行研究,。
1RTOS測試內(nèi)容
國產(chǎn)化嵌入式實時操作系統(tǒng)的測試主要指基本功能組件[4]測試,包括進程管理,、異常/中斷管理,、時鐘/定時器管理,、信號量管理、文件系統(tǒng),、I/O管理,、標(biāo)準(zhǔn)符合性、網(wǎng)絡(luò)協(xié)議棧等方面的測試,。涉及的測試類型包括:文檔審查,、代碼審查、功能測試,、性能測試,、接口測試、余量測試,、邊界測試,、人機交互界面測試、強度測試,、安全性測試,、恢復(fù)性測試、標(biāo)準(zhǔn)符合性測試,、安裝性測試等,。
2RTOS組件測試
2.1進程管理
系統(tǒng)的分配和運行都是以進程為基本單位的,因而對系統(tǒng)的管理可歸結(jié)為對進程的管理,。關(guān)于進程管理的測試,,主要包括進程的創(chuàng)建終止、阻塞喚醒,、掛起激活,、同步通信、調(diào)度機制幾個方面,,具體為:
?。?)支持進程的創(chuàng)建:支持進程的創(chuàng)建,并包括申請進程控制塊,、為進程分配資源,、將進程導(dǎo)入相關(guān)就緒隊列等一系列功能。
?。?)支持進程的終止:支持響應(yīng)進程正常結(jié)束或異常結(jié)束,,終止進程,以及釋放進程所占有資源,,將進程控制塊從隊列中移除等功能,。
?。?)支持進程的阻塞和喚醒:準(zhǔn)確響應(yīng)進程阻塞和喚醒的相關(guān)條件,,將進程排入阻塞和喚醒隊列中去,。
(4)支持進程的掛起和激活:準(zhǔn)確響應(yīng)進程的掛起和激活,,并根據(jù)相關(guān)調(diào)度機制更改進程狀態(tài),。
(5)支持進程的同步和通信:根據(jù)系統(tǒng)的需要設(shè)計合理的進程同步和通信機制,。
?。?)支持進程的調(diào)度:支持調(diào)度管理功能,實現(xiàn)可搶占的優(yōu)先級調(diào)度,、同等優(yōu)先級先進先出調(diào)度,、同等優(yōu)先級時間片輪轉(zhuǎn)調(diào)度算法、搶占調(diào)度控制,、任務(wù)鎖定調(diào)度等功能,。采用功能分解法,通過創(chuàng)建多個任務(wù),,并設(shè)置支持基于優(yōu)先級搶占,、同等優(yōu)先級先進先出/時間片輪轉(zhuǎn)的任務(wù)調(diào)度方法,通過查看任務(wù)切換的日志記錄來驗證是否符合要求,。
2.2異常/中斷管理
異常/中斷管理模塊的測試通過異常/中斷處理句柄的安裝來實現(xiàn),,包括不同級的中斷響應(yīng)控制、當(dāng)前系統(tǒng)的中斷信息管理以及及時響應(yīng)外部產(chǎn)生的中斷幾個方面,。測試時應(yīng)覆蓋以下內(nèi)容:
?。?)支持中斷任務(wù)的創(chuàng)建和刪除,通過創(chuàng)建,、執(zhí)行,、刪除多個不同的中斷任務(wù),利用獲取任務(wù)的屬性信息函數(shù)和相應(yīng)的日志記錄來驗證操作是否正確,。
?。?)支持異常發(fā)生時保存現(xiàn)場的異常框架,,通過在不同任務(wù)中插入相應(yīng)中斷異常,,查看異常框架能否保護現(xiàn)場數(shù)據(jù),,進行異常處理,,異常清除后,驗證任務(wù)能否從異常中恢復(fù),,繼續(xù)執(zhí)行,。
(3)支持異常發(fā)生時系統(tǒng)輸出相應(yīng)診斷數(shù)據(jù),包括當(dāng)前任務(wù)信息,、內(nèi)存數(shù)據(jù),、錯誤類型等,并執(zhí)行系統(tǒng)默認(rèn)的異常處理,,可通過在不同的任務(wù)中插入相應(yīng)中斷異常,,查看異常發(fā)生時系統(tǒng)輸出的相應(yīng)系統(tǒng)診斷數(shù)據(jù),驗證能否進行系統(tǒng)默認(rèn)的異常處理,。
?。?)支持與體系結(jié)構(gòu)相關(guān)聯(lián)的異常處理機制;支持體系結(jié)構(gòu)相關(guān)的異常處理,,如x86平臺上的除零異常和返回非法地址異常等,,可通過在不同的任務(wù)中插入與體系架構(gòu)相關(guān)的不同的中斷異常,查看異常發(fā)生時系統(tǒng)輸出的相應(yīng)系統(tǒng)診斷信息,,驗證能否進行系統(tǒng)默認(rèn)的異常處理,。
(5)支持向用戶提供異常處理的掛接函數(shù),,對于無法滿足用戶需求的系統(tǒng)默認(rèn)處理,,用戶可以修改異常處理函數(shù),通過在不同的任務(wù)中插入不同的中斷異常,,查看異常發(fā)生時系統(tǒng)輸出的相應(yīng)系統(tǒng)診斷信息和系統(tǒng)默認(rèn)的異常處理,,然后通過掛接函數(shù)修改異常處理函數(shù),重復(fù)執(zhí)行一次,,驗證能否進行用戶自定義的異常處理,。
2.3時鐘/定時器管理
時鐘/定時器管理模塊的測試可以通過系統(tǒng)時鐘的管理來實現(xiàn),包括定時器功能,、單調(diào)速率周期的計時方式及顯示指定定時器的信息等方面,。測試時應(yīng)覆蓋以下內(nèi)容:
(1)實現(xiàn)微秒級高精度時鐘,,單調(diào)速率定時器,,并支持絕對時間計時和相對時間計時。
?。?)支持時鐘管理,,實現(xiàn)基本定時功能,基本粒度范圍,,可通過在程序代碼中插樁,,顯示系統(tǒng)啟動定時任務(wù)時和系統(tǒng)觸發(fā)定時任務(wù)時的時間戳,來驗證系統(tǒng)的基本定時功能和基本粒度范圍,;顯示系統(tǒng)時間片輪轉(zhuǎn)調(diào)度時刻的時間戳,,來驗證系統(tǒng)為輪轉(zhuǎn)調(diào)度提供的時間片,,并實現(xiàn)定時觸發(fā)功能。
?。?)支持維護系統(tǒng)流逝時間和實時時鐘: 支持維護系統(tǒng)流逝時間,,包括系統(tǒng)啟動后的真實時間、邏輯時間等,,可通過在程序代碼中插樁,,顯示當(dāng)前系統(tǒng)啟動后的真實時間和邏輯時間的時間戳,,以驗證系統(tǒng)支持維護流逝時鐘,。
(4)支持定時器的創(chuàng)建,、初始化,、刪除、取消,、啟動等基本操作,。
(5)實現(xiàn)為輪轉(zhuǎn)調(diào)度提供時間片,,并用于信號量,、事件、消息隊列,、信號等操作的定時觸發(fā)管理,。
2.4內(nèi)存管理
內(nèi)存用于保存進程運行時的程序和數(shù)據(jù),測試時應(yīng)驗證通過核心工作區(qū)和用戶工作區(qū)控制任務(wù)對硬件內(nèi)存資源的訪問,,提供內(nèi)存的分配及釋放功能,、系統(tǒng)內(nèi)存信息顯示功能等。測試時應(yīng)覆蓋以下內(nèi)容:
?。?)支持核心工作區(qū)和用戶工作區(qū)的系統(tǒng)動態(tài)內(nèi)存管理,,可通過在程序代碼中插樁,在內(nèi)存的核心工作區(qū)和用戶工作區(qū)分別進行內(nèi)存管理等基本操作,,來驗證系統(tǒng)支持核心工作區(qū)和用戶工作區(qū)的系統(tǒng)動態(tài)內(nèi)存管理,。
(2)支持在核心工作區(qū)內(nèi)分配核心對象控制塊,、分配任務(wù)棧,、分配消息隊列緩存區(qū)等功能,可通過在內(nèi)存的核心工作區(qū)分配核心對象控制塊,、分配任務(wù)棧,、分配消息隊列緩存區(qū)等,從而驗證系統(tǒng)支持在核心工作區(qū)內(nèi)分配核心對象控制塊,、分配任務(wù)棧,、分配消息隊列緩存區(qū)等功能。
(3)通過調(diào)用顯示系統(tǒng)中內(nèi)存總數(shù),、已使用數(shù)以及空閑內(nèi)存數(shù)等信息,,來驗證系統(tǒng)支持內(nèi)存信息顯示功能。
?。?)進行內(nèi)存分配,、內(nèi)存釋放、內(nèi)存重新分配以及分配內(nèi)存對齊等操作,,驗證內(nèi)存管理基本功能,。
(5)支持硬件MMU,,實現(xiàn)虛擬內(nèi)存與實際內(nèi)存的一一映射,。
2.5信號量管理
信號量作為用戶進程之間進行通信同步的原始機制,該模塊可以通過不同種類的信號量通信方式進行測試,,包括二進制信號量,、計數(shù)信號量和互斥信號量,實現(xiàn)多任務(wù)間的同步,、臨界資源的互斥訪問以及共享資源的有效訪問,。
測試時應(yīng)覆蓋以下內(nèi)容:
(1)支持互斥信號量,、二進制信號量,、計數(shù)信號量,實現(xiàn)多任務(wù)間的同步,,臨界資源的互斥訪問以及共享資源的有效訪問: 二進制信號量只允許一次獲取和釋放,;計數(shù)器信號量則允許多次獲取或釋放,獲取/釋放的最大次數(shù)在信號量創(chuàng)建時設(shè)置,;互斥信號量是特殊的二進制信號量,,支持所有權(quán)、遞歸訪問,、任務(wù)刪除安全,,可通過執(zhí)行符合POSIX 1003.13-2003標(biāo)準(zhǔn)的信號量管理模塊的接口函數(shù)調(diào)用,由此驗證操作系統(tǒng)信號量管理相關(guān)接口的符合性和正確性,。
?。?)支持互斥信號量采用優(yōu)先級繼承或優(yōu)先級天花板方式防止優(yōu)先級逆轉(zhuǎn),在使用優(yōu)先級天花板協(xié)議時,,可指定所有使用此信號量的任務(wù)的最高優(yōu)先級以及優(yōu)先級范圍,。
(3)通過在不同類型的不同任務(wù)的程序代碼中插樁,,顯示信號量擁有者,、空閑信號量,、已用信號量等信息,從而驗證系統(tǒng)支持信號量信息顯示,。
?。?)支持獲取信號量、釋放信號量,、刪除信號量等功能,。
2.6文件系統(tǒng)
文件系統(tǒng)用于組織和管理計算機中所存儲的大量的程序和數(shù)據(jù)。測試文件系統(tǒng)模塊包括對文件的管理以及實現(xiàn)對文件及目錄的常見操作,,包括創(chuàng)建,、打開、關(guān)閉,、讀寫文件和注冊文件系統(tǒng)等幾個方面[5],。
測試時應(yīng)覆蓋以下內(nèi)容:
?。?)支持根文件系統(tǒng),,能夠?qū)τ脖P等塊設(shè)備實現(xiàn)掛接/卸載多種文件系統(tǒng)(FAT\\NTFS\\EXT2\\EXT3\\VFAT等)。
?。?)支持文件系統(tǒng)訪問塊設(shè)備操作表,,能使用主設(shè)備號訪問設(shè)備表的信息,可通過執(zhí)行掛接/卸載操作,,驗證其是否提供具體文件系統(tǒng)的掛接/卸載函數(shù),,能夠?qū)τ脖P等塊設(shè)備進行文件系統(tǒng)的掛接。
?。?)支持文件句柄操作控制表維護文件的操作,,包括目錄、設(shè)備,、內(nèi)存文件等,,可通過執(zhí)行程序來驗證文件系統(tǒng)訪問塊設(shè)備操作表,使用主設(shè)備號訪問設(shè)備表的信息,。
?。?)支持顯示當(dāng)前已注冊文件系統(tǒng)的設(shè)備節(jié)點及安裝點信息,通過在程序中調(diào)用文件系統(tǒng)信息訪問函數(shù),。
?。?)通過在程序中調(diào)用文件格式化操作相關(guān)接口函數(shù),以指定的文件系統(tǒng)類型格式化設(shè)備,,驗證文件系統(tǒng)格式化功能的正確性,。
(6)通過在程序中調(diào)用文件操作相關(guān)接口進行目錄,、設(shè)備,、內(nèi)存文件的創(chuàng)建,、讀寫、刪除,、關(guān)閉操作,,驗證根文件系統(tǒng)功能的正確性。
?。?)支持多分區(qū),,在單個分區(qū)下可創(chuàng)建多層目錄結(jié)構(gòu),可以創(chuàng)建任意數(shù)量的文件直至剩余內(nèi)存空間不足,。
?。?)支持對塊設(shè)備進行格式化,對系統(tǒng)數(shù)據(jù)的完整性進行檢測,。
?。?)支持VFAT長文件名。
?。?0)支持FAT12,、FAT16、FAT32文件分配表類型,,可通過設(shè)置FAT12,、FAT16、FAT32文件分配表類型,,驗證對文件分配表類型支持功能的正確性,。
(11)通過在dosfs文件系統(tǒng)中調(diào)用文件操作相關(guān)接口進行目錄,、設(shè)備,、內(nèi)存文件的創(chuàng)建、讀寫,、刪除,、關(guān)閉操作,驗證dosfs文件系統(tǒng)實現(xiàn)塊設(shè)備的文件操作和目錄操作功能的正確性,。
?。?2)通過編程進行多任務(wù)讀寫操作,驗證系統(tǒng)對多任務(wù)讀寫功能的支持,。
?。?3)兼容廣泛使用的多種塊設(shè)備,如軟盤,、硬盤,、閃存等,通過在各種塊設(shè)備,,如軟盤,、硬盤,、閃存等硬件上創(chuàng)建文件系統(tǒng),驗證兼容多種塊設(shè)備功能的正確性,。
2.7基本I/O管理
I/O控制模塊可以通過設(shè)備驅(qū)動表,、設(shè)備表、文件描述符表,、總線驅(qū)動支持,、設(shè)備中斷處理機制對上層應(yīng)用程序提供統(tǒng)一的接口,支持對硬件設(shè)備的統(tǒng)一訪問等[6],。
測試時應(yīng)覆蓋以下內(nèi)容:
?。?)創(chuàng)建一個或多個任務(wù),調(diào)用I/O接口函數(shù)(open,、close,、read、write等)實現(xiàn)掛接設(shè)備,、打開設(shè)備,、讀寫設(shè)備、關(guān)閉設(shè)備,、控制設(shè)備等功能,,驗證系統(tǒng)支持設(shè)備文件的統(tǒng)一操作,。
?。?)通過創(chuàng)建一個或多個任務(wù),調(diào)用文件接口函數(shù)(open,、close,、read、write等)實現(xiàn)打開文件,、創(chuàng)建文件,、文件位置指針操作、讀文件,、寫文件,、修改文件的屬性、獲取文件的信息,、刪除文件,、顯示文件、截取文件大小等功能,,驗證系統(tǒng)支持普通文件的操作,。
(3)通過創(chuàng)建一個或多個任務(wù),,調(diào)用目錄接口函數(shù)(open,、close,、read、change等)實現(xiàn)創(chuàng)建目錄,、讀目錄,、關(guān)閉目錄、改變目錄路徑,、打開目錄,、刪除目錄、獲取當(dāng)前目錄,、移動目錄,、重置目錄等功能,驗證系統(tǒng)支持目錄操作,。
?。?)通過在系統(tǒng)初始化時實現(xiàn)三個基本的描述符:0(標(biāo)準(zhǔn)輸入,stdin),,1(標(biāo)準(zhǔn)輸出,,stdout),2(標(biāo)準(zhǔn)錯誤,,stderr),,以后打開的文件描述符從3開始,創(chuàng)建一個或多個任務(wù),,調(diào)用接口函數(shù)操作文件描述符,,驗證系統(tǒng)支持基本描述符統(tǒng)一管理。
?。?)支持設(shè)置最大文件描述符,,支持復(fù)制文件描述符,可通過創(chuàng)建一個或多個任務(wù),,調(diào)用接口函數(shù)設(shè)置文件描述符,,來驗證系統(tǒng)支持任務(wù)設(shè)置0、1,、2的局部文件描述符和全局文件描述符,。
(6)通過創(chuàng)建一個或多個任務(wù),,調(diào)用接口函數(shù)實現(xiàn)設(shè)備驅(qū)動注冊,、卸載、顯示等操作,,驗證系統(tǒng)支持設(shè)備驅(qū)動表操作,。
(7)支持設(shè)備驅(qū)動注冊,、卸載,、顯示,,要求卸載的同時必須釋放所占用的全部資源及設(shè)備表維護系統(tǒng)掛接的所有設(shè)備,根據(jù)主次設(shè)備號訪問對應(yīng)的設(shè)備驅(qū)動,,可通過創(chuàng)建一個或多個任務(wù),,調(diào)用接口函數(shù)實現(xiàn)設(shè)備驅(qū)動卸載操作,并查看所有占用資源的釋放情況,,從而驗證系統(tǒng)能否在設(shè)備驅(qū)動卸載的同時釋放所占用的全部資源,。
(8)支持顯示當(dāng)前設(shè)備表中已注冊的設(shè)備信息,,支持動態(tài)安裝/卸載設(shè)備,,可通過創(chuàng)建一個或多個任務(wù),調(diào)用接口函數(shù)顯示當(dāng)前設(shè)備表中已注冊的設(shè)備信息,,驗證系統(tǒng)支持顯示當(dāng)前設(shè)備表中已注冊的設(shè)備信息,。
(9)支持字符設(shè)備的輸入/輸出緩存管理,,對于終端輸入提供行規(guī)則和非行規(guī)則處理模式,,其中行規(guī)則可以對特殊字符的處理規(guī)則進行定義,實現(xiàn)終端管理程序,,可通
過創(chuàng)建一個或多個任務(wù),,調(diào)用接口函數(shù)實現(xiàn)動態(tài)安裝/卸載設(shè)備,來驗證系統(tǒng)支持動態(tài)安裝/卸載設(shè)備,。
?。?0)支持POSIX終端接口,包括設(shè)置波特率,、設(shè)置奇偶校驗,、獲取和設(shè)置終端屬性、設(shè)置規(guī)范模式,、設(shè)置原始輸入模式、設(shè)置輸入奇偶選項,、設(shè)置軟件控制流,、設(shè)置原始數(shù)據(jù)輸出、設(shè)置軟件流控制字符,、設(shè)置阻塞讀寫功能,。
2.8標(biāo)準(zhǔn)符合性測試
操作系統(tǒng)標(biāo)準(zhǔn)符合性測試主要包括:
(1)POSIX標(biāo)準(zhǔn)符合性測試
操作系統(tǒng)的系統(tǒng)調(diào)用與編程接口支持POSIX規(guī)范的系統(tǒng)調(diào)用接口,,保障應(yīng)用的可移植性,。具體包括:POSIX_DEVICE_IO、POSIX_NETWORKING等類,。
?。?)TCP/IP標(biāo)準(zhǔn)符合性測試
驗證BSD SOCKET套接字的標(biāo)準(zhǔn)函數(shù)接口[78],。
(3)字符集標(biāo)準(zhǔn)符合性測試
驗證國產(chǎn)操作系統(tǒng)數(shù)據(jù)及訪問接口是否支持GBK,、ASCII,、GB18030、UNICODE,,并驗證在操作系統(tǒng)文件編碼不一致時數(shù)據(jù)訪問的正確性,。
3結(jié)束語
本文研究了國產(chǎn)化嵌入式實時操作系統(tǒng)的測試方法和要點。對于國產(chǎn)化嵌入式實時操作系統(tǒng)的測試具有一定的參考價值,。本研究成果已被用于多個國產(chǎn)化RTOS測試工作中,,取得了較好的效果。下一階段的研究方向為如何基于業(yè)界領(lǐng)先的風(fēng)河公司的VxWorks操作系統(tǒng)的測試結(jié)果數(shù)據(jù)建立基準(zhǔn),,對相關(guān)國產(chǎn)化同類產(chǎn)品進行評估,。
參考文獻
[1] 石亦磊.嵌入式實時操作系統(tǒng)測試方法研究[D]. 長沙:湖南大學(xué),,2011.
?。?] 郁發(fā)新.常用嵌入式實時操作系統(tǒng)比較分析[J]. 計算機應(yīng)用,2006,,26(4):761 764.
?。?] 董佳梁,李彥峰,楊秋松,等.面向航天系統(tǒng)的嵌入式操作系統(tǒng)實時性評測[J]. 計算機工程與設(shè)計,2013,,34(1):114 120.
?。?] 王遠方.面向嵌入式操作系統(tǒng)的功能測試方法與實現(xiàn)[D]. 成都:電子科技大學(xué),2011.
?。?] 趙輝,劉志勤,胡寶成. 基于嵌入式實時操作系統(tǒng)的文件系統(tǒng)的研究與設(shè)計[J]. 航空計算技術(shù),,2004,34(3):73 75.
?。?] 馬超,尹長青. VxWorks嵌入式實時操作系統(tǒng)的結(jié)構(gòu)研究[J]. 電腦知識與技術(shù),,2006(2):133 134.
[7] 何健.嵌入式操作系統(tǒng)網(wǎng)絡(luò)協(xié)議棧測試的研究與實現(xiàn)[D]. 西安:西安電子科技大學(xué),,2014.
?。?] 郝京宇,黃建華,賈風(fēng)根. 協(xié)議棧的實現(xiàn)方法[J]. 計算機工程,2004,,30(14):93 94.