TPT作為一款功能強大的嵌入式軟件測試工具,覆蓋MiL、SiL、PiL、HiL、ViL等全階段的測試過程,將測試執行到測試報告生成的所有步驟實現自動化,大大提高我們做軟件測試的效率。TPT之所以在嵌入式測試中如此高效,少不了其腳本評估這個特色功能的支撐,今天我就帶領大家來了解一下TPT中腳本這個特性。
您將在本文及后續文章了解到的:
- 通過TPT腳本對任意時間的信號行為進行檢查的方法
- TPT腳本中對信號進行處理以及讀寫的方法
- 通過TPT腳本對測試需求、測試報告等內容進行管理的方法
- TPT腳本與Python標準庫、擴展庫、MATLAB、以及其它外部軟件的交互方案
- TPT腳本的封裝、集成以及團隊管理方案
TPT腳本評估的語法構成
TPT中的腳本由三個方面組成,分別是Python基本語法、TPT內置函數以及MATLAB等其它程序的接口。
首先TPT腳本的語法框架是基于Python 2.7的,所以我們可以在TPT中使用Python2.7中的絕大部分語法特性,比如說Python中的選擇語句、循環語句等流程控制語法,列表、元組、字典等數據結構,甚至我們還可以使用Python中的函數、類等語法結構。如下圖所示,我們使用上述語法,對信號狀態進行判斷,同時建立了一個對信號圖像進行設置的函數。
除了基礎的Python語法框架,TPT針對嵌入式軟件測試的特點,提供了一套強大的函數庫,覆蓋到測試的方方面面。從評估區間查找到信號行為檢查,從測試需求管理到測試報告設置,我們都可以通過調用一兩個函數去完成。這種用簡單幾行腳本就完成一個復雜測試步驟的能力,是其它大部分測試軟件所沒有的。
除了這些特點之外,TPT腳本還提供了與MATLAB等其它工具的交互接口,比如,我們可以使用M語言進行數據處理,這無疑大大提升了工具的使用范疇。
使用TPT腳本進行信號評估
使用TPT腳本進行信號行為檢查的完整流程如下圖所示,通過這個流程我們就可以實現對幾乎所有測試場景的評估。
聲明評估變量
就和大部分的編程語言一樣,編寫程序的第一步就是變量的聲明,TPT提供了如下表所示的多種變量的聲明:
這些評估變量和標準的Python變量有著本質的區別,Python變量都是和時間無關的標量,而這些TPT變量是建立在時間域上的,它們的值隨時間變化而變化。
TPT在腳本中之所以做出這樣的區別,是為了能讓變量更好的表示信號的實際情況。如下圖所示,我們首先聲明了一個TPT評估變量,之后把一個開關信號賦值給這個評估變量,之后方便我們對信號進行進一步的操作。
同其它的編程語言一樣,我們可以把多個值組成列表、矩陣等數據結構,TPT提供了列表、矩陣類型的評估變量的聲明,如下圖所示:
此圖中我們就聲明了一個列表形式的評估變量,并給列表中的兩個元素賦了開關和光強兩個不同類型的信號。通過這樣的列表形式的評估變量的使用,方便了我們對多個評估變量的聲明。假如我們的項目工程中有多個作用類似的信號,我們不妨考慮使用列表形式的評估變量來處理它們,這樣可以使評估整潔又便利。
目標信號獲取
我們在聲明了TPT評估變量之后,就可以去獲取評估中需要用到的信號,比如說待檢查信號、參考信號、輔助信號等等。這些信號的獲取方式也是十分豐富的,可以從TPT工程以及MATLAB模型中獲取,可以從各類文件中加載,也可以從信號運算結果中獲取。 從TPT工程中直接獲取就不用說了,直接輸入信號名稱就可以了,今天我們來看看后兩種方式。
TPT支持用.tptbin、.mdf、 .mat、.csv等多種格式對信號進行讀寫,如下圖所示:
我們可以用excel或MATLAB中去定義信號,然后再用TPT去讀取這些信號,這無疑方便了TPT和各種工具之間的數據交互。
有時候我們想要的信號是原信號數學處理之后的結果,針對這種情況,TPT也內置了多種信號處理的函數,比如說積分、微分、濾波、兩信號時域求差等等。通過這些信號處理函數,我們可以輕松的得到各種我們想要的信號,這條信號的值是兩個輸入信號在時域上的差值。
篩選時間區間
我們在檢查信號行為之前,首先要確定要檢查的時間點,這點是很多測試工具的痛點。它們一般讓測試工程師直接指定要檢查的時間點,但是有時候我們想要檢查的時間點是無法直接用數值來給定的,我們很多情況下是要檢查某種狀況下的信號行為。
TPT在時間區間的篩選上是比較強大的,內置多個時間篩選函數,幫助我們快速的確定一個或多個時間點或時間段。
這些函數中最有亮點的就是regexp()這個時間匹配函數。這個函數是 Regular Expression這個詞組的縮寫,看到這里大家應該就明白了,這個函數使用的正是大名鼎鼎的正則表達式。
正則表達式的歷史可以追溯到二十世紀五十年代,它被多種系統以及編程語言廣泛使用,是上個世紀計算機領域的一項重要成就。我們經常用正則表達式去搜索匹配一些字符串,TPT創新地將這種方法運用在時間匹配上面,大大提高了我們時間篩選的效率。
如上圖所示,這個正則表達式就匹配了首先信號的值等于3,接著值選擇性的等于5,最后等于4這樣一段信號。例如34或354這樣的時間區間。可以想到,假如我們想要直接去找這樣一段信號是極為困難的,但正則表達式幫助我們輕松的匹配到了,這就是正則表達式的優勢所在。
假如您是正則表達式的高手,那么在復雜的時間區間中去找待評估的時間段對您來說是輕而易舉,因為TPT中的正則表達式的特性和標準正則表達式的特性幾乎相同,下圖就是TPT中的正則表達式的元素。
除了regexp()這個函數外,TPT還內置了其它許多時間匹配的函數,幫助您快速地匹配時間區間。比如說trigger()函數通過信號上升沿和下降沿去匹配時間區間,Interval()通過指定時間點去匹配時間區間等等,這些特性您可以在TPT腳本中去感受探索。
信號行為檢查
我們在匹配到了待檢測的時間段之后,接著就是對這個時間段的信號行為進行檢查,去評判信號的變化是否符合我們的預期,這也決定了被測系統對應部分的功能是否滿足我們的需求。這個環節無疑是測試中很重要的一部分,所以TPT提供了豐富的信號檢查函數,幫助我們輕松的評判信號的行為。
這些檢查函數可以去評判一個表達式的正確性,也可以去檢查一個信號是否處于某個區間,甚至可以幫助我們檢查兩個信號的相似程度。下面我們就來看幾個較為典型的例子。
我們在測試中最簡單、最常用的是checkAlways()和assertAlways()這兩個函數,如下圖所示。這兩個函數會直接檢查待檢查表達式的正確性,并根據檢查結果決定與之鏈接的測試用例的通過與否。
還有一個值得一提的是hose( )函數,如下圖所示,這個函數可以根據參考信號生成一個誤差帶,之后檢查目標信號是否在誤差帶范圍之類。這個函數的應用場景也是很多的,比如我們在做back-to-back測試的時候,需要將兩次的信號進行對比,這時候我們就可以用到這個函數。
下期預告
在本篇文章中,我們介紹了TPT腳本的語法構成以及使用它進行測試評估的方法。在下篇文章中,我們將介紹其它的擴展部分,其中包括有:使用TPT腳本進行測試需求管理、測試報告管理;TPT腳本與其它庫與軟件的交互與集成;TPT腳本的封裝與管理等等。相信通過下篇的閱讀,您能通過TPT輕松地解決測試中的一些相關難點。
PikeTec公司是全球知名的基于模型的嵌入式系統測試工具TPT的軟件供應商,總部位于德國柏林,其創始人均在戴姆勒公司擁有十多年的軟件測試經驗。TPT產品曾被評為2005年戴姆勒最佳創新軟件,并在戴姆勒、大眾、奧迪、保時捷、通用等汽車整車廠及多家零部件企業(博世、大陸、海拉等)中得到廣泛應用,如戴姆勒的多個車型的混合動力汽車的動力總成、電池管理控制器的測試,博世的汽油機和柴油機控制系統測試等。
北匯信息作為PikeTec在中國的獨家合作伙伴,致力于幫助中國客戶提升嵌入式控制系統的開發效率。目前,TPT已被眾多國內知名主機廠和零部件企業認可,在新能源(VCU/BMS/MCU)以及ADAS等領域中被廣泛應用。
-
TPT
+關注
關注
0文章
23瀏覽量
6993
發布評論請先 登錄
相關推薦
評論