作為美國MathWorks公司的知名產(chǎn)品,Stateflow具有軟件架構(gòu)清晰、模型復(fù)雜度低、可讀性和可維護性強等優(yōu)勢,因此被大量應(yīng)用于設(shè)計有關(guān)監(jiān)控、任務(wù)調(diào)度以及故障管理應(yīng)程序的邏輯,在汽車電控領(lǐng)域也有著非常廣泛的應(yīng)用。
基于支持客戶的Stateflow測試經(jīng)驗,北匯信息總結(jié)了一套針對Stateflow的具有普適性的測試方法。下面就以Fan Management單元模塊的動態(tài)測試為例,和大家一起分享。
被測模型
Fan Management單元模塊
Fan Management單元模塊通過VPM(整車高低壓狀態(tài))、FanErr(風(fēng)扇故障)、FanTemp(風(fēng)扇溫度)信號,對FanEn(風(fēng)扇使能)、FanErrBack(風(fēng)扇故障反饋)信號進行計算。
那么,當(dāng)拿到這樣一個單元模型和功能需求描述,應(yīng)該如何去開展我們的動態(tài)測試工作呢?首先,為了防止在測試過程中深陷到Stateflow錯綜復(fù)雜的跳轉(zhuǎn)邏輯中無法自拔,應(yīng)該明確我們的測試思路。
圍點打援 中心開花
其實無論多復(fù)雜的Stateflow模型,其基本組成都可拆分為初始狀態(tài)、跳轉(zhuǎn)條件和目標(biāo)狀態(tài)三個部分。正是基于這樣的基本結(jié)構(gòu),我們建立了“圍點打援”的測試思路。
- 圍點:控制Stateflow跳入初始狀態(tài)
- 打援:針對跳出初始狀態(tài)的跳轉(zhuǎn)路徑進行用例編寫
- 中心開花:最終實現(xiàn)以初始狀態(tài)為中心,向四周輻射的MCDC覆蓋
- 假設(shè)以Normal狀態(tài)最為初始狀態(tài):
- 圍點:以Normal為初始狀態(tài)
- 打援:① Normal跳轉(zhuǎn)至Off_Err
② Normal跳轉(zhuǎn)至 On_OverTemp
圍點與打援
測試用例編寫方法
當(dāng)確定好測試思路之后,下面就正式的搭建測試工程。這里,我們搭建測試工程用的是一款自動化的軟件動態(tài)測試工具——TPT。
圍點:控制Stateflow跳轉(zhuǎn)至初始狀態(tài)
在進入初始狀態(tài)的過程中,并不需要考慮MCDC覆蓋度的要求。因此,只需要控制信號按照最短的路徑進入到初始狀態(tài)即可。
以Normal作為初始狀態(tài)為例,直接使VPM = 8,跳入Normal狀態(tài)。由于每次狀態(tài)跳轉(zhuǎn)會占用一個步長,我們給入足夠的等待時間保證狀態(tài)跳轉(zhuǎn)至初始狀態(tài)。
進入Normal狀態(tài)
按照以上的搭建方法,分別對模型中的5個功能狀態(tài)搭建了測試用例,并按照模型中的狀態(tài)塊名稱對用例進行了命名。
初始狀態(tài)
由于這5個初始狀態(tài)在后面測試用例搭建的過程中需要多次調(diào)用,TPT可以將編寫好的測試用例進行封裝,生成Variants,在搭建測試用例的過程中直接選擇想要的狀態(tài)即可。這會大大提升測試用例的搭建效率。
以Variants形式存在的初始狀態(tài)
打援:給入狀態(tài)跳轉(zhuǎn)條件信號
按照OriginalState分組封裝的思路,將模型中的跳轉(zhuǎn)條件也進行了Variants的搭建。這里針對信號Variants的劃分會用到在測試過程中常用到的一種方法:等價類劃分。
按照測試中常用的等價類劃分方法,對Fan Management單元模型中的輸入信號進行了等價類的劃分:
▲Bool類型:true、false
▲有明確功能對應(yīng)關(guān)系的信號:
高低壓狀態(tài)(VPM_st):8、9、(!(8 or 9))取等價類3
風(fēng)扇故障(FanErr)信號:0(無故障)、1(有故障)
▲有明確功能閾值的信號:
風(fēng)扇工作溫度(FanTemp):≥90(取等價類100)、≤85(取等價類50)
劃分好跳轉(zhuǎn)條件上信號的等價類之后,為了方便復(fù)用,同樣在TPT中搭建了相應(yīng)的Variants。
以Variants形式存在的跳轉(zhuǎn)條件
當(dāng)OrigianlState和ObjState上的Variants都搭建好之后,接下來就是選擇需要的Variants,讓他們組合成我們想要的測試用例。為了減少用例運行過程中的資源占用情況,在用例的末尾加了一個300ms的最大跳出時間限制。
測試用例
當(dāng)然,TPT本著“萬物皆Variants”的原則,測試用例中States的跳轉(zhuǎn)條件也可以封裝成Variants,便于我們的復(fù)用。
跳轉(zhuǎn)條件的Variants
在運行用例的時候,TPT可以調(diào)用Simulink的V&V工具箱對模型的覆蓋度進行統(tǒng)計分析。我們可以方便的查看MCDC覆蓋度是否實現(xiàn)了“中心開花”的效果:以初始狀態(tài)為中心,跳出初始狀態(tài)的條件實現(xiàn)MCDC全覆蓋。這樣可以大大減少我們在為了滿足MCDC覆蓋度去補充測試用例的工作量。
結(jié)構(gòu)覆蓋度統(tǒng)計結(jié)果
在這個過程中,TPT還可以進行一些測試用例分組管理、測試需求管理、設(shè)置測試用例屬性信息的工作,篇幅所限,這里就不給大家詳述了。
一招從天而降的掌法--測試用例自動生成
在搭建測試工程的過程中,有沒有一種能減輕測試工程師的工作量,自動生成測試用例的方案呢?
為了提升大家的測試效率,TPT也提供了多種自動生成測試用例的方法。當(dāng)我們搭建出OriginalState和ObjState的Variants之后,只需要動動手指,TPT就能自動生成我們想要的測試用例。
并且,在保證測試用例數(shù)量可控的前提下,自動生成的用例MCDC覆蓋度達(dá)到了100%!
在我們的測試過程中,巧妙的利用TPT提供的自動生成測試用例的方法,能夠大大較少測試工程師的重復(fù)性勞動,實現(xiàn)真正意義的自動化測試。
關(guān)于評估
用例搭建完成之后,我們還需要搭建測試評估,這里就可以利用TPT強大的腳本評估去實現(xiàn)。TPT的腳本評估使我們徹底擺脫了傳統(tǒng)時間域上的評估,轉(zhuǎn)向了復(fù)用性、自適應(yīng)性更強的邏輯評估方式,同時也便于我們對模型和測試工程的debug。
對于Stateflow的評估,我們同樣采用了“圍點打援”的思路,先用正則表達(dá)式regexp定位至Normal狀態(tài),然后篩選出高壓故障區(qū)間進行評估。
Normal跳轉(zhuǎn)至Off_Err評估腳本
篇幅所限,這里只給大家介紹了一個簡單Stateflow模型的測試方法,對于多層嵌套、含調(diào)度模塊、復(fù)雜跳轉(zhuǎn)條件、延遲邏輯等復(fù)雜模型,都可以在此基礎(chǔ)上進行擴展。如果大家測試過程中存在疑問,歡迎留言評論哦。
PikeTec公司是全球知名的基于模型的嵌入式系統(tǒng)測試工具TPT的軟件供應(yīng)商,總部位于德國柏林,其創(chuàng)始人均在戴姆勒公司擁有十多年的軟件測試經(jīng)驗。TPT產(chǎn)品曾被評為2005年戴姆勒最佳創(chuàng)新軟件,并在戴姆勒、大眾、奧迪、保時捷、通用等汽車整車廠及多家零部件企業(yè)(博世、大陸、海拉等)中得到廣泛應(yīng)用,如戴姆勒的多個車型的混合動力汽車的動力總成、電池管理控制器的測試,博世的汽油機和柴油機控制系統(tǒng)測試等。
北匯信息作為PikeTec在中國的獨家合作伙伴,致力于幫助中國客戶提升嵌入式控制系統(tǒng)的開發(fā)效率。目前,TPT已被眾多國內(nèi)知名主機廠和零部件企業(yè)認(rèn)可,在新能源(VCU/BMS/MCU)以及ADAS等領(lǐng)域中被廣泛應(yīng)用。
-
TPT
+關(guān)注
關(guān)注
0文章
23瀏覽量
6949
發(fā)布評論請先 登錄
相關(guān)推薦
評論