(完整版)LDRATestbed单元测试操作步骤
- 格式:doc
- 大小:969.78 KB
- 文档页数:12
目录1Testbed功能介绍 (1)1.1编程规则验证 (1)1.2数据流分析 (1)1.3控制流分析 (1)1.4表达式分析 (2)1.5接口分析 (2)1.6软件质量度量分析 (2)2使用Testbed 进行编码规则的定制和检查 (3)2.1确定测试需求 (3)2.2建立测试工程 (3)2.3定制代码分析规则 (6)2.4配置Report选项 (7)2.5分析执行及结果查看 (8)3结果分析及测试报告编写 (9)3.1质量度量信息的获取 (9)3.2程序质量度量报告单 (11)3.3静态分析质量报告单 (12)附录A:静态分析推荐规则使用说明 (1)1Testbed功能介绍1.1编程规则验证编程标准验证是高可靠性软件开发不可缺少的软件质量保证方法,使用LDRA Testbed 自动地验证应用软件是否遵循了所选择的编程规则。
编程规则由软件项目管理者根据自身项目的特点并参考现有的成熟的软件编程标准制定,如DERA(欧洲防务标准),MISRA(汽车软件标准),LDRA Testbed依据此规则搜索应用程序,并判断代码是否违反所制定的编程规则。
LDRA Testbed报告所有违反编程规则的代码并以文本方式或图形反标注的方式显示。
测试人员或编程人员可根据显示的信息对违反编程规则的代码进行修改。
1.2数据流分析LDRA Testbed分析软件中全局变量、局域变量及过程参数的使用状况,并以图形显示、HTML或ASCII文本报告方式表示,清晰地识别出变量使用引起的软件错误,此种方法既可使用于单元级,亦可使用于集成级、系统级。
通过Testbed数据流分析功能,可方便地分析出软件中一些可能的程序欠缺,如:1.没使用的函数参数;2.不匹配的参数;3.变量未赋初值就引用;4.代码中有多余变量;5.给值传递参数赋值;6.无返回值的函数路径;7.函数的实参是全局变量。
1.3控制流分析控制流分析检查以下内容:1.不可达代码;2.不合理的循环结构;3.存在浮点相等比较;4.函数存在多个出口;5.函数存在多个入口。
LDRATestbed静态分析报告操作步骤使⽤LDRA Testbed对代码进⾏静态分析静态分析的主要操作:①分析对象选择②分析前的设置③分析项的选择与分析过程④分析结果的查看详细操作如下:⼀、分析对象的选择,即如何选择你的分析对象(被分析的⽂件);有两种⽅式:单个⽂件分析和以集(set)的形式分析,以集的形式分析可每次分析多个⽂件1.单个⽂件分析选择打开程序LDRA Testbed,点击Testbed的菜单File select file 通过⽂件浏览窗⼝打开⽂件要分析的⽂件,如C:\LDRA_Workarea\Examples\C_testbed_examples\Testrian\Testrian.c 。
点击select之后,可以在⼯具快捷按钮栏的下⽅看见⽬前选择的⽂件2.以集(set)的形式分析选择①创建集合(set),设置集合属性打开程序LDRA Testbed,点击Testbed的菜单Set Select/Create/Delete Sets 弹出set创建窗⼝在图中上部的Select/Create Sets区域写⼊set的名字,然后点击下部的Create按钮创建set,此时会弹出set的属性设置对话框,有两种属性可以设置”Group”和”System;”此两种属性的区别:Group 只是把set中的多个⽂件孤⽴的分析,不会分析⽂件间代码的相互关系,可作为批量分析使⽤。
System把set中的多个⽂件作为⼀个⼯程来分析,能够分析⽂件间的代码的关联,⼀般都会采⽤此种属性。
Set创建之后可在窗⼝中确认如下:其中demo为set的名字,system为set的属性,(0 files)代表set中⽬前没有⽂件②向集合中添加⽂件点击Testbed的菜单Set→List/Add/Remove Files in Sets 弹出添加⽂件窗⼝点击图中的Add按钮,通过⽂件浏览窗⼝可添加多个⽂件到set中。
使用LDRA Testbed对代码进行单元测试单元测试的主要操作:⑴被测对象选择⑵编译器的确认与切换⑶单元测试模块Tbrun的打开⑷测试序列(Sequence)的创建⑸测试用例的创建⑹测试用例的IO值设定⑺测试用例中桩的设定⑻测试用例的执行⑼测试结果的查看⑽测试用例的保存⑾测试用例中增加用户全局变量⑿测试用例创建向导中对全局数组和指针的处理详细操作如下:一、测试对象的选择在Testbed中C码中的“单元”就是一个函数,每次对一个函数的代码进行测试,测试时每次打开一个源文件。
打开程序LDRA Testbed,点击Testbed的菜单File select file 通过文件浏览窗口打开文件要分析的文件,如C:\LDRA_Workarea\Examples\C_testbed_examples\Testrian\Testrian.c 。
点击select之后,可以在工具快捷按钮栏的下方看见目前选择的文件二、编译器的确认与切换在使用TBrun进行单元测试前需要先确认当前使用的编译器是否是正确的,如果不是正确的编译器可以切换为正确的编译器,其操作如下:1.确认编译器是否为目标编译器在Testbed中右上角的”Options Window”中要确认”Current Compiler”和”Default Compiler”所显示的内容,需要注意两点,“Current”和“Default”是否是目标编译器“Current”和“Default”是否是一样的,应该相同才可以2.切换编译器如果编译器不是用户想要的目标编译器需要切换,切换方法如下:点击Testbed菜单Configure—>Switch Compiler,在弹出窗口的编译器列表中选择目标编译器,然后点击Select按钮即可。
如果编译器选项中的”Current Compiler”和”Default Compiler”不一致,也需要设置为一致的,设置方式为点击Testbed菜单Configure—>Switch Compiler,在弹出窗口中点击Reset Current Set按钮来设置。
Testbed工具单元测试指导书1目的本文档用于指导测试人员在项目过程中使用Testbed工具进行单元测试,主要包括单元测试介绍、工具的安装、单元测试相关操作,以及在工程项目中使用Testbed工具进行单元测试常见问题处理和注意事项。
2说明该指导书针对的Testbed工具版本为8.2 的Windows 7版本,编译器采用GCC。
3单元测试介绍3.1测试对象软件单元。
GJB2786的定义:计算机软件部件设计中确定的能单独测试的部分GJB2786A的定义:计算机软件配置项设计中的一个元素;例如,CSCI的一个主要构成部分、这种构成部分的一个部件、一个类、对象、模块、函数、子程序或者数据库。
软件单元可以出现在层次结构的不同层上,并可以由其他软件单元组成。
设计中的软件单元与实现他们的代码和数据实体(子程序、过程、数据库、数据文件等)之间,或与包含这些实体的计算机文件之间并不一定有一一对应的关系。
3.2测试目的检查每个单元能否正确地实现设计说明中的功能、性能、接口和其他设计约束等要求,发现单元内可能存在的各种错误。
3.3测试依据软件设计文档。
3.4为什么进行单元测试1.确保软件单元的正确性2.确保单元之间交互的正确性3.明确函数的目的4.便于定位错误5.利于代码的重构6.可以实现自动化回归测试3.5单元测试工具✓流行的测试软件:Tburn、C++Test、Cantata++、VectorCAST、 Visual Unit、Tessy✓优点:一般都拥有自动化用例生成功能,具有方便的可视化功能,可以统计各类型的代码覆盖率信息。
✓缺点:都是商业软件,测试环境和开发环境完全脱离。
3.6覆盖率类型▪语句覆盖:又称行覆盖(Line Coverage),是最常用也是最常见的一种覆盖方式,就是度量被测代码中每个可执行语句是否被执行到了。
这里说的是“可执行语句”,因此就不会包括像C++的头文件声明,代码注释,空行等非可执行语句。
基于LDRA Testbed软件的单元测试单元测试是软件开发过程中不可或缺的一环,它能够发现代码中的错误和缺陷,提高软件质量和可靠性。
LDRA Testbed软件是一个集成开发环境(IDE),能够帮助开发人员进行单元测试和代码分析。
本文将介绍LDRA Testbed软件的基本原理、功能、应用和优点。
一、基本原理LDRA Testbed软件的基本原理是将代码分析为结构章程(Structural Coverage),并将其转换为函数测试用例。
开发人员可以使用该软件生成测试用例,以测试单元代码是否符合预期要求。
这些测试用例能够包含各种测试类型,如基本路径覆盖、条件覆盖、分支覆盖等。
通过这些测试用例,开发人员能够发现代码中的错误和缺陷,提高软件质量和可靠性。
二、功能LDRA Testbed软件能够实现以下功能:1.静态分析:能够分析代码并检查其是否符合规范。
这个过程能够发现一些潜在的安全漏洞和重构机会。
2.代码覆盖率:能够帮助开发人员检查测试用例是否完全覆盖单元代码,并生成测试报告。
3.自动化测试:能够快速、准确地测试代码,提高软件生产效率。
4.符号执行:通过符号计算机程序运行,能够模拟软件运行过程,发现软件问题。
5.程序执行跟踪:能够记录代码执行时的控制流,与图形界面结合,更容易定位问题。
6.缺陷管理:能够管理问题和工件,建立组织工件和缺陷报表的能力。
三、应用LDRA Testbed软件适用于以下场景:1.嵌入式开发:对于嵌入式系统,测试时要求测试代码的完整性、效率、可靠性和正确性,LDRA Testbed软件能够帮助开发人员实现这些要求。
2.医疗设备:对于一些医疗设备,在测试代码时要求高度安全性和健壮性,使用LDRA Testbed软件可以有效提高测试效率。
3.汽车电子:对于汽车电子产品,要求测试涵盖复杂的逻辑,同时需要高效且可靠。
使用LDRA Testbed能够加快开发和测试速度,帮助开发人员更好地实现目标。
单元测试步骤及实施内容单元测试是软件开发中非常重要的一环,它能够帮助开发人员在开发过程中及时发现问题,提高代码质量,保证系统的稳定性。
下面是进行单元测试时需要遵循的步骤以及每个步骤的实施内容。
步骤一:确定测试目标在进行单元测试之前,首先要确定测试的目标,即明确要测试的是哪部分代码、函数或模块。
只有明确了测试目标,才能有针对性地进行测试。
实施内容:- 确定要测试的代码范围 - 确定测试的功能和接口 - 编写测试用例步骤二:准备测试环境在进行单元测试之前,需要搭建好测试环境,包括所需的软件、硬件环境和测试数据等。
良好的测试环境能够保障测试的准确性和有效性。
实施内容:- 搭建测试环境 - 准备测试数据 - 配置测试工具和框架步骤三:编写测试代码编写测试代码是进行单元测试的关键步骤,通过编写测试用例和测试代码可以验证被测试代码的正确性和稳定性。
实施内容:- 编写测试用例 - 编写测试代码 - 确保测试代码覆盖率步骤四:运行测试在编写完测试代码之后,需要运行测试代码来验证被测试代码的正确性。
在这个过程中,需要检查测试结果,确保测试覆盖了所有的边界情况。
实施内容:- 运行测试代码 - 检查测试结果 - 修复测试代码中的问题步骤五:分析和整理测试结果在运行完测试代码之后,需要对测试结果进行分析和整理,找出问题所在,并进行记录。
通过分析和整理测试结果,可以改进代码质量,规避潜在问题。
实施内容:- 分析测试结果 - 记录测试问题 - 提出改进建议步骤六:重复测试单元测试是一个循环迭代的过程,需要不断地重复测试,直到所有的问题都得到解决。
通过不断地重复测试,可以不断地改进代码质量,确保系统的稳定性和可靠性。
实施内容:- 修复问题 - 重复测试 - 确保问题解决通过以上步骤,我们可以完整地进行单元测试,保证软件开发的质量和可靠性。
单元测试不仅可以帮助我们发现问题,也可以帮助我们改进开发流程,提高团队的工作效率和协作能力。
Testbed工具单元测试指导书1目的本文档用于指导测试人员在项目过程中使用Testbed工具进行单元测试,主要包括单元测试介绍、工具的安装、单元测试相关操作,以及在工程项目中使用Testbed工具进行单元测试常见问题处理和注意事项。
2说明该指导书针对的Testbed工具版本为8.2 的Windows 7版本,编译器采用GCC。
3单元测试介绍3.1测试对象软件单元。
GJB2786的定义:计算机软件部件设计中确定的能单独测试的部分GJB2786A的定义:计算机软件配置项设计中的一个元素;例如,CSCI的一个主要构成部分、这种构成部分的一个部件、一个类、对象、模块、函数、子程序或者数据库。
软件单元可以出现在层次结构的不同层上,并可以由其他软件单元组成。
设计中的软件单元与实现他们的代码和数据实体(子程序、过程、数据库、数据文件等)之间,或与包含这些实体的计算机文件之间并不一定有一一对应的关系。
3.2测试目的检查每个单元能否正确地实现设计说明中的功能、性能、接口和其他设计约束等要求,发现单元内可能存在的各种错误。
3.3测试依据软件设计文档。
3.4为什么进行单元测试1.确保软件单元的正确性2.确保单元之间交互的正确性3.明确函数的目的4.便于定位错误5.利于代码的重构6.可以实现自动化回归测试3.5单元测试工具✓流行的测试软件:Tburn、C++Test、Cantata++、VectorCAST、 Visual Unit、Tessy✓优点:一般都拥有自动化用例生成功能,具有方便的可视化功能,可以统计各类型的代码覆盖率信息。
✓缺点:都是商业软件,测试环境和开发环境完全脱离。
3.6覆盖率类型▪语句覆盖:又称行覆盖(Line Coverage),是最常用也是最常见的一种覆盖方式,就是度量被测代码中每个可执行语句是否被执行到了。
这里说的是“可执行语句”,因此就不会包括像C++的头文件声明,代码注释,空行等非可执行语句。
使用LDRA Testbed对代码进行单元测试单元测试的主要操作:⑴被测对象选择⑵编译器的确认与切换⑶单元测试模块Tbrun的打开⑷测试序列(Sequence)的创建⑸测试用例的创建⑹测试用例的IO值设定⑺测试用例中桩的设定⑻测试用例的执行⑼测试结果的查看⑽测试用例的保存⑾测试用例中增加用户全局变量⑿测试用例创建向导中对全局数组和指针的处理详细操作如下:一、测试对象的选择在Testbed中C码中的“单元”就是一个函数,每次对一个函数的代码进行测试,测试时每次打开一个源文件。
打开程序LDRA Testbed,点击Testbed的菜单File select file 通过文件浏览窗口打开文件要分析的文件,如C:\LDRA_Workarea\Examples\C_testbed_examples\Testrian\Testrian.c 。
点击select之后,可以在工具快捷按钮栏的下方看见目前选择的文件二、编译器的确认与切换在使用TBrun进行单元测试前需要先确认当前使用的编译器是否是正确的,如果不是正确的编译器可以切换为正确的编译器,其操作如下:1.确认编译器是否为目标编译器在Testbed中右上角的”Options Window”中要确认”Current Compiler”和”Default Compiler”所显示的内容,需要注意两点,“Current”和“Default”是否是目标编译器“Current”和“Default”是否是一样的,应该相同才可以2.切换编译器如果编译器不是用户想要的目标编译器需要切换,切换方法如下:点击Testbed菜单Configure—>Switch Compiler,在弹出窗口的编译器列表中选择目标编译器,然后点击Select按钮即可。
如果编译器选项中的”Current Compiler”和”Default Compiler”不一致,也需要设置为一致的,设置方式为点击Testbed菜单Configure—>Switch Compiler,在弹出窗口中点击Reset Current Set按钮来设置。
三、单元测试模块Tbrun的打开由Testbed进入Tbrun有三种模式,每种模式对应不同的测试类型,三种模式分别为:“Integration Unit / Module Test”、”Isolation Unit / Module Test”和” Unit Test Only”。
C代码的单元测试使用” Unit Test Only”模式,CPP的单元测试使用另外两种模式皆可。
在Testbed菜单TBrun→Unit Test Only点击,即可进入Tbrun模块。
四、测试序列(Sequence)的创建在Tbrun中是使用测试序列(sequence)来容纳测试用例和测试数据的,进入Tbrun后第一步需要做的就是创建测试序列。
建议每一个函数对应一个测试序列,便于用例管理。
在Tbrun的菜单Sequence-→New点击,弹出测试序列创建窗口,在’Sequence name”下面需要用户写入Sequence的名字;窗体下面的选项卡设置如下,在”Code Coverage”选项卡中把选择框”Code Coverage”选上,此项可自动计算覆盖率信息,在”Test Enviroment ”选项卡中把选择框”Create Dicitoary”、”Create User Globals”、”Create Stubs”,注意”Test build”选择框不要选,其他保持默认设置即可;然后点击”Continue”按钮即可。
五、测试用例的创建在Tbrun窗体的右上角File View窗口中,点击文件名能够展开显示文件中所包含的函数,把鼠标放到某个函数名上,右键弹出菜单点击”Create New Test Case”,会弹出测试用例创建向导窗口在此窗口中会显示函数的基本信息,可不用关注,直接点击按钮”Continue”向下进行,这样一个用例创建完成,可在用例管理窗口”Test Case View”中显示已经创建的用例,以数字编号用例,在”Variable I/O View”窗口中会显示此函数的输入输出参数。
六、测试用例的输入输出参数IO值设定测试用例的输入输出参数值的设定是测试的核心,在这一步决定了有什么样的输入和用例运行之后应该有什么样的输出(预期输出),从而实现了函数功能的验证。
对于函数的输入输出不只有函数的参数,还包含函数内部使用的全局变量。
在”Variable I/O View”窗口中工具会显示出函数的参数和内部使用的全局变量,并会显示每个参数是输入还是输出,用户给每个参数赋值即可,注意输入以”I”标示的,输出是以”O”标示的,此处的输出是指预期的输出值。
对于标示为”I”的变量一定要有一个确定的值,要不让用例无法执行。
七、测试用例中桩的设定桩-----使用一个函数原型相同的空函数来代替原函数如果被测函数中调用了其他函数,则被调用函数会被打桩,如果被调用函数的返回值影响了被测函数的分支流程,或被调用函数的动作影响了被测函数的分支流程,则需要对桩进行设置,一般设置桩的返回值即可满足。
在Tbrun的”Variable I/O View”中,双击”M Double-click to access”图标即可打开桩的属性设置其返回值等在桩函数右键,弹出菜单,选择”Set Return Value On Exit”,弹出返回值设定窗口在途中的”Value”设定返回值,点击”OK”。
八、测试用例的执行测试用例的IO设置和桩的设定之后,此用例就算构造完成了,接下来要做的就是执行用例,有两种运行方式,操作方法如下:a.一键式运行用例;在测试用例管理窗口中的空白处右键可弹出菜单,点击”Run TestCase Driver”即可运行用例。
b.分步式执行用例;在测试用例管理窗口中的空白处右键可弹出菜单,按顺序点击“Generate Driver”、”Build Driver”、”Execute Driver”、(“Split Regression Driver Output”)、”Process Regression Driver Output”,每执行一步如果执行成功则会在旁边以“√”提示,如果不成功则没有“√”,请排查原因。
九、测试结果的查看单元测试其测试结果由两部分构成:函数功能验证和函数覆盖率信息;函数功能的验证是通过用例的执行之后的用例确认对话框中的Pass/Fail结果反映的。
函数的覆盖率信息可通过动态覆盖率分析报告来查看,在Tbrun的菜单Result Dynamic Coverage Analysis Report点击即可,此报告中包含整个文件中所有函数的语句、分支MC/DC覆盖率信息。
还有一种图形化的方式显示函数的覆盖率信息,在Tbrun的用例管理窗口,选中用例然后右键在弹出的菜单中选择”View Flowgraph”即可打开覆盖率图形化显示窗体,图中绿色的代表已经覆盖了的,红色的代码未覆盖的在弹出窗体中可通过菜单选择为图形添加分支跳转条件注释十、测试用例的保存通过设计多个测试用例执行,函数的功能全部验证通过,并且覆盖率的值也达到了测试规范中的要求的值,此函数的测试就可以结束了,以便于以后对此函数进行回归测试,需要用户把用例保存起来,保存的操作如下:在Tbrun的菜单Sequense→Exprot Test Case(TCF)点击,通过文件浏览窗体选择一个目录来保存对应的TCF文件。
至此单元测试的主要操作流程结束,下面介绍在测试用例创建过程中会常用到的几个重要的操作处理。
十一、测试用例中增加用户全局变量单元测试每次通过Testbed来选择一个文件,而我们每个用例是针对一个函数的,所以在编译的时候只编译用户代码中的一个函数,如果此函数中使用了全局变量,且恰好此变量是用”extern”声明的,即全局变量身体的声明(定义)不在此文件内部,就需要用户自己在Tbrun中添加此全局变量的声明(定义)。
操作如下:在Tbrun的菜单Global Variables→Create User Global点击即可弹出用户全局变量定义窗口,在窗口中添入”Name”和”Declaration Type”点击finish即可。
十二、测试用例创建向导中对全局数组和指针的处理1.全局数组的处理如果被测函数内使用的全局数据,在创建用例的时候用例创建向导会提示遇到全局数组,让用例来选择处理方式,一共有三种方式“Add all elements to the test case”把数组的所有元素都添加到用例的IO窗口中“Add multiple elements to the test case”把数组的部分元素添加到用例的IO窗口中“Remove all elements from the test case”把数组的所有元素从用例的IO窗口中删除用户根据自己代码中对全局数组的访问情况自主选择相应的处理方式。
2.指针的处理a.输入指针的处理如果被测函数的参数中包含输入指针(此指针的所指向内容未被改变),在创建用例时用例向导会提示用户发现输入指针,让用户选择处理方式,一般选择第二种”Set input pointer to the address of entity”在下面的空白处填入要指向的实体,也可以通过”Find”按钮选择已有的用户全局变量,或者”New”新建一个用户全局变量来指向。
b.输出指针的处理如果被测函数的参数中包含输出指针(此指针的所指向内容被改变),在创建用例时用例向导会提示用户发现输出指针,让用户选择处理方式,一般选择第二种”Mapping”把此指针映射到某个实体,点击next按钮后会出现映射窗口在此窗口中选择”Map to Global Entity”,然后通过”Assign”来分配映射到那个全局变量,再让后点击”next”按钮;一步一步”next”或”continue”完成输出指针的处理。