C/C++白盒测试工具之codeviz安装使用(续)
为什么说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
C/C++白盒测试工具之codeviz安装使用(续)相关推荐
- 白盒测试工具 - sonar的安装、配置与使用入门手册,用sonar检查代码质量实战演示
sonar 检测代码质量实战演示 第一章:sonarqube 的安装与启用 ① sonarqube 获取 ② sonarqube 配置 ③ sonarqube 驱动放置 ④ sonarqube 的启动 ...
- 软件测试“因子表”使用测试工具PICT下载安装,PICT中文乱码问题,pict下载百度网盘分享
有没有思考过"如何让有限的测试具有代表整体的测试覆盖率"? 在测试工作中,经常会遇到这样的场景:一个软件功能有多个输入项,每个输入项有多个可选项:一个接口有多个参数,每个参数有多个 ...
- Python包管理工具Distribute的安装
Python包管理工具Distribute的安装 Python的包管理工具常见的有easy_install, setuptools, 还有pip, distribute,那麽这几个工具有什么关系呢,看 ...
- python学习一(python与pip工具下载与安装)
python学习一(python与pip工具下载与安装) 一 Python下载 二 安装Python 三 安装 pip 3.1 采用cd命令进入到Scripts 目录下面 3.2 输入命 ...
- 白盒测试工具_别再头疼工作效率低!这些超实用的黑盒、白盒测试方法你都用上了吗?...
在软件测试工作中,为充分利用现有的时间和资源条件,提高测试效率和测试充分性,当前有多种方法辅助测试人员完成测试工作,推进项目进度,其中最普遍的莫过于白盒测试和黑盒测试,白盒测试和黑盒测试的概念和常用方 ...
- SIPp工具Linux下安装
2019独角兽企业重金招聘Python工程师标准>>> 一.SIPp介绍 SIPp是一个测试SIP协议性能的工具软件,这是一个开源软件. 它可使用INVITE和B YE建立 ...
- python 打包 .app 运行 控制台窗口_Python打包工具PyInstaller的安装与pycharm配置支持PyInstaller详细方法...
windows系统下安装Pyinstaller cmd下输入指令 pip install PyInstaller Pyinstaller的使用 进入需要打包的目录下,执行打包命令 Pyinstalle ...
- mysql 5.7 备份innodb_mysql5.7 innodb数据库备份工具Xtrabackup的安装
mysql5.7 innodb数据库备份工具Xtrabackup的安装 wgetmhttps://www.percona.com/downloads/XtraBackup/Percona-XtraBa ...
- K8S部署工具:KubeOperator安装部署
K8S部署工具:KubeOperator安装部署 硬件要求⚓︎ 最小化配置 角色 CPU核数 内存 系统盘 数量 部署机 4 8G 100G 1 Master 4 8G 100G 1 Worker 4 ...
最新文章
- Android 数据存储 Room
- DIV+CSS两种盒子模型(W3C盒子与IE盒子)
- pyqt 子窗口控制主窗口绘图_实战PyQt5: 005-主窗口QMainWindow
- 腾讯-视频打标签算法探讨
- ElasticSearch 各模块介绍及参数配置详解
- linux 一些常规操作合集 (cat grep awk chmod vim ..)
- 日期上午下午怎么用date存_Java12都要出来了,你还在使用Date操作日期吗?
- 使用java实现面向对象 第七章
- Android MediaPlayer的生命周期
- mysql数据库忘记密码时如何修改
- 记一次使用EasyExcel出现Convert excel format exception.You can try specifying the ‘excelType‘ yourself
- 使用RawImage播放视频不清晰(改变视频比例后不清晰)的问题解决
- 阿里高P谈技术人如何高速成长?
- 生产中使用ssh-copy-id复制公钥到多台服务器
- 将计算机移动到桌面,如何将图标移动到桌面 移动桌面图标的方法分享
- DB2如何修改某个字段由非空转变为可以为空
- Docker11_2:Docker腾讯云仓库
- 精读《Excel JS API》
- NFT 推荐|辛迪加黑市系列第一弹
- python如何绘制蜘蛛图_蜘蛛网图实现Python可视化的方法