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

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

3天内不再提示

代码的黑盒测试(上)--目标文件测试Object File Testing

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

扫码添加小助手

加入工程师交流群

听说,VectorCAST又出新功能了?不需要源码就可以测试?

瞎说,这功能我们一直就有,只不过哥不在江湖,江湖不多闻而已。

目标文件

(一)目标文件是什么

我们都知道,一个C源程序manager.c(是一个点餐demo程序,且本文对manager.c的相关操作都是在Windows平台实现的。)变成可执行程序manager.exe,一般经历四个过程,分别是预处理(Prepressing)、编译(Compilation)、汇编(Assembly)和链接(Linking),如下图所示:

pYYBAGLmMnCAX6NAAABuaBg1Fa8320.png

图1编译过程

目标文件是源代码在经过预处理、编译、汇编过程后输出的文件(源代码编译后但未进行链接的中间文件),其内容至少包含机器指令代码,数据以及链接时所须要的一些信息。

(二)目标文件的结构组成简介

目标文件中的内容信息一般按照不同的属性,以“节”(Section)的形式存储,也叫“段”(Segment),它们都表示一个一定长度的区域。

目标文件的结构组成主要包含:代码段 .text(存放机器指令代码)、数据段 .data(存放已初始化的全局变量和局部静态变量的数据)、.bss段(存放未初始化的全局变量和局部静态变量)。

我们通常使用binutils的工具objdump来查看目标文件内部的结构,以manager.o为例,如下图2所示。

poYBAGLmMoSALWPKAAMBksiSRDc100.png

图2 manager.o

二、使用VectorCAST/C++进行目标文件测试

VectorCAST/C++ 是Vector公司旗下一款集成的软件测试解决方案,可显著减少验证安全关键型和任务关键型嵌入式系统所需的测试C/C++软件组件的时间、精力和成本。

VectorCAST/C++ 不仅支持白盒下的功能测试和结构覆盖测试,也支持黑盒下的软件功能测试——目标文件测试(Object File Testing)和库接口测试(Library Interface Testing)。

目标文件测试就是使用目标文件通过VectorCAST工具生成测试套件而进行的功能测试;库接口测试方法是指VectorCAST将解析C/C++头文件中存在的函数和方法的定义,并基于这些创建测试环境,允许在没有可用源代码的情况下使用现有库或DLL创建测试。本次主要讲解VectorCAST/C++的目标文件测试方案,以manager.c源文件为操作对象,使用GCC编译器进行编译。

(一)测试输入物

1、目标文件

a.单个.obj/.o文件生成方式

前提条件:该.c文件“涉及”到的.h文件都能正确引用

gcc -c source.c(默认在原路径下生成一个同名的.o文件),如下图3所示。

pYYBAGLmMrmAVLDkAAHa6IA917w362.png

图3单个文件manager.o的生成

b.多个.obj/.o文件生成方式

前提条件:每个.c文件“涉及”到的.h文件都能正确引用

gcc -c source1.c source2.c source3.cgcc -c *.c(默认在原路径下生成相应同名的.o文件),如下图4所示。

poYBAGLmMs-AISSiAAHc2QXxwmc803.png

图4多个目标文件的生成

对于其他编译链,可以通过IDE(集成开发环境)生成项目的目标文件。如CodeWarrior,其一般可以通过其IDE生成相应的目标文件,如下图5所示。

pYYBAGLmMtqAAl_uAACULBsGP5g441.png

图5 CodeWarriors IDE生成相应的目标文件

2、修改后的源文件

是指删除了函数具体实现的源码文件(仍包含完整的.h文件),如下图6所示。

pYYBAGLmMwKAYHfiAAEGIARHjmw831.png

图6删去函数具体实现后的“manager.c”

3、需求文档

由于目标文件测试属于一种软件黑盒测试,所以对于单元测试级别的需求文档的细致程度可能要达到详细设计文档的程度,甚至更细致。

如上int Add_Included_Dessert(struct order_type* Order)函数,对于目标文件测试的单元需求可能这样描述:

pYYBAGLmMxiATFOtAAB04AImf3g723.png

表 1 Add_Included_Dessert(struct order_type* Order)的单元需求说明示例

即需要明确给出了Add_Included_Dessert(struct order_type* Order)函数的输入与输出值。

(二)VectorCAST/C++ 进行目标文件测试

1、单元测试操作步骤:

a.启动工具,设置工作路径,创建新工程并命名,选择正确的编译链(以GCC编译链为例);

b.进入创建测试环境(8大步)。

Step1:选择编译器,已在前面配置好了,直接跳过。

Step2:命名测试环境(默认字母大写,空格为下划线)。

Step3:测试方式。选择目标文件测试方式,然后选择待测目标文件manager.o。如下图7所示。

poYBAGLmMzSASxgaAAK6L0TWbOI870.png

图7选择待测目标文件“manager.o”

Step4:构建选项。要选择Code Coverage为None,VectorCAST才会使用之前编译的目标文件。

Step5:本地源代码文件。使用双加号添加包含修改后的源文件所在路径。

Step6:选择UUTs和桩。

Step7:User Code可选选项。本实例不需要,直接跳过。

Step8:测试环境配置概览。成功构建测试环境,如下图8所示。

poYBAGLmM0CAJB3vAADGp0bkhvE147.png

图8成功构建测试环境

c.构建测试环境后,我们就可以根据测试需求(功能需求,表1中序号1),创建和执行测试用例,如下图9所示。

poYBAGLmM06ARsfXAAE5MwNVP-8528.png

图9创建、执行测试用例

2、集成测试

集成测试工程构建内容与单元测试很类似,仅在构建测试环境的第3步和第6步不同。集成测试一般会在第3步将相应的多个.o文件同时加进来;第6步将相应的多个修改后的源文件同时加进来。

然后使用组合测试功能,将单体测试用例按照一定的逻辑功能进行排列,执行组合测试用例。

三、总结

目标文件测试过程中,使用修改后的源代码进行测试,可以将一些核心算法的代码实现部分进行删除,能够较大程度的避免直接使用源代码,更好的保护客户代码。

当然进行目标文件测试的要求比较高。需要完善的测试需求文档,对于单元测试来说,一般需要软件详细设计文档以及单元需求文档等,对于软件集成测试来说,一般需要软件架构设计规范文档及集成需求文档等。

此外目标文件测试,只能进行功能测试,没有结构覆盖度。为了得到覆盖度信息,我们还是要转向白盒测试。将之前的测试用例导入到白盒测试工程中的测试环境中去执行,获取覆盖度。

北汇信息专注于汽车电子测试,提供专业的汽车电子测试系统搭建及测试咨询服务;提供完整的汽车新能源测试服务;提供完整的软件生命周期的软件测试服务。

VectorCAST/C++作为Vector公司的代码动态测试工具,支持自动生成测试用例,提供完善的覆盖度信息视图,还可以与Git/SVN/Jekins等工具集成等等。

本次为大家简单介绍了VectorCAST/C++在软件测试方面的软件黑盒测试。后续将会为大家带来更多基于VectorCAST/C++的动态测试相关内容。同时也欢迎垂询和沟通,共同探讨测试相关问题。

文中图片来源于VectorCAST/C++工具截图。

参考文献:

[1]《程序员的自我修养—链接、装载与库》

[2] VectorCAST/C++工具帮助文档

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

    关注

    9

    文章

    6412

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    具有 50MB 文件的 imx-ele-apps/aes_usage 测试失败,为什么?

    作为 i.MX93 的 HSM 测试,aes_usage测试运行时,对一个 50MB 的文件进行加密/解密。 但是,在目标上运行解密会导致
    发表于 03-09 06:43

    单元测试工具TESSY:如何科学估算与跟踪测试工作量?

    在嵌入式软件开发中,每个测试对象(Test Object)因复杂度不同,所需工时也大相径庭。如何精准预估并实时监控进度?本系列教程由TESSY授权分销商——龙智翻译制作,带您深入了解 TESSY 强大的测试时间估算与跟踪功能。
    的头像 发表于 02-27 15:34 204次阅读
    单元<b class='flag-5'>测试</b>工具TESSY:如何科学估算与跟踪<b class='flag-5'>测试</b>工作量?

    半导体通用测试文件标准STDF介绍

    对于半导体测试特别是集成了复杂IP的芯片,要完整记录各项DC,AC,功能性测试等等生成的庞大数据,还要和芯片的生产批次,生成时间,测试机台等信息组合起来,那不能无序简单地堆砌成一个文件
    的头像 发表于 02-06 10:02 472次阅读
    半导体通用<b class='flag-5'>测试</b><b class='flag-5'>文件</b>标准STDF介绍

    Include File解锁Vector Logger Suite高阶功能

    Include File(inc文件)是Vector Logger Suite(VLS)中使用LTL代码片段的关键机制。通过Include File,用户可以在LTL
    的头像 发表于 12-30 09:44 568次阅读
    Include <b class='flag-5'>File</b>解锁Vector Logger Suite高阶功能

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

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

    C语言单元测试在嵌入式软件开发中的作用及专业工具的应用

    平台和操作系统运行,无需进行大量的修改 二、C语言单元测试在嵌入式开发中的关键作用 嵌入式系统对实时性和可靠性要求极高,单元测试是确保代码质量的关键手段。单元
    发表于 12-18 11:46

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

    。提升测试效率与覆盖率专业工具通过以下方式优化测试过程: ‌静态代码分析‌:通过MISRA-C等规则检查防止缓冲区溢出等隐患 ‌动态符号执行‌:自动探索代码路径生成
    发表于 09-28 17:42

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

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

    芯片硬件测试用例

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

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

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

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

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

    代码自动化测试平台ATECLOUD功能详解

    ATECLOUD 是由纳米软件开发的高度可扩展零代码测试平台,专为电子仪器自动化测试企业设计,提供高性价比数字化转型方案。 一、ATECLOUD与传统测试系统的核心差异 ATECLOU
    的头像 发表于 08-20 17:32 1577次阅读
    零<b class='flag-5'>代码</b>自动化<b class='flag-5'>测试</b>平台ATECLOUD功能详解

    什么是ce lvd测试报告?

    CELVD测试报告,是指依据欧盟《低电压指令》2014/35/EU(LowVoltageDirective,简称LVD)相关安全标准,对电子电气产品进行安全测试后出具的合规性测试文件
    的头像 发表于 07-16 16:57 2604次阅读
    什么是ce lvd<b class='flag-5'>测试</b>报告?

    HarmonyOS AI辅助编程工具(CodeGenie)代码测试

    放置于方法名称或框选完整的待测试方法代码块,右键选择CodeGenie > Generate UT,开始生成单元测试用例。 说明 最多支持解读20000字符以内的
    发表于 07-14 17:33

    “System Level EOS Testing Method”可以翻译为: “系统级电性过应力测试方法”

    “System Level EOS Testing Method”可以翻译为: “系统级电性过应力测试方法”
    的头像 发表于 05-05 15:55 1101次阅读
    “System Level EOS <b class='flag-5'>Testing</b> Method”可以翻译为: “系统级电性过应力<b class='flag-5'>测试</b>方法”