您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 电气安装工程 > Testbed安装说明及单元测试指导书
Testbed工具单元测试指导书1目的本文档用于指导测试人员在项目过程中使用Testbed工具进行单元测试,主要包括单元测试介绍、工具的安装、单元测试相关操作,以及在工程项目中使用Testbed工具进行单元测试常见问题处理和注意事项。2说明该指导书针对的Testbed工具版本为8.2的Windows7版本,编译器采用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、VisualUnit、Tessy优点:一般都拥有自动化用例生成功能,具有方便的可视化功能,可以统计各类型的代码覆盖率信息。缺点:都是商业软件,测试环境和开发环境完全脱离。3.6覆盖率类型▪语句覆盖:又称行覆盖(LineCoverage),是最常用也是最常见的一种覆盖方式,就是度量被测代码中每个可执行语句是否被执行到了。这里说的是“可执行语句”,因此就不会包括像C++的头文件声明,代码注释,空行等非可执行语句。▪判定覆盖(DecisionCoverage):又称分支覆盖(BranchCoverage)。它度量程序中每一个判定的每一个分支是否都被测试到了。▪条件覆盖(ConditionCoverage):它度量判定中的每个子表达式结果true和false是否被测试到了。▪MC/DC覆盖:MC/DC(ModifiedConditionDecisionCoverage)是修订的条件/判定覆盖,判定中每个条件的所有可能结果至少出现一次,每个判定本身的所有可能结果也至少出现一次,每个判定中的每个条件都曾独立的影响判定的结果至少一次,(独立影响意思是在其他的条件不变的情况下,改变一个条件)。▪路径覆盖:又称断言覆盖(PredicateCoverage)。它度量了是否CSU的每一个路径分支都被执行了。有多个分支嵌套时,需要对多个分支进行排列组合。3.7单元测试需要注意的地方1.若对软件单元进行必要的静态测试,应先于动态测试。2.理论上讲,单元测试除了被测单元外都应该打桩。3.应逐项测试软件设计文档规定的软件单元的功能、性能等特性;▪单元测试的直接依据是软件设计文档▪从功能的角度出发,而不是从程序的角度出发4.软件单元的每个特性应至少被一个正常的测试用例和一个被认可的异常测试用例覆盖▪正常与异常是相对于功能来说的▪因此在软件的设计文档中,应明确软件功能,以及对应的有效输入▪进行单元测试时,用例需要同时包含有效范围之内的和有效范围之外的输入▪空指针、异常值5.测试用例的输入应至少包括有效等价类值、无效等价类值和边界等价类值▪若软件的设计文档有明确的功能输入范围描述则可以进行等价类划分▪若没有明确输入范围,则可以根据被测单元的参数类型、用到的全局变量类型,取相应的极大值与极小值6.测试用例应达到要求的测试覆盖率,对未达到所要求覆盖率的情况需要说明原因▪语句覆盖▪条件覆盖▪判定覆盖▪MC/DC覆盖▪路径覆盖7.应测试软件单元输出数据及其格式▪确认软件单元的返回值数据类型与内容是否与设计相一致4软件安装4.1Testbed工具安装解压Testbed8.2(Win7).zip,进入安装包目录,双击setup.exe进行软件安装,安装流程如下所示。出现如下界面,选择“是”,单击“Next”。出现如下界面,点击“StandardWorkstation”,选择“Typical”,点击“Next”,默认安装在“C:\LDRA_Toolsuite\”目录,可根据实际情况更改目录。,出现如下界面,可选择工作空间目录,默认为“C:\LDRA_Workarea”,此处建议修改为具有较大空间目录,后续创建用例默认都在该目录,点击“Next”。出现如下界面,采用默认设置,点击“Next”。出现如下界面,选择最后一个选项“InstallMinimalistGNUforWin322.0.0.3”,点击“Next”。出现如下界面,选择“是”,点击“Next”。出现如下界面,可根据实际情况安装所需要的额外工具,默认不安装,点击“Next”。如果安装过程中出现错误,忽略。出现如下界面,点击“Next”。等待安装完成,出现如下界面,选择“否”。出现如下界面,选择“否”。出现如下界面,安装完成。安装完成后,桌面会出现如下四个图标。4.2Testbed工具破解安装进入Testbed8.2(Win7)\Testbed8.2\破解目录,拷贝Contestbed.exe、Testbed.exe、Toolsuite.ctl三个文件到Testbed的安装目录“C:\LDRA_Toolsuite”下,直接覆盖原文件。4.3Testbed工具汉化安装进入Testbed8.2(Win7)\Testbed8.2\汉化目录,拷贝CPEN.dat文件到目录“C:\LDRA_Toolsuite\C”下,直接覆盖原文件;拷贝CPPPEN.dat文件到目录“C:\LDRA_Toolsuite\CPP”下,直接覆盖原文件。5单元测试操作5.1被测对象选择在Testbed中C码中的“单元”就是一个函数,每次对一个函数的代码进行测试,测试时每次需打开一个源文件。双击桌面“LDRATestbed-C_C++StaticandDynamicAnalysis”图标,打开程序LDRATestbed,点击Testbed的菜单File-SelectFile,通过文件浏览窗口,选择要测试单元所在的源文件。本文以Testbed示例代码为例来逐步介绍单元测试过程。如C:\LDRA_Workarea\Examples\C_tbrun_examples\Ggrocers.c。点击“打开”之后,可以在工具快捷按钮栏的下方看见目前选择的文件。5.2编译器的确认与切换在使用TBrun进行单元测试前需要先确认当前使用的编译器是否是正确的,如果不是正确的编译器可以切换为正确的编译器,其操作如下:1.确认编译器是否为目标编译器在Testbed中右上角的“Options”窗口中要确认“CurrentCompiler”和“DefaultCompiler”所显示的内容,需要注意两点,“Current”和“Default”是否是目标编译器“Current”和“Default”是否是一样的,应该相同才可以。2.切换编译器如果编译器不是用户想要的目标编译器需要切换,切换方法如下:点击Testbed菜单Configure-SwitchCompiler,在弹出窗口的编译器列表中选择目标编译器,然后点击Select按钮即可。如果OtherCompilers列表中没有找到需要的编译器,可以通过“AddCompiler”添加所需要的编译器。点击“AddCompiler”,弹出的窗口中点击“是”,进入编译工具安装向导,如下图所示。点击“Next”,弹出的向导中选择需要安装的编译器,本文以安装“WindRiverTornado”编译器为例,如下图所示。点击“Next”,编译器安装成功,如下图所示。点击Testbed菜单Configure-SwitchCompiler,在弹出的窗口中,当前默认编译器为安装的新的编译器,如下图所示。如果“CurrentCompiler”和“DefaultCompiler”不一致,需要设置为一致,如下图所示。设置方式为点击Testbed菜单Configure-SwitchCompiler,在弹出窗口中点击ResetCurrentFile按钮来设置。5.3打开单元测试模块Tbrun由Testbed进入Tbrun有三种模式,每种模式对应不同的测试类型,三种模式分别为:“IntegrationUnit/ModuleTest”(集成测试,所有的函数都集成起来)、“IsolationUnit/ModuleTest”(集成测试,适合增量测试,只有选定的函数集成,未选中的将被打桩)和“UnitTestOnly”。C代码的单元测试使用“UnitTestOnly”模式,CPP的单元测试使用另外两种模式皆可。点击Testbed菜单TBrun-UnitTestOnly,即可进入Tbrun模块。5.4创建测试序列(Sequence)在TBrun中是使用测试序列(sequence)来容纳测试用例和测试数据的,进入Tbrun后第一步需要做的就是创建测试序列。建议每一个函数对应一个测试序列,便于用例管理。在TBrun的菜单Sequence-New点击,弹出测试序列创建窗口,在“Sequencename”下面需要用户写入Sequence的名字(最好与函数名称对应);窗体下面的选项卡设置如下,在“CodeCoverage”选项卡中把选择框“CodeCoverage”选上,此项可自动计算覆盖率信息,在“TestEnviroment”选项卡中把选择框“CreateDicitoary”、“CreateUserGlobals”、“CreateStubs”,注意“Testbuild”选择框不要选,其他保持默认设置即可;然后点击“Continue”按钮即可。5.5创建测试用例在Tbrun窗体的右上角,点击文件名能够展开显示文件中所包含的函数,把鼠标放到某个函数名上,右键弹出菜单点击“CreateNewTestCase”,如下图所示。弹出测试用例创建向导窗口,如下图所示。在此窗口中会显示函数的基本信息,可不用关注,直接点击按钮“Continue”向下进行,这样一个用例创建完成,可在左下角窗口中显示已经创建的用例,以数字编号用例;在右下角窗口中会显示此函数的输入输出参数。5.6设定测试用例的IO值测试用例的输入输出参数值的设定是测试的核心,在这一步决定了有什么样的输入和用例运行之后应该有什么样的输出(预期输出),从而实现了函数功能的验证。对于函数的输入输出不只有函数的参数,还包含函数内部使用的全局变量。在右下角窗口中工具会显示出函数的参数和内部使用的全局变量,并会显示每个参数是输入还是输出,用户给每个参数赋值即可,注意输入以“I”标识的,输出是以“O”标识的,此处的输出是指预期的输出值。对于标识为“I”的变量一定要有一个确定的值,否则用例无法执行。5.7设定测试用例中桩函数桩——使用一个函数原型相同的空函数来代替原函数。如果被测函数中调用了其他函数,则被调用函数会被打桩,如果被调用函数的返回值影响了被测函数的分支流程,或被调用函数的动作影响了被测函数的分支流程,则需要对桩进行设置,一般设置桩的返回值即可满足。在Tbrun的右下角窗口中,双击“Double-clicktoaccess”图标即可打开桩的属性设置其返回值等。在桩函数右键,弹出菜单,选择“SetReturnValueOnExit”,弹出返回值设定窗口。在图中的“Value”设定返回值,点击“OK”。5.8执行测试用例测试用例的IO设置和桩的设定之后,此用例就构造完成了,接下来要做的就是执行用例,有两种运行方式,操作方法如下:a.一键式运行用例;在测试用例管理窗口中的空白处右键可弹出菜单,点击“RunTestCaseDriver”即可运行用例。b.分步式执行用例;在测试用例管理窗口中的空白处右键可弹出菜单,按顺序点击“Generate
本文标题:Testbed安装说明及单元测试指导书
链接地址:https://www.777doc.com/doc-5668193 .html