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