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