DLL接口自動化測試總結


1. DLL接口測試方法介紹

在最近測試的項目中,系統給業務端提供DLL文件,業務端通過DLL文件中的C++接口實現系統功能,這就需要對DLL中的C++接口進行詳細功能測試。 本文主要介紹項目測試中使用的DLL接口測試方法及基於AutoIT實現的DLL接口自動化測試方法。

 1.1 VS2005

通過VS2005可以直接加載DLL文件中的C++接口,模擬業務端調用,傳遞一些參數值從而驗證接口返回碼等功能是否正確接口。這部分代碼,類似與白盒測試中編寫的驅動模塊,需要有一定的C++編程基礎。 項目初期就是請開發人員按照這種方法編寫demo進行測試的,功能相對比較簡單,可以正常完成接口的功能測試,但同時存在測試執行相對復雜、效率不高的問題(下圖)。

1.2 Loadrunner

中間也調研了Loadrunner加載DLL文件C++接口的方法,如下:

  • 新建Loadrunner腳本,協議選擇C Vuser 
  • 定義接口中的參數,並進行賦值
  • 使用lr_load_dll函數加載DLL 
  • 根據接口文檔中的函數說明,即可正常調用DLL接口

  • 將接口輸入參數進行參數化,可以批量調用接口進行測試

  • 定義一個參數保存預期的結果,調用接口得到接口返回值與其比較,判斷成功與失敗。如下圖定義的預期結果參數IDExRes與IDRes比較:

  • 定義循環的次數,可一次執行多次測試,實現自動化測試,通過日志即可查看測試結果

1.3 AutoIT

AutoIT調用DLL接口方法基本與Loadrunner相似:

  • 首先使用DllOpen函數,加載DLL 
  • 之后定義接口中的參數,並進行賦值
  • 然后使用DllCall函數,調用DLL中的接口
  • 最后通過DllClose關閉已打開的DLL文件

2. AutoIT DLL接口自動化測試方案

使用AutoIT,通過操作Excel用例,讀取表格中的參數輸入值和期望結果,通過與調用接口得到返回碼進行比較,可以完成DLL接口自動化測試。

2.1 基本邏輯

2.2 配置文件設計

config.ini配置文件,主要配置了版本號、接口名稱、參數個數及類型等信息,示例文件如下:

[Version]
Version=Build#1032
[DFSInitDll]
DFSInitDll =5
defName=const char*
nodeIP=const char*
nodePort=int
nodeName=const char*
nodePwd=const char*

2.3 測試用例設計

測試用例表格是根據平台測試組通用的測試用例模版修改而來,主要是增加了詳細的輸入參數列,工具執行時根據讀取這些數據作為接口的輸入參數。

2.4 代碼設計

AuotIT腳本簡單來說,可以說是一個個函數堆起來的。本腳本里使用了一些自定義函數,如下:

代碼編寫整體邏輯與設計一致,即首先從配置文件獲取相關配置,讀取Excel獲取輸入數據,調用DLL接口,保存結果至Excel中。

2.5 存在的不足

使用AutoIT編寫接口自動化腳本過程中發現仍然存在一些局限及不足之處:

  • 對於異常或存在一定的邏輯關系的用例,很難開發做到可以統一處理,所以工具對於接口用例暫時無法做到100%覆蓋
  • AutoIT打開非文本文件讀取內容后,調用接口傳輸的16進制數據轉化成了文本,上傳后文件內容不正確(暫時只能實現txt文本文件的上傳)

3. 總結

使用了三種方法測試DLL接口,對比總結如下:

  • 使用VS 2005直接測試接口,適合在時間比較緊的情況下進行使用。該方法建議由開發人員編寫相應的驅動代碼,測試人員進行執行。測試使用易用性及效率一般
  • 使用Loadrunner,測試人員可以快速便捷的根據接口設計文檔,調用相關接口(類似WebService接口測試工具Webservice Studio),在對相應的參數進行參數化后可以進行"半自動化測試",節省不少時間
  • 使用AutoIT編寫自動化測試工具,功能比較完善,可以進行完整的自動化測試。但工具編寫相對繁瑣與耗時,實際對測試工作效率提升有限


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM