株洲中車時(shí)代電氣股份有限公司 蔣明睿
嵌入式軟件相對于其他軟件具備一些特殊性。一方面,嵌入式軟件在整個(gè)軟件行業(yè)的占比較低,約為11%,同時(shí)嵌入式軟件的架構(gòu)和標(biāo)準(zhǔn)不統(tǒng)一,導(dǎo)致目前市場上成熟的自動化測試軟件對其支持性不佳;另一方面,嵌入式軟件運(yùn)行一般需依賴特有的硬件芯片和外部接口,自動化測試環(huán)境構(gòu)建時(shí)需兼顧自動化測試、硬件資源和接口差異的問題,因而對其開展自動化測試相對難度更高。
目前流行的自動化測試工具很難直接用于嵌入式控制軟件測試,有一些自動化測試工具雖然可以經(jīng)定制和移植后使用,但是定制的成本較高,且不易維護(hù)、通用性不強(qiáng)。
自動化測試是提高測試效率,降低重復(fù)勞動的有效方式,目前正被廣泛應(yīng)用,它能夠完成許多人工測試無法實(shí)現(xiàn)或難以實(shí)現(xiàn)的工作。
目前常用的自動化測試方法大致分為三種:
(1)第一種方法是采用測試工具的錄制-回放功能,自動生成測試腳本。該方法實(shí)現(xiàn)簡單,但劣勢明顯:不具有邏輯判斷能力,可維護(hù)性差,效率低,代碼量大,兼容性差。
(2)第二種方法是采用數(shù)據(jù)驅(qū)動測試技術(shù)(Data Driven Testing,通過數(shù)據(jù)來驅(qū)動測試業(yè)務(wù)流的一種技術(shù))進(jìn)行自動化測試。數(shù)據(jù)驅(qū)動技術(shù)的核心思想是將可變部分(數(shù)據(jù))和不變部分(腳本)分離以降低維護(hù)工作量。
(3)第三種方法是采用關(guān)鍵字驅(qū)動測試技術(shù)(Keyword Driven Testing,使用關(guān)鍵字來驅(qū)動測試業(yè)務(wù)流的一種技術(shù))進(jìn)行自動化測試。關(guān)鍵字驅(qū)動方式的出現(xiàn)是對數(shù)據(jù)驅(qū)動方式的邏輯擴(kuò)展,是通過關(guān)鍵字“驅(qū)動”測試業(yè)務(wù)流的過程。
隨著軌道交通領(lǐng)域的快速發(fā)展,軌道交通產(chǎn)品的功能越來越復(fù)雜,對軌道交通產(chǎn)品的可靠性要求也越來越高。軌道交通車輛控制設(shè)備中的傳動控制單元(Drive Control Unit ,簡稱DCU,一種運(yùn)用于軌道交通領(lǐng)域的牽引變流器上的控制器)作為關(guān)鍵設(shè)備之一,對牽引變流器實(shí)施精準(zhǔn)的控制時(shí),DCU的邏輯控制功能相當(dāng)重要,承擔(dān)著牽引系統(tǒng)管理和通訊的重要功能,直接影響牽引變流器的功能、安全及效率。
目前,采用人工測試的方式進(jìn)行DCU測試越來越面臨挑戰(zhàn),存在下述缺點(diǎn):人工測試效率低、回歸測試效率低、測試用例編寫工作量大、測試周期長以致測試不充分。問題的出現(xiàn),促使我們尋求更高效的自動化測試,期望減少重復(fù)工作、提升效率、降低成本。
城軌DCU半實(shí)物非實(shí)時(shí)自動化測試系統(tǒng)主要是基于下一代地鐵平臺的傳動控制單元邏輯控制軟件,是為城軌DCU的邏輯功能驗(yàn)證及軟件測試而設(shè)計(jì)的。
現(xiàn)有技術(shù)方案是配置TestStand測試工具和測試環(huán)境的接口,集成公司自主研發(fā)的DCU半實(shí)物仿真測試臺軟件,并由測試人員利用TestStand自帶的腳本開發(fā)環(huán)境開發(fā)并執(zhí)行測試腳本,完成測試。DCU機(jī)箱經(jīng)過信號調(diào)理或數(shù)據(jù)轉(zhuǎn)換與測試環(huán)境軟件進(jìn)行數(shù)據(jù)交互,自動化測試軟件通過測試接口協(xié)議,與測試環(huán)境軟件進(jìn)行數(shù)據(jù)通信,從而對實(shí)物DCU進(jìn)行自動化測試。
本系統(tǒng)的關(guān)聯(lián)關(guān)系圖如圖1所示。
圖1 城軌DCU自動化測試系統(tǒng)關(guān)聯(lián)關(guān)系圖
本方案的設(shè)計(jì)目的是為了配合手動測試,提高軟件測試效率。
本方案在設(shè)計(jì)初就進(jìn)行了可行性分析。發(fā)現(xiàn)被測對象是基于城軌平臺的DCU,從平臺本身角度分析,已經(jīng)具備穩(wěn)定且通用的對外接口,對于搭建的測試環(huán)境的可變動性影響不大;且DCU硬件中運(yùn)行的關(guān)鍵軟件DCU邏輯控制軟件,本身已經(jīng)是基于模塊化方式進(jìn)行開發(fā),部分軟件功能已固化為組件,具備一定的通用性,適合自動化測試的復(fù)用性設(shè)計(jì)。
本系統(tǒng)是基于NI公司成熟的TestStand軟件,結(jié)合公司已有的半實(shí)物非實(shí)時(shí)測試平臺資源,自主開發(fā)通訊接口實(shí)現(xiàn)數(shù)據(jù)交互。系統(tǒng)的組成部分可大致分4部分,如下所示:
(1)信號驅(qū)動:PCI、MVB接口板、信號調(diào)理機(jī)箱等;
(2)測試環(huán)境軟件模型:主電路、電壓電流、溫度壓力、車輛運(yùn)行、網(wǎng)絡(luò)等;
(3)軟件外部接口:開放本地與自動化執(zhí)行工具數(shù)據(jù)交互;
(4)自動化測試:自動化執(zhí)行架構(gòu)。
整個(gè)系統(tǒng)的關(guān)鍵控制流程如下,示意圖如圖2所示。
圖2 自動化測試系統(tǒng)控制流示意圖
本系統(tǒng)是在原有的測試平臺基礎(chǔ)上,增加了自動化測試的接口,從圖中可看出,本系統(tǒng)提供手動執(zhí)行、自動執(zhí)行兩種模式。在自動執(zhí)行模式下,自動化測試系統(tǒng)交互的數(shù)據(jù)流和原本測試環(huán)境模型的數(shù)據(jù)流會進(jìn)行相應(yīng)的數(shù)據(jù)替換,再通過信號映射方式,完成與被測對象的數(shù)據(jù)交互。
圖3 自動化測試腳本編寫
圖4 自動化測試腳本執(zhí)行
本系統(tǒng)能夠覆蓋軟件需求規(guī)格中描述的所有通用的、適用于自動化測試的需求內(nèi)容,目前能覆蓋故障診斷部分需求的95%,變流器邏輯控制部分需求的85%,其余未覆蓋的需求主要是涉及項(xiàng)目差異化的內(nèi)容。
本系統(tǒng)目前已在深圳11、深圳9、昆明3、昆明6、杭州2號線等項(xiàng)目上開展了試點(diǎn)應(yīng)用,平均單項(xiàng)目的統(tǒng)計(jì)達(dá)440條用例以上。目前達(dá)到的效果是腳本可配置、可自動測試執(zhí)行并生成報(bào)表、腳本可復(fù)用、功能模塊化。
本系統(tǒng)的工作流程分為三步:
(1)測試人員分析軟件需求規(guī)格,開展測試分析;與此同時(shí),測試環(huán)境搭建人員根據(jù)已有的資源構(gòu)建環(huán)境;
(2)測試人員采用基于TestStand軟件定制開發(fā)的集成開發(fā)環(huán)境編寫測試腳本,并輸入到自動化測試系統(tǒng)的人機(jī)交互軟件進(jìn)行測試執(zhí)行,產(chǎn)生測試報(bào)表;
(3)測試人員分析報(bào)表并開展回歸測試;與此同時(shí),測試環(huán)境人員配合完成相應(yīng)測試系統(tǒng)的維護(hù)和優(yōu)化。
為了保證通用型測試用例在不同被測DCU上的應(yīng)用,本系統(tǒng)在進(jìn)行測試腳本設(shè)計(jì)時(shí)提供了模塊化、通用化設(shè)計(jì)方式。
針對同類型測試用例在進(jìn)行測試腳本設(shè)計(jì)時(shí),需充分考慮測試腳本在不同城軌DCU項(xiàng)目上的復(fù)用,提高腳本的通用性水平。進(jìn)行測試腳本設(shè)計(jì)前,將測試用例進(jìn)行分類設(shè)計(jì)與封裝。方便其他測試人員進(jìn)行測試用例的設(shè)計(jì)時(shí),快速構(gòu)建新的測試腳本(見圖3)。
自動化測試執(zhí)行具有友好的人機(jī)接口。
利用本系統(tǒng)進(jìn)行自動化測試過程中,減少了測試人員的手動操作和預(yù)期結(jié)果的判斷,提供一個(gè)友好的人機(jī)交互界面,方便測試人員能清晰了解當(dāng)前執(zhí)行測試用例的相關(guān)信息,如已執(zhí)行用例的名稱、結(jié)果狀態(tài),執(zhí)行進(jìn)度等(見圖4)。
自動化測試系統(tǒng)具備測試報(bào)告生成功能。
本系統(tǒng)能夠?qū)崿F(xiàn)測試執(zhí)行過程中測試數(shù)據(jù)的記錄,并根據(jù)記錄的要求生成測試報(bào)告,反饋給用戶。測試報(bào)告中詳細(xì)記錄各個(gè)測試腳本具體的執(zhí)行過程信息,并統(tǒng)計(jì)本輪測試任務(wù)中各需求點(diǎn)的測試腳本通過率、需求覆蓋率等測試指標(biāo),便于測試人員查看和分析數(shù)據(jù)。測試報(bào)告名稱、命名規(guī)則等信息能夠由用戶定制。測試報(bào)告能夠離線保存、查看,便于后續(xù)的統(tǒng)計(jì)分析、管理(見圖5)。
自動化測試系統(tǒng)提供了基本的測試管理功能。能夠利用測試腳本開發(fā)環(huán)境TestStand軟件,自由的進(jìn)行待測測試腳本的范圍選擇,并利用友好的人機(jī)交互程序進(jìn)行測試執(zhí)行。
3.5.1 支持可適配的通用測試環(huán)境
自動化測試系統(tǒng)能適配不同城軌車輛測試協(xié)議,與測試環(huán)境進(jìn)行數(shù)據(jù)接口。城軌半實(shí)物測試臺上的自動化測試系統(tǒng),與測試環(huán)境軟件通過通信數(shù)據(jù)接口進(jìn)行數(shù)據(jù)交互。測試人員僅通過簡單的協(xié)議配置等方式,將測試腳本進(jìn)行快速移植使用。
圖6 數(shù)據(jù)接口流程圖
3.5.2 支持可配置的測試腳本修改
圖5 自動化測試報(bào)告生成
圖7 自動化測試腳本修改
測試腳本采用結(jié)構(gòu)化的方式進(jìn)行組織,精確描述了測試描述、測試前置條件、每個(gè)步驟的測試強(qiáng)制信號、延時(shí)邏輯、測試判據(jù)邏輯、復(fù)位條件等內(nèi)容,便于用戶對測試腳本進(jìn)行可配置的修改。
不同項(xiàng)目的測試進(jìn)行切換時(shí),如果存在需求通用的情況,可以直接復(fù)用測試腳本(見圖7)。
本系統(tǒng)能夠根據(jù)被測項(xiàng)目情況和測試人員使用習(xí)慣,提供多種應(yīng)用模式,滿足在多種測試場景下的需求。同時(shí),通過實(shí)際的測試項(xiàng)目試點(diǎn),驗(yàn)證了系統(tǒng)的使用效果。
4.1.1 已有測試模板,直接執(zhí)行測試的方式
該種執(zhí)行方式為,通過基于TestStand的Interface組件開發(fā)的人機(jī)交互程序,加載并調(diào)用已編輯調(diào)試好的測試腳本(Sequence文件),然后直接執(zhí)行測試即可。其中可以通過人機(jī)交互程序界面顯示測試執(zhí)行進(jìn)度、生成測試報(bào)告。
4.1.2 已有測試模板,修改配置后執(zhí)行測試的方式
針對有測試模板可參考的項(xiàng)目,執(zhí)行方式為:首先,選定和待測項(xiàng)目的功能需求最接近的測試模板(已有測試模板都按照不同車型、平臺進(jìn)行分類),由測試人員根據(jù)被測軟件的需求規(guī)格,以及相關(guān)的數(shù)據(jù)參數(shù),對照已有的測試模板進(jìn)行確認(rèn),修改相關(guān)的配置參數(shù),并對相關(guān)的測試腳本進(jìn)行增刪(刪除與本項(xiàng)目不相關(guān)的腳本,按規(guī)范格式補(bǔ)充編寫新增腳本)。然后,參照已有測試模板的執(zhí)行方式(即模式1)開展測試即可。
4.1.3 沒有測試模板,手動創(chuàng)建并執(zhí)行測試的方式
針對無測試模板可參考的項(xiàng)目,執(zhí)行方式為:采用TestStand軟件自帶的集成開發(fā)環(huán)境Sequence Editor,同時(shí)采用測試模板的方式,將常用的控制命令、延時(shí)參數(shù)、通用的前置條件、復(fù)位條件模塊全部都封裝好,實(shí)現(xiàn)了測試腳本的功能組件的分類及模塊化,并提供了一套編寫的測試模板,便于指導(dǎo)測試人員通過簡單的“模塊拖拽+參數(shù)配置”的方式編寫測試腳本,完成測試。
目前,本系統(tǒng)已在各地鐵項(xiàng)目(昆明3、昆明5、杭州2、武漢7、武漢21號線)中進(jìn)行了批量應(yīng)用,自動化測試腳本覆蓋了“故障診斷部分+主電路控制部分”約占60%的總體軟件需求,自動化測試總體耗時(shí)縮減到3人/日,整個(gè)項(xiàng)目測試活動時(shí)間縮減為35人/日,整體自動化測試部分的效率提升約60%。
采用本系統(tǒng)進(jìn)行測試,具有對測試人員技能要求降低,測試腳本復(fù)用性高、可維護(hù)好、可移植性好,能夠降低測試腳本開發(fā)及維護(hù)的時(shí)間和成本的優(yōu)點(diǎn)。
牽引控制軟件作為城軌車輛牽引變流器的關(guān)鍵、核心控制軟件,對牽引變流器的穩(wěn)定可靠運(yùn)行、故障導(dǎo)向安全策略的實(shí)現(xiàn)起重要作用。為了實(shí)現(xiàn)對該軟件的自動化測試,本文介紹了基于Test-Stand軟件定制開發(fā)的城軌半實(shí)物非實(shí)時(shí)自動化測試系統(tǒng)的應(yīng)用過程,并通過實(shí)際的項(xiàng)目進(jìn)行了驗(yàn)證,切實(shí)提升了測試效率及測試質(zhì)量。
該方案的實(shí)施是在結(jié)合已有的測試資源、測試環(huán)境的基礎(chǔ)上進(jìn)行的定制開發(fā),擴(kuò)大了在多種測試平臺上開展相應(yīng)軟件測試的適應(yīng)性,減少對特定測試資源或測試工具的依賴性,且有效的提升了測試效率和測試質(zhì)量,避免重大問題外流到現(xiàn)場,影響產(chǎn)品聲譽(yù),提升軟件產(chǎn)品的可靠性。
[1]NI TestStand 2014 Help,National Instruments,2014.
[2]TestStand API Reference Poster,National Instruments,2014.
[3]TestStand UI Controls Reference Poster,National Instruments,2014.
[4]Test Automation frameworks, http://safsdev.sourceforge.net/FR AMESDataDrivenTestAutomationFramewor ks.htm.
[5]軟件測試規(guī)范.中車株洲電力機(jī)車研究所有限公司[S].Q/ZS 51.3-2016.