摘要:軟件自動化測試對于航空通信電臺至關重要,針對電臺測試環境的搭建困難、測試用例的設計與執行的脫節、儀器儀表的手工操作造成測試數據難以復用等問題,提出了一種集成計算機、通信總線、儀器儀表和被測電臺的解決方案,并開發了模塊化的軟件程序來解決上述問題;最終,該系統實現了智能輔助編寫工具和“一鍵式”自動測試,還保存并回溯了測試結果;為測試人員針對電臺測試提供了一款功能強大,界面友好,靈活開展測試任務,批量執行測試用例的自動測試平臺;實際測試結果證明,該平臺明顯提高了測試人員的工作效率,實現了自動化測試與批量測試的基本要求。
本文源自王月波; 劉濤; 陳超; 李繼秀; 蒲卿路, 計算機測量與控制 發表時間:2021-05-31 《計算機測量與控制》(月刊)創刊于1993年,由中國計算機自動測量與控制技術協會主辦。報道內容:1計算機技術、自動測試技術和自動控制技術的研究成果及發展方向的綜述與評論;2先進的總線技術、故障診斷技術、系統集成技術以及控制理論在工業領域和軍事中的應用;3邊緣掃描測試技術、遙測遙控技術和自動測試系統的設計與開發;4動態數據采集與信號處理系統;現場總線與接口技術;機電一體化技術;5嵌入式系統軟件、軟件測試以及工控組態軟件的開發與應用;6集散/分布控制系統,自控/監控系統的開發與應用;7計算機網絡與通信、樓宇自動化技術的開發與應用;8先進的測控部件及傳感器技術在工業自動測試和控制中的應用;9基于總線技術的智能儀器儀表的設計與開發。
關鍵詞:電臺測試;測試代碼自動生成;批量測試
我國發展了許多通訊指揮電臺,比如短波電臺、超短波、高速數據電臺。自從無線通信技術問世,它已經得到廣泛的推廣普及。隨著人們對其理解和研究的不斷深入,無線通信技術的使用區域正在逐步擴展。現代軍用無線電臺的功能不局限于話音的傳送,還可以實現文本信息,圖像信息等數據的傳輸。通信模式也從模擬信號轉變為數字信號,定頻發送轉變為調頻加密發送。
隨著現代軍事裝備技術復雜性的提高。自動測試平臺在現代軍事裝備的開發、檢測、維修中的作用和地位變得越來越重要。盡管電臺項目較多,其技術指標也不盡相同。但對測試人員來說,核心的測試項目與測試流程都大同小異。并且,對電臺的測試是一個復雜的過程,除電臺本身外,需要使用大量測量儀器,構造不同的測試數據集等。
航空通信電臺是一種安裝在飛機上的機載通信設備,為飛機間或飛機與地面間提供視距內雙向話音和數據的通信能力,機載航空電臺是一個國家掌握制空權的重要手段之一[1]。隨著軟件定義電臺(SDR)概念的提出,電臺軟件的技術復雜性不斷提高[2],軟件在電臺中的作用越來越大,這對測試電臺軟件功能的完備性、正確性和準確性提出了更高了要求。
而目前針對電臺軟件的測試面臨如下問題:
1)電臺需要連接其他設備才能運行,測試環境搭建困難。電臺在真實運行環境下,需要配套多種測試儀器與測試平臺,才能進行測試用例的執行。對測試人員所需要涉及的知識范圍有較高的要求。不能快速、有效地展開測試。
2)測試用例設計與執行脫節,測試效率低下。測試用例的設計與執行,往往都分開進行。并且在執行過程中可能會發現其他問題,導致用例需要重新設計,并再次執行。使得測試人員需要重復勞動,并且效率低下。
3)儀器儀表手工操作,使得測試用例執行緩慢。目前對測試所需的儀器大多采用手動控制,需要根據具體需求對儀器參數進行設置,造成用例執行時間的不必要浪費,并且手動設置極有可能輸入錯誤,導致用例得出錯誤結論。
4)測試數據復用困難。在用例執行過程中,可能對同一功能使用大量的測試數據。因此對測試數據的維護、遷移等需要測試人員手動記錄或替換,不便于測試數據的復用。
針對以上電臺軟件測試中的問題,本文運用自動化測試理論,參考基于VXI總線[3]、基于PXI總線[4]、基于GPIB總線[5]、基于CVI平臺[6]等電臺自動化測試系統設計方案,結合GUI開發技術[7],提出了一種電臺軟件自動化測試方案,能夠有效地解決以上問題,實現電臺軟件快速、準確地自動化測試,有效提高了電臺軟件的測試效率。
1系統總體構成
11系統方案結構
航空通信電臺軟件測試系統由測試計算機、通信總線板卡組、儀器儀表和被測電臺組成。測試計算機上搭載了自動測試平臺,用來完成測試工程的建立,測試環境的構建,接口消息的管理,測試用例的編寫以及測試用例的自動執行;通信總線板卡組完成總線板卡的統一管理,負責與被測電臺通信;儀器儀表完成對被測電臺的參數測量和結果的返回。其方案結構如圖1所示。
本文將主要介紹自動測試平臺的設計與實現。并分析了如何通過該測試平臺提供的各個功能去解決前文提出的問題。
12平臺工作流程
首先在測試計算機中的測試平臺上創建或者編輯歷史工程。其次需要測試人員針對電臺的不同功能設計不同的測試腳本。腳本編輯完畢后,用戶可以選擇需要執行的用例開始執行,并實時生成測試結果。當所有測試腳本執行完畢后,測試人員需要根據測試腳本的通過情況與發送接收的數據,判斷腳本未能通過的原因,如是腳本問題,則測試人員需要對測試腳本進行修改,并再次執行;如是電臺軟件的問題則需要開發人員修改后再次開展回歸測試工作。最終整個測試的工作流程如圖2所示。
2平臺軟件的組成與功能說明
21平臺軟件的主要組成
自動測試平臺的構成由界面層,功能層,傳輸層構成。界面層是自動測試平臺的顯示與控制,是用戶控制系統的接口。功能層則是測試平臺最為核心與基礎的構成,包含了6個主要的模塊。主要有儀器儀表的控制模塊、測試數據管理模塊、測試數據生成模塊、測試腳本管理模塊、接口管理模塊以及自動化執行模塊。傳輸層則統一管理與電臺和儀器儀表的通信總線,處理平臺與電臺和儀器之間的數據交互。自動測試平臺的軟件構成如圖3所示。
22功能層模塊說明
1)接口管理模塊:該模塊主要完成電臺與外圍設備之間接口格式的管理,每種電臺與外圍設備之間的接口格式各不相同,為了方便管理,必須制定一種統一的格式將接口分解,并將接口屬性保存,本模塊采用XML的格式進行存儲,使用時,通過解析XML文件,將其轉換為接口腳本,在測試腳本中使用。
2)測試數據生成模塊:該模塊主要是根據電臺的接口格式生成測試數據,采用的是組合測試數據生成方法,將一條接口抽象成多個變量影響的實體,其中每個變量的取值都是離散且有限的,通過組合測試方法生成滿足特定組合覆蓋標準的組合測試數據集,可在測試腳本中直接調用該模塊生成測試數據,提高用例設計的效率和覆蓋率。
3)測試數據管理模塊:該模塊主要是對可復用的測試數據進行管理,一些通用的電臺功能的測試數據抽象成可復用的測試數據,如TOD時間設置,波道參數設置等,這些數據以XML格式保存,在設計測試腳本時,可直接在腳本中導入復用數據從而進行使用。
4)測試腳本管理模塊:主要完成測試腳本的結構和內容的管理,為了提高測試腳本的編寫效率,內置了代碼智能輔助編寫工具,可自動根據關鍵字生成腳本片段和邏輯,包括數據的發送與接收,儀器控制,數據生成和數據導入等。只需要對測試腳本進行修改就可以對不同的測試內容進行測試[8]。
5)儀器儀表控制模塊:主要完成儀器儀表的控制,為了使系統具有更好的靈活性和擴展性,該模塊將儀器儀表的指令集與儀表控制分離,可靈活擴展新的儀器儀表。
6)自動化執行模塊:主要完成測試腳本的自動執行,在使用時,首先初始化測試環境,檢查測試環境的完整性和可用性,然后遍歷需要執行的測試腳本,將腳本加載到內存中執行,最后反饋腳本的執行結果和執行進度。
3軟件的實現
本文的自動測試系統是基于Python語言開發,用戶界面使用PyQt[9]進行設計。在系統實現過程中,采用了分層架構,將系統劃分為若干層,每一層只解決問題的一部分,通過各層的協作提供整體的解決方案。把電臺自動化測試問題分解為一系列相對獨立的子問題,每一層只解決其對應的子問題,有效的降低了系統規模的復雜度。同時遵循逐層調用的原則,保證了依賴的逐層性,以及單向性。上下層之間通過接口編程實現通信。通過以上原則設計的自動測試系統具有良好的封裝性、擴展性和穩定性。
整個電臺軟件測試系統包括接口的管理控制、用例的編輯與消息提示、智能輔助編寫工具及電臺與測試平臺的數據通信。這4部分是整個測試系統的核心,也是用戶使用該系統中直接接觸最多的模塊。因此軟件的實現將主要介紹上述4部分。
1)接口管理模塊。ICD(接口控制文件)文件里包含了平臺與電臺通信的規范。其內容除開數據本身,還包括了信令碼、數據長度及校驗和。這3者對電臺的任意一個測試功能都是必備的。因此用戶在創建一條完整數據時,都需要進行選擇與設置。數據位則較為復雜,該數據可以為整型、浮點型、枚舉型,還可以為數組。或者將數據進行封裝,將多個基本類型的數據進行組合。因此,用戶在編寫接口時,可以在一條接口中創建子接口,將多個類型的數據進行組合,設定好先后順序,并且設定數據長度為所有子接口數據長度的總和。那么一條復雜的接口即可編寫完成。
2)用例的編輯與消息提示。平臺中提供了測試用例代碼的編輯與消息提示功能。同任何軟件開發平臺相同,用戶可以自主地進行測試用例的編寫。編寫的內容只需要符合Python語法即可,并提供了消息提示,將測試用例的輸出語句,或者是編寫時的語法錯誤等提示信息重定向后進行打印,用戶可以根據提示內容進行修改。其實現方法,則主要使用了PyQt提供的文本控件,并向其中添加各種菜單按鈕,最后為其注冊響應函數,完成用戶操作到底層數據的邏輯處理。
3)智能輔助編寫工具。該模塊是基于接口管理模塊。在整個測試用例的編寫中,大部分的代碼與邏輯是使用定義好的接口,按照一定的順序或者一定的取值,將數據發送至電臺。因此,提供智能輔助編寫工具。首先解析出接口管理模塊生成的XML文件。將其轉換為模板字符串,并利用Python能夠生成代碼的特色,將模板語句插入到測試用例中。生成好的模板語句風格統一,并且通俗直白,即使測試人員不具備代碼功底,也可以進行編輯并實現測試。
4)通信管理。電臺與平臺之間的通信方式有多種,并且平臺的通信方式需要根據電臺具備的通信方式進行設計。因此在實現時還需要考慮后期的擴展問題。最后決定將通信方式進行封裝,提供一個Bus父類,該父類中提供兩個基本方法:發送與接收。串口、429、網口,都需要繼承該父類,并且對兩個基本方法進行重寫。串口與網口都是調用Python提供的庫函數,429則需要調用用戶提供的動態鏈接庫文件。如果之后有新的通信方式,也只需要再實現一個子類通信方式,并對發送與接收方法進行重寫即可,不會對原有的代碼進行調整,更不會影響已經實現的功能。
4實驗結果與分析
該自動測試平臺已經投入電臺項目的測試中,并同時開展了手動測試和使用該平臺的自動測試。分別記錄兩者從分析階段開始至回歸測試完成所需花費的工作日。
41實驗步驟
1)將測試人員劃分為數量相等的兩組測試團隊,同時開展手動與使用該平臺的自動測試。
2)統計各團隊在各測試階段所花費的時間。
3)將開發人員分為兩組,修改待測軟件,交付相應測試人員后開展回歸測試,統計回歸測試花費的時間。
42結果分析
經統計,兩團隊在各個階段花費時間天數見表1。
從表1可知,使用自動測試平臺測試的總體時間小于手動測試。其中ICD錄制時間花費時間較長,其原因在于,測試人員在初次使用時不了解與遵循錄制時需要的格式,導致ICD數據需要反復更改。用例設計時間也相對較長,其原因在于,測試人員并不熟悉Python的語法風格,需要一定時間用于保證測試用例的正確性。
綜上,如果測試人員熟悉該平臺后,ICD錄制時間與用例設計時間將縮小。假如其他項目與該項目之間有繼承關系,其ICD文件與測試用例文件可以復用,將進一步減少測試人員在這兩個階段所花費的時間。并且在測試結束后,可以給出各個測試用例的通過情況,以及總體測試用例的執行情況,方便測試人員進行總結。所以,該平臺在性能、測試速度和效率等方面都明顯優于人工測試[10]。通過本次實驗可知,ICD文件的錄制至關重要,因此在實驗結束后添加了ICD校驗功能。用戶點擊保存后會按照相應規則進行檢查,并提示用戶,提升用戶的使用體驗的同時也保證了數據的正確性。
結束語
本文介紹了電臺軟件測試系統的設計和實現,通過實際工程實踐,該系統具有如下幾個方面的特性:
1)實用性:電臺軟件測試系統滿足快速建立測試環境、梳理通信ICD、輔助編寫測試腳本及自動執行的要求,提高測試的設計與執行效率。
2)靈活性:電臺軟件測試系統通過執行測試腳本,并提供了測試數據生成接口,測試人員可充分發揮其主觀能動性,構造合適的測試步驟和測試邏輯,最大限度地發揮測試人員的能力。
3)復用性:電臺軟件測試系統將消息協議,測試數據生成協議,數據轉換協議等封裝獨立出來,協議可復用。如果項目具有繼承性,可復用測試用例和測試數據。
4)擴展性:電臺軟件測試系統具有良好的擴展性,能夠靈活的擴展通信總線和儀器儀表。
論文指導 >
SCI期刊推薦 >
論文常見問題 >
SCI常見問題 >