關(guān)鍵詞:國產(chǎn)化;軟件工程;實時操作系統(tǒng);測試用例;集成與測試
中圖分類號:TP311 文獻標(biāo)識碼:A
文章編號:1009-3044(2024)28-0088-04
0 引言
隨著海運、航空、通信、交通、工業(yè)生產(chǎn)自動化等領(lǐng)域蓬勃發(fā)展,實時操作系統(tǒng)在各行業(yè)得到廣泛關(guān)注和應(yīng)用。相應(yīng)地,其功能變得愈加復(fù)雜,各功能接口數(shù)量也急劇增長。接口測試主要針對被測系統(tǒng)各組件功能性和穩(wěn)定性進行驗證,核心在于對數(shù)據(jù)傳遞、處理、控制和交互進行全面系統(tǒng)驗證,同時還要檢查各子系統(tǒng)和功能的邏輯關(guān)系[1]。國產(chǎn)化實時操作系統(tǒng)屬于行業(yè)基本軟件,其展現(xiàn)了我國信息化能力和水平的提升,更是保障我國信息安全的重要組成部分,因此其軟件測試方法具有重要意義[2]。
許多國內(nèi)外學(xué)者已經(jīng)對實時操作系統(tǒng)的測試進行了一定程度的研究,石亦磊[3]基于擴展有限狀態(tài)機(EFSM) 的嵌入式實時操作系統(tǒng)日志分析方法,郁發(fā)新[4]則提出一套嵌入式實時操作系統(tǒng)的性能衡量標(biāo)準(zhǔn),董佳梁[5]等人提出了一個包含五大類評價指標(biāo)的實時性評價體系,Tung等人[6]基于 AETG 系統(tǒng)提出了另一種參數(shù)化測試用例生成算法的工具 TCG,但是關(guān)于接口測試方向的研究還是比較少。接口測試是系統(tǒng)測試的重要內(nèi)容和環(huán)節(jié),而接口測試難點就是測試用例設(shè)計。本文針對國產(chǎn)化實時操作系統(tǒng)的接口測試流程和技術(shù)進行研究,基于基本功能組件劃分的接口單元,設(shè)計了接口集成測試方案,并設(shè)計了集成測試程序用例,使得測試結(jié)果具有直觀化和簡潔化的特點。
1 測試內(nèi)容
在接口測試活動中,主要任務(wù)是設(shè)計接口測試用例。接口測試用例的目的是驗證接口是否能夠按照預(yù)期實現(xiàn),并且是否與接口文檔一致,同時能夠在存在異常輸入?yún)?shù)時返回正確的錯誤響應(yīng)狀態(tài)碼。在接口測試中,設(shè)計測試用例主要圍繞3個方面展開:接口的輸入?yún)?shù)、接口的業(yè)務(wù)邏輯以及接口的輸出數(shù)據(jù)??傮w而言,接口測試可以分為功能測試和非功能測試兩個方面。其中,非功能測試需要測試接口的性能和安全性等方面,而功能測試則需要根據(jù)軟件測試?yán)碚摲椒ㄟM行測試用例的設(shè)計[7]。本文主要關(guān)注軟件接口的功能測試。
國產(chǎn)化實時操作系統(tǒng)根據(jù)接口提供的功能可分為不同類型,包括任務(wù)管理接口、任務(wù)同步與通信接口(如信號量接口、互斥量接口、條件變量接口、讀寫鎖接口、消息隊列接口、信號接口)、中斷/異常管理接口、時鐘/定時管理接口、內(nèi)存管理接口、文件系統(tǒng)接口、設(shè)備管理接口以及網(wǎng)絡(luò)通信接口。根據(jù)功能組件接口的功能實現(xiàn)必要性,可以將功能組件的接口進一步分為基本接口和擴展接口,如圖1所示。
2 接口集成測試流程和方案設(shè)計
在國產(chǎn)化實時操作系統(tǒng)接口測試過程中,主要分為兩個階段:測試準(zhǔn)備階段和測試執(zhí)行階段,如圖2所示。在測試準(zhǔn)備階段,首先需要分析接口測試的需求,然后根據(jù)這些需求設(shè)計接口集成測試用例,并搭建適當(dāng)?shù)臏y試環(huán)境,以確保測試用例能夠有效執(zhí)行。在這個過程中,測試環(huán)境的搭建和測試用例的設(shè)計可以同時進行。而在測試執(zhí)行階段,預(yù)先設(shè)計好的測試用例將在已經(jīng)搭建完成的測試環(huán)境中執(zhí)行,實時監(jiān)控整個測試流程的進展和狀態(tài),并對測試結(jié)果進行全面記錄和深度分析。
2.1 確認(rèn)測試接口
獲取被測的國產(chǎn)化實時操作系統(tǒng)接口測試需求,確認(rèn)不同功能模塊所包含測試的接口數(shù)量及信息,包括接口定義、輸入?yún)?shù)、輸出結(jié)果等內(nèi)容,形成接口測試計劃文檔,保證所測試接口的正確性和一致性。
2.2 梳理測試接口
在操作系統(tǒng)測試的過程中,接口可以根據(jù)功能大類拆分為多個子功能模塊,每個模塊包含一系列實現(xiàn)特定功能的接口。為了有效測試這些接口,需要對其進行系統(tǒng)梳理和分析,具體過程按照接口測試計劃文檔開展。應(yīng)依據(jù)接口基本信息對輸入輸出數(shù)據(jù)進行分析,詳細描述測試點,并給出預(yù)期返回結(jié)果。在逐層深入地梳理與分析后,還須對接口的具體數(shù)量進行統(tǒng)計與核驗,最終形成一份便于測試的接口說明文檔。
2.3 設(shè)計合適的接口集成測試用例
在接口功能測試中,設(shè)計合理有效的測試用例是重點也是難點。接口測試用例主要關(guān)注3個方向:一是對接口輸入?yún)?shù)的驗證,包括必填項、類型、長度、邊界值、有效值、組合及默認(rèn)值校驗;二是深入解析接口業(yè)務(wù)邏輯;三是對返回的接口響應(yīng)數(shù)據(jù)進行詳盡檢查,重點關(guān)注參數(shù)返回內(nèi)容和響應(yīng)狀態(tài)碼。依據(jù)功能模塊特點設(shè)計出合理的集成測試用例,集成測試用例的重點是通過一個測試程序,就能測試該功能模塊包含的所有接口,并根據(jù)測試結(jié)果直觀篩選出符合要求和不符合要求的接口,從而簡潔高效地得出測試結(jié)論。針對設(shè)計的集成測試用例,須進行合理性驗證和審查。同時,須給出集成測試的接口測試用例手冊,用例手冊要對測試用例的測試環(huán)境、安裝、執(zhí)行和所測接口信息、預(yù)期測試結(jié)果等做出詳細介紹。
2.4 搭建接口測試環(huán)境
與開發(fā)者確認(rèn)被測國產(chǎn)化實時操作系統(tǒng)所部署的硬件和軟件環(huán)境。硬件環(huán)境包括安裝此國產(chǎn)化實時操作系統(tǒng)的服務(wù)器、網(wǎng)卡、硬盤配置、交換機等;軟件環(huán)境包括操作系統(tǒng)內(nèi)核、編譯環(huán)境等。搭建與使用該系統(tǒng)一致的測試環(huán)境,以確保測試結(jié)果的準(zhǔn)確性、合理性和普遍適用性。
2.5 執(zhí)行測試
將測試用例程序加載到測試環(huán)境中,并檢查執(zhí)行測試用例程序所需的前提條件是否滿足。執(zhí)行測試用例時,應(yīng)按照測試用例手冊中所述的方法進行操作,記錄測試過程并形成接口測試記錄文檔。同時,將實際測試結(jié)果與預(yù)期測試結(jié)果進行對比,生成接口測試報告。對于出現(xiàn)問題的接口,須進行深入分析和記錄,生成問題報告單,并進行后續(xù)的回歸測試。
3 國產(chǎn)化實時操作系統(tǒng)接口集成測試
本文以內(nèi)存管理功能組件接口作為范例,依據(jù)第2節(jié)所述的測試流程,從內(nèi)存管理接口的確認(rèn)、分析和測試環(huán)境3個方面進行主要內(nèi)容的歸納和介紹,并詳細描述了內(nèi)存管理功能組件接口測試用例的設(shè)計思路。在搭建的測試環(huán)境中運行測試用例后,得到直觀的測試結(jié)果。測試人員通過對照預(yù)期測試結(jié)果,可以便捷地判斷被測接口是否通過。
3.1 內(nèi)存管理接口信息
內(nèi)存管理包含12個功能接口,主要負責(zé)管控內(nèi)存堆的內(nèi)部信息,包括動態(tài)分配物理內(nèi)存塊的初始化地址、占用大小,以及構(gòu)建并維護一個分配表。這個分配表詳盡指明了已分配使用的內(nèi)存區(qū)域、尚未占用的閑置區(qū)域及其各自的具體容量,從而實現(xiàn)對整個內(nèi)存空間狀態(tài)的精準(zhǔn)追蹤與高效利用。部分接口的簡要信息如表1所示。
3.2 內(nèi)存管理接口信息分析
依據(jù)提供的接口基本信息表,對接口進行測試分析,結(jié)合接口的功能對測試點進行描述,并給出預(yù)期測試結(jié)果,簡要歸納如表2所示。
3.3 內(nèi)存管理接口的集成測試用例設(shè)計和實現(xiàn)
在前有接口信息和接口測試點等內(nèi)容的基礎(chǔ)上,本論文對內(nèi)存管理接口的測試進行層層設(shè)計,將所有接口測試集成在一個測試用例中,并設(shè)計如下測試用例方案:1) 調(diào)用mpart_create接口函數(shù)創(chuàng)建內(nèi)存分區(qū),然后調(diào)用mpart_getinfo接口函數(shù)獲取內(nèi)存分區(qū)信息,包括已使用內(nèi)存和空閑內(nèi)存;2) 調(diào)用mpart_alloc接口函數(shù)在分區(qū)中分配緩存,再次調(diào)用mpart_getinfo接口函數(shù)獲取內(nèi)存分區(qū)使用情況;3) 將第二步分配的緩存區(qū)域的第一個字節(jié)視為字符‘ a’ 進行處理;4) 調(diào)用mpart_alloc接口函數(shù)在分區(qū)中分配另一個緩存,再次調(diào)用mpart_getinfo接口函數(shù)獲取內(nèi)存分區(qū)使用情況;5) 調(diào)用mpart_realloc接口函數(shù)對第二步分配的緩存空間重新分配空間大小,調(diào)用mpart_getinfo接口函數(shù)獲取重新劃分后的內(nèi)存分區(qū)信息,判斷新分區(qū)是否仍為‘a(chǎn)’,再次調(diào)用mpart_getinfo接口函數(shù)獲取內(nèi)存分區(qū)信息;6) 調(diào)用mpart_free接口函數(shù)釋放第五步重新劃分后分配的緩存,再次調(diào)用mpart_getinfo接口函數(shù)獲取內(nèi)存分區(qū)信息;7) 調(diào)用mem_findmax函數(shù)接口查找當(dāng)前用戶堆的最大空閑塊,并打印信息;8) 調(diào)用mpart_realloc函數(shù)接口重新分配第四步分配的緩存,調(diào)用mpart_getinfo函數(shù)接口獲取內(nèi)存分區(qū)信息,然后調(diào)用mpart_findmaxfree函數(shù)接口獲取內(nèi)存分區(qū)的最大空閑塊;9) 調(diào)用xnmalloc接口函數(shù)分配16字節(jié)大小空間,該空間位于整個用戶堆的非已分配內(nèi)存分區(qū)中。調(diào)用mpart_addmem接口函數(shù)將該16字節(jié)空間添加到當(dāng)前內(nèi)存分區(qū),再次調(diào)用mpart_getinfo接口函數(shù)以獲取內(nèi)存分區(qū)信息;10) 調(diào)用mpart_memalign接口函數(shù)以確保分配的緩存空間邊界對齊;11) 調(diào)用mem_show 接口函數(shù)以顯示當(dāng)前用戶堆內(nèi)存情況;12) 調(diào)用mpart_delete 接口函數(shù)刪除當(dāng)前內(nèi)存分區(qū);13) 調(diào)用mem_show接口函數(shù)以顯示當(dāng)前用戶堆內(nèi)存情況。每一步通過判斷函數(shù)來驗證接口是否正確調(diào)用,并核對返回參數(shù)是否正確,若異常則會出現(xiàn)錯誤提示,若正常則會按照預(yù)期結(jié)果輸出返回值,部分實現(xiàn)代碼如下所示。
3.4 測試環(huán)境搭建及測試用例執(zhí)行
在飛騰2000+架構(gòu)的服務(wù)器(64核128G內(nèi)存)上安裝國產(chǎn)麒麟操作系統(tǒng),并安裝一個8核16G內(nèi)存的虛擬機。該虛擬機的操作系統(tǒng)為被測的國產(chǎn)化實時操作系統(tǒng)。在完成必要的軟件安裝和部署后,安裝并編譯集成測試用例,運行測試用例并輸出結(jié)果,結(jié)果如圖3所示。通過分析測試點的描述以及測試用例方案中的步驟,可以直觀地判斷各接口調(diào)用情況。根據(jù)測試結(jié)果顯示,所測試的內(nèi)存管理接口功能測試均通過。
4 結(jié)論
本文為國產(chǎn)化實時操作系統(tǒng)的接口測試設(shè)計了一套測試方法,包括整個測試流程和接口集成測試用例方案,并以內(nèi)存管理功能接口測試為例,詳細介紹了接口集成測試的前期準(zhǔn)備、測試用例設(shè)計、執(zhí)行測試以及結(jié)果分析等方面,并重點闡述了測試用例的測試點和設(shè)計思路。經(jīng)過測試驗證,本文提出的整套流程符合測試規(guī)范,接口集成測試用例的結(jié)果高效且直觀,為測試人員從事相關(guān)活動提供了可參考的指導(dǎo)方案。