banner cpptest
首页 > C++test > C++test使用FAQ

C++test使用FAQ

2010年8月3日 浏览: 

本文原载于www.mytestlife.com,任何转载均需保留源地址。

C++test FAQ

C++test使用过程中常见问题24个FAQ问答,内容包括:

1. 如何获取Technical Support文件?

2. 使用suppressions (抑制)时,能不能只执行一次suppressions就将该工程该规则引起的违例都抑制掉(不通过配置文件来修改该规则),而不用一个一个的执行suppressions?

3. 对源码的某个函数进行修改后,想重新生成测试用例该怎么操作?直接点“Generate unit tests”仍然是原来的测试用例。

4. 为什么很多工程运行完后,只有行覆盖率呢?

5. 如何设置Compiler?

6. cpptestcli 命令行使用?

7.对于使用makefile的工程如何导入?如何通过BDF导入工程?

8. 构建运行库时找不到make.exe,如何办?

9. Eclipse报告out of memory 错误,如何解决?

10. 如何查看 C++test详细版本信息?

11. RVDS 3.1项目测试时提示找不到目标板怎么办?

12. 请问C++test支持的编译器类型?

13. C++test针对嵌入式Linux的单元测试,将交叉编译构建的可执行文件加载到目标机执行,报告如下错误“cannot find -lcpptestruntime Process exited with code: 1 (error).”,如何处理?

14. 静态分析时如何根据规则危险等级进行选择

15. 如何打开rulewizard模块

16. 如何参考已有静态分析规则

17. 如何切换不同的覆盖率显示

18. 在coverage,c++test或test case explorer面板消失的时候,如何找回

19. 如何获得machine-id及安装license

20. 生成测试用例之后,如何选择性的运行所有测试用例中的几个测试用例

21. 如何获得测试报告

22. 如何获得不同格式的测试报告

23. 如何寻找帮助信息

24. 如何支持vc 2003,2005,2008工程

 
C++test Question 如何获取Technical Support文件?
 
C++test Answer

当使用C++test中发生诸如parse error, linker error之类的错误时,可以启用相关选项,以便C++test能够生成Technical Support文件。相关设置如下:打开菜单C++test -> preference…弹出如下窗口:

选择Console->High,然后选择Technical Support,启用Enable auto-creation of support archives,

C++test configuration files, Environmental data, Project properties, Test run data,

General application logs, Enable verbose logging,如下图所示:

同时你可以点击浏览指定生产technical support文件存放路径;设置好之后,点击“应用”->“确定”。
上述设置之后,重新执行之前的步骤,当碰到错误发生时,C++test将自动产生technical support文件。

 
C++test Question

使用suppressions (抑制)时,能不能只执行一次suppressions就将该工程该规则引起的违例都抑制掉(不通过配置文件来修改该规则),而不用一个一个的执行suppressions?

 
C++test Answer


可以通过如下方式:C++test静态分析后,你会发现其结果显示按如下方式:

  • 如果希望一次性将某类规则抑制掉,可以通过如下方式

  • 按上面操作后,C++test结果显示layout如图:

    可以发现该类错误集中到一个分类;

  • 再次右键点击希望被抑制的规则,选择Suppress All Tasks....,如图:

通过以上方式即可屏蔽某一类规则;

 
C++test Question

对源码的某个函数进行修改后,想重新生成测试用例该怎么操作?直接点“Generate unit tests”仍然是原来的测试用例。

 
C++test Answer


修改单元测试配置,操作如下:

  • C++test -> Test Configurations -> Builtin -> Unit Testing -> Generate Unit Tests, 点击右键Duplicate,如图:

    在User-defined下生成一份拷贝

  • 选择User-defined-> Generate Unit Tests->Generation->Test suite-> Replace the existing test suite,如图:

  • 点击Apply -> Close,然后重新使用刚才的测试配置生成测试用例;
 
C++test Question 为什么很多工程运行完后,只有行覆盖率呢?
 
C++test Answer


从C++test 7.2开始,如果执行默认的Run Unit Tests,只会生成行覆盖率。这是由于从C++test 7.2

将默认设置做了修改,这样的设置可以使得单元测试的执行速度更快。

如果希望得到其他覆盖率,请做如下设置:C++test->Test Configurations,弹出窗口中选择

Builtin -> Unit Testing -> Run Unit Tests, 右键点击该配置,选择Duplicate拷贝该配置到User-defined,如图:

选中该配置,点击右边Execution面板,C++test -> General -> Instrumentation mode选择Full,然后点

击Apply -> Close,重新选择该配置执行单元测试,如图:

 
C++test Question 如何设置Compiler?
 
C++test Answer


右键点击工程->属性,如下:

弹出的窗口中选择C++test->Build Settings,如下图:

点击Browse选择相应的编译路径,然后点击”Apply” -> “OK”

 
C++test Question cpptestcli 命令行使用?
 
C++test Answer


一个简单的事例代码:test.cpp

#include <iostream>
using namespace std;

int main()
{
cout << "Hello world!" << endl;
return 0;
}

使用cpptestscan生产bdf文件:

命令:

cpptestscan --cpptestscanOutputFile=test.bdf --cpptestscanProjectFile=testPrj g++ test.cpp

在该文件生成下面的test.bdf: ------- cpptestscan v.7.1.3.23 -------
working_dir=/home/nick/cpptestExample
project_name=cpptestExample
arg=--cpptestscanProjectFile=testPrj
arg=g++
arg=test.cpp

 
C++test Question 对于使用makefile的工程如何导入?如何通过BDF导入工程?
 
C++test Answer


一、 Build Data File介绍:
Build Data File是在通过makefile的方式构建程序的过程中,利用cpptestscan扫描整个

程序的的架构,包括编译的选项,链接选项等的一个文件,利用此文件C++test可以导入整个工程;

二、 Build Data File的用法:

 ifeq ($(BUILD_MODE), PARASOFT_CPPTEST)
CXX='C:\Program Files\Parasoft\C++test7.1\cpptestscan' --cpptestscanOutputFile=../cpptestscan.bdf --cpptestscanProjectName=MyProject cc
else
CXX=cc
Endif

Make BUILD_MODE=PARASOFT_CPPTEST

三、 Build Data File的注意事项:
通过BuildDataFile导入的工程名不能与当前WorkSpace中的工程重名;

四、 生成bdf及导入步骤举例:
对于makefile的项目,可以通过bdf的方式导入,导入的步骤,请看下面的说明:

  1. 对于使用makefile的项目,C++test 7.1提供一种bdf文件导入方式,参见如下:
    To generate the .bdf file to import your project into C++test, please do it as following:
    This is a simple makefile, take it as an example:

    CXX=g++
    endif
    main : main.o add.o
    $(CXX) -o main main.o add.o
    main.o : main.cpp add.h
    $(CXX) -c main.cpp
    add.o : add.cpp
    $(CXX) -c add.cpp
    clean:
    rm *.o *.exe

    • Find the compiler variable definition. For above makefile, its compiler’s definition is CXX=g++,
                                we need to do following moidification:

"CXX=g++ "
Change to:
"ifeq ($(BUILD_MODE), PARASOFT_CPPTEST)
CXX='C:\Program Files\Parasoft\C++test7.1\cpptestscan.exe' --cpptestscanOutputFile=./cpptestscan.bdf --cpptestscanProjectName=MyProject g++
else
CXX=g++
endif"

I think you can understand it, actually we only add a condition decision, if BUILD_MODE equal to PARASOFT_CPPTEST, it will use the CXX variable

“:\Program Files\Parasoft\C++test7.1\cpptestscan.exe' --cpptestscanOutputFile=./cpptestscan.bdf --cpptestscanProjectName=MyProject g++”,
or it will use the original CXX variable “g++”


  • The modified makefile’s content is:

    ifeq ($(BUILD_MODE), PARASOFT_CPPTEST)
    CXX='C:\Program Files\Parasoft\C++test7.1\cpptestscan.exe' --cpptestscanOutputFile=' C:\cpptestscan.bdf' --cpptestscanProjectName=MyProject g++
    else
    CXX=g++
    endif
    main : main.o add.o
    $(CXX) -o main main.o add.o
    main.o : main.cpp add.h
    $(CXX) -c main.cpp
    add.o : add.cpp
    $(CXX) -c add.cpp
    clean:
    rm *.o *.exe

  • Then when you build your project, you can use: “make BUILD_MODE=PARASOFT_CPPTEST” to build the project, then you can get the .bdf file from the Path “C:\cpptestscan.bdf”.
  1. 一旦为你的工程生成了.bdf文件,你可以通过如下命令行方式或者通过图形界面的方式,创建一个工程,包括进行测试:
    • 命令行的方式:
      1. 一个简单的事例代码:test.cpp

        #include <iostream>
        using namespace std;

        int main()
        {
        cout << "Hello world!" << endl;
        return 0;
        }

      2. 使用cpptestscan生产bdf文件:
        命令

cpptestscan --cpptestscanOutputFile=test.bdf --cpptestscanProjectFile=testPrj g++ test.cpp

  1. 在该文件生成下面的test.bdf:

    ------- cpptestscan v.7.1.3.23 -------
    working_dir=/home/nick/cpptestExample
    project_name=cpptestExample
    arg=--cpptestscanProjectFile=testPrj
    arg=g++
    arg=test.cpp

  2. 使用命令行的方式创建一个工程:

    命令:cpptestcli -data workspace -resource testPrj -config builtin://CreateProjectOnly -bdf test.bdf

    说明:-data, 指定workspace的位置,如果不指定,将使用默认位置;
    -resource 指定工程名称或者测试文件
    -config 指定测试配置文件,如果进行静态分析可设置builtin://MustHaveRules
    -bdf 指定bdf文件

    更详细的关于命令行的使用方式,可以在Help -> Help Content下输入“cli“进行搜索查询。

    • 图形界面的方式:

      点击 File -> New Project ,弹出如下窗口,选择Create a project from a build data file,:

      然后点击下一步:

      点击browse,选择.bdf文件的路径;同时在下面指定对应的编译器,链接器;

      之后点击 finish;就可以导入项目;

 
C++test Question 构建运行库时找不到make.exe,如何办?
 
C++test Answer

 

如果在构建运行库时找不到make程序,一般可能由于:
1)Cygwin未安装;
2)Cygwin未安装完全版本;
3)Cygwin的路径未置入环境变量,如果是这样,可以将其置入环境变量或者直接在Cygwin的窗口中构建;

 
C++test Question Eclipse报告out of memory 错误,如何解决?
 
C++test Answer

安装C++test后,导入他们的工程,由于该工程非常大,产生out of memory错误;
解决方式:先让C++test弹出错误提示窗口,然后修改eclipse的ini文 件,如下:

-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256M
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx256m

改为:

-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256M
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms256m
-Xmx1024m

 
C++test Question 如何查看 C++test详细版本信息?
 
C++test Answer

请提供客户的C++test详细版本信息,Help ?C About Parasoft C++test,点击Parasoft图标,

即可查看详细版本号,如下图:

 
C++test Question RVDS 3.1项目测试时提示找不到目标板怎么办?
 
C++test Answer

如果在执行单元测试时,发现找不到目标板,请参看C++ test对“RVDS3.1测试流程.doc”之9.自定义测试

流程章节;请务必保证测试流程中的目标板名称是否与RVDebuger中定义的名称一致;

 
C++test Question 请问C++test支持的编译器类型?
 
C++test Answer

由于C++test支持企业级应用测试和嵌入式测试,因此对于编译器的支持分为:

  1. 主机支持的编译器:
    • Windows: Microsoft Visual C++ 6.0, .NET, .NET 2003, or 2005, GCC 2.95.x, 3.2.x, 3.3.x, 3.4.x; Green Hills MULTI for Windows x86 Native v4.0.x
    • Linux (x86 processor): GCC 2.95.x, 3.2.x, 3.3.x, 3.4.x, 4.0.x, 4.1.x
    • Linux (x86_64 processor): GCC 3.4.x, 4.0.x, 4.1.x
    • Solaris: GCC 2.95.x, 3.2.x, 3.3.x, 3.4.x, 4.0.x, 4.1.x, Sun C++ 5.3 (Sun Forte C++ 6 Update 2), Sun C++ 5.5 (Sun ONE Studio 8),
    • Sun C++ 5.6 (Sun ONE Studio 9), Sun C++ 5.7 (Sun ONE Studio 10) Sun C++ 5.8
    • (Sun ONE Studio 11); Green Hills MULTI for SPARC Solaris Native v4.0.x
  2. 目标机支持的编译器:
    • Wind River: EGCS-2.90, GCC-2.96, GCC 3.4.x and DIAB 5.4+
    • GCC 2.95.x - 4.1.x cross-compilers
    • Green Hills 4.0.x
    • ARM: ADS 1.2, RVCT 3.0, RVCT 3.1
 
C++test Question

C++test针对嵌入式Linux的单元测试,将交叉编译构建的可执行文件加载到目标机执行,

报告如下错误“cannot find -lcpptestruntime Process exited with code: 1 (error).”,如何处理?

 
C++test Answer

该问题可通过修改客户自定义编译器中的一个脚本文件来解决,首先客户需要找到自定义编译器脚本路径位置,

一般位于当前工作空间的:

<workspace>\.metadata\.plugins\com.parasoft.xtest.checkers.eclipse.core.cpp\compilers

目录下:

“D:\Parasoft\cpptest\workspace\.metadata\.plugins\com.parasoft.xtest.checkers.eclipse.core.cpp\compilers”

打开compilers目录下的自定义编译器的目录,如图:

编辑gui.properties文件,找到“-lcpptestruntime”,移除该选项。然后重新启动C++test,

重新构建可执行对象,并将该对象在目标机上执行。
(PS:更简单的临时解决方式可以将C++test运行库和先前构建的可执行对象文件拷贝到

目标机同一位置,执行该文件;)

 
C++test Question 静态分析时如何根据规则危险等级进行选择
 
C++test Answer

1\ c++test菜单->test configurations
2\ 挑选一个built-in规则,duplicate,复制其到user-defined下
3\ 选中user-defined下的复制后规则,转到右边的static面板下
4\ 全选所有规则,点击右键


5\ severity 1-5既为静态规则的危险等级,1为最高级,5为最低级
6\ 选择enable serverity 1后,所有的危险等级为1的规则都被使能,即选中

 
C++test Question 如何打开rulewizard模块
 
C++test Answer

1\ 可以在test configuration对话框的static面板下,点击new按钮


2\ 可以在菜单项c++test下,选择lunch rule wizard菜单项

 
C++test Question 如何参考已有静态分析规则
 
C++test Answer

在test configuration对话框的static面板下,选择一条规则,点击右键,可以看到

通过view rule document即可察看对应规则的文档,通过view rule in rulewizard即可在rulewizard中打开对应规则

 
C++test Question 如何切换不同的覆盖率显示
 
C++test Answer

在coverage面板下,最右方的小向下箭头上点击即可

这样,如果运行测试用例的时候,计算了对应的覆盖路的话,即可通过不同的选择项,察看不同的覆盖率信息

 
C++test Question 在coverage,c++test或test case explorer面板消失的时候,如何找回
 
C++test Answer

在c++test菜单项中,show view下的tasks项,即可打开c++test面板;coverage项即可打开coverage面板,等等

 
C++test Question 如何获得machine-id及安装license
 
C++test Answer

在c++test菜单项下,找到preferences,点击打开preferences对话框,点击左边license结点,即可在右边看到local license下的machine-id项。
安装license时,只要把对应的password项,填入password输入框即可

 
C++test Question 如何支持vc6的工程
 
C++test Answer

vc6工程使用cpptest标准独立版本支持,客户机器上需要安装有非绿色版本的vc6程序,且保证vc6工程可以编译通过。
点击file菜单下new->project,即可看到如下窗口:

之后,定位到对应待导入工程的dsp/dsw文件,即可。

 
C++test Question 如何支持vc 2003,2005,2008工程
 
C++test Answer 支持vc 2003,2005,2008工程,需要使用cpptest针对不同ide的插件版本即可。功能与标准独立版本没有任何区别
 
C++test Question 生成测试用例之后,如何选择性的运行所有测试用例中的几个测试用例
 
C++test Answer

打开test case explorer面板,展开对应工程的树状结点,选择需要运行的测试用例,点击右键,使用test using下的对应的配置运行测试用例即可。

 
C++test Question 如何获得测试报告
 
C++test Answer

测试完成之后,打开test progress面板,点击最右边的小按钮“generate report”,即可打开对应report面板,可以指定存放报告地址,点击ok即可

 
C++test Question 如何获得不同格式的测试报告
 
C++test Answer

打开report面板之后,可以点击preferences按钮,打开对应报告配置对话框:

选择对应的report format即可。

 
C++test Question 如何寻找帮助信息
 
C++test Answer

点击菜单项help->help contents,打开帮助菜单对话框,可在search中输入对应关键字,搜索帮助

原文链接:http://www.mytestlife.com/post/C++testFAQ.html

withdreamer C++test Ctest  FAQ  

  1. 2011-6-9 15:58:05 | #1

    很有用,谢谢!