Parasoft-C++Test操作手册范本_第1页
Parasoft-C++Test操作手册范本_第2页
Parasoft-C++Test操作手册范本_第3页
Parasoft-C++Test操作手册范本_第4页
Parasoft-C++Test操作手册范本_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

...wd......wd......wd...C++Test介绍修订历史记录日期版本说明作者C++Test6.0C++Test原理,使用介绍,RuleWizard定制规则目录TOC\o"1-3"\h\z第一章C++Test特性4第二章C++Test使用6一.安装说明61.Windows下安装62.申请License6二.启动C++Test71.从VC++里启动C++Test72.传统启动C++Test8三.Linux下安装及启动9四.C++Test快速测试101.翻开被测文件102.静态测试123.动态测试144.生成报表16第三章C++Test高级功能19一.导入VC++工程(ImportVC++project)19二.选择编译器(projectconfiguration)20三.设置测试配置(testconfiguration)21四.编码规则测试结果分析26五.测试用例分析28六.DataSource33七.桩函数设置40八.导入导出测试用例43九.TestObjects45十.覆盖率分析48十一.回归测试52十二.其他设置551.设置TCM552.设置GRS563.设置源代码编辑器和HTML浏览器57第四章RuleWizard定制规则59一.启动RuleWizard59二.翻开一个现有的规则60三.设计一个新规则62四.C++Test中导入自定义规则71第一章C++Test特性C++Test是一个C/C++单元测试工具,自动测试任何C/C++类、函数或部件,而不需要您编写一个测试用例、测试驱动程序或桩调用。C++Test能够自动测试代码构造〔白盒测试〕、测试代码的功能性〔黑盒测试〕和维护代码的完整性〔回归测试〕。C++Test是一个易于使用的产品,能够适应任何开发生命周期。通过将C++Test集成到开发过程中,您能够有效地防止软件错误,提高代码的稳定性,并自动化单元测试技术〔这是极端编程过程的根基〕。特性即时测试类/函数支持极端编程模式下的代码测试自动建设类/函数的测试驱动程序和桩调用自动建设和执行类/函数的测试用例提供快速参加和执行说明和功能性测试的框架执行自动回归测试执行部件测试〔COM〕优点帮助您立即验证类功能性和构造将您从编写测试驱动程序、桩和测试用例的繁重工作中解放出来自动化极端编程和其它编程模式的单元测试过程使得您能够实现和执行100%的代码覆盖性支持紧急和短线开发工程降低调试和维护时间改善应用的可靠性防止简单错误的扩大系统要求最小系统要求:Pentiumclassprocessor800MHz512MBRAM(1024MBisrecommended)150MBfreediskspaceforC++Testinstallation其他要求:保存足够的磁盘空间供测试使用。支持平台Windows•SupportedPlatforms:WindowsNT,2000,XP•SupportedCompilers:Microsoft®VisualC++®6.0,.NET®,or.NET2003®,GNUGCC2.95xor3.x.CygwinGCC2.95.x,3.2.x,3.3.xMingwGCC2.95.x,3.2.x,3.3.xUNIX•SupportedPlatforms:Linuxkernel2.4(withSystemVIPC),glibc2.2,PentiumprocessorSolaris7,8,9,UltraSPARCprocessor•SupportedCompilers:GNUGCC3.2.x,GNUGCC3.3.x,GNUGCC3.4.xSun®C++5.3®(SunForteC++6Update2forSPARCSolaris),Sun®C++5.5®(SunONEStudio8)第二章C++Test使用一.安装说明1.Windows下安装翻开安装源程序,同普通的windows应用程序一样,选择安装路径,完成安装。2.申请License1.申请License从桌面或者菜单翻开C++Test,将弹出类似于下面的一个要求输入密码的窗口:按“是(Y)〞进入。这里的machineID就是C++Test和主机绑定的信息。或在进入C++Test主界面后,在菜单Help->License…可以同样翻开下面的界面。这个machineID需交给Parasoft代理商,来申请license。而由于license的种类不同,可以分为locallicense〔单机版〕和netlicense〔网络版〕。2.输入License将相应的license和expiredate粘贴到相应的位置,如果信息正确,系统将提示licenseok。如果信息不正确,系统将提示wronglicense。输入正确的license,翻开C++Test,就可以进入C++Test的用户界面了。二.启动C++Test1.从VC++里启动C++Test安装VC++后,再安装C++Test,VC++工具条里会自动地增加使用C++Test的按扭。可以启动C++Test界面,或进展C++Test静态和动态测试。2.传统启动C++Test开场->程序->C++Test,可以启动C++Test。三.Linux下安装及启动建议安装linuxredhat9.0及以上版本,建议安装开发工作站,同时需要图形界面支持在图形界面下建设组gtest(或其他)在图形界面下建设用户utest(或其他),并且属于组gtest。utest主目录是/home/utest。用bash。在/home/utest/下建设目录cpptest,并且拷贝cpptest_linux_.sh到cpptest目录下在图形界面下用utest用户登录在Terminaltool中进入/home/utest/cpptest目录执行安装cpptest_linux_.sh〔或./cpptest_linux_.sh〕。安装程序是脚本安装程序,没有图形安装界面。C++Test将安装在/home/utest/cpptest目录下进入/home/utest目录下。在.bash_profile文件中给环境变量PATH行后面增加:/home/utest/cpptest/bin。然后保存用户utest重新在图形界面下登录在Terminaltool中输入c++test(或在图形界面下执行/home/utest/cpptest/bin/c++test程序)。可以启动c++test四.C++Test快速测试1.翻开被测文件翻开C++Test,选择file/openfile,选择C++Test安装目录下examples/cpptest_demo.cpp,这个cpp文件将出现在当前的project下。在当前project下,右击cpptest_demo.cpp,选择readsymbols〔读入符号表〕,此时C++Test将parse(剖析)这个源程序,分析出此文件的文件构造。在源代码窗口可以看到我们所测试的代码,界面非常友好,中选择代码时,被选择的代码也会以蓝色块的形式出现。并且,当我们进展了静态分析和动态分析时,这里我们也可以非常直观的观测到静态分析和动态分析的结果。代码左侧的红色精灵帽表示静态分析时出现问题的所在,黄色小齿轮则表示动态分析时出现问题的所在。点击相应的地方,会出现对问题的一个简单描述。2.静态测试在向右三角型旁边的下拉箭头,选择内置的编码规则工程。C++Test将自动完成对源代码的静态测试,也就是我们所说的代码走查,走查所用到的标准可以在静态测试标签的rulemanage下看到。在静态分析栏中的Results标签是对静态分析结果的一个罗列。每个红色精灵帽都代表一种违规行为,而它旁边的数字则代表测试代码中出现这种违规的次数。紧接着的字母说明违规行为的严重级别。再后面就是对这条标准的大致描述以及规则编号。而标签RulesManager则是对这些规则的管理,当用户需要使用某条规则的时候,只需要在相应规则左侧的方框内打上勾就说明选择了该条规则。而当用户不需要某条规则检查的时候,只需要去掉相应规则的勾就可以了。以下列图,右侧就是静态测试〔代码走查〕的结果。每条违规信息包括对违规的描述,该错误共发生的次数以及相对应的具体位置。而下面的ruledesription则是对这条规则的一个比拟详细的描述。顶层的文件夹后面的“I=4PV=1V=33……〞描述的是整个的对违规信息的统计。I表示information,通知行为PV表示possibleviolation,可能的违规行为V表示violation,违规行为PSV表示possibleservereviolation,可能的严重违规行为SV表示servereviolation,严重违规行为。3.动态测试在向右三角型旁边的下拉箭头,选择内置的白盒测试。C++Test将自动完成代码的动态测试。可以从各个层面上〔单个测试用例,整个函数的测试用例,整个代码的测试用例〕去看相对应代码的覆盖率。操作的时候,只需要右击相应的层次〔例如一个测试用例〕,选择showcoverage,就可以看到对应的覆盖率了。在动态测试中的TestCase/Results栏中,主要是对测试用例的一个总体管理。在这里,所有的测试用例的状态都一目了然,绿色表示成功,红色表示失败。用户可以自己添加或修改测试用例。而StubTables栏则是对桩函数的管理,Suppressions则是对测试对象的一个管理。例如,上面的Data类有很多个成员函数,当用户并不想全部都测,而只是测其中的几个。这个时候就可以通过Suppressions进展选择。除此之外,上面的Treefilter还提供强大的滤波器功能,可以让用户更好的关注他们的焦点,例如只看最近一次测试的失败用例。以下列图,右侧就是对动态测试的一个整体描绘。列举了所有的测试用例,并且用颜色来区分成功和失败的测试用例,绿色代表成功通过了的测试用例,而红色代表没有通过也就是失败了的测试用例,对于每个错误的测试用例都有一个大致的描述。每个测试用例或者各个节点上都做到了相应的覆盖率信息,包括了LC〔语句覆盖〕,BBC〔块覆盖〕,PC(路径覆盖),DC〔决策覆盖〕,MCDC(多条件决策覆盖)以及CC(条件覆盖)。此外,上面的treefilter过滤器功能可以帮助用户迅速观察到自己关心的焦点或错误。4.生成报表选择file/generatereport,根据对报表的需求,选择适当的报表内容种类〔例如dynamicanalysis1,coveragestatistic1〕。生成一个HTML格式的报表。第三章C++Test高级功能一.导入VC++工程(ImportVC++project)C++Test6.0可以直接导入VC++6.0project,VC++.Netproject和VC++.Net2003project文件。菜单File->NewProject…出现下面的界面选择ImportVC++6.0project输入测试工程文件名称(projectname)选择VC++6.0工程文件.dsp(VC++6.0projectfiles)二.选择编译器(projectconfiguration)如果你同时安装了VC++6.0和VC++.Net的话。你必须选择你需要的编译器。否则C++Test6.0会使用默认的编译器。菜单Project->ProjectConfigurations…选择VC++6.0为当前测试工程的编译器〔下面界面默认的C++Test使用编译器是VC++.Net2003〕三.设置测试配置(testconfiguration)C++Test6.0可以选择不同的测试配置选项对一个工程、文件进展测试。测试配置:是一系列编码规则、单元测试用例生成规则的组合,决定要测试什么编码规则,如何生成测试用例。菜单Tests->TestConfigurations…翻开测试配置界面。新建一个测试配置:选择project->鼠标右键–>NewConfigurationAnalysisFlow决定是否要做编码规则测试和单元测试AnalysisSettings包括CodingStandards和UnitTesting。其中CodingStandards选择需要的规则。打√选择规则UnitTesting中Types设置不同数据类型在生成测试用例的取值,可以增加某种数据类型在生成测试用例时的取值。比方char类型可以增加特定的字符’A’设置一个被测单元自动生成测试用例的最大数目〔默认是50个〕设置新增加的测试设置为活动用新增加测试设置进展测试。在向右三角型旁边的下拉箭头,选择新增加的测试设置。四.编码规则测试结果分析以下列图,右侧就是静态测试〔代码走查〕的结果。I表示information,通知行为PV表示possibleviolation,可能的违规行为V表示violation,违规行为PSV表示possibleservereviolation,可能的严重违规行为SV表示servereviolation,严重违规行为。1.顶层的文件夹后面的“I=4PV=1V=33……〞描述的是整个的对违规信息的统计。2.下面的每个小红帽表示一条违例规则。前面的数字表示违反次数,紧接着是严重程度,然后是此规则的简单描述。每条违规信息包括对违规的描述,该错误共发生的次数以及相对应的具体位置。而下面的ruledesription则是对这条规则的一个比拟详细的描述。3.Treefilter:可以按严重程度分类显示。4.CodingStandards的Suppressions可以按严重程度,类,文件等条件决定是否要显示测试结果。以下列图中对Violation类型的编码规则测试结果不显示5.不显示Violation类型的测试结果五.测试用例分析用C++Test做单元测试,最重要的步骤是分析测试用例。如果这步没有做好,你会觉得C++Test不适合你们;如果做好了,你的单元测试就做好了。用C++Test做单元测试,重点在分析测试用例,而不是设计测试用例。C++Test自动生成的测试用例是白盒测试用例。如果你要用C++Test做黑盒测试,你需要手工增加黑盒测试用例或修改白盒测试用例使之成为黑盒测试用例,要求:要准确地分析测试用例,必须对被测函数有清楚的了解。1.选择Examples\complex.cpp文件2.选择工具条中向右三角型进展进展单元测试3.选择一个测试用例,然后按“Edit〞按扭进入测试用例编辑界面4.分析测试用例Arguments:测试前的函数的参数值ArgumentsPost:测试后的函数的参数值Return:测试前设定的函数的返回值Pre-Conditions>This:测试前对象构造值,特别是构造对象时给成员变量设定的的值Pre-Conditions>Externals:测试前全局变量值Post-Conditions>This:测试后对象构造值,特别是构造对象时给成员变量设定的的值Post-Conditions>Externals:测试后全局变量值ExecutionResult:预期的测试结果。是正常返回、Assert失败,还是各种异常返回A)首先让我们先看看源代码//complex.cpp//ThisexampleillustrateshowC++TestworkswithoverloadedoperatorsandconstructorsclassComplex{public:Complex(floatre=0,floatim=0):_re(re),_im(im){}Complexoperator+(constComplex&);Complexoperator-(constComplex&);private:float_re;float_im;};ComplexComplex::operator+(constComplex&c){returnComplex(this->_re+c._re,this->_im+c._im);}ComplexComplex::operator-(constComplex&c){returnComplex(this->_re-c._re,this->_im-c._im);}ComplextestComplexOperators(Complex&a,Complex&b){Complexzero;Complexneg_a=zero-a;Complexneg_a_sum_b=neg_a-b;returna+b+neg_a_sum_b;//thisfunctionshouldalwaysreturncomplexzerovalue}B〕我们的测试用例是针对函数ComplexComplex::operator+(constComplex&c)的Arguments:表示函数参数是一个Complex&c,这个参数对象c构造的时候给c成员变量float_re=1.0;float_im=-1.0ArgumentsPost:表示函数测试后。这个参数对象c在测试后c成员变量float_re=1;float_im=-1Return:表示返回对象Complex,它的值应当成员变量float_re=自身的成员变量_re+输入对象c的成员变量_re〔1〕;float_im=自身的成员变量_im+输入对象c的成员变量_im〔0〕;注意:这里的返回值是错误的,正确的选项是_re=3;_im=-3才对。此测试用例测试结果应当是错误的〔变红〕。Pre-Conditions:表示进展单元测试的时候,类成员变量的值float_re=2;float_im=-2Post-Conditions:表示在测试后。类成员变量的值float_re=2;float_im=-2ExecutionResult:表示测试完毕是NormalReturn。正常完毕,而不是异常完毕C)上面测试用例测试后的结果是失败的预期的结果是〔_re=1,_im=0〕。实际的结果是〔_re=3,_im=-3〕5.调试测试用例选择某个测试用例->鼠标右键->DebugSelectedTestCase(s)->翻开VC++.Net2003(默认编译器)调试界面。注意:对VC++6.0好象无法进展调试。六.DataSource如果一个函数有一系列相似的输入,比方协议类函数。这个时候可以把这一系列相似的输入保存成一个excel文件,CSV文件或数据库的表。我们称之为DataSource。这样当C++Test进展单元测试的时候,可以根据DataSource的内容生成一系列的测试用例。1.翻开C++Test安装目录Examples\DataSource\dsexample.cpp2.菜单project->projectconfigurations…->翻开工程配置界面。选择DataSources。按“Add〞按扭增加DataSource文件。3.输入DataSource名称4.选择DataSource类型为CSVDataSource4.选择C++Test安装目录Examples\DataSource\data.csv文件。//data.csv的内容"LOWER";"UPPER";"TESTED";"ANSWER"3;8;5;TRUE3;8;1;FALSE4;9;10;FALSE2;3;3;FALSE2;3;2;FALSE-1;1;0;TRUE5.选择data.csv文件的分割符号。要根据实际的.csv文件分割符号选择’或;。6.按按扭“ShowColumns〞显示DataSouce文件的列名称。类似excel表格中的列头名称。7.根据设置的DataSource生成测试用例。选择UnitTesting->选择函数isBetween->“Add〞,增加测试用例8.选择刚刚设置好的DataSource配置csv1。要在UseDataSouce前面打√。然后按“ShowColumns〞9.在输入、输出参数和返回值中选择对应的列。10.测试用例按DataSource文件自动生成。不同于一般情况下生成的测试用例七.桩函数设置对于单元测试,如果一个函数A调用了其他函数B〔桩函数〕,而函数B由于还没有实现或其他原因无法使用。要正确测试函数A,就必须对函数B〔桩函数〕进展设置特定的返回值供测试函数A使用1.翻开C++Test自带的Examples\stubs.cpp。2.选择stubs.cpp->鼠标右键->ReadSymbols解析stubs.cpp。从下面的界面可以看到mod2()函数调用了odd()函数。但是odd()函数没有实现。要对测试mod2的所以必须实现桩函数odd()。3.选择UnitTesting->选择StubConfiguration->选择odd()函数->鼠标右键->adduserdefinition。4.翻开stub设置界面。人为增加代码returnture;,让函数boolodd(int)返回trueorfalse〔下面返回值为true〕,保存修改后的桩函数。5.进展单元测试。翻开C++Test测试用例编辑界面。不管输入mod2()函数的输入参数是什么值,它的返回值应当是1,这是因为桩函数odd()返回值为true。八.导入导出测试用例当你测试某个单元,使用一些特殊或自己定义的测试用例。而其他人也同样测试此单元,你可以通过测试用例的Import和Export功能,导入或导出特定的测试用例。生成一个XML文件。导出测试用例:选择某个测试用例或某个函数->鼠标右键->选择Export(或从菜单File->Export)2.导入测试用例:选择某个函数->鼠标右键->选择Import(或从菜单File->Import)九.TestObjects当你测试某个类的一个单元时,使用一些特殊或自己定义的类构造对象。而测试一个类中的其他函数或其他人也需要此构造对象的时候,你可以通过TestObjects例的Import和Export功能,导入或导出特定的TestObjects。生成一个XML文件。一个TestObjects可能包含一个或多个成员变量,而且这些成员变量有特定的值。StoreObject:在图形化测试用例界面中->某个对象->鼠标右键->选择StoreObject)2.UseObject:在图形化测试用例界面中->某个对象->选择右边框中的Data对象的一个TestObject->鼠标右键->选择UseObject)测试用例的对象Data的值已经变成为TestObject的值导出TestObject:选择某个TestObject或某个对象->鼠标右键->选择Export(或从菜单File->Export)导入TestObject:选择某个对象->鼠标右键->选择Import(或从菜单File->Import)十.覆盖率分析可以显示工程、类、函数和单个测试用例的覆盖率。当分别选择工程、类、函数和单个测试用例的时候,在下边的CoverageStatisticTab中显示相应的覆盖率2.从菜单Coverage->CoverageSource可以选择覆盖率来源Any:包括自身函数和其他函数调用此函数产生的Own:函数测试用例产生的External:其他函数的测试用例调用此函数产生的3.覆盖率分:LineCoverage:语句覆盖BasicBlockCoverage:没有包含分支,控制流转的一段代码覆盖PathCoverage:一条从函数入口到出口的路径覆盖Decision(Branch)Coverage:分支覆盖ModifiedCondition/DecisionCoverage(MC/DC):嵌套boolean表达式的组合覆盖ConditionCoverage:boolean表达式中的各个boolean条件覆盖4.覆盖率显示颜色:绿色: >=80%黄色: >=40%同时<80%红色: <40%5.在源代码上显示覆盖率在左边的树状中选择文件,类或函数。然后选择菜单Coverage->ShowCoverage…翻开源文件覆盖率以下列图中第一列数字: 行标第二列数字: 代码被执行的此数目: 在当前行上有额外的覆盖率信息代码蓝色表示执行过十一.回归测试回归测试:先做单元测试->保存单元测试用例->修改源代码->用原来的测试用例测试修改后的代码1.翻开Example\cpptest_demo.cpp。按进展单元测试。结果如下2.修改源代码,并保存voidData::copyToBuffer(char*from){//argumentshouldbevalidated-exceptionthrownifNULLpassed//offbyoneerror-shoulduse'<'insteadof'<="constunsignedSZ=getSize();for(inti=0;i<=SZ;++i){*(_data+i)=*(from+i);}_data[SZ-1]='\0';}修改为voidData::copyToBuffer(char*from){//argumentshouldbevalidated-exceptionthrownifNULLpassed//offbyoneerror-shoulduse'<'insteadof'<="constunsignedSZ=getSize();if(NULL!=_data&&NULL!=from){for(inti=0;i<=SZ;++i){*(_data+i)=*(from+i);}_data[SZ-1]='\0'; } else {_data=NULL; }}用下面方法进展回归测试测试回归测试的结果如下〔不再重新生成测试用例,而是用原来的测试用例〕十二.其他设置1.设置TCMTCM是保存测试配置的服务器。C++TestArchitectEdition可以上传测试配置到TCM。C++TestProfessorEdition可以从TCM中取得测试配置。 菜单Settings->Customize…翻开设置界面。选择TeamConfigurationManager。在下面的界面中输入TCM所在的服务器,然后按“Check〞按扭。检测TCM设置是否正确。〔前提是要正确安装和运行TCM〕。2.设置GRSGRS是一个全局报告系统,它自动从C++Test.Jtest的测试工具中收集测试数据。并且按不同的角色,显示不同的内容。菜单Settings->Customize…翻开设置界面。选择Test->GroupReportingSystem->Settings…。在下面的界面中输入GRS所在的服务器,然后按“Check〞按扭。检测GRS设置是否正确〔前提是要正确安装和运行GRS〕。3.设置源代码编辑器和HTML浏览器菜单Settings->Customize…翻开设置界面。选择General。Editors选择查看源代码的程序。HTMLBrowser设置查看HTML测试结果的浏览器。第四章RuleWizard定制规则一.启动Rule

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论