本發(fā)明屬于嵌入式軟件測試,具體地,涉及嵌入式操作系統(tǒng)的自動(dòng)化測試方法及系統(tǒng)。更具體是一種高可靠嵌入式操作系統(tǒng)的自動(dòng)化測試方法和系統(tǒng)。
背景技術(shù):
1、由于硬件的多樣性和嵌入式操作系統(tǒng)自身的復(fù)雜性,針對(duì)嵌入式操作系統(tǒng)的測試十分繁雜,尤其是針對(duì)基于國產(chǎn)處理器的國產(chǎn)嵌入式操作系統(tǒng)的測試,一方面,需要適應(yīng)國產(chǎn)處理器自主研發(fā)內(nèi)容多、定制性強(qiáng)的情況提供更靈活的硬件外設(shè)、總線協(xié)議測試配置,一方面,在國產(chǎn)嵌入式操作系統(tǒng)生態(tài)中沒有太多成熟的自動(dòng)化執(zhí)行的用例供下載使用,用例大都需要定制且依靠人工完成,測試人員需要準(zhǔn)備大量的用例以驗(yàn)證操作系統(tǒng)各個(gè)模塊的功能及性能點(diǎn)。
2、針對(duì)嵌入式硬件平臺(tái)不同的硬件接口、總線協(xié)議,綜合組合種類多,測試環(huán)境搭建復(fù)雜,人工執(zhí)行測試的過程中還可能涉及與測試上位機(jī)的交互操作,測試步驟流程多且較專業(yè),對(duì)測試人員硬件知識(shí)和軟硬件綜合能力要求高,測試執(zhí)行完成之后需要對(duì)測試結(jié)果進(jìn)行人工核對(duì)及分析整理,整個(gè)過程十分耗時(shí)耗力。
3、高可靠嵌入式操作系統(tǒng)主要應(yīng)用于安全級(jí)別較高的航空、航天、軍工、軌道交通等領(lǐng)域,這要求操作系統(tǒng)具備較高的可靠性、安全性和穩(wěn)定性。相應(yīng)的,針對(duì)高可靠嵌入式操作系統(tǒng)的測試會(huì)在一般功能測試和性能測試的基礎(chǔ)上加入更多針對(duì)硬件接口、總線協(xié)議的壓力測試、異常測試、邊界測試、拷機(jī)測試等。這些測試操作更復(fù)雜、耗時(shí)更長且有相當(dāng)一部分測試需要機(jī)械的重復(fù)勞動(dòng),這都要求有一套嵌入式操作系統(tǒng)的自動(dòng)化測試工具以解決目前的困境。
4、但是,目前市面上已有的自動(dòng)化測試框架并不能很好的滿足高可靠嵌入式操作系統(tǒng)的自動(dòng)化測試,具體不足之處如下:
5、1、未考慮嵌入式系統(tǒng)尤其是bsp驅(qū)動(dòng)測試和總線協(xié)議等測試的實(shí)際情況,提供能支持多種硬件接口和總線協(xié)議、不同指令集架構(gòu)處理器、不同外設(shè)型號(hào)硬件板卡的能替代人工測試的自動(dòng)化測試方法。
6、2、未考慮測試用例的自動(dòng)配置與編譯,嵌入式操作系統(tǒng)測試用例運(yùn)行在不同硬件平臺(tái)/指令集、不同外設(shè)需要配置不同的參數(shù)并重新編譯。
7、3、嵌入式設(shè)備之間、嵌入式設(shè)備與測試上位機(jī)之間的交互測試、一些可靠性和穩(wěn)定性測試,如usb重復(fù)插拔測試、文件系統(tǒng)掉電重啟穩(wěn)定性測試、網(wǎng)線插拔測試、各類網(wǎng)絡(luò)包打流測試等,無法接入自動(dòng)化框架執(zhí)行,需要人工測試,甚至人工無法完成。
8、4、未考慮測試異常,如測試導(dǎo)致任務(wù)卡死、甚至系統(tǒng)死機(jī)等,無法繼續(xù)測試的情況;
9、5、針對(duì)部分不支持控制臺(tái)命令交互無法下發(fā)測試命令的高可靠嵌入式操作系統(tǒng),如需要與外部進(jìn)行交互測試未有解決方法。
10、經(jīng)檢索發(fā)現(xiàn)如下專利文獻(xiàn):
11、申請(qǐng)?zhí)枺篶n202211646760.0,專利文獻(xiàn)cn115629996a公開了一種嵌入式軟件自動(dòng)化測試方法。該發(fā)明公開了一種嵌入式軟件自動(dòng)化測試方法,具體涉及嵌入式軟件測試領(lǐng)域,用于解決現(xiàn)有嵌入式軟件測試大部分依舊采用人工反復(fù)地功能性測試,測試效率極低,覆蓋不全面,出錯(cuò)率高的問題;包括測試用例管理工具連接成功后按照配置好的測試用例單個(gè)按序下發(fā)給嵌入式產(chǎn)品;嵌入式產(chǎn)品接收自動(dòng)化測試插件成功后激活自動(dòng)化測試流程;關(guān)鍵節(jié)點(diǎn)替換代碼段生效,嵌入式軟件按照既定的業(yè)務(wù)流程執(zhí)行;嵌入式業(yè)務(wù)功能代碼執(zhí)行完成,將業(yè)務(wù)執(zhí)行的結(jié)果發(fā)送至測試用例管理工具;本發(fā)明是通過測試用例管理工具將自動(dòng)化測試用例插件按需注入嵌入式產(chǎn)品中,實(shí)現(xiàn)對(duì)嵌入式軟件的自動(dòng)化測試和管理,完全擺脫人工的重復(fù)繁瑣測試;極大提升測試效率和軟件質(zhì)量。
12、申請(qǐng)?zhí)枺篶n202410500286.3,專利文獻(xiàn)cn118484380a公開了一種嵌入式自動(dòng)化測試系統(tǒng)及方法。該申請(qǐng)公開了一種嵌入式自動(dòng)化測試系統(tǒng)及方法,涉及自動(dòng)化框架測試技術(shù)領(lǐng)域,包括:通過配置模塊配置測試用例的測試命令,通過執(zhí)行調(diào)度模塊根據(jù)測試命令選擇對(duì)應(yīng)的測試用例,通過執(zhí)行測試模塊執(zhí)行測試用例的特性測試并記錄測試結(jié)果,通過測試調(diào)度模塊調(diào)取測試結(jié)果,并實(shí)時(shí)展示測試結(jié)果。相比于現(xiàn)有技術(shù),實(shí)現(xiàn)嵌入式系統(tǒng)測試過程的高度自動(dòng)化、精細(xì)化管理和即時(shí)反饋,提升測試效率。
13、申請(qǐng)?zhí)枺篶n202411021260.7,專利文獻(xiàn)cn118550839a公開了一種嵌入式自動(dòng)測試系統(tǒng)及其測試方法。該發(fā)明提供一種嵌入式自動(dòng)測試系統(tǒng)及其測試方法,包括相互連接的測試模塊及功能模塊,功能模塊為用戶在測試模塊中選擇的測試提供對(duì)應(yīng)的功能單元;其中,測試模塊中集成有多種測試以及與測試對(duì)應(yīng)的測試信息和測試設(shè)備信息;功能模塊中設(shè)置有與測試對(duì)應(yīng)的功能單元,功能單元為對(duì)應(yīng)測試配置匹配的測試環(huán)境,對(duì)測試結(jié)果進(jìn)行解析,將測試結(jié)果生成對(duì)應(yīng)日志及報(bào)告并通過郵件發(fā)送;多種測試可以同步進(jìn)行或順序進(jìn)行,同步進(jìn)行可以節(jié)約測試時(shí)間提高測試效率,而順序進(jìn)行則可以最大限度實(shí)現(xiàn)對(duì)測試設(shè)備的有效利用,適用范圍廣。
14、申請(qǐng)?zhí)枮閏n202311683277.4,專利文獻(xiàn)cn117539791a公開了一種嵌入式軟件的自動(dòng)化測試系統(tǒng)。該發(fā)明公開了一種嵌入式軟件的自動(dòng)化測試系統(tǒng),涉及軟件測試技術(shù)領(lǐng)域,該系統(tǒng)公開了板卡能力定義和固件編譯層、測試計(jì)劃解析和用例生成層、程序部署和測試調(diào)度執(zhí)行層,通過板卡固件生成與硬件板卡解耦,解決傳統(tǒng)的cicd系統(tǒng)無法很好地支持硬件板卡多樣性和差異性,導(dǎo)致流程的繁瑣和效率的低下的問題;板卡硬件和程序版本,版本管理統(tǒng)一,有利于追溯管理;測試用例歸類統(tǒng)一管理,合理復(fù)用;板卡測試計(jì)劃自動(dòng)解析,利于管理和自動(dòng)化測試;板卡程序開發(fā)與測試工作解耦,提高代碼開發(fā)、測試和功能迭代效率。
15、綜上,現(xiàn)有的嵌入式軟件自動(dòng)化測試方法絕大部分是針對(duì)嵌入式應(yīng)用軟件而非嵌入式操作系統(tǒng)的自動(dòng)化測試,對(duì)于一些硬件外設(shè)復(fù)雜的嵌入式系統(tǒng),需要與其他設(shè)備或測試上位機(jī)進(jìn)行交互測試,未能實(shí)現(xiàn)自動(dòng)化。
16、此外,未考慮測試用例的自動(dòng)配置與編譯、一些重復(fù)的壓力測試的自動(dòng)化測試以及測試異常情況的處理。特別的,對(duì)于部分不支持控制臺(tái)命令交互無法下發(fā)測試命令的高可靠嵌入式操作系統(tǒng),如何進(jìn)行高效的自動(dòng)化測試未找到解決方案。
17、此問題亟需解決。
技術(shù)實(shí)現(xiàn)思路
1、針對(duì)現(xiàn)有技術(shù)中的缺陷,本發(fā)明的目的是提供一種嵌入式操作系統(tǒng)的自動(dòng)化測試方法及系統(tǒng)。
2、根據(jù)本發(fā)明提供的一種嵌入式操作系統(tǒng)的自動(dòng)化測試系統(tǒng),包括:遠(yuǎn)程服務(wù)器、構(gòu)建機(jī)、測試上位機(jī)與硬件設(shè)備;所述硬件設(shè)備包括被測板卡和陪測板卡;所述被測板卡和所述陪測板卡安裝有嵌入式操作系統(tǒng);所述測試上位機(jī)用于測試預(yù)配置和執(zhí)行自動(dòng)化測試任務(wù);
3、所述遠(yuǎn)程服務(wù)器連接所述測試上位機(jī),所述測試上位機(jī)連接所述硬件設(shè)備;
4、所述遠(yuǎn)程服務(wù)器連接所述構(gòu)建機(jī)。
5、優(yōu)選地,所述測試上位機(jī)安裝有自動(dòng)化測試控制模塊;所述自動(dòng)化測試控制模塊用于硬件參數(shù)和測試用例配置、執(zhí)行自動(dòng)化測試以及生成并且上傳測試報(bào)告;
6、所述遠(yuǎn)程服務(wù)器安裝有遠(yuǎn)程控制模塊與代碼版本控制工具;所述遠(yuǎn)程控制模塊用于觸發(fā)所述構(gòu)建機(jī)開始構(gòu)建,然后觸發(fā)所述自動(dòng)化測試控制模塊工作并收集測試報(bào)告;
7、所述代碼版本控制工具,用于提供配置文件和測試代碼;
8、所述構(gòu)建機(jī)安裝有測試用例構(gòu)建模塊與鏡像或可執(zhí)行程序下載模塊;所述測試用例構(gòu)建模塊用于獲取所述配置文件和測試代碼,生成系統(tǒng)鏡像或可執(zhí)行程序;所述鏡像或可執(zhí)行程序下載模塊,用于將所述系統(tǒng)鏡像或可執(zhí)行程序下載到所述硬件設(shè)備的被測板卡和陪測板卡。
9、優(yōu)選地,所述自動(dòng)化測試控制模塊,包括:硬件界面配置單元、測試用例配置單元、測試用例執(zhí)行單元、測試結(jié)果評(píng)價(jià)單元、日志單元與測試報(bào)告上報(bào)單元;
10、所述硬件界面配置單元,用于配置所述板卡的參數(shù),生成配置文件;
11、所述測試用例配置單元連接所述硬件界面配置單元;所述測試用例配置單元,用于配置自動(dòng)化測試的測試動(dòng)作;
12、所述測試用例配置單元連接所述測試用例執(zhí)行單元;所述測試用例執(zhí)行單元,用于根據(jù)所述測試用例配置單元的配置調(diào)度對(duì)所述硬件設(shè)備、測試上位機(jī)及其他輔助硬件設(shè)備的測試動(dòng)作;所述其他輔助硬件設(shè)備,包括:交換機(jī)、總線協(xié)議分析儀、工業(yè)現(xiàn)場總線從站設(shè)備、示波器。
13、所述測試用例執(zhí)行單元連接所述日志單元;所述日志單元用于記錄自動(dòng)化測試執(zhí)行過程中的關(guān)鍵日志;所述關(guān)鍵日志,即所述自動(dòng)化測試控制模塊的運(yùn)行日志、所述嵌入式操作系統(tǒng)執(zhí)行測試命令后的結(jié)果輸出、所述測試用例執(zhí)行單元調(diào)用外部程序后獲取到的結(jié)果輸出;
14、所述測試用例執(zhí)行單元連接所述測試結(jié)果評(píng)價(jià)單元;所述測試結(jié)果評(píng)價(jià)單元用于評(píng)價(jià)所述測試用例執(zhí)行單元的測試結(jié)果;
15、所述測試結(jié)果評(píng)價(jià)單元連接所述測試報(bào)告上報(bào)單元;所述測試報(bào)告上報(bào)單元用于對(duì)測試結(jié)果進(jìn)行統(tǒng)計(jì)與分析生成測試報(bào)告,并且上報(bào)所述測試報(bào)告給所述遠(yuǎn)程服務(wù)器的遠(yuǎn)程控制模塊。
16、優(yōu)選地,所述測試用例執(zhí)行單元包括:命令下發(fā)子單元、程控開關(guān)控制子單元、外部程序調(diào)用子單元;
17、所述命令下發(fā)子單元,用于向所述硬件設(shè)備的被測板卡及陪測板卡下發(fā)測試命令;
18、所述程控開關(guān)控制子單元,用于根據(jù)測試命令,控制電源開關(guān);
19、所述外部程序調(diào)用子單元,用于調(diào)用所述測試上位機(jī)的外部程序,并獲取所述外部程序與所述嵌入式操作系統(tǒng)交互的結(jié)果輸出。
20、優(yōu)選地,所述硬件設(shè)備還包括程控開關(guān);
21、所述程控開關(guān)控制子單元生成程控開關(guān)控制文件,根據(jù)所述程控開關(guān)控制文件控制所述程控開關(guān),開關(guān)電源。
22、優(yōu)選地,所述測試用例配置單元,配置的測試動(dòng)作,包括:測試命令、連續(xù)兩條命令之間的間隔動(dòng)作、與測試上位機(jī)和其他輔助硬件設(shè)備的交互動(dòng)作、測試命令的發(fā)送方式與測試結(jié)果的評(píng)判標(biāo)準(zhǔn);
23、所述測試命令,包括:向所述被測板卡嵌入式操作系統(tǒng)發(fā)送的測試命令、向所述陪測板卡嵌入式操作系統(tǒng)發(fā)送的測試命令和測試上位機(jī)執(zhí)行的陪測命令;
24、所述連續(xù)兩條命令之間的間隔動(dòng)作,包括重啟以執(zhí)行下一條命令,不重啟但間隔固定時(shí)間以執(zhí)行下一條命令、立即執(zhí)行下一條命令。
25、所述交互動(dòng)作,包括:啟動(dòng)計(jì)時(shí)、總線協(xié)議通信、網(wǎng)絡(luò)收發(fā)與電源開關(guān);
26、優(yōu)選的,所述命令下發(fā)子單元測試命令的發(fā)送方式,包括:串口發(fā)送、telnet發(fā)送與tcp客戶端/服務(wù)端方式發(fā)送;
27、所述tcp客戶端/服務(wù)端方式發(fā)送,適用于無控制臺(tái)的高可靠嵌入式系統(tǒng),基于所述的嵌入式操作系統(tǒng)的自動(dòng)化測試系統(tǒng)實(shí)現(xiàn),令所述嵌入式操作系統(tǒng)創(chuàng)建tcp服務(wù)端,等待接收測試命令,令命令下發(fā)子單元?jiǎng)?chuàng)建tcp客戶端下發(fā)測試命令,令所述tcp服務(wù)端查詢命令列表執(zhí)行測試命令,得到測試結(jié)果;令所述tcp服務(wù)端發(fā)送測試結(jié)果,所述tcp客戶端獲取測試結(jié)果。
28、根據(jù)本發(fā)明提供的一種嵌入式操作系統(tǒng)的自動(dòng)化測試方法,基于嵌入式操作系統(tǒng)的自動(dòng)化測試系統(tǒng)得以實(shí)現(xiàn),包括:
29、通過所述自動(dòng)化測試控制模塊的硬件界面配置單元,新建測試項(xiàng)目,并且配置所述測試項(xiàng)目的硬件參數(shù),生成配置文件;令所述配置文件上傳至所述遠(yuǎn)程服務(wù)器的代碼版本控制工具;通過勾選已有的測試用例以及在界面新增測試用例,令所述自動(dòng)化測試控制模塊的測試用例配置單元生成測試用例配置文件;
30、令所述遠(yuǎn)程控制模塊觸發(fā)所述測試用例構(gòu)建模塊開始用例編譯與構(gòu)建,所述測試用例構(gòu)建模塊根據(jù)所述測試代碼和所述配置文件生成鏡像或可執(zhí)行程序,存放至所述鏡像或可執(zhí)行程序下載模塊等待所述硬件設(shè)備下載;
31、令所述遠(yuǎn)程控制模塊觸發(fā)所述自動(dòng)化測試控制模塊的測試用例執(zhí)行單元開始自動(dòng)化測試,基于所述測試用例配置文件,控制所述被測板卡、所述陪測板卡和所述測試上位機(jī),加載并啟動(dòng)鏡像或可執(zhí)行程序,進(jìn)而令測試結(jié)果評(píng)價(jià)單元生成測試結(jié)果;所述測試用例執(zhí)行單元執(zhí)行測試期間令日志單元記錄運(yùn)行日志;
32、所述代碼版本控制工具,包括git與svn;
33、根據(jù)所述測試結(jié)果,令測試報(bào)告上報(bào)單元生成測試報(bào)告進(jìn)而上傳測試報(bào)告至所述遠(yuǎn)程服務(wù)器的遠(yuǎn)程控制模塊,推送給相應(yīng)人員,結(jié)束。
34、優(yōu)選的,所述自動(dòng)化測試的觸發(fā)方式包括令所述遠(yuǎn)程控制模塊觸發(fā)或直接令自動(dòng)化測試控制模塊自身觸發(fā)。
35、優(yōu)選地,所述測試項(xiàng)目的硬件參數(shù),包括:板卡外設(shè)情況、板卡網(wǎng)絡(luò)配置與板卡運(yùn)行的操作系統(tǒng)情況;
36、所述板卡外設(shè)情況,包括:設(shè)備路徑、設(shè)備數(shù)量與設(shè)備類型;
37、所述板卡網(wǎng)絡(luò)配置,包括:板卡ip地址、對(duì)端ip地址與接口名稱;
38、所述板卡運(yùn)行的操作系統(tǒng)情況,包括:系統(tǒng)版本、32位或64位與多核運(yùn)行方式。
39、優(yōu)選地,所述測試用例配置單元選用串口方式、網(wǎng)絡(luò)方式或tcp客戶端/服務(wù)端方式發(fā)送測試命令;設(shè)置測試用例的超時(shí)閾值為2分鐘;
40、判斷測試用例執(zhí)行時(shí)間是否超過所述超時(shí)閾值,結(jié)果為是,則重啟所述硬件設(shè)備繼續(xù)下一步測試;結(jié)果為否,則不處理。
41、優(yōu)選地,所述測試報(bào)告,包括:測試用例的個(gè)數(shù)、通過用例個(gè)數(shù)、不通過用例個(gè)數(shù)、缺陷率與回歸完成率。
42、與現(xiàn)有技術(shù)相比,本發(fā)明具有如下的有益效果:
43、1、本發(fā)明實(shí)現(xiàn)了從遠(yuǎn)程服務(wù)器觸發(fā)、測試用例編譯、鏡像下裝、硬件上下電、用例執(zhí)行、結(jié)果評(píng)價(jià)、測試報(bào)告上報(bào)的整套嵌入式操作系統(tǒng)自動(dòng)化測試流程代替人工測試,提升了測試的效率和準(zhǔn)確度,提升產(chǎn)品質(zhì)量。
44、2、本發(fā)明提供的遠(yuǎn)程觸發(fā)測試與自動(dòng)編譯用例便于接入持續(xù)集成流程,測試用例構(gòu)建模塊支持針對(duì)不同指令集架構(gòu)處理器、不同外設(shè)型號(hào)硬件板卡、多種硬件接口和總線協(xié)議進(jìn)行硬件配置及測試用例編譯;所述不同指令集架構(gòu)處理器,包括:arm、loongarch、mips、x86、ppc、c-sky、sparc與riscv;所述不同外設(shè)型號(hào)硬件板卡,包括:nand/norflash、sd/tf卡、emmc與不同型號(hào)的網(wǎng)卡;所述總線協(xié)議,包括:pci/pci-e、serial、rapidio、can/canfd與usb。
45、3、本發(fā)明提供的自動(dòng)化測試控制模塊支持硬件參數(shù)配置,支持控制多設(shè)備、設(shè)備與測試上位機(jī)之間的交互測試,解決基于多種國產(chǎn)處理器的國產(chǎn)嵌入式操作系統(tǒng)硬件多變、外設(shè)復(fù)雜、硬件接口和總線協(xié)議復(fù)雜、定制化測試占比大導(dǎo)致難以真正自動(dòng)化測試的問題。
46、4、本發(fā)明解決了可靠性測試、異常測試、拷機(jī)測試與壓力測試這類反復(fù)測試和異常測試靠人工難以完成或耗時(shí)很長的問題,提供測試執(zhí)行期間發(fā)生異常的處理措施,更適用于高可靠嵌入式操作系統(tǒng)測試。
47、5、本發(fā)明解決了部分高可靠嵌入式操作系統(tǒng)不支持控制臺(tái)命令交互無法進(jìn)行命令下發(fā)的問題。
48、6、本發(fā)明可實(shí)現(xiàn)測試代碼配置與編譯、鏡像下裝與啟動(dòng)、測試用例執(zhí)行,包含替代手動(dòng)交互部分的測試用例執(zhí)行、測試結(jié)果分析與整理、測試結(jié)果上報(bào)的全程自動(dòng)化流程,極大的節(jié)省了嵌入式操作系統(tǒng)測試的人力物力,在提高效率以及提高測試準(zhǔn)確性的基礎(chǔ)上,還能夠?qū)崿F(xiàn)一些人工無法做到的壓力、異常測試以支撐高可靠嵌入式系統(tǒng)的可靠性、穩(wěn)定性驗(yàn)證。