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

代码的黑盒测试(下)| 库接口测试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.

相关推荐
热点推荐
追到1-1!华子30+10森林狼19分逆转掘金 约基奇24+15+8穆雷30分

追到1-1!华子30+10森林狼19分逆转掘金 约基奇24+15+8穆雷30分

醉卧浮生
2026-04-21 13:26:05
国内油价今年来首次下调

国内油价今年来首次下调

界面新闻
2026-04-21 14:57:08
掘金输在哪:末节约基奇7中1+穆雷5中1 内线狂丢52分决战崩盘

掘金输在哪:末节约基奇7中1+穆雷5中1 内线狂丢52分决战崩盘

醉卧浮生
2026-04-21 13:38:35
绕过高市政府,日本商界主动上门找中国,想与中方亲自见一面

绕过高市政府,日本商界主动上门找中国,想与中方亲自见一面

健身狂人
2026-04-21 15:58:45
卢希望任河南信阳市副市长、代理市长

卢希望任河南信阳市副市长、代理市长

界面新闻
2026-04-21 15:56:10
骑士灭猛龙总分2-0:哈登28分创3项里程碑 米切尔30+7+5

骑士灭猛龙总分2-0:哈登28分创3项里程碑 米切尔30+7+5

醉卧浮生
2026-04-21 09:37:55
伊方:一艘伊朗油轮突破美军封锁,从阿拉伯海驶入伊领海

伊方:一艘伊朗油轮突破美军封锁,从阿拉伯海驶入伊领海

界面新闻
2026-04-21 16:36:57
特朗普自曝对伊开战真正原因:不是因为以色列,而是出于其毕生信念,开战前夕,美已建立一支能够支持数周作战的军事力量

特朗普自曝对伊开战真正原因:不是因为以色列,而是出于其毕生信念,开战前夕,美已建立一支能够支持数周作战的军事力量

极目新闻
2026-04-21 09:32:08
内幕曝光!伊朗通报,谈判团差点被“团灭”,全程连电话都不敢打

内幕曝光!伊朗通报,谈判团差点被“团灭”,全程连电话都不敢打

书纪文谭
2026-04-20 19:23:31
未婚生子后,男子起诉女友,要求退还彩礼和分娩费

未婚生子后,男子起诉女友,要求退还彩礼和分娩费

中国新闻周刊
2026-04-18 22:11:05
据美高官透露,伊朗在过去48小时内,应是发生了一场“内部政变”

据美高官透露,伊朗在过去48小时内,应是发生了一场“内部政变”

阿七说史
2026-04-20 15:13:06
澎湃回声|临沂回应“一法院干警配偶刚成立公司拍得银行六千万债权”:组成联合调查组

澎湃回声|临沂回应“一法院干警配偶刚成立公司拍得银行六千万债权”:组成联合调查组

澎湃新闻
2026-04-21 16:52:26
余承东:我们成本扛不住了,希望大家早点购买

余承东:我们成本扛不住了,希望大家早点购买

映射生活的身影
2026-04-20 21:53:17
许家印认罪!2.4万亿窟窿,家族只拿走500亿,其余真金白银去哪了

许家印认罪!2.4万亿窟窿,家族只拿走500亿,其余真金白银去哪了

小嵩
2026-04-20 13:52:49
一分钟售罄!3万块的华为女表炸了

一分钟售罄!3万块的华为女表炸了

营销报
2026-04-21 12:22:03
丁俊晖晋级让吉尔伯特“暴怒”:英国孩子只想当网红,没人打球了

丁俊晖晋级让吉尔伯特“暴怒”:英国孩子只想当网红,没人打球了

里芃芃体育
2026-04-21 10:15:07
伊朗要求美国立即释放被扣押船只及人员

伊朗要求美国立即释放被扣押船只及人员

新京报
2026-04-21 11:35:38
归元破局:长城全栈自研引领“按需造车”工业革命

归元破局:长城全栈自研引领“按需造车”工业革命

澎湃新闻
2026-04-21 04:33:14
美称扣押的船只与制造导弹有关?外交部:中方反对恶意关联和炒作

美称扣押的船只与制造导弹有关?外交部:中方反对恶意关联和炒作

澎湃新闻
2026-04-21 15:36:26
破防了!中国10大被毁掉的天才:曾比肩世界巨星,却全败给了现实

破防了!中国10大被毁掉的天才:曾比肩世界巨星,却全败给了现实

圣西罗的太阳
2026-04-20 09:33:06
2026-04-21 17:35:01
北汇信息
北汇信息
专注汽车电子领域
612文章数 31关注度
往期回顾 全部

科技要闻

重磅官宣:库克卸任,特努斯接任苹果CEO

头条要闻

被性侵女高管起诉前司工伤待遇案将开庭:追薪250余万

头条要闻

被性侵女高管起诉前司工伤待遇案将开庭:追薪250余万

体育要闻

“被优化”8年后,国乒方博决定换一条路重新上场

娱乐要闻

周润发时隔16年再卖楼,变现数亿资产

财经要闻

现实是最大的荒诞:千亿平台的冲突始末

汽车要闻

把天门山搬进厂?开仰望U8冲上45度坡的那刻 我腿软了

态度原创

游戏
艺术
教育
健康
公开课

曝微软将授权第三方做次世代主机!华硕Xbox要来了?

艺术要闻

任伯年写竹,真带劲

教育要闻

a²+b²=1168,求a+b,为何全班同学全军覆没?

干细胞抗衰4大误区,90%的人都中招

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版