软件测试之c++test v7.1基础学习经验谈 软件测试
正式接触c++test v7.1快一个月了,虽然在使用过程中还会遇到一些这样那样的问题,但这并不影响我在未来的几天内对c++test做一个完整的盘点。
我在过去几年的工作经历中接触过很多代码测试工具,如PRQA公司的静态分析工具QAC/C++、(IBM)Telelogic公司的Logiscope、LDRA公司的Testbed等等。根据我对这些类似工具的一些经验,在本次盘点中,我会重点强调我个人认为的c++test的“亮点”。当然,任何东东都是“仁者见仁,智者见智”,如果您有什么异议,欢迎留言。
下面我将就c++test v7.1的“亮点”,说一下我的看法。
1 “站在巨人的肩上”——用户界面及其扩展性
任何人对某个软件的第一印象一定是其UI(用户界面)。c++test v7.1在这方面有先天的优势,因为其“站在巨人的肩上”。
我们都知道,Eclipse是一个开源的、目前最流行的IDE框架,而c++test v7.1恰恰是基于Eclipse开发框架内,所以其天然的继承了Eclipse的所有优点,如界面友好、操作简单、扩展性好,可以与多种版本管理工具无缝集成等。
总之,在整个界面框架方面,c++tes很聪明,占了相当大的“便宜”。
2 编程规则检查
c++test v7.1自带了830条c/c++编程规则,虽然在规则的绝对数量上比不过QAC/C++的一千多条,但c++test的规则更实用,更容易维护和管理,主要体现在两个方面:
×规则分组明确
c++test的830条编程规则被划分到不同类别的几个组中,如
QT Best Practices 组包含的是 由Qt (Trolltech)倡导并经由实践验证的最佳代码规范。使用QT平台编程的项目可以直接选择该组的规则即可;
针对汽车电子行业的编程,c++test提供了MISRA及MISRA 2004两个组。MISRA全称是Motor Industry Software Reliability Association(汽车行业软件可靠性协会),其在1998年和2004年分别发表过两个针对汽车电子软件C编程的规范,即MISRA和MISRA-c:2004。c++test已经内建了这两个规范的支持,汽车行业的项目可以直接选择这两组。
另外c++test还有STL Best Practices组(针对STL)、Security组(针对安全)、Portability(针对可移植性)、Name Conventions(针对命名规范)等等,根据不同的客户的平台和关注点,客户可以很容易选择自己需要的规范,在这一点上,c++test比其他工具更方便。
×不同的严重等级
c++test中的八百多条规则并不是完全“平等”的,按照严重等级,划分为5个不同的级别,level 1-5分别为严重违例、可能严重违例、违例、可能违例、提醒,level 1最严重,level 5最轻微。按照严重级别选择适合自己的规则更加容易。关于严重等级的详细情况,请参考http://www.51testing.com/?10851/action_viewspace_itemid_82575.html
3 更容易的添加新的规则
c++test的RuleWizard支持用户使用图形方式自定义自己的编码规则。相比于QAC/C++使用Perl手动编程新规则、Logiscope使用TCL手动编程新规则,c++test的添加新规则的功能是最方便的。
RuleWizard使用图形化的规范编辑器,直接用鼠标点击、拖拽就可以完成规则的编程,相当的方便。
而且相比于其他工具的user guide(用户手册)中都没有关于如何编程新规则的详细内容,导致这些工具虽说有这个功能,但基本上除了厂商自己大部分客户很难用起来,c++test提供了图形化编程新规则的详细教程,通过14个从浅入深的例子,用户可以很容易上手,添加自己的规则。
4 创新的BugDetective
BugDetective是Parasoft的专利技术,借助于改技术,程序员可以在静态阶段(编码及单元测试)就可以发现以往只有在动态测试(代码运行)中才能发现的运行时错误,如内存/资源泄漏、缓冲区溢出、除数为零、指针的非法引用等。
BugDetective更智能,可以自动分析代码逻辑,虚拟执行代码逻辑路径,从而发现并准确定位运行时错误。
BugDetective更精确,它可以达到100%的测试覆盖,发现更多的错误,更难得是,它100%没有误报,即它提示的错误肯定是代码的BUG。
BugDetective更全面,它可以跨文件、跨类,跨包,支持对整个系统进行测试,找到80%以上的运行时错误。
BugDetective更快速,它不需要测试用例,不需要代码执行,不需要下载到目标机(针对嵌入式开发),大大提高效率。
BugDetective是Parasoft创新的功能,该功能在其他工具中都是没有的,所以该功能是c++test中需要特定的license保护。
c++test静态分析部分的“亮点”就先盘点到这里,在下文中我将就c++test的动态单元测试部分盘点,欢迎继续关注。