国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于ECU-TEST的ECU診斷工具API接口自動化測試應(yīng)用

2020-06-04 04:01:00邵金萍
汽車電器 2020年5期
關(guān)鍵詞:測試用例腳本調(diào)用

邵金萍

(濰柴動力股份有限公司,山東 濰坊 261061)

隨著計算機、電子等學(xué)科領(lǐng)域在汽車上的廣泛應(yīng)用,汽車電控系統(tǒng)日益復(fù)雜成為必然趨勢,電子模塊的增加導(dǎo)致汽車故障診斷的難度也越來越大。ECU診斷工具在國內(nèi)得到了迅速發(fā)展和普及。

為確保診斷工具的可靠性,針對其API接口測試的工作凸顯重要性。傳統(tǒng)的手動API接口測試效率低下、覆蓋度低,且品質(zhì)得不到保證[1]。作者所用ECU診斷工具同時存在項目版本眾多、適配的ECU平臺多樣化、開發(fā)及測試周期短等問題[2]。因此基于Python腳本語言開發(fā)了一套ECU診斷工具的API接口自動調(diào)用方法,滿足診斷工具跨ECU平臺的功能和性能測試要求,在人力不足及接口工作量大的情況下,通過合理設(shè)計Python腳本和ECU診斷邏輯測試用例更準(zhǔn)確高效地完成對診斷工具的開發(fā)測試工作[3-9]。

1 基于.NET框架的API接口命令調(diào)用實現(xiàn)

Visual Studio是目前流行的Windows平臺應(yīng)用程序開發(fā)平臺,其中包含的.NET框架是一個多語言 (C++語言、C#語言、VB語言、J#語言等)組件開發(fā)和執(zhí)行環(huán)境[10]。從層次結(jié)構(gòu)上看,.NET框架包括3個主要組成部分:公共語言運行庫(CLR:Common Language Runtime)、服務(wù)框架 (Service Framework)和上層的兩類應(yīng)用模板——傳統(tǒng)的Windows應(yīng)用程序模板 (Win Forms)和基于ASP.NET的面向Web的網(wǎng)絡(luò)應(yīng)用程序模板 (Web Forms和Web Service)[11-13]。

公共語言運行庫 (CLR)是一個運行時環(huán)境,提供內(nèi)存管理、線程管理、代碼執(zhí)行、代碼安全驗證、編譯及其他系統(tǒng)服務(wù)。

服務(wù)框架位于CLR之上,提供了一套開發(fā)人員希望在標(biāo)準(zhǔn)語言庫中存在的基本類庫,包括集合、輸入/輸出、字符串及數(shù)據(jù)類。使用這些可重用類型集合,大大提高了開發(fā)效率。

基于.NET框架的API接口命令調(diào)用前需提前連接和ECU通信的硬件接口設(shè)備,將本文中的ECU診斷工具API命令所在的.dll文件添加到基于Visual Studio 2015 C#Win Forms程序的引用文件集中,運行編寫好的Win Forms程序返回正確的測試結(jié)果,以獲取故障碼信息為例,如圖1所示,為下一步Python腳本調(diào)用提供依據(jù)。

編譯時目標(biāo)平臺選擇Any CPU是將程序集編譯為在任意平臺上運行,也就是在32位Windows上按照32位運行,在64位Windows上按照64位運行。本文的ECU診斷工具API命令所在的.dll文件為32位,因此勾選了“首選32位 (P)”選項。編譯配置界面如圖2所示。

圖1 基于Visual Studio的API命令編譯運行圖

圖2 編譯配置界面圖

2 Python環(huán)境搭建

Python是一種面向?qū)ο蟮慕忉屝陀嬎銠C程序設(shè)計語言,其語法更接近自然語言,通俗易懂且具有豐富和強大的庫[10,14-15]。

本文中用到32位的Python3.7.4以及它的兩個庫——pythonnet和tblib。pythonnet庫是python與C#的交互模塊,tblib庫是實現(xiàn)其他程序?qū)ython運行結(jié)果可追溯調(diào)用的模塊庫。

ECU診斷工具的.dll文件為32位,因此選擇32位的Python軟件。Python3默認采用UTF-8編碼,解決了Python2的默認編碼是ASCII帶來的編程過程中經(jīng)常遇到編碼報錯問題。

pythonnet庫常用的命令有:

import sys

sys.path.append (r‘…’) #加載dll文件夾路徑;

import clr#導(dǎo)入公共運行時環(huán)境;

clr.AddReference(‘…’)#加載dll文件;

from…import*#導(dǎo)入命名空間;

本ECU診斷工具API命令返回結(jié)果中分別將C#的list和datatable數(shù)據(jù)類型轉(zhuǎn)換成Python的list和dictionary。以獲取故障碼信息為例,圖3是Python調(diào)用dll文件的API命令成功的結(jié)果展示。

3 ECU診斷工具調(diào)用腳本開發(fā)及調(diào)試

ECU-TEST是一款支持多平臺的ECU自動測試軟件,具有二次開發(fā)功能強大、操作簡單等優(yōu)點。其不僅支持dSPACE ControlDeskNG、 ETASLabCar、 NIVeristand、CarSim、 MatLabSimulink、 AVLPUMA、 D2TMorphee等HILMILSIL仿真平臺和臺架,而且支持INCA、CANape、CANoe、CANalyzer等ECU標(biāo)定診斷工具。要實現(xiàn)對ECU診斷工具API命令的自動測試需要將其返回結(jié)果和INCA中的測試結(jié)果在ECU-TEST中做比較,三者關(guān)系如圖4所示。本章要完成的工作是ECU-TEST對ECU診斷工具的調(diào)用。

根據(jù)dll文件開發(fā)的Python腳本和包含API命令的dll文件需要同ECU診斷工具運行涉及到的其他dll文件放在同一個文件路徑下。腳本調(diào)用流程如圖5所示。

4 ECU診斷工具API接口自動測試用例演示

ECU-TEST調(diào)用ECU診斷工具測試調(diào)試完成后,連接INCA進行診斷工具功能的自動測試用例設(shè)計,以獲取故障碼信息的API命令自動測試為例,說明如圖6所示。

Python根據(jù)某個元素讀Excel的腳本屬于測試用例二次開發(fā)內(nèi)容,腳本實現(xiàn)設(shè)計如下所示:

import os

import pandas as pd

def ReadExcelDTCM (FilePath,F(xiàn)ileName,SheetName,DFCName):

AbsoluteFilePath=os.path.join (FilePath,F(xiàn)ileName)

df=pd.read_excel(AbsoluteFilePath,SheetName,header=0)

圖3 Python調(diào)用API命令運行結(jié)果圖

圖4 測試工具關(guān)系圖

圖5 腳本調(diào)用流程圖

DFCRow=''

for indexs in df.index:

for i in range (len (df.loc [indexs] .values)):

if (df.loc [indexs] .values [i] ==DFCName):

print ('RowNo:',indexs+1,'ColumnNo:',i+1)

圖6 API命令自動測試用例流程圖

print (df.loc [indexs] .values [DTCM所在列號])

DFCRow=df.loc [indexs] .values[DTCM所在列號]

return DFCRow

ECU-TEST對上述診斷工具的功能測試進行的測試用例編寫步驟如圖7所示。

5 結(jié)論

本論文提供了一種使用Python腳本語言實現(xiàn)了基于.dll文件的API命令調(diào)用的解決問題思路,穩(wěn)定實現(xiàn)了對開發(fā)升級中的ECU診斷工具進行接口功能的自動化測試和版本用例移植,提高了測試效率和準(zhǔn)確性。

圖7 ECU-TEST自動測試用例編寫圖

猜你喜歡
測試用例腳本調(diào)用
酒駕
安奇奇與小cool 龍(第二回)
基于SmartUnit的安全通信系統(tǒng)單元測試用例自動生成
核電項目物項調(diào)用管理的應(yīng)用研究
LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
數(shù)據(jù)庫系統(tǒng)shell腳本應(yīng)用
電子測試(2018年14期)2018-09-26 06:04:24
基于混合遺傳算法的回歸測試用例集最小化研究
快樂假期
基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
基于依賴結(jié)構(gòu)的測試用例優(yōu)先級技術(shù)
道真| 邢台县| 沙洋县| 中江县| 武威市| 宁强县| 洛扎县| 宁乡县| 洛南县| 虎林市| 黔江区| 德惠市| 天水市| 凉山| 大同市| 阿鲁科尔沁旗| 三河市| 东乌珠穆沁旗| 江津市| 张北县| 望奎县| 扶余县| 平罗县| 文山县| 云龙县| 辉县市| 辽中县| 台中县| 万宁市| 黑山县| 靖边县| 揭阳市| 武城县| 万全县| 郓城县| 大竹县| 西乌珠穆沁旗| 陆河县| 石首市| 赣州市| 临沂市|