0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

代码的黑盒测试(下)| 库接口测试Library Interface Testing

北汇信息POLELINK 2022-08-04 14:37 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

书接上回:代码的黑盒测试(上)|目标文件测试Object File Testing,我们首先介绍了编译的基本过程——预处理(Prepressing)、编译(compile)、汇编(Assembly)和链接(Linking),然后着重介绍了代码黑盒测试的第一种方法——VectorCAST/C++的目标文件的测试方法,解决了在无可用源代码的情况下,对其相应目标文件的测试。

其实一个代码工程除了开发人员手写代码外,还包含了很多库文件,甚至有的库文件或是经过开发人员修改或是直接由开发人员编写的。那么对于这些文件又该如何测试呢?请看如下分解!

一、库接口测试

(一)库文件

这里的“库”,就是库文件,一般是指编译好的二进制文件,用于在链接阶段与目标文件一起生成可执行文件,或者运行可执行文件的时候被加载,以便调用库文件中的某段代码。

与可执行文件不同的是,库文件无法直接执行。直观上来看,库文件的源代码中没有main函数,而只是一些函数模块的定义和实现,没有运行的入口主函数,无法直接执行。

(二)静态库与动态库

库文件可分为静态库和动态库。它们区别主要体现在程序的链接阶段——静态库的代码是在编译过程中被载入程序中的,这就说明,只要程序编译完成,程序就不受静态库的影响;动态库的代码在编译的时候并没有被编译进入程序中,只是在程序运行时根据程序需要动态的加载到内存中。

(三)相关文件的一些扩展名

  1. win32平台下,静态库通常后缀为.lib,动态库为.dll。
  2. Linux平台下,静态库通常后缀为.a,动态库为.so。

从本质上来说,由同一段程序编译出来的静态库和动态库,在功能上是没有区别的;不同之处仅仅在于其名字上,也就是“静态”和“动态”。开发人员只需要将.h/.hpp头文件和.lib/.so文件提交给其他开发人员,他们就可以直接使用.lib/.so文件中定义的函数了。静态库和动态库的具体使用由开发人员决定。

(四)库接口测试

库接口测试允许客户在没有可用源代码的情况下,对现有库文件创建测试。在测试时,可以将第三方库或者被修改的第三方库作为一个对象库文件和API定义(头文件)。可以为API创建测试用例,来验证应用程序库函数的正确性,而无需访问源代码。

在代码开发中,通常会将一些常用的函数封装成一个库,提供接口给其它程序文件调用,省去重复写该函数接口。当使用该函数时,只需要直接将所需要的文件链接到程序中即可,大大提高了开发效率。依照这个原理,我们也可以针对一些代码程序根据测试需要,将某些源代码编译生成相应的静态库文件或动态库文件,以完成代码功能测试。

二、利用VectorCAST/C++进行库接口测试

对于如何使用VectorCAST/C++进行静态库或者动态库的单元测试,下面我们仍使用上篇文章中的点餐服务程序(采用GCC编译链),来具体说明。

(一)点餐服务程序的结构内容及说明

poYBAGLrOgiASp3RAAB36SL_x2w424.png

poYBAGLrOhCAF5n2AACE58UQyqM954.png

图 1点餐服务程序的结构内容及说明

(二)利用VectorCAST/C++进行静态库接口测试

1、静态库文件的生成

对于这个点餐主程序manager_driver.c,我们可以将manager.c和database.c分别作为一个调用的库文件来使用,也可以一起作为一个调用的库文件来使用。本例中,将manager.c和database.c一起作为一个调用的库文件来使用。

使用一个BAT脚本生成静态库文件,脚本内容如下:

set path=%VECTORCAST_DIR%\mingw\bin;%PATH%

gcc -c manager.c

gcc -c database.c

ar rcs manager_driver.lib manager.o database.o

说明:无论静态库,还是动态库,都是在*.o目标文件基础上生成的。

2、环境构建基本过程

VectorCAST环境构建的基本过程在代码的黑盒测试(上)|目标文件测试Object File Testing有详细说明,这里不再赘述,对于不同的以及需要注意的地方,有如下说明:

本例中,我们是利用manager.c和database.c一起生成静态库文件manager_driver.lib的,所以在构建测试环境的第3步需要选择“库接口测试方法”并在“Link Options”添加该文件及所在路径,如图2所示。同时在构建测试环境的第6步添加需要的头文件,有manager.h和database.h,如图3所示。

pYYBAGLrOi-AB43LAAGSTnfVKnk986.png

图2选择添加静态库文件manager_driver.lib

poYBAGLrOjWAdYEGAADByjzH0Gc062.png

图3选择添加头文件manager.h或database.h

3、测试用例编写与执行

按照上述说明成功构建测试环境。编写测试用例及执行测试用例,结果如下图4所示。

poYBAGLrOlSAEjWuAABhkE54dEQ448.png

pYYBAGLrOl2AQHHJAAEKsv_XNSM597.png

图4测试用例编写与执行

细心的小伙伴可以注意到上图左边部分只有显示了执行状态图标,因为我们采用的该种测试属于黑盒测试方法,所以我们在构建环境的第4步,没有勾选“Whitebox”前面的复选框,自然也没有结构覆盖度图标。

(三)利用VectorCAST/C++进行动态库接口测试

1、动态库文件的生成

与静态库文件生成类似,将manager.c和database.c一起作为一个调用的动态库文件来使用。

使用一个BAT脚本生成动态库文件,脚本内容如下:

set path=%VECTORCAST_DIR%\mingw\bin;%PATH%

gcc -c -fPIC manager.c -o manager_dyn.o

gcc -c -fPIC database.c -o database_dyn.o

gcc manager_dyn.o database_dyn.o -shared -o libmanager_drive.dll

2、环境构建基本过程

动态库接口测试与静态库接口测试基本一致,不同的地方如下说明:

此例中,我们仍利用manager.c和database.c一起生成动态库文件manager_driver.dll,所以在构建测试环境的第3步选择“库接口测试方法”并在“Link Options”添加该动态库dll文件,如图5所示。后面的操作与静态库接口测试一致,故不在赘述。

poYBAGLrOoWAQ7btAAEuGA59J2E457.png

图5选择添加动态库文件manager_driver.dll

三、总结

本文提供了代码黑盒测试的第二种方法——库接口测试,可以利用工具为API创建测试用例,来验证应用程序库函数的正确性,而无需访问源代码,感兴趣的同学可以尝试下。

VectorCAST/C++作为Vector公司的代码动态测试工具,支持自动生成测试用例,提供完善的覆盖度信息,还可以与Git/SVN/Jekins等工具集成等等;后续也会为大家带来更多基于VectorCAST/C++的动态测试相关内容;同时也欢迎垂询和沟通,共同探讨测试相关问题。

北汇信息作为Vector中国的合作伙伴,始终专注于汽车电子领域的新技术和新产品,为整车厂和零部件企业提供完整的研发、测试解决方案,为工程师在汽车领域提供“趁手装备“!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 测试
    +关注

    关注

    9

    文章

    6432

    浏览量

    131714
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    PROFINET-RT使用 ETS 进行一致性测试

    指示器看起来像绿色勾号,则一致性测试已准备就绪。请选择必要的测试用例并按开始按钮。 谨慎:根据ETS HW手册,运行4小时后,接口时钟可以跳转。因此,ETS 应在 4 小时过去之前重
    发表于 04-23 12:51

    医疗电子设备测试 | 人机交互 + 传感器接口 + 执行控制 协同测试方案

    医疗电子设备测试 | 人机交互 + 传感器接口 + 执行控制 协同测试方案
    的头像 发表于 03-27 13:46 243次阅读
    医疗电子设备<b class='flag-5'>测试</b> | 人机交互 + 传感器<b class='flag-5'>接口</b> + 执行控制 协同<b class='flag-5'>测试</b>方案

    PCB板焊点高低温环境强度测试|推拉力测试机选型指南+实测演示

    在汽车电子、工控设备及消费电子领域,PCB焊点的机械强度直接决定了产品在振动、冲击及热循环工况的服役寿命,焊点推力测试是量化焊接质量的核心手段。本文我们将基于科准测控Beta-S100推拉力测试
    的头像 发表于 03-06 11:07 231次阅读
    PCB板焊点高低温环境<b class='flag-5'>下</b>强度<b class='flag-5'>测试</b>|推拉力<b class='flag-5'>测试</b>机选型指南+实测演示

    Labview接口interface)的工作过程

    UI actor, 用来做数据和状态显示 3、创建一个random Actor,用来产生随机数据。 4、创建一个.Livb,在库中,创建一个接口对象interface。 注:接口对象
    发表于 02-03 11:07

    代码ATE测试系统,轻松完成LED电源模块的自动化测试

    一、案例概述 零代码ATE测试系统赋能湖南某电子科技公司,针对其 LED 电源研发测试阶段 “手动测试效率低、方案调整不灵活、数据分析需求迫切” 的核心问题,提供定制化自动化
    的头像 发表于 12-22 19:50 523次阅读
    零<b class='flag-5'>代码</b>ATE<b class='flag-5'>测试</b>系统,轻松完成LED电源模块的自动化<b class='flag-5'>测试</b>

    使用AXI4接口IP核进行DDR读写测试

    本章的实验任务是在 PL 端自定义一个 AXI4 接口的 IP 核,通过 AXI_HP 接口对 PS 端 DDR3 进行读写测试,读写的内存大小是 4K 字节。
    的头像 发表于 11-24 09:19 3957次阅读
    使用AXI4<b class='flag-5'>接口</b>IP核进行DDR读写<b class='flag-5'>测试</b>

    创建一个Library工程

    -&gt; Empty Project,工具链选择RISC-V Cross GCC,具本如下图 创建一个Library工程工程 将Library文件放入工程中,并点击工程,右键 在设置
    发表于 10-20 09:30

    淘宝商品的API接口测试

    前两天我们简单的说了一些现有的几大电商平台,现在我们来介绍API接口测试操作。 使用说明: 首先需要开放平台注册账号并创建应用,获取 App Key 和 App Secret 将代码
    的头像 发表于 10-08 09:22 552次阅读

    嵌入式软件测试与专业测试工具的必要性深度解析

    。专业工具通过虚拟化硬件接口(如GPIO、CAN总线),允许开发者在早期验证代码逻辑,实现软硬件并行开发。例如,硬件在环(HIL)测试通过FPGA模拟硬件时序,尽管设备成本较高,但能显著提高
    发表于 09-28 17:42

    测试小白3分钟上手,零代码自动化测试平台,15分钟搭建自动化测试方案

    还在为不懂代码、搭建测试方案耗时久而发愁?ATECLOUD 零代码自动化测试平台,专为自动化测试量身打造,小白3 分钟就能轻松上手,15 分
    的头像 发表于 09-22 17:52 1061次阅读
    <b class='flag-5'>测试</b>小白3分钟上手,零<b class='flag-5'>代码</b>自动化<b class='flag-5'>测试</b>平台,15分钟搭建自动化<b class='flag-5'>测试</b>方案

    Simulink模型测试典型问题分享-接口定义不完整

    典型测试问题分享-接口定义不完整 问题描述: 计算模块未定义数值范围,存在越界风险。 信号未规定精度和误差范围,导致背靠背测试未通过。
    的头像 发表于 09-22 15:40 1260次阅读
    Simulink模型<b class='flag-5'>测试</b>典型问题分享-<b class='flag-5'>接口</b>定义不完整

    边聊安全 | 软件单元测试的设计方法

    上海磐时PANSHI“磐时,做汽车企业的安全智”软件单元测试的设计方法写在前面:软件单元测试的设计是一个系统化的过程,旨在验证代码的最小可测试
    的头像 发表于 09-05 16:18 1w次阅读
    边聊安全 | 软件单元<b class='flag-5'>测试</b>的设计方法

    芯片硬件测试用例

    用例是项目开始的关键,利用白盒和黑盒覆盖,保证产品质量。根据芯片功能,目标市场,进行测试立项:依据BRD/MRD/PRD;计划:测试需求分析、人力资源时间线;测试用例设
    的头像 发表于 09-05 10:04 1244次阅读
    芯片硬件<b class='flag-5'>测试</b>用例

    LambdaTest推出全球首个AI智能体测试平台

    领先的AI原生测试平台LambdaTest已推出其智能体对智能体测试(Agent-to-Agent Testing)平台的封闭测试版。这是全球首个专为验证与评估AI智能体而设计的平台。
    的头像 发表于 08-26 17:37 1207次阅读

    Green Testing Lab联合CSM开展电池温度测试

    ,奥地利的Green Testing Lab联合CSM,在此类极端工况开展电池温度测试,致力于在开发早期提出改进措施,有效降低潜在安全风险。
    的头像 发表于 08-26 11:46 1114次阅读