寧先洪張獻王淑雪
(1.北京中宏遠達科技發展有限公司北京100094)(2.海軍工程大學計算機工程系武漢430033)
車載行駛記錄儀軟件測試工具設計與實現
寧先洪1張獻2王淑雪1
(1.北京中宏遠達科技發展有限公司北京100094)(2.海軍工程大學計算機工程系武漢430033)
根據車載行駛記錄儀通過接口數據展現功能的特性、測試場景難以復現、測試數據難以解讀等特點,針對性地提出了:1)接口數據顯式化的軟件測試工具設計理念;2)考慮測試重復性的軟硬件統籌設計理念;3)枯燥測試數據形象化的軟件測試工具設計理念。貫徹這些理念于車載行駛記錄儀軟硬件設計和測試設計過程,針對性開發了專用軟件測試工具。經過實際項目檢驗,開發的專用軟件測試工具克服了記錄儀測試固有困難,有效驗證了被測軟件的功能正確性、穩定性和可靠性,顯著提高了軟件測試效率與質量。
嵌入式軟件測試;接口數據顯式化;測試重復性設計;枯燥測試數據形象化
Class numberTP311
車載行駛記錄儀(簡稱記錄儀)可實現對車輛行駛狀態和車輛位置的實時監控,通過對所記錄的行駛信息數據進行分析,可以掌控車輛的各種行駛狀況,利用它可有效預防駕駛員違章駕駛,遏制重大交通事故,提高車輛利用率,降低運行成本[1]。為驗證軟件功能、性能、可靠性等特性,常采用軟件測試技術確保軟件質量。
軟件測試是軟件生命周期中的關鍵環節,是保證軟件質量的重要方法[2~3]。根據美國國家標準與技術研究所的統計報告指出,采用有效的軟件測試手段可以使由于軟件失效引起的經濟損失減少到三分之二[4~5]。然而,軟件測試作為最常用的軟件驗證技術,時至今日它依然面臨著巨大挑戰。據統計,一般軟件測試的花費占軟件開發總成本的50%以上,所占時間和資源達到了40%~85%[6~8]。
實際項目中,為改善用戶體驗,降低售后維護成本,需要對記錄儀軟件進行充分測試。因此,無論是從節約成本的角度還是從保證軟件運行質量的角度出發,都需要面向實際問題研究并改進軟件測試方法與技術。
本文根據現有測試手段和方法的局限性,針對記錄儀軟件特性及測試過程中遇到的實際問題,主要從接口數據顯式化、測試結果可重復性和枯燥測試數據形象化三個方面進行軟件測試工具設計與實現研究。
嵌入式軟件是指依賴于硬件設備的內嵌軟件,由于自身特點,如嵌入性、實時性、專用性、硬件依賴性、內存不豐富、I/O通道少等原因,致使嵌入式軟件測試所用到的測試策略、方法和技術相比一般應用軟件差異較大也更為復雜,可以說嵌入式軟件是各類軟件中最難測試的一種[9~10]。記錄儀軟件正是一種用于監控車輛行駛狀態和車輛位置的嵌入式軟件。
記錄儀為黑匣子結構,與上位機、無線數據接收器(簡稱接收器)、車場監控臺站(簡稱監控臺)、北斗/GPS導航衛星(簡稱導航衛星)等進行交聯,具體如下:
1)依托上位機與記錄儀間串口通信協議通過RS232串口與上位機進行有線交聯;
2)依托接收器與記錄儀間WiFi通信協議通過WiFi鏈路與接收器進行無線交聯;
3)依托監控臺與記錄儀間GSM通信協議通過移動通信GSM鏈路與監控臺進行GSM短信交聯;
4)依托導航衛星下行信號與導航衛星進行無線交聯(記錄儀內置導航定位模塊為貨架產品,相關功能不列入主要考核,其測試工作隨其它考核對象的測試工作進行)。
記錄儀軟件為嵌入式軟件,沒有見圖知意的GUI界面,無法直接通過GUI界面對其進行功能測試,這無疑加大了測試難度。此外,當前測試手段大都難以準確復現測試場景,無法確保測試一致性,造成測試結果確認效率低;處理原始測試數據的方法也比較有限,不能提供直觀顯示,難以解讀和分析。記錄儀測試中的這些固有難點都制約著測試的效率與質量,成為測試工具開發需要解決的關鍵問題。因此,如何采用適當的測試方法與技術對記錄儀的功能、接口和性能等進行充分測試成為一個值得認真研究的問題。
面向上述需求,本文設計了多個專用軟件測試工具以實現接口數據顯式化、測試場景可復現及測試數據形象化,來克服當前記錄儀測試中存在的固有困難,確保了測試過程的高效性和充分性。圖1展示了采用本文方法的記錄儀測試環境示意圖。
如圖1所示,測試環境由多個專用軟件測試工具(含其寄主計算機、測試線纜和測試工裝)組成。其中:1)上位機與記錄儀間串口通信模擬軟件、接收器與記錄儀間WiFi通信模擬軟件和監控臺與記錄儀間GSM短信模擬軟件用于實現接口數據顯式化;2)導航數據錄入軟件和導航數據回放軟件用于實現測試場景重復;3)記錄儀隨車行駛軌跡數據標繪軟件用于實現測試數據形象化。
3.1 接口數據顯示化需求
記錄儀通過RS232串口與上位機進行有線交聯,通過WiFi鏈路與接收器進行無線交聯,通過移動通信GSM鏈路與監控臺進行GSM短信交互。記錄儀所有的運行參數設置和車輛行駛數據采集與上報功能均通過與外界設備之間的交聯接口的數據交互實現。
與擁有GUI操作界面的應用軟件進行的軟件測試(通過鍵盤與鼠標操作可執行大部分基本軟件功能測試)不同,只能通過分析記錄儀對外輸出的數據觀察各項功能的完成情況。
通用軟件測試工具軟件,如串口調試助手和網絡調試助手可以分別從RS232串口和因特網口接收并保存記錄儀對外輸出的原始數據(二進制數據),對這些數據可根據相應協議進行人工逐項解析。在往記錄儀注入數據以驅動其執行某項期望工作時,可根據相應協議由人工逐項組裝成原始數據,經通用軟件測試工具軟件注入記錄儀。根據相應協議解析(或組裝)報文的工作進度緩慢,容易出錯,可重復性差,無法大批量解析(組裝)相關數據。
3.2 接口數據顯式化設計
人工執行組裝(或解析)接口數據的工作存在諸多局限,只能通過開發專用軟件測試工具軟件來完成這項工作。
借鑒可配置接口測試工具軟件[11]設計理念,人工分析接口通信協議中各報文的結構特點,提煉通用數據類型(如char、int)和專用數據類型(如日期時間:使用4字節長整型表示,起始數值0表示1970年1月1日8:00),將報文結構寫入報文結構配置文件。
所開發的專用軟件測試工具軟件實現以下功能:
1)讀取報文結構配置文件形成報文結構隊列,對報文中的專用數據類型做專門處理;
2)根據報文結構形成各報文所屬項默認值文件(報文類型區分屬性的值須人工填充),以備在報文加載和報文解析時使用;
3)從網口(或串口)接收數據,根據報文結構和報文類型區分屬性值解析報文并顯示;
4)可人工選擇期望發往記錄儀的報文類型,根據期望報文類型顯示報文要素并填充默認值(測試人員根據測試需要人工填充必要報文項的值);
5)組裝期望報文并通過網口(或串口)發往記錄儀。
3.3 接口數據顯式化實現
根據接口數據顯式化設計方案,開發了:
1)接收器與記錄儀間WiFi通信模擬軟件(用于接收并解析和組裝并發送符合接收器與記錄儀間WiFi通信協議的數據);
2)監控臺與記錄儀間GSM短信模擬軟件(用于接收并解析和組裝并發送符合監控臺與記錄儀間GSM通信協議的數據);
3)上位機與記錄儀間串口通信模擬軟件(用于接收并解析和組裝并發送符合上位機與記錄儀間串口通信協議的數據)。
以上位機與記錄儀間串口通信模擬軟件(其余模擬軟件與其類似)為例,該軟件的主界面如圖2所示。
其中:
1)標題欄下方為上位機與記錄儀之間的串口連接參數設定等;
2)軟件界面左下部為發送信息窗口:雙擊報文類型列表中的某一列選擇準備發往記錄儀的報文類型,發送報文內容列表區隨之出現相應的報文內容(含默認值),雙擊發送報文內容的要素值列可編輯相應報文子項內容,點擊‘發報文存默認值’可將待發報文內容存為默認值以備下次使用;
3)軟件界面右下部為接收信息窗口:模擬軟件實時解析收到的串口數據并在接收信息窗口進行顯示,顯示過程中對一些非直觀的數據(如時間、經緯度)進行單位轉換后填入相應備注列;
4)所發報文數據塊長度值的自動填充:如果相應編輯框中未填值,則組裝報文時根據報文結構自動填充正確數值;如果相應編輯框中已填值,則組裝報文時不再自動填充數值,以便于填充錯誤數據塊長度值進行健壯性測試;
5)所收報文數據塊長度值的自動驗證:如果所收報文中的數據塊長度數值為錯誤值,則提示錯誤,并將錯誤信息存入運行日志文件;
6)所發報文校驗要素值的自動填充:如果相應編輯框中未填值,則組裝報文時自動計算并填充正確數值;如果相應編輯框中已填值,則組裝報文時不再自動填充數值,以便于填充錯誤校驗值進行健壯性測試;
7)所收報文校驗要素值的自動驗證:如果所收報文中的校驗要素值為錯誤值,則提示錯誤,并將錯誤信息存入運行日志文件;
8)軟件將發送和接收到的報文明細內容記錄到運行日志文件中。
利用模擬軟件的發送信息窗口可向記錄儀中注入期望的數據以進行功能和健壯性測試;觀察接收信息窗口中的顯示可確認記錄儀相應功能正常與否;利用運行日志文件可對所執行的軟件測試工作進行回顧和做進一步分析。
模擬軟件的使用將測試人員從繁瑣的協議數據解析工作中解放出來,測試人員可將主要精力集中在業務數據的正確性上來,提供了部分測試數據的自動生成與校驗數據計算手段,極大提高了測試效率,同時為健壯性測試提供了手段。
4.1 測試重復性需求
為了復現問題或確認軟件更改效果,測試人員需一遍一遍地進行跑車試驗,即便沿同一條路線跑車,由于跑車路線的堵車情況、等待紅路燈的情況、導航衛星的信號情況、駕駛速度的控制情況等方方面面的因素的影響,有些軟件問題復現起來非常困難。測試重復性設計的目的就是精確復現曾經出現問題的場景,以便復現測試問題或確認問題是否得到改正。
4.2 測試重復性設計
記錄儀主要通過接收并分析衛星導航定位模塊輸出的導航數據(遵循NMEA0183協議,含時間、位置、速度、航向等數據)來感知外界輸入,影響記錄儀測試場景再現的因素先影響了導航數據輸出,經導航數據輸出影響記錄儀狀態。基于上述分析結果,借鑒網絡接口監控捕獲工具[12]開發理念,確定測試重復性的設計思路是同步實時記錄測試場景的數據,用回放的方法復現測試場景。
4.3 測試重復性實現
統籌相應的軟硬件開發設計和軟件測試開發設計工作,調整如下:
1)在電路設計上將記錄儀的導航定位模塊輸出的導航數據輸出至指定串口;
2)在上位機與記錄儀間的串口通信協議中添加透明傳輸語句;
3)在記錄儀嵌入式軟件中添加透明傳輸語句處理功能(如收到導航數據,視同從衛星導航定位模塊輸入);
4)開發導航數據錄制軟件以錄制記錄儀指定串口輸出的導航數據;
5)開發導航數據回放軟件以將事先錄制好的導航數據經串口注入記錄儀。
上述調整工作落實后,記錄儀跑車試驗過程中可使用導航數據錄制軟件隨時錄制導航數據。需要時,錄制好的導航數據可經導航數據回放軟件的回放操作注入到記錄儀中,實現測試場景復現。
測試重復性實現為記錄儀軟件測試問題的復現和修復后確認提供了測試環境支持,提高了軟件開發和測試工作的效率,顯著降低了項目研發成本。
5.1 枯燥測試形象化需求
測試人員可從多個渠道獲取車輛行駛數據:1)上位機通過串口可查詢記錄儀中的各種車輛行駛存量數據;2)記錄儀返回車場后主動向接收器上傳車輛行駛數據;3)接收器可從記錄儀采集期望時段的車輛行駛數據;4)記錄儀通過GSM短信實時向監控臺報送車輛行駛數據。
車輛行駛數據中包含統計、軌跡、違規、事故疑點等相關數據(含經緯度、時間和描述等相關信息),這些數據除經緯度外不難判斷其正確性。
經緯度數據(如:東經116.253952°,北緯40.064071°)很難與我們日常生活中途經的地點進行形象化關聯,因而也不好對其正確性進行判定。形象化設計的目的就是能將所有這些數據直接標注在地圖上。
5.2 枯燥測試形象化設計
車輛行駛數據的地圖標繪軟件設計方案如下:
1)批量下載指定地區指定比例尺的百度地圖瓦片圖(即256×256像素圖)數據;
2)對初始顯示窗口內需要顯示的瓦片圖進行拼接顯示;
3)實現地圖加載、放大、縮小、漫游時顯示窗口內瓦片圖拼接顯示和經緯度數值糾偏;
4)對車輛行駛數據文件路徑選擇輸入;
5)在顯示窗口標繪駕駛違規(或事故疑點)時的位置,標注相應描述性信息;
6)在顯示窗口標繪車輛行駛軌跡的點并連線,并標注相應描述性信息。
5.3 枯燥測試形象化實現
根據枯燥數據形象化設計方案,開發了記錄儀隨車行駛軌跡數據標繪軟件(簡稱標繪軟件),同時為各接口測試軟件添加了從運行日志中提取位置數據的功能,某時間段監控臺收到的記錄儀通過GSM短信以等距離方式上報的行車軌跡如圖3所示。
圖3 顯示的示例數據中,此段行車軌跡數據為等距離報送,從地圖上可以形象地看出六里屯南路和亮甲店路交叉口往南路段的行車軌跡數據中遺漏一包數據(每包軌跡數據含8個位置點)。通過記錄儀隨車行駛軌跡數據標繪軟件,可形象地查看并判斷各類車輛行駛數據(如軌跡、違規、事故疑點)位置屬性數據的正確性,解決了經緯度數據難判對錯的難題。
本文針對記錄儀軟件測試過程中出現的接口數據人工難以分析、某些跑車試驗場景難以復現、枯燥測試數據難以形象化分析等情況,針對性提出了接口數據顯式化的軟件測試工具設計理念、軟硬件設計時考慮測試重復性的測試驅動設計的軟硬件統籌設計理念、枯燥測試數據形象化的軟件測試工具設計理念,并針對性開發了專用軟件測試工具軟件。
在專用軟件測試工具軟件(通用測試軟件,如串口調試助手和網絡調試助手僅在專用軟件測試工具軟件開發和測試階段發揮了一定作用)的支撐下,測試人員按照測試用例對記錄儀的功能性和健壯性進行了充分測試。經過測試,記錄儀軟件的功能性、穩定性和可靠性得到較大提高,與接收器軟件和監控臺軟件一次性聯調成功,批量交付用戶后至今未發現問題級別在一般(含一般)之上的問題。
[1]陳石平,楊曉明,史哲英.北斗車載行駛記錄儀設計與實現[J].廣西通信技術,2014,(1):23-25
[2]孫寧,劉丹.裝備軟件接口測試自動化研究[J].艦船電子工程,2014,34(07):152-155.
[3]張靖,賁可榮,羅云鋒.軟件測試研究綜述[J].計算機與數字工程,2008,36(10):78-82,93.
[4]盛云龍.基于組合覆蓋的嵌入式軟件測試平臺研制[D].哈爾濱:哈爾濱工業大學,2013:3-9.
[5]賁可榮,何智勇.軟件工程——基于項目的面向對象研究方法[M].北京:機械工業出版社,2009:160-177.
[6]蘇亭.基于覆蓋準則的軟件測試用例自動化生成方法的研究與實現[D].上海:華東師范大學,2016:1-3.
[7]Antonia Bertolino.Software testing research:Achieve?ments,challenges,dreams[C]//2007 Future of Software Engineering,Washington,2007:85-103.
[8]ChristophCsallner,YannisSmaragdakis,TaoXie.DSD-Crasher:A hybrid analysis tool for bug finding[J]. ACM Transactions on Software Engineering and Methodol?ogy,2008,17(2):1-37.
[9]蔡建平.嵌入式軟件測試實用技術[M].北京:清華大學出版社,2010:1-5.
[10]李偉,程朝輝.嵌入式軟件測試策略研究[J].北京化工大學學報,2007,34(1):43-46.
[11]高翔飛,趙星漢,張倩倩等.基于XML的可配置接口測試工具設計與實現[J].指揮信息系統與技術,2015,6(6):28-32.
[12]黃美鋒,張毅彬.分布式應用軟件接口測試分析技術[J].計算機工程,2008,34(9):63-65.
Design and Implementation of Software Testing Tools for Vehicle Traveling Data Recorder
NING Xianhong1ZHANG Xian2WANG Shuxue1
(1.Beijing ZHYD Technology Development Co.,Ltd,Beijing100094)(2.Department of Computer Science,Naval University of Engineering,Wuhan430033)
Aiming to resolve the hardness to reproduce test scenarios and the non-intuitiveness of test data and function ex?pressed by interface data of vehicle traveling data recorder,proposed:1)the design concept of software testing tools for interface da?ta visualization.2)the overall design concept for test repeatability during software/hardware tests.3)the design concept of software testing tools for raw test data imaginable.With the utilization of these design concepts in software and hardware and testing design of vehicle traveling data recorder,special software testing tools are developed.With the help of these tools,the testing efficiency and functional integrality,stability and reliability of the tested software have been significantly improved.
embedded software testing,interface data visualization,test repeatability design,raw test data imaginable
TP311
10.3969/j.issn.1672-9730.2017.08.023
2017年2月13日,
2017年3月10日
寧先洪,男,碩士,高級工程師,研究方向:測量設備、精密儀器。張獻,男,博士研究生,研究方向:可信信息系統、軟件質量保證。王淑雪,男,碩士,工程師,研究方向:軟件測試開發技術研究及實踐。