王敬麗



摘要:為了在短期內完成車載遠程信息終端(TBOX)軟件的開發,同時保證軟件的質量,提高用戶滿意度,提出了將靜態測試和動態測試相結合的測試方法。在編碼階段引入靜態測試,采用測試工具分析和人工審查兩種方式相結合,關注代碼實現的細節。在系統測試階段,采用黑盒測試方法,關注功能實現情況。實踐表明從細節和整體這兩個維度對軟件進行測試,不僅提高了測試效率,同時也提高了TBOX軟件的質量。
關鍵詞:終端;靜態分析;代碼審查;臺架測試;實車測試
中圖分類號:TP311? ? ?文獻標識碼:A
文章編號:1009-3044(2020)35-0069-02
開放科學(資源服務)標識碼(OSID):
Application of Software Testing Technology in Tbox Project
WANG Jing-li
(The 38th Research Institute of China Electronics Technology Group Corporation, Hefei 230088, China)
Abstract: To complete the development of Telematics Box (TBOX) software in a short time, at the same time to ensure the quality of the software, improve customers satisfaction, a test method combining static test with dynamic test is proposed. In the coding phase, static testing is introduced, which combines test tool analysis and manual review to pay attention to the details of code implementation. In the system testing stage, the black box test method is used to pay attention to the function realization. Practice shows that testing the software from the two dimensions of details and the whole not only improves the testing efficiency, but also improves the quality of TBOX software.
Key words: TBOX; static analysis; code review; bench test; real vehicle test
隨著車聯網的發展,TBOX作為車輛與平臺信息交互的關鍵設備,其應用將越來越普遍。TBOX通過CAN總線獲取整車信息,上傳到TSP(Telematics Service Provider)平臺,并且可通過手機App實現對車輛的遠程控制,TBOX軟件的質量好壞直接影響用戶的體驗。TBOX廣泛使用,對軟件質量要求更高,軟件測試是保證軟件質量的一個重要環節。
軟件測試的經典定義是在規定的條件下對程序進行操作,以發現程序錯誤,衡量軟件質量,并對其是否能滿足設計要求進行評估的過程。按照是否讓被測軟件運行分為靜態測試和動態測試,兩者相結合可有效提高軟件質量。
1 車載TBOX工作原理
車載TBOX通過CAN網絡實現與整車ECU(Electronic Control Unit)交互,實時獲取車輛的信息,如里程、電池電量、車速、位置以及故障信息等上傳至平臺,實現對車輛信息的查詢、顯示和存儲;通過手機App實現對車輛的遠程控制,可以幫助用戶遠程打開車門、打開空調、車輛定位、遠程充電等,給用戶使用帶來方便;能夠實現對車輛ECU的OTA(Over-the-Air Technology)升級,為整車廠升級軟件提供便利;休眠喚醒,車輛熄火一段時間后,TBOX和車輛其他ECU進入休眠狀態,此時終端和其他ECU的功耗較低,當出現喚醒信號如開車門,TBOX進入正常工作模式,該功能可以減少車輛電瓶電量的消耗;車輛發生碰撞觸發安全氣囊后,TBOX會自動觸發客戶救援熱線號碼,自動上傳車輛位置信息等至后臺,讓事故車輛和人員得到及時的救援。
2 靜態測試
靜態分析是指在不運行代碼的方式下,借助軟件工具對源程序進行分析,如控制流分析、數據流分析、接口分析、表達式分析、復雜度分析等。它的特點是不實際執行程序,執行速度快、效率高,誤報率也較高。
本項目使用Testbed測試工具分析軟件,LDRA Testbed工具能夠支持C/C++數千種條目的規則檢測,包括MISRA C/C++, GJB5369等編碼規范,是最早進入中國市場的靜態分析工具,在嵌入式軟件測試中廣泛應用。Testbed自動生成的報告有一定的誤報率,需人工對每一條違反規則的情況進行排查,最終確定靜態分析問題報告。靜態分析一般能發現違反規則的情況如下:
1) 數組越界訪問;
2) 函數返回局部指針變量;
3) 使用未初始化的變量;
4) 使用malloc函數申請內存后,未判定指針是否為空;
5) 內存泄露;
6) 存在不可達代碼。
代碼審查采用人工讀代碼的方式進行審查,作為對靜態分析的補充,主要檢查代碼執行標準的情況、代碼和設計的一致性、代碼邏輯表達的正確性、代碼結構的合理性以及代碼的可讀性。依據代碼審查單和軟件詳細設計文檔,參考TestBed靜態分析結果,對審查模塊中復雜度高、扇入、扇出數高的模塊,以及關鍵模塊進行重點審查,代碼審查采用Source Insight代碼閱讀工具。
通過靜態測試,可有效提高軟件開發的質量,減少在動態測試階段出錯的概率。
3 動態測試
動態測試是使被測代碼在真實環境或仿真環境下有控制地運行,檢查運行結果與預期結果的差異,以發現其中的錯誤。采用黑盒測試方法,首先功能分解將一個功能項拆分成多個子功能,之后再對子功能采用等價類劃分法、邊界值分析法、猜錯法等設計測試用例。一般在靜態測試結束后進入,為了讓軟件開發與測試的效率盡可能最大化,動態測試分為兩個階段臺架測試和實車測試。測試環境示意圖如圖1所示。
1)臺架測試
臺架測試是在實驗室利用計算機上的軟件工具模擬測試TBOX的數據輸入,查看TBOX的輸出是否正確,主要對數據上報、遠程控制、休眠喚醒等功能進行模擬測試。使用CANTest軟件模擬整車數據發送報文到終端,登錄企業管理平臺,查看數據上報是否正確;手機App發送車控指令,如開空調、車門、車窗等,TSP后臺收到后會發出請求指令到車載終端,使用CANTest軟件查看終端輸出的報文對應位變化是否與協議一致。模擬整車控制器(VCU)發送空調狀態改變的報文,通過平臺查看終端上報結果。
休眠喚醒功能通過接通或斷開ACC電源線模擬實車鑰匙狀態,萬用表串聯接入電路,用于觀察終端休眠后的靜態電流,該功能影響整車的功耗,若車輛下電后終端不能正常休眠,將導致車上小電瓶虧電,車輛無法啟動。對于該功能的測試,采用功能分解和等價類劃分法設計測試用例,如表1所示。
2)實車測試
在真實的實車環境下,檢驗TBOX軟件是否實現軟件需求規格中規定的功能和性能要求。實車測試應充分考慮使用場景,車輛靜止、充電、行駛狀態,行駛測試還應考慮不同路況下(如高架、隧道、山區、高速等)和不同天氣下(晴天、雨天)終端的穩定性,如數據上報、4G信號狀態、GPS定位情況等。除了驗證需求規定的功能外,測試用例應覆蓋各種異常情況、誤操作,比如需求中一個“遠程升級”功能:終端連接上平臺后,通過平臺下發升級包(S19文件),終端自動完成升級更新為最新版本,以該功能為例描述測試用例設計策略。
S19文件每行S-record的通用格式如下:
針對該功能項設計測試用例如下:
測試發現問題有上報數據內容丟失、死機、車輛虧電、通信網絡無信號、車控功能不穩定、手機狀態未更新等,測試可以發現軟件存在的錯誤,但不能保證軟件沒有錯誤,而是把錯誤控制在一個合理的范圍內,減少軟件發布后出現故障的風險。
4 結束語
電動汽車的推廣,車載TBOX大批量產對軟件的可靠性要求越來越高。軟件需經過嚴格測試,盡早地發現錯誤,才能減?少量產后的維護成本。本文介紹的車載TBOX軟件的測試方法,發現了軟件代碼和功能實現上的缺陷,一定程度上提高了軟件的可靠性。另外測試技術還需要進一步完善,同時測試人員也應深入了解TBOX軟件,才能有效地提高軟件的質量。
參考文獻:
[1] 蔡建平,沈琦,謝會東,等.嵌入式軟件測試實用技術[M].北京:清華大學出版社,2010: 123-164.
[2] 柳純錄,黃子河,陳淥萍.軟件評測師教程[M].北京:清華大學出版社,2005: 6-175.
[3] 李志濤.車聯網測試的研究與分析[J].汽車電器,2017(2):11-13.
【通聯編輯:梁書】