为什么说CodeViz是白盒测试工具?

可能有些人对博文的标题会提出些异议,没错,CodeViz这款软件的确是用来进行代码分析的一款利器,能够根据需要获取到整个程序中的所有的函数调用关系,为程序员阅读代码带来了极大的方便。从测试角度来讲,代码肯定是测试对象之一,我们要测试代码,即要进行白盒测试,作为一种测试方法,白盒测试最有可能是发生在单元测试和集成测试阶段,在这两个阶段,都不可避免的阅读代码,既然工具嘛,用来做测试了,所以我就可以称其为一款测试工具了,的确,在现实中它也为我的白盒测试带来了很大的帮助,接下来就谈下这款工具在进行测试时都能够有哪些益处。

CodeViz可以给白盒测试人员带来哪些帮助?

上边谈到了软件测试按照阶段可以划分为单元测试、集成测试、系统测试及验收测试。前两个阶段会比较多的使用到白盒测试技术,后两个阶段通常会采用黑盒测试技术。文中提到CodeViz为白盒测试工具,那么就要从单元测试和集成测试谈起。
  1. 单元测试阶段。首先在该阶段要确定测试对象,在一个稍微大些的项目中,单元的数量就数不胜数了,如果对于所有的单元都进行用例的设计和执行,显然是不现实的。通常做法是根据一些原则确定测试哪些单元,对于这些单元进行测试时如何确定优先顺序。这里就可以应用到CodeViz工具了,根据单元测试的原则,顶层模块和被频繁调用的模块都是重点测试模块,通过CodeViz生成的函数调用关系图,可以很快确定出这样的被测单元。确定测试单元是单元测试阶段的第一个应用,第二应用就是对于设计的验证了,良好的设计结构应该是顶层扇出比较大,中间扇出小,底层模块应该是有大的扇入。通过CodeViz加上公司自己定义的一些扇入扇出的规范,就可以对检查模块设计的合理性。
  2. 集成测试阶段。在测试策略上,首先可以通过CodeViz生成的函数调用图,确定集成测试的策略,采用自底向上还是自顶向下,是深度优先还是广度优先。接下来可以通过集成测试阶段的测试内容进行确定。该阶段的测试内容有适合性、准确性、互操作性、容错性、时间特性等方面。对于这些内容,大部分要确定是哪些模块间的指标需要重点测试,这些同样可以通过函数调用图进行进行确定。
  3. 以上是最近通过对于CodeViz结合一些测试思想进行的总结,当然这个主要适合一些中型的公司,前期文档没有那么健全,而又有白盒测试的需求的情况。对于大型软件公司,如果开发过程控制比较严格的话,可能前期在设计阶段就会有了UML的各种图,这样就可以使用这些图进行对应的白盒测试了。个人理解,欢迎拍砖。后面需要通过不断的实践进行丰富和补充。

CodeViz使用补充

前两天时间关系,只是将环境搭好,能够使用CodeViz对C语言项目进行函数调用图的生成。遗留了C++项目的生成情况,今天尝试了下C++项目的调用图生成。开始没有好好好看文档帮助,结果尝试了几次都不能生成函数调用图,每次都是只生成了-f参数指定的函数名一个函数名的图,在网上查了下,发现几乎所有的资料都是用c程序做的示例。没有捷径,所以只用耐心看了一下genfull和gengraph两个脚本文件。genfull的-h选项的帮助太简单了,跟据这个并不能够解决这个问题,后来没有办法才直接进入到genfull脚本中进行查看,也就是通过查看genfull脚本才发现了如何生成c++项目的函数调用关系图的,其实蛮简单,现在越来越习惯这些开源软件的README和帮助文件,下边简单的genfull脚本中的帮助说明做下翻译 (不一定到位,按照自己的理解):
  1. genfull — 从源码中的.cdepn文件生成一个关系调用图(开始的时候,就是给cdepn误导了,以为只有一个cdepn选项呢,所以花了点时间思考)
  2. 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编译后的文件中收集信息
  3. 几个应用实例
    1. genfull -g cdepn -s /usr/src/linux
    2. genfull -g cobjdump -s /usr/src/linux -f /usr/src/linux/vmlinux
    3. genfull -g cncc -s /usr/src/linux
    4. genfull -g cncc -f /usr/src/linux/code.map.nccout
    5. genfull -g cppdepn -s /usr/src/avifile-0.6
    6. genfull -g cppobjdump -s /usr/src/avifile-0.6 -f /usr/src/avifile-0.6/player/aviplay

C/C++白盒测试工具之codeviz安装使用(续)相关推荐

  1. 白盒测试工具 - sonar的安装、配置与使用入门手册,用sonar检查代码质量实战演示

    sonar 检测代码质量实战演示 第一章:sonarqube 的安装与启用 ① sonarqube 获取 ② sonarqube 配置 ③ sonarqube 驱动放置 ④ sonarqube 的启动 ...

  2. 软件测试“因子表”使用测试工具PICT下载安装,PICT中文乱码问题,pict下载百度网盘分享

    有没有思考过"如何让有限的测试具有代表整体的测试覆盖率"? 在测试工作中,经常会遇到这样的场景:一个软件功能有多个输入项,每个输入项有多个可选项:一个接口有多个参数,每个参数有多个 ...

  3. Python包管理工具Distribute的安装

    Python包管理工具Distribute的安装 Python的包管理工具常见的有easy_install, setuptools, 还有pip, distribute,那麽这几个工具有什么关系呢,看 ...

  4. python学习一(python与pip工具下载与安装)

    python学习一(python与pip工具下载与安装)  一 Python下载  二 安装Python  三 安装 pip   3.1 采用cd命令进入到Scripts 目录下面   3.2 输入命 ...

  5. 白盒测试工具_别再头疼工作效率低!这些超实用的黑盒、白盒测试方法你都用上了吗?...

    在软件测试工作中,为充分利用现有的时间和资源条件,提高测试效率和测试充分性,当前有多种方法辅助测试人员完成测试工作,推进项目进度,其中最普遍的莫过于白盒测试和黑盒测试,白盒测试和黑盒测试的概念和常用方 ...

  6. SIPp工具Linux下安装

    2019独角兽企业重金招聘Python工程师标准>>> 一.SIPp介绍 SIPp是一个测试SIP协议性能的工具软件,这是一个开源软件.      它可使用INVITE和B YE建立 ...

  7. python 打包 .app 运行 控制台窗口_Python打包工具PyInstaller的安装与pycharm配置支持PyInstaller详细方法...

    windows系统下安装Pyinstaller cmd下输入指令 pip install PyInstaller Pyinstaller的使用 进入需要打包的目录下,执行打包命令 Pyinstalle ...

  8. mysql 5.7 备份innodb_mysql5.7 innodb数据库备份工具Xtrabackup的安装

    mysql5.7 innodb数据库备份工具Xtrabackup的安装 wgetmhttps://www.percona.com/downloads/XtraBackup/Percona-XtraBa ...

  9. K8S部署工具:KubeOperator安装部署

    K8S部署工具:KubeOperator安装部署 硬件要求⚓︎ 最小化配置 角色 CPU核数 内存 系统盘 数量 部署机 4 8G 100G 1 Master 4 8G 100G 1 Worker 4 ...

最新文章

  1. Android 数据存储 Room
  2. DIV+CSS两种盒子模型(W3C盒子与IE盒子)
  3. pyqt 子窗口控制主窗口绘图_实战PyQt5: 005-主窗口QMainWindow
  4. 腾讯-视频打标签算法探讨
  5. ElasticSearch 各模块介绍及参数配置详解
  6. linux 一些常规操作合集 (cat grep awk chmod vim ..)
  7. 日期上午下午怎么用date存_Java12都要出来了,你还在使用Date操作日期吗?
  8. 使用java实现面向对象 第七章
  9. Android MediaPlayer的生命周期
  10. mysql数据库忘记密码时如何修改
  11. 记一次使用EasyExcel出现Convert excel format exception.You can try specifying the ‘excelType‘ yourself
  12. 使用RawImage播放视频不清晰(改变视频比例后不清晰)的问题解决
  13. 阿里高P谈技术人如何高速成长?
  14. 生产中使用ssh-copy-id复制公钥到多台服务器
  15. 将计算机移动到桌面,如何将图标移动到桌面 移动桌面图标的方法分享
  16. DB2如何修改某个字段由非空转变为可以为空
  17. Docker11_2:Docker腾讯云仓库
  18. 精读《Excel JS API》
  19. NFT 推荐|辛迪加黑市系列第一弹
  20. python如何绘制蜘蛛图_蜘蛛网图实现Python可视化的方法

热门文章

  1. 总结:js世界中的特殊符号
  2. 云班课大学计算机基础答案,《大学计算机基础》期末考试题目
  3. 区位码、国标码、机内码、GBK
  4. Excel 一些操作记录,方便自己查
  5. 双系统引导失败,windows的引导修复方法
  6. WPS二次开发简单示例
  7. windows 条件变量
  8. macbook将新壁纸添加到官网壁纸中
  9. 计算机软考 下午试题,2011年计算机软考程序员考试(下午题)模拟试题及答案(2)...
  10. Matlab程序设计语言基础