LDRA Testbed(TBrun)软件集成测试(部件测试)_操作指南

系列文章目录

LDRA Testbed软件静态分析_操作指南
LDRA Testbed软件静态分析_自动提取静态分析数据生成文档
LDRA Testbed软件静态分析_Jenkins持续集成(自动静态分析并用邮件自动发送分析结果)
LDRA Testbed软件静态分析_软件质量度量
LDRA Testbed软件静态分析_常见问题及处理
LDRA Testbed(TBrun)软件单元测试_操作指南、实例讲解
LDRA Testbed(TBrun)软件单元测试_常见问题及处理
LDRA Testbed(TBrun)软件集成测试_操作指南、实例讲解
LDRA Testbed(TBrun)软件集成测试_常见问题及处理
LDRA Testbed(TBrun)软件单元/集成测试_自动提取测试用例数据生成文档
粉丝问题解答系列文章… …


文章目录

  • 系列文章目录
  • 前言
  • 一、TBrun简介
  • 二、TBrun界面简介
  • 三、集成测试配置
    • 1、新建测试工程【*】
    • 2、配置编译器
  • 四、编写测试用例
    • 1、创建测试序列【*】
    • 2、创建测试用例【*】
    • 3、编写用例描述
    • 4、设置桩函数
    • 5、插入初始化代码
    • 6、设置输入输出【*】
  • 五、执行测试用例
  • 六、覆盖率分析【*】
  • 七、导出测试用例
  • 总结


前言

通过前面的几篇文章,使用Testbed(TBrun)进行软件静态分析和单元测试的内容已经基本讲解完毕。从这篇文章开始,将继续讲解如何使用TBrun进行软件集成测试(军工行业中也称之为“部件测试”)。
由于使用TBrun进行软件集成测试的流程与之前进行单元测试的流程十分类似,本文是直接在前文《LDRA Testbed(TBrun)软件单元测试_操作指南》基础上进行改写的。如果各位对单元测试之前的流程已经非常熟悉,可以直接跳到我标注了【*】号的章节查看软件集成测试的不同之处;如果是直接查看的软件集成测试,就可以挨着阅读。


一、TBrun简介

TBrun是LDRA公司出品的软件单元/集成测试工具,其能够自动生成测试驱动、自动执行测试用例、自动统计测试覆盖率,测试人员只需要专注于测试用例设计,帮助开发人员和测试人员更高效地完成测试任务。

二、TBrun界面简介

TBrun软件界面如下:
在这里插入图片描述
①是日志信息窗口,比如生成测试驱动、编译测试程序、执行测试用例等过程,都会在窗口输出相应的日志信息。
②是测试用例窗口,显示已经设计的所有用例。
③是文件视图窗口,显示被测源码文件下的变量、类型、函数以及测试覆盖率等。
④是所有调用的函数视图,显示当前被测源码文件中的所有函数。
⑤是测试用例输入输出窗口,每一条测试用例都可以在这个窗口中设计相应的输入输出列表。

三、集成测试配置

1、新建测试工程【*】

在TBrun的上方菜单栏点击Source -> Single File(单个文件)或Multiple Files(多个文件),在弹出的窗口中选择单个被测源码文件或多个被测源码文件:
在这里插入图片描述
这里需要注意的是,单元测试一般来说选择Single File(单个文件)模式创建测试工程即可,因为被测函数在做单元测试时,就算有调用其他函数,一般都会将其打桩,因此可以不用加入被调函数的源码文件。但是在做集成测试时,我们主要测的就是各个函数的调用时序、接口正确性等,因此我们需要通过Multiple Files(多个文件)模式选择相关函数的源码文件。(当然也有例外,比如模块化比较好的代码,某一个.c文件中,除了功能的主调函数,其他函数均在本文件中定义,此时通过Single File模式选择这一个.c文件,就可以完成这一个独立功能的内部集成测试。)
如果被测的源码工程本身就不大,可以一次性导入所有的源码文件,调通测试环境后就可以很方便的进行整个工程的集成测试。如果被测的源码工程比较庞大,有时候要把整个测试工程调通会比较费时间,各位也可以根据实际情况,逐级做集成测试,识别相关的函数,只选择添加相关的源码文件即可。
以Multiple Files(多个文件)为例,这个过程和在Testbed(TBvision)中创建多个文件的静态分析工程是类似的。首先在TBrun的上方菜单栏点击Source -> Multiple Files(多个文件),然后在弹出的Select / Create / Delete Set窗口中,先给测试集取一个名字,然后点击Create,然后在弹出的小窗口中选择测试集模式为System:
在这里插入图片描述
之后会弹出一个文件添加窗口,按照如下步骤选择需要的源码文件进行添加:
在这里插入图片描述
导入被测源码文件后,TBrun会自动进行静态分析,分析完成后,会显示出file view和calls view窗口显示相关信息:
在这里插入图片描述

2、配置编译器

点击TBrun中上方菜单栏的Configure -> LDRA Testbed Configuration Options -> Switch Compiler进行编译器配置:
在这里插入图片描述
在弹出的Configure Compiler窗口中确认Default Compiler和Source Compiler,以选择IAR编译器为例,切换编译器后点击OK即可:
在这里插入图片描述
需要注意的是:
1、Default Compiler和Source Compiler都应该选择目标编译器;
2、如果在列表中没有找到对应编译器,可以通过Add Compiler添加需要的编译器(需要先配置编译环境)。

四、编写测试用例

1、创建测试序列【*】

在TBurn中是使用测试序列来管理测试用例和测试数据的,因此在新建测试用例前需要创建序列(为了方便管理,通常一个被测函数创建一个测试序列)。
在TBurn菜单中选择Sequence->New:
在这里插入图片描述
输入序列名称(为了方便管理,序列名以函数名命名),勾上Code Coverage选项(这样在运行测试用例后才会对代码覆盖率进行统计):
在这里插入图片描述
与单元测试不同,在进行软件集成测试时,需要在Test Scenarios选项卡选择Allow Compiler to compile all code as normal或Create tests for a subset of code in the source file选项。区别在于前者默认所有函数均不打桩,全部调用实际定义的函数,而后者允许对部分函数进行打桩。按理说在进行集成测试时,原则上是能不打桩都不打桩,所以大都选择前者。但也有例外,比如有些与硬件交互的函数在仿真环境下无法运行,或者有些被封装起来的函数没有源码,这种时候就可以对其进行部分打桩隔离,选择后者模式。
在这里插入图片描述
如果选择Allow Compiler to compile all code as normal模式,创建完成测试序列后可以看到Calls View视图中的相关调用函数默认是都没有打桩的。如下所示:
在这里插入图片描述
如果选择Create tests for a subset of code in the source file模式,可以进一步点击“Procedures to be Included”,选择将哪些函数纳入分析。如下所示:
在这里插入图片描述
也可以在创建好测试序列后,在File View视图中,选择对应函数,右键调整设置是否将其纳入分析:
在这里插入图片描述
Create tests for a subset of code in the source file模式比较灵活。比如这里我们将test_func作为被测函数,将其纳入分析后,Calls View视图中就会显示其调用的其他函数。列表中前面显示“×”图标的函数表示未识别到其定义,这时可以选择对其进行打桩,或者将原定义的函数纳入分析,就可以真实的调用原定义函数。各位可以根据实际情况进行选择:
在这里插入图片描述
在这里插入图片描述

2、创建测试用例【*】

在TBurn界面的右上角文件视图窗口中,选中被测的主调接口函数,鼠标右键->Create New Test Case创建测试用例:
在这里插入图片描述
弹出测试用例创建向导窗口,此时窗口会显示函数的相关信息,如果被测函数涉及到指针,还会引导你设置指针指向的实体,按照引导步骤操作即可。与创建单元测试用例不同,创建集成测试用例时,还可以选择生成测试用例的模式:
在这里插入图片描述
上述模式的解释如下,各位可以根据测试场景灵活进行选择:
Standard - Single test case.
常规的单个测试用例,和单元测试模式下创建的用例类似。
Repetitions - Test case executed multiple times. Last test case only reported on.
多次执行的测试用例,仅报告最后一次执行的值。常用于对函数多次调用,以便控制局部静态局部变量的变化。
Iterations - Test case executed multiple times. Each execuition yields a new test case.
多次执行的测试用例。每次执行都会产生一个新的测试用例,重复执行。
Ranged - As Iterations except inputs may be stimulated by applying a range of values.
可以对输入、输出变量的值进行一个范围的取值,比如最大值、最小值、中间值,或者设置起始值、终止值、步进值进行遍历。

以选择Standard模式为例,创建好测试用例后,会在左下角窗口中生成相应的测试用例条目,在右下角会显示该测试用例的默认输入输出列表,如下所示:
在这里插入图片描述

3、编写用例描述

用例描述包括序列级别的描述和用例级别的描述。
1、序列级别的描述
在TBurn菜单中点击Sequence->Sequence Documentation,在弹出的下图窗口中进行描述即可:
在这里插入图片描述
2、用例级别的描述
选中相应的测试用例,鼠标右键->Documentation & Requirements->Documentation,在弹出的下图中进行描述即可:
在这里插入图片描述
在这里插入图片描述
在测试用例描述中,建议可以填写被测软件版本、设计需求追踪、测试类型、测试方法、测试用例概述等,用于测试用例的管理、维护,以及生成测试文档。

4、设置桩函数

桩函数是被测试函数调用的子函数的一个替代函数,使得测试时不用关注原调用函数的具体功能,可以专注于被测函数本身的实现逻辑。对于桩函数有很多可选操作,涉及到桩函数的形参输入检查,形参输出赋值,桩函数返回值设置,桩函数修改全局变量(C++中还包括改变成员变量)、插入桩函数代码等。
在做软件集成测试时,原则上是尽量都不打桩。但是遇到前面说的一些特殊情况时(比如有些与硬件交互的函数在仿真环境下无法运行,或者有些被封装起来的函数没有源码),这种时候就可以对其进行部分打桩隔离。需要按照前述步骤在创建测试序列时选择Create tests for a subset of code in the source file模式,然后对这类函数的打桩操作就和单元测试一样了。
函数打桩有两种方式:
1、选中测试用例,鼠标右键->Stub Management,这样的桩函数设置是跟选中的测试用例绑定的:
在这里插入图片描述
2、在函数调用列表中,选中要打桩的函数,鼠标右键->Managed Stub Properties可以进行全局桩模板设置:
在这里插入图片描述
选择template for new test cases,可以设置一个全局的测试桩模板,这样在新建的测试用例中会默认带有这个桩模板(测试用例中如果未更改,则会作为每一个测试用例的默认桩设置;测试用例中如果更改了这个桩,其会被测试用例中的桩设置覆盖):
在这里插入图片描述
最常用的桩函数设置有:对无返回值的函数打空桩(仅打桩,什么都不设置)、对有返回值的函数设置返回值(set return value on exit)、插入桩函数测试代码,实现对某些变量的赋值(set code segment)。

5、插入初始化代码

在被测函数中,有时会用到结构体指针或数组等变量,此时如果通过创建IO Variable的方式进行初始化,会导致要创建的IO Variables非常之多。因此,可以通过插入初始化代码的方式完成数组等的初始化。
1、序列级的初始化(对所有用例有效)
在TBurn菜单中点击Sequence->Code Inserts->Sequence Initialisation Code:
在这里插入图片描述
2、用例级的初始化
选中相应的测试用例,鼠标右键Code Inserts->Initialisation Code:
在这里插入图片描述
在这里插入图片描述

6、设置输入输出【*】

如果创建测试用例时选择的是Standard、Repetitions、Iterations等模式,那么设置输入输出和单元测试模式下是一样的,即在Variables I/O view窗口的Value列的输入框中填入一个固定值即可。
在Variables I/O view窗口里的变量,在最左边有输入/输出的标识,输入以“I”标识,输出以“O”标识(此处的输出是指预期的输出值)。这些变量列表的Name、Type、Use等都可以根据自己的测试需要进行修改。对于标识为“I”的输入变量,一定要在输入框中填写一个确定的值,否则用例无法执行。
在这里插入图片描述
如果创建测试用例时选择的是Ranged模式,那么双击Variables I/O view窗口的Value列的输入框,会弹出一个Ranged Test Case Variable窗口,可选择单个固定值、区间遍历值、最大/小值和中间值等三种方式进行设置:
在这里插入图片描述
根据实际的测试需求,如果发现默认的测试用例I/O窗口中缺少相关输入输出变量,可以在Test Case View窗口选择测试用例并右键添加相关的输入输出变量,如下图,自己创建或导入即可:
在这里插入图片描述
在这里插入图片描述
能添加到I/O窗口的变量包括:
1、形参:包括输入赋值,输出检查;
2、全局变量:包括代码里的全局变量和用户自定义的全局变量,全局变量的处理包括输入赋值,输出检查;
3、C++里的成员变量:包括输入赋值,输出检查;
4、函数返回值。
注意:不能添加被测函数的局部变量,局部变量的作用域仅限于被测函数内,不能被测试用例直接访问。

结合实际的测试需求,填写测试用例的测试输入(以“I”标识的输入列表)、期望输出(以“O”标识的输出列表),如下图所示:
在这里插入图片描述

五、执行测试用例

测试用例的执行包括2种方式:
1、分步骤执行(生成、构建、执行驱动、输出测试结果及覆盖率情况):在TBurn菜单中的“Run Driver”中,或者在Test Case视图左下角按钮中,依次选择 Generate Driver、Build Driver、Execute Driver、Split Driver Output、Process Driver Output;
2、一步执行:在TBurn菜单中的“Run Driver”中,或者在Test Case视图左下角按钮中,选择Run Test Case Driver;
在这里插入图片描述
执行结果如下所示:
在这里插入图片描述
从上图可以看出测试用例的结果是PASS/FAIL。同时可以通过弹框右下角的Report查看相应的用例报告。
第1条用例PASS后,可以直接copy第1条用例生成第2条用例,然后再修改用例2的输入输出即可,直到有足够的测试用例来完成测试。

六、覆盖率分析【*】

测试用例执行完成后,相应的代码覆盖率会实时更新,在file view窗口可以看到整个源码文件的覆盖率,以及当前被测函数的覆盖率。
默认会显示语句覆盖、分支覆盖、MCDC覆盖等。当进行软件集成测试时,我们还需要将函数调用的覆盖显示出来,操作如下。
在上方菜单栏中点击View->Dynamic Coverage Metrics Display Options:
在这里插入图片描述
在弹出的配置窗口中勾选Procedure / Function Call Coverage Profile:
在这里插入图片描述
显示的覆盖率效果如下:
在这里插入图片描述
在显示的覆盖率上右键选择“View Combined Coverage Executed/Not Executed Coverage Callgraph”,可以显示详细的覆盖情况:
在这里插入图片描述
左边显示各个函数的调用关系及调用覆盖情况(已覆盖的函数调用会显示红色,未覆盖的函数调用会显示蓝色),右边显示各个函数内部的语句、分支、MCDC覆盖情况,如下图所示:
在这里插入图片描述

七、导出测试用例

集成测试用例设计并执行完成后(功能全部验证通过,并且覆盖率也达到要求),此时该函数的集成测试结束。为了方便后续回归测试,需要将测试用例导出。具体操作如下:
在TBurn的菜单,选中Sequence->Export Test Case(TCF),通过文件浏览窗口选择保存路径,保存对应的TCF文件即可:
在这里插入图片描述
在这里插入图片描述


总结

以上就是如何使用Testbed(TBrun)进行软件集成测试(部件测试)的过程,上述步骤仅为流程性操作讲解,下一篇文章我将以一个实例进行进一步介绍。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1548007.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

新品 | Teledyne FLIR IIS 推出Forge 1GigE SWIR 短波红外工业相机系列

近日,51camera的合作伙伴Teledyne FLIR IIS推出了新品Forge 1GigE SWIR 130万像素的红外相机。 Forge 1GigE SWIR系列的首款相机配备宽频带、高灵敏度的Sony SenSWIR™️ 130万像素IMX990 InGaAs传感器。这款先进的传感器采用5um像素捕捉可见光和SWIR光谱&#xff…

高输出型CCS圆顶光源--HPD2系列

光源在视觉系统中比较重要的一部分,可以清晰成像。选择什么样的光源,直接影响到成像效果,今天我们来看看CCS圆顶光源--HPD系列,有以下特点: HPD2系列 适用于广泛行业的用途 光源亮度高,即使改变与被测物的…

一文读懂常见的几种 LangChain 替代品,看到就是赚到!!

前言 在 LLM (大规模语言模型)应用开发领域,开源框架扮演着至关重要的角色,为广大开发者提供了强大的工具支持。作为这一领域的领军者,LangChain 凭借其创新设计和全面功能赢得了广泛赞誉。但与此同时,一些…

安装软件及apt install -f修复均报错

UOS统信安装软件过程及修复依赖过程,可排查deepin-installer和dpkg问题 文章目录 一、问题现象二、问题原因三、解决方案 一、问题现象 执行apt install -f 都会出现该报错,如图所示: 二、问题原因 造成这种情况的原因在于/var/lib/dpkg/…

2024年【上海市安全员B证】最新解析及上海市安全员B证新版试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年上海市安全员B证最新解析为正在备考上海市安全员B证操作证的学员准备的理论考试专题,每个月更新的上海市安全员B证新版试题祝您顺利通过上海市安全员B证考试。 1、【多选题】《上海市建筑市场信用信…

Python无监督生成模型:深入探索与实现

目录 引言 一、无监督生成模型概述 1.1 生成模型的定义 1.2 无监督学习的特点 二、常见的无监督生成模型 2.1 自编码器(Autoencoders) 2.2 变分自编码器(Variational Autoencoders, VAEs) 2.3 生成对抗网络(Generative Adversarial Networks, GANs) 三、Python实…

三维扫描 | 解锁低成本、高效率的工作秘籍

以下文章来源于天宝Trimble Field Systems ,作者小甜宝 项目背景 Layton测量公司刚刚完成了该公司迄今为止规模最大、最复杂的项目——扫描盐湖城市中心一处横跨两个街区的房产。在这个项目中,客户需要的是美国土地产权协会(ALTA)的测量报告&#xff0…

录音文件怎么转mp3格式?超详细的6个转换方法!

录音文件是我们记录生活、保存灵感、甚至进行创作的重要工具。然而,不同设备和软件产生的录音文件往往有着不同的格式,这给我们在不同平台间分享和使用这些录音文件带来了一定的困扰。尤其是当面对兼容性较强的MP3格式时,如何将自己手中的录音…

探索Python新境界:funboost库揭秘

文章目录 探索Python新境界:funboost库揭秘背景:为什么选择funboost?funboost是什么?如何安装funboost?简单的库函数使用方法场景应用常见Bug及解决方案总结 探索Python新境界:funboost库揭秘 背景&#x…

大模型部署实战 之 部署 Llama3.1-部署与使用

大模型(LLM)狭义上指基于深度学习算法进行训练的自然语言处理(NLP)模型,主要应用于自然语言理解和生成等领域,广义上还包括机器视觉(CV)大模型、多模态大模型和科学计算大模型等。 …

【智能算法应用】樽海鞘群算法求解二维路径规划问题

摘要 路径规划是机器人导航和自主无人机领域中的关键问题。本文提出了一种基于智能优化算法——樽海鞘群算法(Salp Swarm Algorithm, SSA)的二维路径规划方法。该算法模拟樽海鞘的链式运动行为,旨在寻找障碍物环境中的最优路径。通过仿真实验…

java项目之健身房管理系统源码(springboot)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的健身房管理系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 健身房管理系统的主要使用…

2024年【茶艺师(高级)】考试资料及茶艺师(高级)考试总结

题库来源:安全生产模拟考试一点通公众号小程序 茶艺师(高级)考试资料考前必练!安全生产模拟考试一点通每个月更新茶艺师(高级)考试总结题目及答案!多做几遍,其实通过茶艺师&#xf…

带摄像头的挖耳勺好用吗?5款好用的可视挖耳勺!

生活水平的提高带动人们越来越关注自己的个人健康护理,耳道清洁也是其中的一项。市面上出现一种带摄像头的挖耳勺,很多小伙伴不知道它的功能是什么,这一篇小编就跟大家说清楚可视挖耳勺到底好不好用!并给大家推荐5款超好用的可视挖…

【程序员必读】近年来编程提效工具大合集。小白必看!

在快节奏的工作环境中,开发者们常常面临着时间紧迫、任务繁重的挑战。选择合适的编程工具,能够显著提升工作效率,帮助你在代码编写、调试和团队协作中事半功倍。那么,究竟哪些编程工具能让你的工作效率翻倍呢?&#x1…

liunx系统虚拟机

https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/ 下载地址 DVD版本 安装vm软件12通过vm软件来创建一个虚拟机空间通过vm软件在创建好的虚拟机空间上,安装我们的centos操作系统使用centos你得需要将鼠标点击进入界面中,但是鼠标会消失&#xf…

HT5169内置BOOST升压的11W I2S输入D类音频功放

1 特性 ● 电源供电 升压输入VBAT:2.5V-5.5V; 升压输出PVDD可调,最高7.5V DVDD/AVDD分辨率:3.3V ● 音频性能 9.0W (VBAT3.7V, PVDD 7.5V, RL3Ω.THDN10%) 11.0W(VBAT3.7V, PVDD 7.5V, RL2Ω.THDN10% 5.5W (VBAT3.7V, PVDD 6.5V, RL4Ω.THDN10%) ● 灵活的…

企业代码补全增强使用实践

通义灵码提供了企业代码补全增强的能力,在开发者使用通义灵码 IDE 插件的行间代码生成时,可以结合企业上传的代码库作为上下文进行行间代码补全,使代码补全更加贴合企业代码规范、业务特点。本文将分享如何构建高质量的企业代码库&#xff0c…

DeepSpeed Chat: 一键式RLHF训练,让你的类ChatGPT千亿大模型提速省钱15倍

DeepSpeed Chat: 一键式RLHF训练,让你的类ChatGPT千亿大模型提速省钱15倍 1. 概述 近日来,ChatGPT及类似模型引发了人工智能(AI)领域的一场风潮。 这场风潮对数字世界产生了革命性影响。ChatGPT类模型具有惊人的泛用性&#xff0c…

雷达系统中杂波信号的建模与仿真

雷达系统中杂波信号的建模与仿真 2 杂波建模与模拟方法 2.1 杂波建模 杂波可以说是雷达在所处环境中接收到的不感兴趣的回波[4]。就像目标回波一样,杂波也是极为复杂的。为了有效地克服杂波对信号检测的影响,需要知道杂波的幅度特性以及频谱特性。除独…