• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

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

      邵金萍

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

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

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

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

      Visual Studio是目前流行的Windows平臺(tái)應(yīng)用程序開發(fā)平臺(tái),其中包含的.NET框架是一個(gè)多語言 (C++語言、C#語言、VB語言、J#語言等)組件開發(fā)和執(zhí)行環(huán)境[10]。從層次結(jié)構(gòu)上看,.NET框架包括3個(gè)主要組成部分:公共語言運(yùn)行庫(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]。

      公共語言運(yùn)行庫 (CLR)是一個(gè)運(yùn)行時(shí)環(huán)境,提供內(nèi)存管理、線程管理、代碼執(zhí)行、代碼安全驗(yàn)證、編譯及其他系統(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程序的引用文件集中,運(yùn)行編寫好的Win Forms程序返回正確的測試結(jié)果,以獲取故障碼信息為例,如圖1所示,為下一步Python腳本調(diào)用提供依據(jù)。

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

      圖1 基于Visual Studio的API命令編譯運(yùn)行圖

      圖2 編譯配置界面圖

      2 Python環(huán)境搭建

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

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

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

      pythonnet庫常用的命令有:

      import sys

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

      import clr#導(dǎo)入公共運(yùn)行時(shí)環(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是一款支持多平臺(tái)的ECU自動(dòng)測試軟件,具有二次開發(fā)功能強(qiáng)大、操作簡單等優(yōu)點(diǎn)。其不僅支持dSPACE ControlDeskNG、 ETASLabCar、 NIVeristand、CarSim、 MatLabSimulink、 AVLPUMA、 D2TMorphee等HILMILSIL仿真平臺(tái)和臺(tái)架,而且支持INCA、CANape、CANoe、CANalyzer等ECU標(biāo)定診斷工具。要實(shí)現(xiàn)對(duì)ECU診斷工具API命令的自動(dòng)測試需要將其返回結(jié)果和INCA中的測試結(jié)果在ECU-TEST中做比較,三者關(guān)系如圖4所示。本章要完成的工作是ECU-TEST對(duì)ECU診斷工具的調(diào)用。

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

      4 ECU診斷工具API接口自動(dòng)測試用例演示

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

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

      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命令運(yùn)行結(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命令自動(dòng)測試用例流程圖

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

      DFCRow=df.loc [indexs] .values[DTCM所在列號(hào)]

      return DFCRow

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

      5 結(jié)論

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

      圖7 ECU-TEST自動(dòng)測試用例編寫圖

      猜你喜歡
      測試用例腳本調(diào)用
      酒駕
      安奇奇與小cool 龍(第二回)
      基于SmartUnit的安全通信系統(tǒng)單元測試用例自動(dòng)生成
      核電項(xiàng)目物項(xià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)先級(jí)技術(shù)
      凌海市| 五原县| 缙云县| 安塞县| 阜平县| 利辛县| 新野县| 浙江省| 萨嘎县| 全南县| 长垣县| 卓资县| 贺兰县| 石屏县| 玛沁县| 大安市| 萨嘎县| 海南省| 龙川县| 犍为县| 宜兰县| 麻栗坡县| 延吉市| 宜兰县| 天等县| 武宁县| 五寨县| 柳河县| 曲松县| 班玛县| 疏附县| 闽清县| 临潭县| 城市| 文山县| 新兴县| 陕西省| 福建省| 马鞍山市| 平南县| 汉中市|