董昕 梁艷 龍靈 石欣漾
摘 ? 要:雙向無線數(shù)字對(duì)講機(jī)中的客戶事件代碼表,提供了對(duì)講機(jī)及其附屬設(shè)備中使用的各種操作碼的定義和分配。該代碼表有超過400個(gè)事件,使用傳統(tǒng)測(cè)試方法進(jìn)行全面覆蓋大約需要1個(gè)月。該文介紹了一種新的方法來提高測(cè)試效率,并開發(fā)了一套自動(dòng)化測(cè)試用例及測(cè)試腳本。自動(dòng)化的測(cè)試腳本可重復(fù)使用,易于回歸測(cè)試。測(cè)試實(shí)踐證明,該方法可以節(jié)省60%的工作量,并提高無線電、附屬設(shè)備和第三方產(chǎn)品的生產(chǎn)效率。該方法可加快和簡化代碼表測(cè)試,已被證明是可行的,并且十分高效,值得推廣和部署。
關(guān)鍵詞:嵌入式設(shè)備;自動(dòng)化測(cè)試;測(cè)試腳本;回歸測(cè)試
中圖分類號(hào):TP311.56 ? ? ? 文獻(xiàn)標(biāo)志碼:A
0 引言
作為公共安全領(lǐng)域廣泛使用的集群通信終端設(shè)備,雙向無線數(shù)字對(duì)講機(jī)支持即時(shí)通信、組呼通播、系統(tǒng)呼叫、機(jī)密呼叫等功能,不僅經(jīng)濟(jì)實(shí)用、運(yùn)營成本低、不耗費(fèi)通話費(fèi)用,而且使用方便、保密性強(qiáng),特別適用于緊急調(diào)度和集體協(xié)作的工作場(chǎng)景??蛻羰录a表(Subscriber Event Code Table,SECT)操作碼,為雙向無線對(duì)講機(jī)的事件集及其的相關(guān)狀態(tài)提供通用定義。事件代碼標(biāo)識(shí)事件本身,狀態(tài)碼標(biāo)識(shí)與事件關(guān)聯(lián)的狀態(tài)信息。通過一組公共的事件操作碼,使各個(gè)對(duì)講機(jī)用戶之間具有更強(qiáng)的互操作性和兼容性。因此,我們需要確保對(duì)講機(jī)和配件間具有通用的事件操作碼集。
1 傳統(tǒng)測(cè)試方法
對(duì)講機(jī)有超過400個(gè)SECT操作碼事件需要測(cè)試。傳統(tǒng)的測(cè)試方法主要通過手動(dòng)測(cè)試,完成全面覆蓋測(cè)試大約需要熟練測(cè)試人員花費(fèi)1個(gè)月的時(shí)間。
2 新的測(cè)試方法
2.1 自動(dòng)化測(cè)試架構(gòu)
2.1.1 自動(dòng)化工具CCP Tester概述
自動(dòng)化工具CCP Tester軟件包含2個(gè)部分。1) 由Microsoft VC + +開發(fā)的主要應(yīng)用程序。2)基于TCL腳本開發(fā)的一組測(cè)試腳本。它提供TCL以使用VC應(yīng)用程序的任何功能。同樣,VC應(yīng)用程序可以調(diào)用TCL動(dòng)態(tài)鏈接庫中的任何函數(shù)。主要的應(yīng)用程序、TCL測(cè)試腳本和通信組件組成了CCP Tester這個(gè)自動(dòng)化工具,如圖1所示。
CCP Tester的主要功能包括協(xié)議規(guī)范配置、通信鏈接管理、單指令測(cè)試、測(cè)試套件/項(xiàng)目配置、測(cè)試套件執(zhí)行、測(cè)試進(jìn)度監(jiān)控、測(cè)試報(bào)告生成及設(shè)備仿真等。
2.1.2 CCP Tester腳本
在新方法中,使用測(cè)試套件執(zhí)行方法進(jìn)行自動(dòng)化測(cè)試。也可以在CCP Tester的“腳本列表”窗口中選擇選定的腳本來執(zhí)行特定的測(cè)試腳本。測(cè)試套件執(zhí)行是執(zhí)行所選測(cè)試套件中的每個(gè)腳本,相對(duì)于每次單個(gè)測(cè)試用例執(zhí)行來說效率更高[1]。
圖2是測(cè)試腳本的示例。用TCL編碼,不需要在執(zhí)行前進(jìn)行編譯。TCL語言的可嵌入性和可擴(kuò)展性,使VC應(yīng)用程序可以與之無縫地協(xié)同工作[2]。TCL提供的所有功能使CCP Tester具有以下3個(gè)優(yōu)點(diǎn)。1)便捷的測(cè)試腳本/測(cè)試套件管理環(huán)境。2)易于擴(kuò)展測(cè)試腳本集以適應(yīng)新需求。3) 用戶易于理解和更新測(cè)試腳本[3]。
CCP Tester測(cè)試腳本按如圖3所示的流程圖的順序運(yùn)行。
為了更高效地測(cè)試一組SECT操作碼,創(chuàng)建了一個(gè)測(cè)試套件以實(shí)現(xiàn)批量運(yùn)行。由于批量運(yùn)行測(cè)試,并且自動(dòng)更新其結(jié)果,因此大大減少了測(cè)試執(zhí)行的工作量和時(shí)間[4]。
2.2 輔助工具AT debug
但是,自動(dòng)測(cè)試不能完全代替手動(dòng)測(cè)試[5]。 在某些情況下,可以利用輔助工具AT debug手動(dòng)檢查對(duì)講機(jī)的行為。AT debug工具是一種類似于telnet的應(yīng)用程序,可在用戶和對(duì)講機(jī)之間提供CLI(命令行界面)交互。 它提供AT命令,方便開發(fā)人員與對(duì)講機(jī)進(jìn)行交互。為了支持新命令,需要進(jìn)行以下更改。
2.2.1 通過以下方式向AT命令系統(tǒng)注冊(cè)新命令
cmd_register(cmd_callback_functionA,
cmd_string,cmd_help_info);
2.2.2 實(shí)現(xiàn)命令回調(diào)函數(shù)用來解析用戶輸入的字符串
void cmd_callbback_functionA(char *cmd, UINT8 length)命令回調(diào)函數(shù)的示例如圖4所示。用戶輸入將由AT命令系統(tǒng)過濾,只有當(dāng)?shù)谝粋€(gè)命令部分與注冊(cè)的的命令字符串匹配時(shí),才會(huì)調(diào)用響應(yīng)的回調(diào)函數(shù)。
下面以一個(gè)實(shí)例來具體說明AT debug命令回調(diào)函數(shù)的過程。對(duì)講機(jī)利用調(diào)試器任務(wù)偵聽和處理請(qǐng)求。當(dāng)TCP客戶端使用命令“telnet 192.168.10.1 8501”從PC啟動(dòng)連接時(shí),AT debug將檢索該請(qǐng)求并存儲(chǔ)即將到來的連接。一旦AT debug認(rèn)為用戶完成了一條命令,命令解析器系統(tǒng)會(huì)被觸發(fā),用來以搜索第一部分是否匹配。如果與命令系統(tǒng)匹配,則會(huì)調(diào)用已注冊(cè)的回調(diào)函數(shù)來執(zhí)行相應(yīng)的功能[6]。在回調(diào)函數(shù)中,開發(fā)人員可以調(diào)用AT debug接口以輸出顯示所需的信息。
AT debug命令實(shí)例如圖5所示。該命令打開對(duì)講機(jī)顯示屏的背光。測(cè)試人員可以通過檢查對(duì)講機(jī)的背光燈是否點(diǎn)亮,來驗(yàn)證軟件是否實(shí)現(xiàn)需求。
3 結(jié)語
該方法結(jié)合了自動(dòng)測(cè)試和手動(dòng)測(cè)試的優(yōu)點(diǎn),以此來提高軟件的質(zhì)量。經(jīng)過實(shí)驗(yàn)統(tǒng)計(jì),大約70%的測(cè)試用例是通過自動(dòng)測(cè)試運(yùn)行的,其他30%的測(cè)試用例是通過手動(dòng)測(cè)試運(yùn)行的,如圖6所示。
測(cè)試實(shí)踐證明,證明該方法可以節(jié)省大約60%的工作量,并提高對(duì)講機(jī)、附屬設(shè)備及第三方產(chǎn)品的開發(fā)效率,如圖7所示。
通過新舊方法的比較,證明此方法具有一定的創(chuàng)新性,可加快和簡化嵌入式設(shè)備的軟件的回歸測(cè)試。并且能有效提高軟件開發(fā)及測(cè)試人員的工作效率,值得推廣和部署。
參考文獻(xiàn)
[1]夏佳佳,鄒毅軍,周江偉.嵌入式軟件自動(dòng)化測(cè)試系統(tǒng)研究[J].計(jì)算機(jī)測(cè)量與控制,2016,24(4):22-25.
[2]陳佐,張懷相,方景龍.嵌入式軟件自動(dòng)化測(cè)試技術(shù)[J].計(jì)算機(jī)工程與設(shè)計(jì),2018,39(10):3125-3131.
[3]Garousi V,Mika M V.When and what to automate in software testing? A multi-vocal literature review[J].Information and Software Technology,2016,76(8):92-117.
[4]董昕,王杰.一種自動(dòng)生成軟件測(cè)試用例的新方法[J].計(jì)算機(jī)應(yīng)用與軟件,2017,34(10):46-50.
[5]Li X,Mutha C,Smidts CS.An automated software reliability prediction system for safety critical software[J].Empirical Software Engineering,2016,21(6):2413-2455.
[6]Marcel Bohme,Soumya Paul.A Probabilistic Analysis of the Efficiency of Automated Software Testing[J].IEEE Transactions on Software Engineering,2016,42(4):345-360.