网易首页 > 网易号 > 正文 申请入驻

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

0
分享至

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

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

库接口测试

1库文件

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

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

2静态库与动态库

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

3相关文件的一些扩展名

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

4库接口测试

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

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

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

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

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

2利用VectorCAST/C++进行静态库接口测试

01静态库文件的生成

对于这个点餐主程序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目标文件基础上生成的。

02环境构建基本过程

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

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

03测试用例编写与执行

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

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

3利用VectorCAST/C++进行动态库接口测试

01动态库文件的生成

与静态库文件生成类似,将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


02环境构建基本过程

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

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

总结

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

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

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
心海:一片不需要岸的汪洋

心海:一片不需要岸的汪洋

疾跑的小蜗牛
2026-01-13 18:37:55
70后女厅干罗双全履新湖南省卫健委

70后女厅干罗双全履新湖南省卫健委

大爱三湘
2026-01-13 20:22:01
0-1大爆冷!1-0绝杀!U23亚洲杯太疯狂:东道主沙特队轰然出局

0-1大爆冷!1-0绝杀!U23亚洲杯太疯狂:东道主沙特队轰然出局

大秦壁虎白话体育
2026-01-13 07:06:22
老了才明白:家最大的灾难:是父母五六十岁了,还随意泄露家隐私

老了才明白:家最大的灾难:是父母五六十岁了,还随意泄露家隐私

枫红染山径
2026-01-07 09:04:59
企业又要叫苦了,新规定,给员工提供住宿餐饮也要交税了,咋回事

企业又要叫苦了,新规定,给员工提供住宿餐饮也要交税了,咋回事

你食不食油饼
2026-01-13 16:57:10
王石的悲剧:裸泳的傻白甜富二代

王石的悲剧:裸泳的傻白甜富二代

谭谈投研
2026-01-13 18:31:26
CCTV5直播,中国男足PK泰国男足,占据天时地利,洋帅将创造历史

CCTV5直播,中国男足PK泰国男足,占据天时地利,洋帅将创造历史

体坛小快灵
2026-01-13 12:57:29
瓦良格号送到中国后有多震撼?专家刮掉表面的锈迹:钢材品质极佳

瓦良格号送到中国后有多震撼?专家刮掉表面的锈迹:钢材品质极佳

古书记史
2026-01-06 16:31:56
特朗普对古巴人民和政府发出新威胁,外交部回应

特朗普对古巴人民和政府发出新威胁,外交部回应

环球网资讯
2026-01-12 15:49:09
突发!香港知名男星宣布和妻子离婚,婚后不出门工作在家吃软饭

突发!香港知名男星宣布和妻子离婚,婚后不出门工作在家吃软饭

娱说瑜悦
2026-01-13 19:16:41
三折甩卖没人要!曾经的中产鞋王,如今成了智商税代名词

三折甩卖没人要!曾经的中产鞋王,如今成了智商税代名词

青眼财经
2025-12-31 18:55:30
他身高1米6却娶了中国首席舞蹈家谭元元

他身高1米6却娶了中国首席舞蹈家谭元元

丰谭笔录
2026-01-13 07:30:10
随着韩国0-2,黎巴嫩1-0,亚洲杯8强诞生5席:伊朗出局,越南头名晋级

随着韩国0-2,黎巴嫩1-0,亚洲杯8强诞生5席:伊朗出局,越南头名晋级

俯身冲顶
2026-01-13 21:46:03
苏联式解体将重演?俄罗斯专家大胆预测:美国或将分裂成3个国家

苏联式解体将重演?俄罗斯专家大胆预测:美国或将分裂成3个国家

小陈讲史
2026-01-13 11:19:27
伊朗抗议者亲手击毙下令射杀群众的伊朗军官

伊朗抗议者亲手击毙下令射杀群众的伊朗军官

桂系007
2026-01-12 00:31:50
泰国警方抓获携带8000多张电话卡中国人,三大运营商该当何罪?

泰国警方抓获携带8000多张电话卡中国人,三大运营商该当何罪?

李健政观察
2026-01-12 23:19:09
A股:散户听我一句劝,1795亿主力出逃,明天要出现大级别调整行情?

A股:散户听我一句劝,1795亿主力出逃,明天要出现大级别调整行情?

股市皆大事
2026-01-13 16:08:07
台海局势轮到美国着急了:中国打法只有一个,但美军却陷入两难?

台海局势轮到美国着急了:中国打法只有一个,但美军却陷入两难?

文史旺旺旺
2026-01-12 19:49:06
CBA最新消息!曝布姆加盟新疆男篮,北京首钢大将正式复出

CBA最新消息!曝布姆加盟新疆男篮,北京首钢大将正式复出

体坛瞎白话
2026-01-13 16:55:01
2轮4分!亚洲冠军比中国队还危险:打平韩国=可能出局 3队同积5分

2轮4分!亚洲冠军比中国队还危险:打平韩国=可能出局 3队同积5分

侃球熊弟
2026-01-12 22:14:21
2026-01-13 22:12:49
北汇信息
北汇信息
专注汽车电子领域
609文章数 31关注度
往期回顾 全部

科技要闻

每年10亿美元!谷歌大模型注入Siri

头条要闻

李在明访日与高市早苗会谈 提到中国

头条要闻

李在明访日与高市早苗会谈 提到中国

体育要闻

他带出国乒世界冠军,退休后为爱徒返场

娱乐要闻

蔡卓妍承认新恋情,与男友林俊贤感情稳定

财经要闻

"天量存款"将到期 资金会否搬入股市?

汽车要闻

限时9.99万元起 2026款启辰大V DD-i虎鲸上市

态度原创

健康
房产
教育
数码
游戏

血常规3项异常,是身体警报!

房产要闻

又一新校开建!海口这一片区,迎来教育重磅升级!

教育要闻

千万别让老师刷到这条视频!

数码要闻

英特尔和AMD盘前走强 KeyBanc因服务器CPU需求强劲上调两家公司评级

2026年首个开放世界二游:高完成度的首测,熟练得不像第一次

无障碍浏览 进入关怀版