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

news2024/12/25 13:37:51

系列文章目录

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.coloradmin.cn/o/2170255.html

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

相关文章

工厂模式和抽象工厂模式的实验报告

1. 实验结果: 记录并附上不同模型对象(例如:士兵、机器人、骑士)的展示效果截图。 2. 性能分析: 记录并比较抽象工厂模式与直接实例化的性能测试结果,分析它们在不同数量级对象创建时的开销与效益。 2.1…

系统架构设计师 - 案例特训专题 - 数据库设计篇

案例特训专题 - 数据库设计篇 数据库设计篇规范化与反规范化 ★★★规范化 - 范式反规范化 数据库索引数据库视图数据库分区分表分库分区分区的常见方式 分表分库 分布式数据库 ★★★NoSQL ★★★其他数据库扩展知识 ★★★数据库性能优化集中式数据库优化分布式数据库优化 大…

Thingsboard规则链:Related Device Attributes节点详解

引言 在物联网(IoT)领域,Thingsboard作为一款强大的物联网平台,其规则链功能为企业提供了高度定制化的数据处理和自动化控制方案。其中,Related Device Attributes节点是一个特别实用的组件,它能够访问和操…

sql server每天定时执行sql语句

sql server每天定时执行sql语句 1、打开SQL Server Management Studio 2、鼠标右击【SQL Server 代理】,选择【启动(S)】,如已启动,可以省略此步骤; 3、右键,新建-》作业,在作业上-》新建作业&#xff…

超全攻略|手把手带你0经验转行产品经理

▌想入行,你需要先知道怎么才能走得更顺利 现在,如果有人问我,说重新回答大学毕业,刚要入行产品经理的时候,知道哪些事情,能让自己在后面的产品经理生涯中走的更顺利。 ❓是知道面试的套路,能…

PatrOwl:一款开源可扩展的安全协调运营平台

关于PatrOwl PatrOwl是一款开源可扩展的安全协调运营平台,广大研究人员可以使用该工具完成组织内部的安全协调运营。 该工具是一种可扩展、免费且开源的解决方案,用于协调安全操作。其中的PatrowlManager是前端应用程序,用于管理资产、实时审…

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

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

小程序开发平台源码系统 各行各业适用的小程序开的平台 带完整的安装代码包以及搭建部署教程

系统概述 本系统采用模块化设计,包含前端展示层、后端逻辑处理层、数据库存储层以及管理后台等多个核心组件。前端展示层负责小程序的界面设计与交互体验;后端逻辑处理层则负责数据处理、业务逻辑实现及与第三方服务的对接;数据库存储层用于…

如火似茶的AI Bots到底有什么现实意义呢?

你好,我是三桥君 自AIGC潮流兴起以来,基于自注意力机制的大模型成为资本市场疯狂炒作的对象。然而,经过一年多的狂热之后,市场逐渐回归理性。这时候会有人担心,大模型是否会像元宇宙、Web 3.0,甚至比特币那…

低空经济腾飞,无人机飞手人才培养先行

低空经济的腾飞为无人机飞手人才的培养提出了迫切需求,并且这一领域的发展已经引起了广泛的关注。以下是对“低空经济腾飞,无人机飞手人才培养先行”的详细分析: 一、低空经济的腾飞背景 低空经济作为新兴的经济形态,正以前所未…

如何搭建适合自己的数据中台?六步法

数据中台是企业数据价值实现的能力框架,包括数据集成、数据开发、数据管理、数据服务、数据资产运营等能力,是企业业务数据化的承载体,是企业业务通过数据视角的一种呈现,担负了企业数字化所需的核心综合数据能力。但由于数据中台…

fastzdp_redis第一次开发, 2024年9月26日, Python操作Redis零基础快速入门

提供完整录播课 安装 pip install fastzdp_redisPython连接Redis import redis# 建立链接 r redis.Redis(hostlocalhost, port6379, db0)# 设置key r.set(foo, bar)# 获取key的值 print(r.get(foo))RESP3 支持 简单的理解: 支持更丰富的数据类型 参考文档: https://blog.c…

Sublime Text4的下载安装以及汉化

sublime官网:https://www.sublimetext.com/ 按照指示一步步操作即可 汉化操作: 等一会就会弹出搜索框, 帮助菜单这里可以切换语言,

OpenAi以及Dify结合生成Ai模型

文章目录 1、Dify介绍2、使用 Dify3、部署Docker1.系统要求2.系统虚拟化3.下载docker 4、安装WSL1.检查是否已经安装 五、访问系统六、添加模型 1、Dify介绍 Dify官方地址。 Dify 是一个开源的 LLM 应用开发平台。其直观的界面结合了 AI 工作流、RAG 管道、Agent、模型管理、…

HOJ网站开启https访问 申请免费SSL证书 部署证书详细操作指南

https://console.cloud.tencent.com/ 腾讯云用户 登录控制台 右上角搜SSL 点击 SSL证书 进入链接 点申请 免费证书 有效期3个月 (以后每三个月申请一次证书 上传) 如果是腾讯云申请的域名 选 自动DNS验证 自动添加验证记录 如果是其他平台申请域…

利士策分享,快钱诱惑与稳健之道:探索财富积累的两种路径

利士策分享,快钱诱惑与稳健之道:探索财富积累的两种路径 在这个瞬息万变的时代,面对“赚快钱”的即时诱惑与“稳健的长远赚钱方式”的持久魅力,我们不禁要深思:在追求财富的道路上,哪一种方式更为明智&…

图神经学习笔记

图神经网络基础 图神经网络用于挖掘事物的“普遍联系”,理解原理、应用技术。本文汇总图神经网络相关介绍和基础模型。 图及特性 图是由顶点和边组成的,如下图左所示。一般图中的顶点表示实体对象(比如一个用户、一件商品、一辆车、一张银行…

Spring RestTemplate 升级 WebClient 导致 OutOfMemoryError

Spring Boot是 Java 企业应用程序的一个非常流行的框架。与内部或外部应用程序集成的一种常见方法是通过 HTTP REST 连接。我们正在从RestTemplate升级到基于 Java NIO 的WebClient,它可以通过允许在调用 REST 服务端点时进行并发来显著提高应用程序性能。WebClient…

Windows环境部署Oracle 11g

Windows环境部署Oracle 11g 1.安装包下载2. 解压安装包3. 数据库安装3.1 执行安装脚本3.2 电子邮件设置3.3 配置安装选项3.4 配置系统类3.5 选择数据库安装类型3.6 选择安装类型3.7 数据库配置3.8 确认安装信息3.9 设置口令 Oracle常用命令 2023年10月中旬就弄出大致的文章&…

【Linux学习】【Ubuntu入门】2-1-1 vim编辑器设置

设置TAB键为4字节及显示行号 VIM编辑器默认TAB键为8空格,改为4空格 输入命令sudo vi /etc/vim/vimrc回车后输入密码按键盘下键到最后,按下“a”进入编辑模式,输入set ts4设置为4空格下一行输入set nu显示行号