Testbed单元测试

article/2025/10/23 11:46:48

在testbed中C代码中的"单元"指的是一个函数,单元测试就是针对每个函数进行测试。

在使用testbed进行单元测试前需要先确认当前使用的编译器是否正确,且current compiler和default compiler是否是一致的。如果当前编译器不正确,可点击configure-switch compiler选择目标编译器,接着select即可。如果current compiler和default compiler不一致,可点击configure-switch compiler-reset current set进行设置。

 由testbed进入Tbrun有三种模式:integration unit/ module test、isolation unit/ module test、unit test only,每种模式对应不同的测试类型,C代码单元测试使用unit test only模式,cpp代码单元测试使用另外两种模式皆可。

点击Tbrun-unit test only,进入单元测试环境中。

TBrun中使用测试序列(sequence)容纳测试用例和测试数据,单元测试第一步就是创建测试用例,一个函数对应一个测试序列。点击TBrun菜单sequence-new创建测试序列,sequence name中输入序列名(函数名),选中code coverage选项卡中的code coverage选择框(自动计算覆盖率),选中Test Enviroment选项卡中除Test build选择框之外的其他选择框,其他选项卡保持默认值,点击continue确认。

创建测试用例,将鼠标放到某个函数上,右键弹出菜单点击create new test case,弹出测试用例创建向导窗口,此窗口显示函数的基本信息,可忽略,点击continue即可,此时,一个用例创建完成,用例管理窗口test case view中显示已创建的用例,在variable I/O view窗口中显示函数的输入输出参数。

设定测试用例的输入输出参数值,验证函数功能,函数的输入输出不只有函数的参数,还包含函数内部使用的全局变量。

桩函数——使用一个函数原型相同的空函数代替原函数。如果被测函数中调用了其他函数,则被调用函数会被打桩,如果被调用函数的返回值影响了被测函数的分支流程,或被调用函数的动作影响了被测函数的分支流程,则需要对桩进行设置,一般设置桩的返回值。点击M图标即可打开桩的属性设置其返回值。

设置好测试用例的IO和桩后,即可执行测试用例:1、一键式运行用例,在测试用例管理窗口的空白处右键,然后点击run test case driver;2、分步式执行用例,在测试用例管理窗口的空白处右键,然后依次点击generate driver 、build driver、execute driver、(split regression driver output)、process regression driver output,每一步执行成功会有√提示。

用例执行完后查看测试结果:函数功能验证、函数覆盖率。函数功能验证通过测试用例执行后的pass/fail结果来反映。函数覆盖率可通过动态覆盖率分析报告查看,点击Tbrun菜单result-dynamic coverage analysis report,此报告包含整个文件中所有函数的语句、分支、MC/DC覆盖率信息。此外,也可以通过图形化的方式查看函数覆盖率,在用例管理窗口选中用例右键,点击view flowgraph 打开覆盖率图形化显示窗口,绿色代表已覆盖,红色代表未覆盖。

测试完成后,点击Tbrun菜单sequense-exprot test case(TCF)保存测试用例,以便进行回归测试。

创建测试用例时常用的几个重要操作

1、测试用例中增加用户全局变量

单元测试的测试用例针对的是某个函数,编译时只编译代码中的一个函数,如果此函数中使用了全局变量,且恰好此变量用extern声明,即全局变量的声明(定义)不在此文件内部,就需要用户自己在Tbrun中添加此全局变量的声明(定义)。点击Tbrun菜单Global variables-create user global弹出全局变量定义窗口,在窗口中输入name和declaration type后点击finish。

2、测试用例创建向导中对全局数组的处理

创建测试用例时,测试用例创建向导提示遇到全局数组,有三种处理方式,用户自主选择:

add all elements to the test case 把数组的所有元素都添加到用例的IO窗口中

add multiple elements to the test case 把数组的部分元素都添加到用例的IO窗口中

remove all elements from the test case 把数组的所有元素从用例的IO窗口中删除

3、测试用例创建向导中对指针的处理

输入指针:如果被测函数的参数中包含输入指针(该指针所指向内容未被改变),测试用例向导会提示用户发现输入指针,一般选择第二种处理方式set input pointer to the address of entity,随后填入要指向的实体,也可以通过find选择已有的全局变量,或者new一个全局变量来指向。

输出指针:如果被测函数的参数中包含输出指针(此指针的所指向内容被改变),测试用例向导会提示用户发现输出指针,一般选择第二种处理方式mapping把此指针映射到某个实体,点击next出现映射窗口,在此窗口中选择map to global entity,然后assign分配映射到哪个全局变量,再点击next,随后一步步next或continue完成输出指针的处理。


http://chatgpt.dhexx.cn/article/icFbHnJ8.shtml

相关文章

中山大学2019年研究生复试机试题目(数据科学与计算机学院)

\qquad 本人在2019年9月参加了中山大学数据科学与计算机学院的推免面试,将模拟机试的题目记录如下。(正式机试时有原题出现) 小伙伴们复试加油哇!!!!! \qquad 详细内容已放进网盘&am…

关于我考研的这一年随记 —— 2022暨南大学电子信息计算机技术专业初试第三复试第一

出成绩了,初试第三,复试第一,成功圆梦。这一刻,我与17岁的自己和解。四年前的遗憾终于在今天得到了圆满。这一路走来,我迷茫、焦虑、惶恐与不安,似乎对自己的执念有一股莫名的冲动和那么一丝后怕。出成绩前…

中山大学软件工程专硕考研经验(双非跨考)

我是一名双非医科大学的本科生,因为不是很喜欢这个专业,并且对计算机感兴趣(喜欢写代码),最后就决定跨考计算机了。为什么选择中大呢?说来话长,很多人可能觉得我自不量力,双非跨考还…

2023中山大学计算机考研经验分享

最新数据见:中山大学考研经验分享历年真题_N诺计算机考研 中山大学数据科学与计算机学院官网 中山大学人工智能学院:http://sai.sysu.edu.cn/ 中山大学软件学院:http://sse.sysu.edu.cn/ 中山大学系统科学与工程学院 :http://sss…

【计算机考研院校推荐】广东地区汇总-22考研版

本篇文章由皮皮灰收集 数据来源21考研,仅供22考研参考 收集招生081200 计算机科学与技术、083500 软件工程、083900 网络空间安全、085400 电子信息-计算机方向的院校 更为详细的院校信息可在后台回复获取 广东地区院校目录 1.(10558)中山大学【985/211】 2…

2023 暨南大学计算机专硕(电子信息计算机技术方向)考研经验分享

文章目录 前言数学二专业课 848英语二政治复试杂七杂八考试地点与考试方式作息坐姿群848 资料 总结 前言 2023 年暨南大学计算机专硕考生(电子信息计算技术方向),初试成绩 392 分(复试线 344 分)。非常感谢前人的经验…

2020暨南大学计算机考研经验分享

前言: 主要介绍了今年暨南大学计算机考研的相关情况、848真题的部分回忆内容、自己的一些经验教训,还有复试名单拟录取名单等第一手资料,文章很长,可以只看自己目标专业的情况和真题部分。 一、个人情况介绍 报考的是暨南大学电子…

2022年中山大学计算机考研复试分数线预测

中山大学属于34所自划线院校之一,考研复试分数线分国家线和院校自划线,院校自划线公布时间一般早于国家线,报考中山大学计算机研究生的考生,复试分数线请以院校官网公布的分数线为准! 2021年中山大学计算机考研复试分数线公布日期…

中山大学计算机考研资料汇总

中山大学数据科学与计算机学院官网 中山大学(Sun Yat-sen University, SYSU),简称“中大”,由孙中山先生创办,有着一百多年办学传统,是中国南方科学研究、文化学术与人才培养的重镇。中山大学是教育部和广…

考研 | 2020中山大学软件工程/计算机考研初试经验分享

考完很久了,心血来潮写个经验贴,由于今年线上复试,与往年形式差异很大,而且题目难易程度差异很大,抽到什么题全看运气,所以不太想写复试的经验贴,如果有小伙伴想看的话可以留言~ 1 关于我 1.1 …

321分排第二?985中山大学计算机考研超级爆冷?

大家都知道,今年计算机考研超级火爆,前所未有的爆炸,400的高分到处都是: 神仙打架!今年计算机考研爆炸实况! 但是这么爆炸的计算机考研,有没有学校爆冷呢? 网上流传这么两张图&#…

2024中山大学计算机考研信息汇总

中山大学数据科学与计算机学院官网 中山大学(Sun Yat-sen University, SYSU),简称“中大”,由孙中山先生创办,有着一百多年办学传统,是中国南方科学研究、文化学术与人才培养的重镇。中山大学是教育部和广…

2021年一战上岸中山大学计算机专硕考研经验(详细时间规划)

2021年7月29日上午11点25分,从公布拟录取名单起,等了四个月,终于从快递员手中接到了我的录取通知书,悬了一年半的心也终于踏实了,不会有差错了,是的,中山大学,我来了! 之…

Spfa算法总结(C/C++)

文章目录 一: Spfa算法分析二: 代码分析 一: Spfa算法分析 1. 问题介绍:  2. 问题分析:  当我们遇到单源最短路边权为负值问题时这时候该如何处理呢?  其实我们现在就可以使用Floyd()算法了,我们可以从两个方面来理解这个算法…

第十八章 SPFA算法以及负环问题(利用dijkstra推导出该算法,超级详细!!)

第十八章 SPFA算法以及负环问题 一、dijkstra算法的弊端二、dijkstra算法的优化1、SPFA算法(1)算法思路:(2)算法模板:问题:模板:逐行分析: 三、SFPA解决负环问题&#xf…

SPFA算法理论体系终极论证

SPFA相关详细论证 历史事件Bellman-Ford算法简述和证明SPFA的正确代码段凡丁的贡献正确复杂度分析 历史事件 众所周知,SPFA是一种对Bellman-Ford算法的优化。国内业界首次提出是1994年西南交通大学的段凡丁在学报上发表的论文。但实际上早在1956年Bellman-Ford算法…

spfa判定负环

算法思想: 我们用数组记录每个结点的最短路径估计值,用邻接表来存储图G。 采取的方法是动态逼近法: 1、设立一个先进先出的队列用来保存待优化的结点。 2、优化时每次取出队首结点u,并且用u点当前的最短路径估计值对离开u点所指向…

SPFA算法详解——判断负权环

算法核心代码实现负权环判断负权环 根据松弛次数根据最短路径上的死循环 SPFA(Shortest Path Faster Algorithm)(队列优化)算法是求单源最短路径的一种算法。它是在Bellman-ford算法的基础上加上一个队列优化,减少了冗…

(算法基础)SPFA算法

适用情景 SPFA算法一般运用在求最短路问题当中的单源最短路中存在负权边的情况(正权边如果出题人没有特别恶心去卡的话,也是ok的),SPFA算法还可以去判断图中是否存在负环。 时间复杂度 一般来讲是O(m),m就是图当中的边…

透析SPFA算法(图例讲解)

SPFA算法是Bellman-Ford的队列优化,所以先介绍Bellman-Ford算法。 Dijkstra算法是处理单源最短路径的有效算法,但它局限于边的权值非负的情况,若图中出现权值为负的边,Dijkstra算法就会失效,求出的最短路径就可能是错的…