C/C++白盒测试工具之codeviz安装使用(续)
来源:互联网 发布:powerdesigner有mac版 编辑:程序博客网 时间:2024/06/05 01:04
为什么说CodeViz是白盒测试工具?
可能有些人对博文的标题会提出些异议,没错,CodeViz这款软件的确是用来进行代码分析的一款利器,能够根据需要获取到整个程序中的所有的函数调用关系,为程序员阅读代码带来了极大的方便。从测试角度来讲,代码肯定是测试对象之一,我们要测试代码,即要进行白盒测试,作为一种测试方法,白盒测试最有可能是发生在单元测试和集成测试阶段,在这两个阶段,都不可避免的阅读代码,既然工具嘛,用来做测试了,所以我就可以称其为一款测试工具了,的确,在现实中它也为我的白盒测试带来了很大的帮助,接下来就谈下这款工具在进行测试时都能够有哪些益处。
CodeViz可以给白盒测试人员带来哪些帮助?
上边谈到了软件测试按照阶段可以划分为单元测试、集成测试、系统测试及验收测试。前两个阶段会比较多的使用到白盒测试技术,后两个阶段通常会采用黑盒测试技术。文中提到CodeViz为白盒测试工具,那么就要从单元测试和集成测试谈起。
- 单元测试阶段。首先在该阶段要确定测试对象,在一个稍微大些的项目中,单元的数量就数不胜数了,如果对于所有的单元都进行用例的设计和执行,显然是不现实的。通常做法是根据一些原则确定测试哪些单元,对于这些单元进行测试时如何确定优先顺序。这里就可以应用到CodeViz工具了,根据单元测试的原则,顶层模块和被频繁调用的模块都是重点测试模块,通过CodeViz生成的函数调用关系图,可以很快确定出这样的被测单元。确定测试单元是单元测试阶段的第一个应用,第二应用就是对于设计的验证了,良好的设计结构应该是顶层扇出比较大,中间扇出小,底层模块应该是有大的扇入。通过CodeViz加上公司自己定义的一些扇入扇出的规范,就可以对检查模块设计的合理性。
- 集成测试阶段。在测试策略上,首先可以通过CodeViz生成的函数调用图,确定集成测试的策略,采用自底向上还是自顶向下,是深度优先还是广度优先。接下来可以通过集成测试阶段的测试内容进行确定。该阶段的测试内容有适合性、准确性、互操作性、容错性、时间特性等方面。对于这些内容,大部分要确定是哪些模块间的指标需要重点测试,这些同样可以通过函数调用图进行进行确定。
- 以上是最近通过对于CodeViz结合一些测试思想进行的总结,当然这个主要适合一些中型的公司,前期文档没有那么健全,而又有白盒测试的需求的情况。对于大型软件公司,如果开发过程控制比较严格的话,可能前期在设计阶段就会有了UML的各种图,这样就可以使用这些图进行对应的白盒测试了。个人理解,欢迎拍砖。后面需要通过不断的实践进行丰富和补充。
CodeViz使用补充
前两天时间关系,只是将环境搭好,能够使用CodeViz对C语言项目进行函数调用图的生成。遗留了C++项目的生成情况,今天尝试了下C++项目的调用图生成。开始没有好好好看文档帮助,结果尝试了几次都不能生成函数调用图,每次都是只生成了-f参数指定的函数名一个函数名的图,在网上查了下,发现几乎所有的资料都是用c程序做的示例。没有捷径,所以只用耐心看了一下genfull和gengraph两个脚本文件。genfull的-h选项的帮助太简单了,跟据这个并不能够解决这个问题,后来没有办法才直接进入到genfull脚本中进行查看,也就是通过查看genfull脚本才发现了如何生成c++项目的函数调用关系图的,其实蛮简单,现在越来越习惯这些开源软件的README和帮助文件,下边简单的genfull脚本中的帮助说明做下翻译 (不一定到位,按照自己的理解):
- genfull — 从源码中的.cdepn文件生成一个关系调用图(开始的时候,就是给cdepn误导了,以为只有一个cdepn选项呢,所以花了点时间思考)
- genfull [选项]
- 主要选项
- -d --toplevel 顶层源码目录 (默认为当前目录)
- -f --file 扫描所有cdepn文件 (默认是扫描所有文件)
- -s --subdirs 扫描的子目录 (默认扫描所有目录)
- -g --method 收集数据的方法(默认为 cdepn)
- -o --output 输出的目标文件(默认为./full.graph)
- -h --help 输出帮助信息(注意:这个选项输出的帮助信息并不全)
- --version 输出版本号
- Post-Processing选项
- --skip 跳过数据收集,紧做post-process操作
- --pp-stack 计算堆栈的使用情况
- 收集方法选项列表(-g 后边的参数)
- cdepn 从补丁后gcc编译输出后的.cdepn文件中收集信息
- cobjdump 分析没有stripped的二进制文件,从而生成调用关系图(?)
- cppdepn 同cdepn, 适用C++项目
- cppobjdump 同cobjdump,适用于C++项目
- cncc 从ncc编译后的文件中收集信息
- 几个应用实例
- genfull -g cdepn -s /usr/src/linux
- genfull -g cobjdump -s /usr/src/linux -f /usr/src/linux/vmlinux
- genfull -g cncc -s /usr/src/linux
- genfull -g cncc -f /usr/src/linux/code.map.nccout
- genfull -g cppdepn -s /usr/src/avifile-0.6
- genfull -g cppobjdump -s /usr/src/avifile-0.6 -f /usr/src/avifile-0.6/player/aviplay
0 0
- C/C++白盒测试工具之codeviz安装使用
- C/C++白盒测试工具之codeviz安装使用(续)
- 使用CodeViz生成C/C++函数调用关系图
- C/C++ static analysis: CodeViz
- C/C++白盒测试 Cppcheck安装使用
- C/C++白盒测试系列之Cppcheck使用介绍
- 安装CodeViz
- CodeViz 安装
- Codeviz+Graphviz+gcc的安装及使用
- codeviz安装记录和使用实例
- C/C++白盒测试系列之Cppcheck使用介绍(一)
- CodeViz —— 一款分析 C/C++源代码中函数调用关系的调用图生成工具
- c#(串口测试工具)-0
- C++——测试工具CppUnit的安装和配置
- C++——测试工具CppUnit的安装和配置
- C语言学习笔记之工具使用
- linux c编程工具使用之gdb
- xcode上使用c++代码的测试工具
- 如何将天地图转换为默卡托投影坐标
- 基于DM642的MPEG-2视频压缩编码之硬件设计和CCS开发环境的介绍
- 10类算法
- 关于GIS行业_ 二次开发怎么了?
- centos 双用户 could not display
- C/C++白盒测试工具之codeviz安装使用(续)
- git patch 的使用
- js 精确加减法
- 设计模式-中介者模式
- Android四大组件----BroadcastReceiver
- Windows Server 2008通过计划任务定时执行bat文件
- 数据结构与算法[LeetCode]—Binary Tree Level Order Traversal II 从底至上层次输出二叉树每层元素
- ORA-01017: invalid username/password; logon denied ORA-02063: 紧接着line(源于DBLINKN~~~)
- jQuery选择器