王敬麗
摘要:為了在短期內(nèi)完成車載遠(yuǎn)程信息終端(TBOX)軟件的開(kāi)發(fā),同時(shí)保證軟件的質(zhì)量,提高用戶滿意度,提出了將靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)試相結(jié)合的測(cè)試方法。在編碼階段引入靜態(tài)測(cè)試,采用測(cè)試工具分析和人工審查兩種方式相結(jié)合,關(guān)注代碼實(shí)現(xiàn)的細(xì)節(jié)。在系統(tǒng)測(cè)試階段,采用黑盒測(cè)試方法,關(guān)注功能實(shí)現(xiàn)情況。實(shí)踐表明從細(xì)節(jié)和整體這兩個(gè)維度對(duì)軟件進(jìn)行測(cè)試,不僅提高了測(cè)試效率,同時(shí)也提高了TBOX軟件的質(zhì)量。
關(guān)鍵詞:終端;靜態(tài)分析;代碼審查;臺(tái)架測(cè)試;實(shí)車測(cè)試
中圖分類號(hào):TP311? ? ?文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2020)35-0069-02
開(kāi)放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(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
隨著車聯(lián)網(wǎng)的發(fā)展,TBOX作為車輛與平臺(tái)信息交互的關(guān)鍵設(shè)備,其應(yīng)用將越來(lái)越普遍。TBOX通過(guò)CAN總線獲取整車信息,上傳到TSP(Telematics Service Provider)平臺(tái),并且可通過(guò)手機(jī)App實(shí)現(xiàn)對(duì)車輛的遠(yuǎn)程控制,TBOX軟件的質(zhì)量好壞直接影響用戶的體驗(yàn)。TBOX廣泛使用,對(duì)軟件質(zhì)量要求更高,軟件測(cè)試是保證軟件質(zhì)量的一個(gè)重要環(huán)節(jié)。
軟件測(cè)試的經(jīng)典定義是在規(guī)定的條件下對(duì)程序進(jìn)行操作,以發(fā)現(xiàn)程序錯(cuò)誤,衡量軟件質(zhì)量,并對(duì)其是否能滿足設(shè)計(jì)要求進(jìn)行評(píng)估的過(guò)程。按照是否讓被測(cè)軟件運(yùn)行分為靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)試,兩者相結(jié)合可有效提高軟件質(zhì)量。
1 車載TBOX工作原理
車載TBOX通過(guò)CAN網(wǎng)絡(luò)實(shí)現(xiàn)與整車ECU(Electronic Control Unit)交互,實(shí)時(shí)獲取車輛的信息,如里程、電池電量、車速、位置以及故障信息等上傳至平臺(tái),實(shí)現(xiàn)對(duì)車輛信息的查詢、顯示和存儲(chǔ);通過(guò)手機(jī)App實(shí)現(xiàn)對(duì)車輛的遠(yuǎn)程控制,可以幫助用戶遠(yuǎn)程打開(kāi)車門、打開(kāi)空調(diào)、車輛定位、遠(yuǎn)程充電等,給用戶使用帶來(lái)方便;能夠?qū)崿F(xiàn)對(duì)車輛ECU的OTA(Over-the-Air Technology)升級(jí),為整車廠升級(jí)軟件提供便利;休眠喚醒,車輛熄火一段時(shí)間后,TBOX和車輛其他ECU進(jìn)入休眠狀態(tài),此時(shí)終端和其他ECU的功耗較低,當(dāng)出現(xiàn)喚醒信號(hào)如開(kāi)車門,TBOX進(jìn)入正常工作模式,該功能可以減少車輛電瓶電量的消耗;車輛發(fā)生碰撞觸發(fā)安全氣囊后,TBOX會(huì)自動(dòng)觸發(fā)客戶救援熱線號(hào)碼,自動(dòng)上傳車輛位置信息等至后臺(tái),讓事故車輛和人員得到及時(shí)的救援。
2 靜態(tài)測(cè)試
靜態(tài)分析是指在不運(yùn)行代碼的方式下,借助軟件工具對(duì)源程序進(jìn)行分析,如控制流分析、數(shù)據(jù)流分析、接口分析、表達(dá)式分析、復(fù)雜度分析等。它的特點(diǎn)是不實(shí)際執(zhí)行程序,執(zhí)行速度快、效率高,誤報(bào)率也較高。
本項(xiàng)目使用Testbed測(cè)試工具分析軟件,LDRA Testbed工具能夠支持C/C++數(shù)千種條目的規(guī)則檢測(cè),包括MISRA C/C++, GJB5369等編碼規(guī)范,是最早進(jìn)入中國(guó)市場(chǎng)的靜態(tài)分析工具,在嵌入式軟件測(cè)試中廣泛應(yīng)用。Testbed自動(dòng)生成的報(bào)告有一定的誤報(bào)率,需人工對(duì)每一條違反規(guī)則的情況進(jìn)行排查,最終確定靜態(tài)分析問(wèn)題報(bào)告。靜態(tài)分析一般能發(fā)現(xiàn)違反規(guī)則的情況如下:
1) 數(shù)組越界訪問(wèn);
2) 函數(shù)返回局部指針變量;
3) 使用未初始化的變量;
4) 使用malloc函數(shù)申請(qǐng)內(nèi)存后,未判定指針是否為空;
5) 內(nèi)存泄露;
6) 存在不可達(dá)代碼。
代碼審查采用人工讀代碼的方式進(jìn)行審查,作為對(duì)靜態(tài)分析的補(bǔ)充,主要檢查代碼執(zhí)行標(biāo)準(zhǔn)的情況、代碼和設(shè)計(jì)的一致性、代碼邏輯表達(dá)的正確性、代碼結(jié)構(gòu)的合理性以及代碼的可讀性。依據(jù)代碼審查單和軟件詳細(xì)設(shè)計(jì)文檔,參考TestBed靜態(tài)分析結(jié)果,對(duì)審查模塊中復(fù)雜度高、扇入、扇出數(shù)高的模塊,以及關(guān)鍵模塊進(jìn)行重點(diǎn)審查,代碼審查采用Source Insight代碼閱讀工具。
通過(guò)靜態(tài)測(cè)試,可有效提高軟件開(kāi)發(fā)的質(zhì)量,減少在動(dòng)態(tài)測(cè)試階段出錯(cuò)的概率。
3 動(dòng)態(tài)測(cè)試
動(dòng)態(tài)測(cè)試是使被測(cè)代碼在真實(shí)環(huán)境或仿真環(huán)境下有控制地運(yùn)行,檢查運(yùn)行結(jié)果與預(yù)期結(jié)果的差異,以發(fā)現(xiàn)其中的錯(cuò)誤。采用黑盒測(cè)試方法,首先功能分解將一個(gè)功能項(xiàng)拆分成多個(gè)子功能,之后再對(duì)子功能采用等價(jià)類劃分法、邊界值分析法、猜錯(cuò)法等設(shè)計(jì)測(cè)試用例。一般在靜態(tài)測(cè)試結(jié)束后進(jìn)入,為了讓軟件開(kāi)發(fā)與測(cè)試的效率盡可能最大化,動(dòng)態(tài)測(cè)試分為兩個(gè)階段臺(tái)架測(cè)試和實(shí)車測(cè)試。測(cè)試環(huán)境示意圖如圖1所示。
1)臺(tái)架測(cè)試
臺(tái)架測(cè)試是在實(shí)驗(yàn)室利用計(jì)算機(jī)上的軟件工具模擬測(cè)試TBOX的數(shù)據(jù)輸入,查看TBOX的輸出是否正確,主要對(duì)數(shù)據(jù)上報(bào)、遠(yuǎn)程控制、休眠喚醒等功能進(jìn)行模擬測(cè)試。使用CANTest軟件模擬整車數(shù)據(jù)發(fā)送報(bào)文到終端,登錄企業(yè)管理平臺(tái),查看數(shù)據(jù)上報(bào)是否正確;手機(jī)App發(fā)送車控指令,如開(kāi)空調(diào)、車門、車窗等,TSP后臺(tái)收到后會(huì)發(fā)出請(qǐng)求指令到車載終端,使用CANTest軟件查看終端輸出的報(bào)文對(duì)應(yīng)位變化是否與協(xié)議一致。模擬整車控制器(VCU)發(fā)送空調(diào)狀態(tài)改變的報(bào)文,通過(guò)平臺(tái)查看終端上報(bào)結(jié)果。
休眠喚醒功能通過(guò)接通或斷開(kāi)ACC電源線模擬實(shí)車鑰匙狀態(tài),萬(wàn)用表串聯(lián)接入電路,用于觀察終端休眠后的靜態(tài)電流,該功能影響整車的功耗,若車輛下電后終端不能正常休眠,將導(dǎo)致車上小電瓶虧電,車輛無(wú)法啟動(dòng)。對(duì)于該功能的測(cè)試,采用功能分解和等價(jià)類劃分法設(shè)計(jì)測(cè)試用例,如表1所示。
2)實(shí)車測(cè)試
在真實(shí)的實(shí)車環(huán)境下,檢驗(yàn)TBOX軟件是否實(shí)現(xiàn)軟件需求規(guī)格中規(guī)定的功能和性能要求。實(shí)車測(cè)試應(yīng)充分考慮使用場(chǎng)景,車輛靜止、充電、行駛狀態(tài),行駛測(cè)試還應(yīng)考慮不同路況下(如高架、隧道、山區(qū)、高速等)和不同天氣下(晴天、雨天)終端的穩(wěn)定性,如數(shù)據(jù)上報(bào)、4G信號(hào)狀態(tài)、GPS定位情況等。除了驗(yàn)證需求規(guī)定的功能外,測(cè)試用例應(yīng)覆蓋各種異常情況、誤操作,比如需求中一個(gè)“遠(yuǎn)程升級(jí)”功能:終端連接上平臺(tái)后,通過(guò)平臺(tái)下發(fā)升級(jí)包(S19文件),終端自動(dòng)完成升級(jí)更新為最新版本,以該功能為例描述測(cè)試用例設(shè)計(jì)策略。
S19文件每行S-record的通用格式如下:
針對(duì)該功能項(xiàng)設(shè)計(jì)測(cè)試用例如下:
測(cè)試發(fā)現(xiàn)問(wèn)題有上報(bào)數(shù)據(jù)內(nèi)容丟失、死機(jī)、車輛虧電、通信網(wǎng)絡(luò)無(wú)信號(hào)、車控功能不穩(wěn)定、手機(jī)狀態(tài)未更新等,測(cè)試可以發(fā)現(xiàn)軟件存在的錯(cuò)誤,但不能保證軟件沒(méi)有錯(cuò)誤,而是把錯(cuò)誤控制在一個(gè)合理的范圍內(nèi),減少軟件發(fā)布后出現(xiàn)故障的風(fēng)險(xiǎn)。
4 結(jié)束語(yǔ)
電動(dòng)汽車的推廣,車載TBOX大批量產(chǎn)對(duì)軟件的可靠性要求越來(lái)越高。軟件需經(jīng)過(guò)嚴(yán)格測(cè)試,盡早地發(fā)現(xiàn)錯(cuò)誤,才能減?少量產(chǎn)后的維護(hù)成本。本文介紹的車載TBOX軟件的測(cè)試方法,發(fā)現(xiàn)了軟件代碼和功能實(shí)現(xiàn)上的缺陷,一定程度上提高了軟件的可靠性。另外測(cè)試技術(shù)還需要進(jìn)一步完善,同時(shí)測(cè)試人員也應(yīng)深入了解TBOX軟件,才能有效地提高軟件的質(zhì)量。
參考文獻(xiàn):
[1] 蔡建平,沈琦,謝會(huì)東,等.嵌入式軟件測(cè)試實(shí)用技術(shù)[M].北京:清華大學(xué)出版社,2010: 123-164.
[2] 柳純錄,黃子河,陳淥萍.軟件評(píng)測(cè)師教程[M].北京:清華大學(xué)出版社,2005: 6-175.
[3] 李志濤.車聯(lián)網(wǎng)測(cè)試的研究與分析[J].汽車電器,2017(2):11-13.
【通聯(lián)編輯:梁書】