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编写自动化测试工具,功能比较完善,可以进行完整的自动化测试。但工具编写相对繁琐与耗时,实际对测试工作效率提升有限

DLL接口自动化测试总结的更多相关文章

  1. 1、大型项目的接口自动化实践记录--robotframework环境搭建

    因为人力.团队技术问题,选用robotframework来做自动化,首先说下环境搭建 齐涛道长的入门教程非常棒:http://blog.csdn.net/tulituqi/article/detail ...

  2. python脚本实现接口自动化轻松搞定上千条接口用例

    接口自动化目前是测试圈主流的一个话题,我也在网上搜索了很多关于自动化的关键词,大多数博主分享的python做接口自动化都是以开源的框架,比如:pytest.unittest+ddt(数据驱动) 最常见 ...

  3. jmeter接口自动化集成

    接口自动化集成 一.jmeter基础学习 1.博客  :http://www.cnblogs.com/fnng/category/345478.html 2.博客   http://www.cnblo ...

  4. Python+excel实现的简单接口自动化 V0.1

    好久没写博客了..最近忙着工作以及新工作的事.. 看了下以前写的简单接口自动化,拿出来总结下,也算记录下学习成果 先来贴一下最后的结果,结果是写在原来的excel中 执行完毕后,会将结果写入到“状态” ...

  5. 接口自动化之Postman+Newman

    简介 Postman 使一款可以方便我们调用API的工具,通过Postman 与 Newman结合我们还可以批量运行API达到API自动化测试的目的. Postman 安装 Window 系统需要先安 ...

  6. JMeter基于http请求的web接口性能测试总结

    [本文出自天外归云的博客园] 基于http请求的web接口性能测试总结 压测的目的:对于Web接口压测的目的最终是要在对数据库造成压力的情况下观察压测服务器的cpu是否达到预警值.memory是否发生 ...

  7. 接口自动化的根基--HTTP协议

    点击标题下「蓝色微信名」可快速关注 坚持的是分享,搬运的是知识,图的是大家的进步,没有收费的培训,没有虚度的吹水,喜欢就关注.转发(免费帮助更多伙伴)等来交流,想了解的知识请留言,给你带来更多价值,是 ...

  8. 持续集成接口自动化-jmeter+ant+jenkins(一)

    ant 批量执行Jmeter 一.环境准备 1.JDK环境:http://www.oracle.com/technetwork/java/javase/downloads/index.html 2.A ...

  9. python+request接口自动化框架

    python+request接口自动化框架搭建 1.数据准备2.用python获取Excel文件中测试用例数据3.通过requests测试接口4.根据接口返回的code值和Excel对比 但本章只讲整 ...

随机推荐

  1. 64位win8.1系统安装intelhaxm

    加快安卓模拟器的启动速度,需要装intelhaxm,以前win8时直接双击网上下载的exe文件就安装得了,但是win8.1的时候双击了总提示说是vt-x没有启用的,但是我看任务管理器→性能标签页那里的 ...

  2. Xilinx IP核的根目录地址,有datasheet 和仿真相关的资料

    C:\Xilinx\14.7\ISE_DS\ISE\coregen\ip\xilinx\dsp\com\xilinx\ip Xilinx IP核的根目录地址,有datasheet 和仿真相关的资料

  3. [LeetCode][Java] Search Insert Position

    题目: Given a sorted array and a target value, return the index if the target is found. If not, return ...

  4. vue2的全局变量的设置

    最近在学习VUE.js 中间涉及到JS全局变量,与其说是VUE的全局变量,不如说是模块化JS开发的全局变量. 1.全局变量专用模块 就是以一个特定模块来组织管理这些全局量,需要引用的地方导入该模块便好 ...

  5. FreeRTOS 事件标志组

    以下转载自安富莱电子: http://forum.armfly.com/forum.php 为什么要使用事件标志事件标志组是实现多任务同步的有效机制之一.也许有不理解的初学者会问采用事件标志组多麻烦, ...

  6. html5和css3打造一款创意404页面

    之前和网友分享一款HTML5可爱的404页面动画 很逗的机器人.今天要爱编程小编要再给大家带来一款html5和css3打造的创意404页面.一起看下效果图吧: 在线预览   源码下载 实现的代码. h ...

  7. docker探索-在centos6.5中安装docker(三)

    1.要求 centos6.5中需要64位 centos6.5的linux内核需要3.x(centos的内核是2.6) 2.查看当前系统的位数和版本 [root@jacky jacky]# uname ...

  8. 【工具】小巧好用的屏幕截图工具——ScrToPic

    百度搜ScrToPic,有绿色版的用. 好处: 小巧快捷,不用为了截图而开QQ,不用看QQ的弹窗广告. 可以自定义截图区域和窗口捕捉,可以自定义这两个功能的快捷键. 截图时可以选择要不要显示鼠标. 窗 ...

  9. contiki ipv6测试问题

    I'm using simple_udp_sendto to communicate between nodes. A border router was initialized with a pre ...

  10. Apache HttpComponents Custom protocol interceptors通过拦截器自定义压缩

    /* * ==================================================================== * Licensed to the Apache S ...