1、ParasoftC+Test操作手册Parasoft-C+Test操作手册(总73页)C+Test介绍修订历史记录日期版本说明作者C+Test 6.0C+Test原理,使用介绍,RuleWizard定制规则第一章 C+Test 特性C+Test是一个C/C+单元测试工具,自动测试任何C/C+类、函数或部件,而不需要您编写一个测试用例、测试驱动程序或桩调用。C+Test能够自动测试代码构造(白盒测试)、测试代码的功能性(黑盒测试)和维护代码的完整性(回归测试)。C+Test是一个易于使用的产品,能够适应任何开发生命周期。通过将C+Test集成到开发过程中,您能够有效地防止软件错误,提高代码的稳定
2、性,并自动化单元测试技术(这是极端编程过程的基础)。 特性即时测试类/函数 支持极端编程模式下的代码测试 自动建立类/函数的测试驱动程序和桩调用 自动建立和执行类/函数的测试用例 提供快速加入和执行说明和功能性测试的框架执行自动回归测试 执行部件测试(COM)优点帮助您立即验证类功能性和构造 将您从编写测试驱动程序、桩和测试用例的繁重工作中解放出来 自动化极端编程和其它编程模式的单元测试过程 使得您能够实现和执行100%的代码覆盖性 支持紧急和短线开发项目 降低调试和维护时间 改善应用的可靠性 防止简单错误的扩大 系统要求最小系统要求:Pentium class processor 800MH
3、z512 MB RAM (1024MB is recommended)150 MB free disk space for C+Test installation其他要求:保留足够的磁盘空间供测试使用。支持平台Windows Supported Platforms: Windows NT, 2000, XP Supported Compilers: Microsoft Visual C+ 6.0, .NET, or .NET 2003, GNU GCC 2.95x or 3.x. Cygwin GCC 2.95.x, 3.2.x, 3.3.xMingw GCC 2.95.x, 3.2.x, 3
4、.3.xUNIX Supported Platforms:Linux kernel 2.4 (with System V IPC), glibc 2.2, Pentium processorSolaris 7, 8, 9, UltraSPARC processor Supported Compilers:GNU GCC 3.2.x,GNU GCC 3.3.x,GNU GCC 3.4.xSun C+ 5.3 (Sun Forte C+ 6 Update 2 for SPARC Solaris), Sun C+ 5.5 (Sun ONE Studio 8)第二章 C+Test 使用一安装说明1Wi
5、ndows下安装打开安装源程序,同普通的windows应用程序一样,选择安装路径,完成安装。2申请License1申请License从桌面或者菜单打开C+Test,将弹出类似于下面的一个要求输入密码的窗口: 按“是(Y)” 进入。这里的machine ID就是C+Test和主机绑定的信息。或在进入C+Test主界面后,在菜单Help - License 可以同样打开下面的界面。这个machine ID需交给Parasoft代理商,来申请license。而由于license的种类不同,可以分为local license(单机版)和net license(网络版)。2输入License将相应的li
6、cense和expire date粘贴到相应的位置,如果信息正确,系统将提示license ok。如果信息不正确,系统将提示wrong license。输入正确的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下安装及启动1建议安装linux red hat 9.0及以上版本,建议安装开发工作站,
7、同时需要图形界面支持2在图形界面下建立组gtest(或其他)3在图形界面下建立用户utest(或其他),并且属于组gtest。utest主目录是/home/utest。用bash。4在/home/utest/下建立目录cpptest,并且拷贝cpptest_linux_6.0.1.4.sh到cpptest目录下5在图形界面下用utest用户登录6在Terminal tool中进入/home/utest/cpptest目录7执行安装cpptest_linux_6.0.1.4.sh(或./ cpptest_linux_6.0.1.4.sh)。安装程序是脚本安装程序,没有图形安装界面。C+Test将
8、安装在/home/utest/cpptest目录下8进入/home/utest目录下。在.bash_profile文件中给环境变量PATH行后面增加 :/home/utest/cpptest/bin 。然后保存9用户utest重新在图形界面下登录10在Terminal tool中输入c+test(或在图形界面下执行/home/utest/cpptest/bin/c+test程序)。可以启动c+test四C+Test快速测试1打开被测文件(1)打开C+Test,选择file/open file,选择C+Test安装目录下examples/cpptest_demo.cpp,这个cpp文件将出现在当
9、前的project下。(2)在当前project下,右击cpptest_demo.cpp,选择read symbols(读入符号表),此时C+Test将parse(剖析)这个源程序,分析出此文件的文件结构。在源代码窗口可以看到我们所测试的代码,界面非常友好,当选择代码时,被选择的代码也会以蓝色块的形式出现。并且,当我们进行了静态分析和动态分析时,这里我们也可以非常直观的观测到静态分析和动态分析的结果。代码左侧的红色精灵帽表示静态分析时出现问题的所在,黄色小齿轮则表示动态分析时出现问题的所在。点击相应的地方,会出现对问题的一个简单描述。2静态测试在向右三角型旁边的下拉箭头,选择内置的编码规则项目
10、。C+Test将自动完成对源代码的静态测试,也就是我们所说的代码走查,走查所用到的规范可以在静态测试标签的rule manage下看到。在静态分析栏中的Results标签是对静态分析结果的一个罗列。每个红色精灵帽都代表一种违规行为,而它旁边的数字则代表测试代码中出现这种违规的次数。紧接着的字母表明违规行为的严重级别。再后面就是对这条规范的大致描述以及规则编号。而标签Rules Manager则是对这些规则的管理,当用户需要使用某条规则的时候,只需要在相应规则左侧的方框内打上勾就表明选择了该条规则。而当用户不需要某条规则检查的时候,只需要去掉相应规则的勾就可以了。下图,右侧就是静态测试(代码走查
11、)的结果。每条违规信息包括对违规的描述,该错误共发生的次数以及相对应的具体位置。而下面的rule desription则是对这条规则的一个比较详细的描述。顶层的文件夹后面的“I=4 PV=1 V=33”描述的是整个的对违规信息的统计。I表示information,通知行为PV表示possible violation,可能的违规行为V表示violation,违规行为PSV表示possible servere violation,可能的严重违规行为SV表示servere violation,严重违规行为。 3动态测试在向右三角型旁边的下拉箭头,选择内置的白盒测试。C+Test将自动完成代码的动态测
12、试。可以从各个层面上(单个测试用例,整个函数的测试用例,整个代码的测试用例)去看相对应代码的覆盖率。操作的时候,只需要右击相应的层次(例如一个测试用例),选择show coverage,就可以看到对应的覆盖率了。在动态测试中的Test Case/Results栏中,主要是对测试用例的一个总体管理。在这里,所有的测试用例的状态都一目了然,绿色表示成功,红色表示失败。用户可以自己添加或修改测试用例。而Stub Tables栏则是对桩函数的管理,Suppressions则是对测试对象的一个管理。例如,上面的Data类有很多个成员函数,当用户并不想全部都测,而只是测其中的几个。这个时候就可以通过Sup
13、pressions进行选择。除此之外,上面的Tree filter还提供强大的滤波器功能,可以让用户更好的关注他们的焦点,例如只看最近一次测试的失败用例。下图,右侧就是对动态测试的一个整体描绘。列举了所有的测试用例,并且用颜色来区分成功和失败的测试用例,绿色代表成功通过了的测试用例,而红色代表没有通过也就是失败了的测试用例,对于每个错误的测试用例都有一个大致的描述。每个测试用例或者各个节点上都做到了相应的覆盖率信息,包括了LC(语句覆盖),BBC(块覆盖),PC(路径覆盖),DC(决策覆盖),MCDC(多条件决策覆盖)以及CC(条件覆盖)。此外,上面的tree filter过滤器功能可以帮助用
14、户迅速察看到自己关心的焦点或错误。4生成报表选择file/generate report,根据对报表的需求,选择适当的报表内容种类(例如dynamic analysis1,coverage statistic1)。生成一个HTML格式的报表。第三章 C+Test高级功能一导入VC+工程(Import VC+ project)C+Test 6.0可以直接导入VC+ 6.0 project,VC+ .Net project和VC+ .Net2003 project文件。菜单File - New Project 出现下面的界面1选择Import VC+ 6.0 project 2输入测试工程文件名称
15、(project name)3选择VC+ 6.0工程文件.dsp(VC+ 6.0 project files)二选择编译器(project configuration)如果你同时安装了VC+6.0 和VC+.Net的话。你必须选择你需要的编译器。否则C+Test6.0会使用默认的编译器。菜单 Project - Project Configurations 选择VC+6.0为当前测试工程的编译器(下面界面默认的C+Test使用编译器是VC+.Net2003)三设置测试配置(test configuration )C+Test 6.0可以选择不同的测试配置选项对一个工程、文件进行测试。测试配置:
16、是一系列编码规则、单元测试用例生成规则的组合,决定要测试什么编码规则,如何生成测试用例。菜单 Tests - Test Configurations 打开测试配置界面。1新建一个测试配置:选择project - 鼠标右键 New Configuration2Analysis Flow 决定是否要做编码规则测试和单元测试3Analysis Settings 包括Coding Standards和Unit Testing。其中Coding Standards 选择需要的规则。打选择规则4Unit Testing 中Types设置不同数据类型在生成测试用例的取值,可以增加某种数据类型在生成测试用例时
17、的取值。比如char 类型可以增加特定的字符A5设置一个被测单元自动生成测试用例的最大数目(默认是50个)6设置新增加的测试设置为活动7用新增加测试设置进行测试。在向右三角型旁边的下拉箭头,选择新增加的测试设置。四编码规则测试结果分析下图,右侧就是静态测试(代码走查)的结果。I表示information,通知行为PV表示possible violation,可能的违规行为V表示violation,违规行为PSV表示possible servere violation,可能的严重违规行为SV表示servere violation,严重违规行为。1顶层的文件夹后面的“I=4 PV=1 V=33”描
18、述的是整个的对违规信息的统计。2下面的每个小红帽 表示一条违例规则。前面的数字表示违反次数,紧接着是严重程度,然后是此规则的简单描述。每条违规信息包括对违规的描述,该错误共发生的次数以及相对应的具体位置。而下面的rule desription则是对这条规则的一个比较详细的描述。3Tree filter:可以按严重程度分类显示。4Coding Standards的Suppressions可以按严重程度,类,文件等条件决定是否要显示测试结果。下图中对Violation类型的编码规则测试结果不显示5不显示Violation类型的测试结果五测试用例分析用C+Test做单元测试,最重要的步骤是分析测试用
19、例。如果这步没有做好,你会觉得C+Test不适合你们;如果做好了,你的单元测试就做好了。用C+Test做单元测试,重点在分析测试用例,而不是设计测试用例。C+Test自动生成的测试用例是白盒测试用例。如果你要用C+Test做黑盒测试,你需要手工增加黑盒测试用例或修改白盒测试用例使之成为黑盒测试用例,要求:要准确地分析测试用例,必须对被测函数有清楚的了解。1选择Examplescomplex.cpp文件2选择工具条中向右三角型进行进行单元测试3选择一个测试用例,然后按“Edit”按扭进入 测试用例编辑界面4分析测试用例Arguments:测试前的函数的参数值Arguments Post:测试后的
20、函数的参数值Return:测试前设定的函数的返回值Pre-Conditions This:测试前对象构造值,特别是构造对象时给成员变量设定的的值Pre-Conditions Externals:测试前全局变量值Post-Conditions This:测试后对象构造值,特别是构造对象时给成员变量设定的的值Post-Conditions Externals:测试后全局变量值Execution Result:预期的测试结果。是正常返回、Assert失败,还是各种异常返回A) 首先让我们先看看源代码/complex.cpp/ This example illustrates how C+Test w
21、orks with overloaded operators and constructorsclass Complex public: Complex(float re = 0, float im = 0) : _re(re), _im(im) Complex operator+(const Complex&); Complex operator-(const Complex&);private: float _re; float _im;Complex Complex:operator+(const Complex& c) return Complex(this-_re + c._re,
22、this-_im + c._im);Complex Complex:operator-(const Complex& c) return Complex(this-_re - c._re, this-_im - c._im);Complex testComplexOperators(Complex& a, Complex& b) Complex zero; Complex neg_a = zero - a; Complex neg_a_sum_b = neg_a - b; return a + b + neg_a_sum_b; /this function should always retu
23、rn complex zero valueB)我们的测试用例是针对 函数Complex Complex:operator+(const Complex& c)的Arguments: 表示函数参数是一个Complex& c,这个参数对象c构造的时候给c成员变量 float _re = 1.0;float _im = -1.0Arguments Post: 表示函数测试后。这个参数对象c在测试后c成员变量 float _re = 1;float _im = -1Return:表示返回对象Complex,它的值应当 成员变量float _re = 自身的成员变量_re + 输入对象c的成员变量_re
24、(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 = -2Execution Result:表示测试结束是Normal Return。正常结束,而不是异常结束C)上面测试用例测试后的结果是失败的 预期的结果是(_r
25、e=1,_im=0)。实际的结果是(_re=3,_im=-3)5调试测试用例选择某个测试用例 - 鼠标右键 - Debug Selected Test Case(s) - 打开VC+.Net 2003(默认编译器)调试界面。注意:对VC+6.0好象无法进行调试。六Data Source如果一个函数有一系列相似的输入,比如协议类函数。这个时候可以把这一系列相似的输入保存成一个excel文件,CSV文件或数据库的表。我们称之为Data Source。这样当C+Test进行单元测试的时候,可以根据Data Source 的内容生成一系列的测试用例。1打开C+Test 安装目录ExamplesData
26、Sourcedsexample.cpp2菜单 project - project configurations - 打开工程配置界面。选择Data Sources。按“Add”按扭增加Data Source文件。3输入Data Source名称4选择Data Source类型为 CSV Data Source 4选择C+Test 安装目录ExamplesDataSource data.csv 文件。/data.csv 的内容LOWER;UPPER;TESTED;ANSWER3;8;5;TRUE3;8;1;FALSE4;9;10;FALSE2;3;3;FALSE2;3;2;FALSE-1;1;0
27、;TRUE5选择data.csv文件的分割符号。要根据实际的.csv文件分割符号选择 或; 。6按按扭“Show Columns”显示Data Souce文件 的列名称。类似excel表格中的列头名称。7根据设置的Data Source 生成测试用例。选择Unit Testing - 选择函数 isBetween - “Add”,增加测试用例8选择刚才设置好的Data Source配置 csv1。要在Use Data Souce前面打。然后按“Show Columns”9在输入、输出参数和返回值中选择对应的列。10测试用例按Data Source文件自动生成。不同于一般情况下生成的测试用例七桩
28、函数设置对于单元测试,如果一个函数A调用了其他函数B(桩函数),而函数B由于还没有实现或其他原因无法使用。要正确测试函数A,就必须对函数B(桩函数)进行设置特定的返回值供测试函数A使用1打开C+Test自带的Examples stubs.cpp。2选择stubs.cpp - 鼠标右键 - Read Symbols解析stubs.cpp。 从下面的界面可以看到mod2()函数调用了odd()函数。但是odd()函数没有实现。要对测试mod2的所以必须实现桩函数odd()。3选择 Unit Testing - 选择Stub Configuration - 选择odd()函数 - 鼠标右键 - ad
29、d user definition。4打开stub 设置界面。人为增加代码 return ture;,让函数 bool odd(int)返回true or false(下面返回值为true),保存修改后的桩函数。5进行单元测试。打开C+Test测试用例编辑界面。不论输入mod2()函数的输入参数是什么值,它的返回值应当是1,这是因为桩函数odd()返回值为true。八导入导出测试用例当你测试某个单元,使用一些特殊或自己定义的测试用例。而其他人也同样测试此单元,你可以通过测试用例的Import和Export功能,导入或导出特定的测试用例。生成一个XML文件。1导出测试用例:选择某个测试用例或某个
30、函数 - 鼠标右键 - 选择 Export (或从菜单File - Export)2导入测试用例:选择某个函数 - 鼠标右键 - 选择 Import(或从菜单File - Import)九Test Objects当你测试某个类的一个单元时,使用一些特殊或自己定义的类构造对象。而测试一个类中的其他函数或其他人也需要此构造对象的时候,你可以通过Test Objects例的Import和Export功能,导入或导出特定的Test Objects。生成一个XML文件。一个Test Objects可能包含一个或多个成员变量,而且这些成员变量有特定的值。1Store Object:在图形化测试用例界面中 - 某个对象 - 鼠标右键 -选择 Store Object)2Use Object:在图形化测试用例界面中 - 某个对象 - 选
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1