|
3#
楼主 |
发表于 2008-6-18 16:06:21
|
只看该作者
二、 C++test™能做什么?
1. 自动建立测试驱动和桩函数
C++test™自动建立一个测试驱动程序,其设计目标是极大化类的测试覆盖性和错误检测。 为类建立测试驱动,你只要简单地打开这个类,然后按Build Test键,C++test™将自动建立测试驱动程序。
另外,如果被测的方法需要调用当时还不存在或无法访问的函数,C++test™能够自动生成桩函数;这样能够测试与外部资源操作的交互作用和不包含任何隐藏的弱点。C++test™不是实际调用这些函数,而是调用桩函数并返回桩函数提供的值。如果你需要控制使用的返回值,你可以建立一个桩调用表,申明输入/输出的关系。
你还能加入用户定义的桩函数 例如,如果你要使用原始的函数,且该函数定义在不同的文件中,或者你想要仿真原始函数的行为,而用一个简单的函数替代它。
自动生成C/C++类的测试驱动程序和桩函数的能力是C++test™所独有的;只有C++test™能够自动测试C/C++类(一旦它能够被编译时),而不需要用户的任何干预。使得你能够尽快地自动检测代码错误,以最容易、最省钱和最快速的方法找到和修正它们。如果没有这样的自动化工具,大量的时间和资源消耗将失去单元测试的潜在好处和现实意义。
2. 自动静态测试(自动编程规范检查)
Pattern Matching(自动代码走查)
- 内置800多条业界有名的C/C++规则(大量规则来自于多家世界著名电信公司的编程规范,以及世界权威的编程规范资料),可实现自动的图形化代码编程规范检查;
- 使用RuleWizard图形化建立自定义代码规则的功能。客户可以很方便建立并保存一整套自己的代码编程规范(团队经验),从而保证团队经验不会因为人员变动而流失。与此同时避免了编程人员为了保存团队的代码编程规范而浪费大量时间人工编写script。
Bug Detective(Flow Analysis)
- Hot Spot技术(“热点”技术)。C++test™通过自带的“热点”包,用回溯的方式自动模拟运行程序中的执行路径,从而精确高速地找到程序存在问题的位置;例如,我们不允许程序中存在“/0”的运算部分,由此凡是程序中“/var”的部分都有可能因为var是0而造成程序逻辑错误(其中“/var”的型态就称为程序中的“热点”),此时,C++test™会自动搜索程序中所有“/var”的运算型态,并回溯运行程序中的执行路径,找到所有致使var变成0的路径,从而精确地找到程序中的错误。
3. 自动动态测试(白盒/黑盒/回归测试)
C++test™能自动建立测试环境,自动分析代码,自动生成测试用例并测试驱动程序和桩函数,自动执行白盒、黑盒和回归测试。
白盒测试(坚固性测试)
C++test™提供了一种有效并且高效的方法执行白盒测试。完全自动执行所有的白盒测试过程,自动生成和执行精心设计的测试用例。自动标记任何运行失败,并以一种简单的图示化结构显示。然后自动保存这些测试用例,能够方便地用于以后的回归测试。
由于C++test™能够自动生成桩函数,或允许你加入自己的桩函数,因此它能够测试引用外部对象的类。换句话说,C++test™能够运行任何一个或一组类,并自动生成和执行一组测试用例,它们被设计成能够发现尽可能多的错误。
C++test™允许你定制白盒测试用例的生成,和在什么层次上(项目、文件、类或方法)执行测试。
C++test™通过自动生成大量测试案例,向程序输送各种合法以及非法数据,考察程序是否会由于非法数据的输入而产生异常,导致程序不可控。从而检测程序的坚固性。
C++test™能够使用客户自己的数据源(Excel,SQL Server,Oracle等)作为测试用例的输入数据并自动生成测试用例进行测试。
C++test™能够全自动地生成被测单元的桩函数,从而使单元测试能在一个完全不依赖被测单元外部因素的基础上自动进行。
优点:
I. 单元测试不会由于被测单元在调用团队内其他未完成单元的情况下延迟或失败
II. 单元测试不会由于被测单元在无法调用其他团队,甚至其他公司的单元的情况下延迟或失败
III. 桩函数可以根据开发人员的实际需要,通过修改桩函数代码,改变桩函数的返回值,以满足代码测试的各种特殊需要。
自动生成测试报告,能以email或者html的格式提供给客户。
黑盒测试(功能性测试)
C++test™能根据程序功能定义好的每个入口,自动生成大量的功能性的测试用例,对程序进行功能测试,从而检测程序的功能。通过自动化黑盒测试的大部分操作,减轻了这类测试的负担。
帮助你设置每个测试用例的结果。
你可以简单地输入测试用例输入,然后让C++test™运行测试用例并自动确定实际的输出结果。如果结果正确,不需要其它动作。如果结果不正确,你可以输入预期的输出结果。这样比手工输入每个测试用例的结果更快更容易
自动生成测试用例的核心集。
C++test™自动设计了一组广谱的白盒测试用例。当使用这些测试用例在黑盒测试时,你只需简单地观察实际的输出结果,然后对任何不正确的结果输入预期的值。当你需要输入或修改测试用例时,你可以在C++test™自动生成的测试用例框架种简单地键入相应的值。这将显著地加快建立测试用例的过程。
在自动化建立黑盒测试用例的大多数步骤之外,C++test™完全自动化余下的黑盒测试步骤。
按一个键,你能够选择对项目、文件、类或方法运行一个或一组测试。C++test™然后自动执行所有的测试用例,报告所有的输入/输出关系,并标记任何实际输出与预期不一致或导致程序崩溃的测试目标。
C++test™能够使用客户自己的数据源(Excel,SQL Server,Oracle等)作为测试用例的输入数据并自动生成测试用例进行测试。(*注: C++test 6.7 支持Excel,SQL Server,Oracle数据源)
C++test™能在不修改客户源码的前提下,自动高速生成大量的具功能性的测试案例,并在最短时间内显著提升客户的测试覆盖率。
回归测试(代码的完整性测试)
C++test™完全自动化与回归测试有关的所有步骤。
C++test™首次测试某个类时,自动保存其测试和测试参数。当需要执行回归测试时,你可以打开合适的项目和文件,运行所有原来的白盒和黑盒测试用例,C++test™会自动运行完全相同的测试用例和测试参数,并告之发现的任何问题。这意味着你能够立即知道修改是否引入了任何错误。
4. 集成的单步调试
如果你选择在方法测试时捆绑调试器,C++test™将自动激活Microsoft Visual C++调试器,这样使得你在用C++test™测试任何方法时仍然能够方便地进行单步调式。
5. 预防错误
C++test™能够自动执行两种类型的编程标准。其内建的特性允许你自动执行动态的编程标准,如“总是对每个类执行单元测试”和“总是单步调试类”等。另外,假如你使用CodeWizard-Parasoft的自动化可定制编程标准强化工具,C++test™可以自动运行CodeWizard。
6. 桩函数设置
C++test™自动生成被测函数的桩函数。它可以按“自动生成桩函数”、“使用原函数作为桩函数”和“自定义桩函数”等三种方式生成桩函数。(*注: 针对C++test 6.7, 在C++test 7.1中以源码的形式提供桩函数)
7. 兼容CppUnit测试用例
在C++test 6.7中, C++test™可以生成CppUnit测试用例和图形化测试用例两种测试用例。在C++test 7.1中提供CppUnit测试用例。可以把CppUnit测试用例导入到C++test™中使用,也可以把C++test™自动生成的CppUnit格式测试用例输出到CppUnit环境下使用。
8. 覆盖率分析
为了帮助你测量当前使用的测试用例集合的有效性,并且给你提供达到尽可能高的覆盖性的信息, C++test™自动监视测试覆盖性。
C++test™实时跟踪测试覆盖性,然后建立一个综合测试覆盖性报告。覆盖性窗口图示化地说明了当前正在被执行的代码行,已执行过的行和每行的执行次数。因此,它不仅指出了一个代码行是否被测试过,而且说明了被测试的有多彻底。这些信息对于确定那些代码需要追加测试是非常有帮助的。
C++test™能自动显示被测代码的各种覆盖率状况,分为:
Line Coverage:语句覆盖
Basic Block Coverage:没有包含分支,控制流转的一段代码覆盖
Path Coverage:一条从函数入口到出口的路径覆盖
Decision (Branch) Coverage:分支覆盖
Modified Condition/Decision Coverage (MC/DC):MC/DC覆盖(符合NASA的DO178B标准)
Condition Coverage:条件覆盖
9. 导入导出测试用例
C++test™可以导入和导出一个函数、一个文件和整个工程的测试用例。我们甚至可以保存整个C++test™测试工程作为整个产品的一部分(就像项目文档一样是产品的一部分)。
10. RuleWizard定制规则
RuleWizard是个图形化的编程规范定制工具。可以很方便地修改现有规则,甚至可以在图形化的环境下完全建立一个新的自己的规则。
11. 嵌入式支持
C++test 支持嵌入式开发测试,帮助在主机环境中生成测试用例,然后将生成的测试用例连同用户的源码交叉编译生成目标机的可执行程序,在目标机直接进行测试,测试完成后,将测试报告文件传回主机进行分析。
三、 高级特性
C++test™的高级特性可以帮助我们快速地定制符合业务要求的测试用例,特别是满足特定要求的黑盒测试用例。它提供一些非常有效的功能来大幅度提高单元测试效率。简介如下:
1. 直接导入VC++等IDE工程或者通过makefile文件导入一个无集成开发环境(IDE)的工程。
2. Data Source:用excel文件,CSV文件或数据库的表作为测试用例的输入,自动生成一系列的有规律的测试用例。
3. Test Objects:使用一些特殊或定义好的值构造一个类对象,在其他地方使用此类的时候,就可以重复使用此对象。
四、 版本和License
1. C++test™ Professional Edition:
自动单元测试,自动编程规范检查和自动生成测试报告。
2. C++test™ Architect Edition:
自动单元测试,自动编程规范检查和自动生成测试报告;RuleWizard图形化定制规则。
3. C++test™ Server Edition:
自动单元测试,自动编程规范检查和自动生成测试报告;RuleWizard图形化定制规则;Command line支持命令行功能。
4. 可选License
静态分析源代码,BugDetective,单元测试,Rule Wizard,命令行模式,嵌入式支持。
五、 支持平台
1. Windows
Windows 2000 or Windows XP
Compiler: Microsoft® Visual C++® 6.0, .NET®, .NET ® 2003, or 2005; GCC 2.95.x, 3.2.x, 3.3.x, 3.4.x, or 4.x; Green Hills MULTI for Windows x86 Native v4.0.1
2.Solaris
Solaris 7, 8, 9 and an UltraSPARC processor
Compiler: GCC 2.95x, 3.2.x, 3.3.x, 3.4.x, or 4.0.x; Sun® C++ 5.3® (Sun Forte C++ 6 Update 2), Sun® C++ 5.5® (Sun ONE Studio 8), or Sun® C++ 5.6® (Sun ONE Studio 9); Green Hills MULTI for SPARC Solaris Native v4.0.1
3.Linux
Linux Red Hat kernel 2.4 (with System V IPC) or higher with glibc 2.2 or higher and an x86-compatible processor
Compiler: GCC 2.95x, 3.2.x, 3.3.x, 3.4.x , or 4.0.x
六、 总结
通过执行单元测试,你能够有效地防止许多错误的出现,尽早检测出已存在的错误,并且比其它测试手段和技术更有效 影响C/C++ 开发人员执行单元测试的主要障碍是需要消耗大量的时间的资源,目前的一些单元测试工具仍然存在着这样的问题。C++test™的推出克服了这一障碍,做到了开发人员总是希望却不敢相信的事情:自动化C/C++单元测试。
***************************
希望对大家有用!
*************************** |
|