Parasoft软件测试自动化工具C++Test使用介绍C++test的概况C++Test的功能C++test支持编译器C++test的团队开发解决方案C++test的静态测试单元测试回归测试覆盖率测试嵌入式系统测试议程美国Parasoft公司成立于1987总部在美国蒙罗维亚全球15个office技术创新:在美国软件技术领域拥有15项专利目前为止,全球客户数量超过10,000+代码撰写规范检查单元测试集成测试运行测试功能测试回归测试代码撰写规范检查单元测试集成测试功能测试回归测试代码撰写规范检查单元测试集成测试功能测试回归测试自动搜寻如内存泄漏,指针异常等众多内存使用上的错误代码撰写规范检查运行测试功能测试回归测试压力/负载测试代码撰写规范检查单元测试运行测试功能测试回归测试压力/负载测试监控开发流程及决策等支援系統Parasoft测试软件功能概要集成测试用户自定义测试用例软件质量投资回报率回归测试/覆盖率分析自动代码撰写规范检查代码撰写规范自动“坚固性”测试自动生成测试用例%$#@!“功能性”单元测试用户自定义测试用例BugDetective静态测试动态测试C++test为整个软件生命周期提供即时测试返回C++Test的功能根据用户选定的编码规范对代码做静态分析提供一个图形化的RuleWizard编辑器来定制用户编码规则对代码路径做静态模拟以定位潜在的运行时错误提供图形化接口和动态跟踪使代码走查自动化自动生成并执行单元和组件级的测试灵活的桩函数机制完全支持回归测试代码高亮显示的代码覆盖率分析使用图形或命令行方式进行全面团队部署返回运行平台WindowsNT/2000/2003/XP/VistaLinuxkernel2.4or2.6orhigherwithglibc2.2orhigherandanx86-compatibleprocessorLinuxkernel2.6orhigherwithglibc2.3orhigherandanx86_64-compatibleprocessor(32-bitcompatibilitypackageisrequired)Solaris7,8,9,10andanUltraSPARCProcessor支持IDE插件(Plug-in)Eclipse3.1,3.2(32-bit),3.3(32-bit)VisualStudio.NET2003/2005/2008WindRiverWorkbench2.6(forembeddeddevelopment)ARMRVDS3.x(forembeddeddevelopment)C++test主要支持的环境宿主编译器Windows:MicrosoftVisualC++6.0,.NET,.NET2003,2005,2008;GCC2.95.x,3.2.x,3.3.x,3.4.x;GreenHillsMULTIforWindowsx86Nativev4.0.xLinux(x86processor):GCC2.95.x,3.2.x,3.3.x,3.4.x,4.0.x,4.1.xLinux(x86_64processor):GCC3.4.x,4.0.x,4.1.xSolaris:GCC2.95.x,3.2.x,3.3.x,3.4.x,4.0.x,4.1.x,SunC++5.3(SunForteC++6Update2),SunC++5.5(SunONEStudio8),SunC++5.6(SunONEStudio9),SunC++5.7(SunONEStudio10)SunC++5.8(SunONEStudio11);GreenHillsMULTIforSPARCSolarisNativev4.0.xC++test主要支持的编译器目标硬件编译器WindRiver:EGCS-2.90;GCC-2.96,GCC3.4.xandDIAB5.4+GCC2.95.x-4.1.xcross-compilersGreenHills4.0.xARM:ADS1.2,RVCT3.0,RVCT3.1MicrosoftVisualC++8.0/9.0ForWindowsMobile5.0/6.0MicrosoftEmbededC++4.0C++test主要支持的编译器返回C++test的团队开发解决方案在所有团队开发人员的机器上安装和许可C++testProfessionalEdition在架构设计师或开发领导的机器上安装和许可C++testArchitectEdition在团队服务器上安装和许可C++testServerEditionParasoftGRS(组报告系统)是一种决策支持系统,使得软件开发流程具有可视性和受控性ParasoftTCM(团队配置管理器)是一款软件,用来管理TestConfigurations(团队配置)、规则、规则映射、Suppressions(抑制)、跳过的资源和结果在团队范围的分配和共享。所有的团队C++test机器都应连接到TCM(团队配置管理器),以实现对测试做法的集中化管理和应用将所有C++test安装连接至您的源码控制器存储库C++test目前支持以下源码控制器系统团队开发人员Professional架构设计师/领导Architect团队服务器ServerCVSSubversion(SVN)1.2.x,1.3.x,or1.4xClearCase2003.06.00StarTeam2005CMSynergy6.4Perforce2006.2VisualSourceSafe6.0,2005SCM源码控制系统编码&测试TCM团队开发配置系统测试结果可自定义时间的测试构建服务器生成全局报告可视化全局决策支持报告专业版服务器版本(批处理模式)架构师版团队代码撰写标准测试结果软件工程师架构师或项目管理者Parasoft团队协同开发管理返回C++Test静态测试在c++Test中进行代码静态测试,主要使用到以下几个功能模块自动代码撰写规范检查自定义代码规范RuleWizardBugdetective检测RunTime错误→C++Test静态测试C++Test提供了1000多条的内建规则,这些编程建议能够帮助用户提高代码的可维护性和可重用性.RuleWizard功能满足用户自定义编码规范的需求Bugdetective是PARASOFT的专利技术,用户在不运行程序的情况下就能够查找出大多数运行时错误,100%没有误报C++Test静态测试ScottMeyer所著的《EffectiveC++》和《MoreEffectiveC++》Sutter和Alexandrescu倡导的C++代码规范Ellemtel倡导的代码规范面向对象并经由实践验证的最佳代码规范面向移植性代码规范(如从32位移植到64位)面向命名规则代码规范(完全可用户自定义的)MISRA代码规范(汽车电子行业规范)由Qt(Trolltech)倡导并经由实践验证的最佳代码规范自动代码撰写规范检查Bugdetective用户可以按照实际的规则需求自定义相应的编码规则图形化方式在不运行程序的情况下检测出运行时错误没有误报自定义代码规范RuleWizardC++Test静态测试Demo静态代码规则检查/Bugdetective模拟代码执行创建/导入被测试工程工程设置测试配置执行测试审查测试结果修正代码错误/缺陷返回大椭圆:应用程序小椭圆:函数/对象箭头:用户输入红星:潜在的错误为什么需要进行单元测试单元测试能帮助客户更准更全面地找到错误,显著提高软件质量单元测试能够在改善软件质量的同时大量削减开发时间和成本C++test提供全球最先进的自动化单元测试上图显示了一个包含许多函数的应用程序的测试模型集成测试•不断修改输入•依赖函数/类间的相互作用•通过运行失败发现错误•耗费大量时间•不准确•不全面•修改错误的费用•拖延项目的时间•引发新的错误单元测试•对程序最小元素进行测试•简单•高速•准确•全面•及时发现和修改错误•不会引发新的错误14523项目代码C++test如何帮助您进行自动化单元测试模块,数据库,接口,硬件等外部依赖待测模块452测试函数3桩函数执行桩函数测试用例C++test如何帮助您进行自动化单元测试项目代码模块,数据库,接口,硬件等外部依赖C++test如何帮助您进行自动化单元测试待测单元452测试函数3桩函数桩函数执行桩函数执行测试用例项目代码模块,数据库,接口,硬件等外部依赖C++test如何帮助您进行自动化单元测试可对单一文件也可对批量文件进行自动单元测试可对孤立文件或存在逻辑调用关系的文件进行自动单元测试自动为最小单元直到完整系统生成测试用例包括:自动生成包含测试用例的测试打包套件自动生成桩函数取代外部依赖自动生成激发测试用例的测试构件自动运行测试用例并找到错误支持用户通过其他工具建立的自定义测试用例支持六种测试覆盖率分析自动进行针对单元直到系统的回归测试C++test进行自动化单元测试DemoUnitTesting(使用自动生成的TestCase)创建/导入被测试工程工程设置测试配置生成测试用例执行测试用例审查测试结果修正代码错误/缺陷注:基于Cal_Coverage例程C++test进行自动化单元测试DemoUnitTesting(手动添加TestCase)创建/导入被测试工程工程设置测试配置生成测试用例执行测试用例添加测试用例审查测试结果修正代码错误/缺陷注:基于Cal_Coverage例程C++test进行自动化单元测试DemoUnitTesting(使用数据源提供TestCaseInput/Output)创建/导入被测试工程(Plug-In版本不用)工程设置测试配置添加测试用例数据源生成测试用例用数据源更新测试用例执行测试用例审查测试结果修正代码错误/缺陷注:基于cpptestdemo例程返回回归测试在我们的软件开发过程中,只要软件发生了改动,不管是功能的变化、模块的增加或者bug的修改,都会对现有的软件造成影响,也就可能带来问题.当软件的bug被发现提交后,有可能发生以下几种情况:追踪系统不够完善,该bug被疏忽没有得到修改开发对于bug的理解不同,造成修改后的结果与期望仍不一致理解不够深入,只修改了bug描述的表面现象,深层原因没有找到bug被修改,但没有考虑到与此问题关联的其他模块本bug被修改,之前被本bug掩盖的其他错误得以显现出来由此我们可以看出进行回归测试的必要性,但在每一次回归测试中遍历所有的用例又是不现实的,特别是在测试后期,所以选择正确的回归测试策略来改进回归测试的效率是非常有意义的.第一阶段:C++test如何帮助您进行自动化回归测试第二阶段:C++test回归测试Demo回归测试(手动添加TestCase)创建/导入被测试工程工程设置测试配置生成测试用例执行测试用例修改被测试代码(模拟一个回归测试环境)执行测试用例审查测试结果修正代码错误/缺陷注:基于Cal_Coverage例程返回覆盖率测试代码覆盖率分析是在程序中寻找没有被用例测过的地方的流程;创建新的测试用例来增加覆盖率的流程;决定代码覆盖定量的量度方法,同时也是一种间接度量质量的方法的过程。覆盖分析是一种测试的技术,但你不应该依赖于它的单独使用。使用覆盖率分析,实际上是确保你的测试的质量,进而确保实际产品的质量。覆盖率分析有着它的优点和缺点。你需要选择采用哪些度量的方法。你要设定一个最低的覆盖率来决定什么时候停止分析覆盖。覆盖分析有时候也叫“测试覆盖分析”,这两种术语是同义的。在学术界里,术语“测试覆盖”使用得比较多,在测试业界里的话,使用得多的就是术语“代码覆盖”。同样的