源码工作室

目标:通俗的语言说出通俗的技术
  博客园  :: 首页  :: 新随笔  :: 联系 :: 管理

驯服野马(C++ Test的使用)

Posted on 2005-11-25 10:53  源码工作室  阅读(8639)  评论(13编辑  收藏  举报
C++ Test是什么
    C++ TestParasoft公司出品的一个针对C/C++源代码进行代码风格测试,自动化单元测试的工具。
C++ Test能给我们带来什么?
        1.         可以帮助我们检查程序的编码情况,判断是否严格按编码规范进行开发。
        2.         C/C++源代码进行分析,自动生成相应的测试用例,对函数进行初步的测试。
C++ 软件介绍
       C++ Test的使用比较简单。可以自己新建一个工程,也可以根据一个VC工程生成一个工程。可以对整个工程进行全面的测试,也可以一次只对一个C/C++源文件进行测试。

        

1

1.         Command1:静态分析当前的文件。主要是对代码的风格进行检查。

2.         Command2:动态分析当前的文件。主要是自动生成测试用例,对函数进行测试。

3.         Command3:静态分析和动态分析。

4.         Tab1           显示源代码。

5.         Tab2           显示静态分析结果。

6.         Tab3           显示动态分析结果。

7.         Tab4           显示测试进度。

8.         Message Area   显示一些具体的信息。 

C++ Test的使用

让我们先来看看一段很简单的程序。

       #include "windows.h"

       int Sum(int *pNum1, int *pNum2)
       {
              return *pNum1 + *pNum2;
       }
       int main()
       {
              int nSum;

              int Num1,Num2;
        
       Num1 = 1;
               
Num2 = 2;
               nSum = Sum(&Num1,&Num2);
               return 0;
}

       够简单了吧?并且也许你也写过这些代码。但这些代码书写的风格如何?存在隐患吗?那就用C++ Test分析一下。

       先来看看代码风格如何。在上图中就显示出很多,大致可归纳为如下几种:

1.         如果不允许改变参数的内容,声明参数为const

2.         不要使用tab作为空格。

3.         全局函数或变量前使用::操作符。

4.         所有int型的变量都要以“i”开头。

5.         变量声明,但没有初始化。

6.         Return的值要使用括号。 

              有六条?不太相信自己的眼睛吧?我想要有好的风格,这些建议是比较好的,但在实际工作中可能规定的太细了。要想把一匹野马驯服,还是要慢慢来的。

       C++ Test可以设置、编辑、创建静态编译的规则。就让我们来设置一下。

2

       打勾的就是选择的规则,在静态分析时就会使用这些规则。在图1Message Area中第一行显示表示所有int型的变量都要以“i”开头属于User-110规则。如果你想取消这条规则,那你在图2中找到这条规则,把勾去掉就行了,重新静态分析一下,这条提示就没有了。

       那么动态分析能做什么呢?我们先来看看结果。

      

                                            图3
     
先看第一行,这就是分析结果的总结。它表明的意思是总共产生了51条测试用例,37条测试成功,14条测试失败。

       先分析第一条失败的测试用例(AUTO_14_A0),以pNum1 = NULL pNum2=NULL为参数输入,测试失败,这就表明在函数中没有对参数的有效性进行判定,这就是程序的一个隐患。当然用户可以对测试用例进行删除和更改,还可以添加自己的测试用例,以弥补自动生成的用例。

       上面提到可以创建用户自己的代码规则,我这里也就不多说了,因为C++ Test自带的帮助已经说的很详细了。

总结

         使用了一下C++ Test,初步的个人感受有以下三点:

1.          对项目的代码统一还是很有帮助的,同时也能让编程者慢慢养成好的编码习惯。因为通过静态分析,能强制你书写规范的代码。

2.          对项目的一些简单函数进行测试,特别是边界的测试,排除一些基本的错误或代码的隐患。

最好在项目的一开始就使用C++ Test,边编写代码边检查,这样就不会欠下太多的债。在试用中发现,如果项目比较大时,最好不要直接对一个工程进行自动测试,而应按文件一个一个地测试,否则可能会导致程序死掉。