如何使用ThreadingTest提高软件安全性检测效率(下)
方法三:可视化代码结构分析
函数调用图:
可以给用户展示一系列关于软件系统的整体信息。如:类或者函数以及类的成员函数的总数目,调用关系或者类的继承关系的深度、层次结构、语句总行数和总体复杂度,整体的测试覆盖率(分累积的结果和最后一次运行的结果,可选择语句、分支和MC/DC测试覆盖率标准)、整体的性能分析结果以及各模块所占的用时比例、以及全局变量和静态变量的分析结果等;同时,又给出了各个模块具体的信息,包括:各模块的源码行数和复杂度、测试覆盖率分析结果、扇入扇出信息,高亮显示一个模块及其所有相关的模块,或者以任何一个模块为根生成局部子树等。
函数调用图的特性:
1. 支持百万图元级别的超高速图形绘制技术。
2. 支持全屏以及超平滑的放大与缩小技术、平滑的移动技术。
3. 支持按照类分组聚集布图以及按照函数调用关系布图,层次数量可自由定义。
4. 支持逐级的子树展开和下钻功能。
5. 支持在函数图元上覆盖率显示,以及覆盖率与函数相关信息的显示。
6. 可追溯:函数调用图是“活”的,不是静止不动的,可以选择图中任何一个模块而追溯所有调用它的路径和相关模块以及被他调用的模块,用于修改模块不一致性缺陷的预防等。
7. 可交互操作,例如高亮显示一个模块及其相关模块,或者单独绘制一个模块的调用关系。
8. 可选取函数调用图中任何一个模块为根生成局部子图,并且生成子图的相关信息,使得团队的各个组群或者个人可以方便的得到相关的局部信息。
9. 实现各模块与逻辑框图的链接:完成宏观(函数调用图)与微观视图(控制流程图)的结合,发挥更好的可视化效果
函数调用聚集图:
以类对函数进行分组,通过图表把同一类的函数聚集在一起进行展示。
类继承图:
显示的是当前项目所有类的集成和派生关系。
控制流程图
通过函数的if-else,while,for,do-while,switch-case等控制语句结构绘制组成的流程关系的展示图;配合下方的源代码展示界面,显示能清晰查看函数内部运行逻辑和结构、条件的真假运行状况、MC/DC的满足率等。
特性:
1. 可视化的控制流程图,对主要的控制逻辑语句对应有清晰的图元显示,支持嵌套显示以及串联显示。
2. 点击控制流图的每个图元可以看到对应的代码段以及代码段的执行次数、覆盖率情况。
3. 在控制流图的代码段,当条件语句成为选中热点后,可以看到条件语句的各个子条件的各种组合执行的真假情况。
4. 支持缩略图的显示,可平滑的进行缩放以及全屏显示。
5. 可以与函数调用图相互自动链接、追溯、转换。
函数列表:
针对整个程序的所有函数,按照各种覆盖率、复杂度进行排序,帮助用户能快速的定位查看所有的函数信息,并通过和函数调用图、控制流程图、覆盖率可视化图以及累计覆盖率图的快速切换,使得用户在查看和解决实际问题上提供了方便。
使用ThreadingTest代码可视化,进行安全性检测
在安全性检测过程中,通常需要对代码的设计错误进行检测,而TT提供的CallGraph能够对程序逻辑进行逆向工程,通过逆向的分析结果,测试人员就可以获得可视化的程序调用结构图,也就是程序设计的图形化表达,通过CallGraph所表达的函数的调用逻辑关系以及ControlFlow所表达的程序控制流,可以协助开发人员和测试人员快速的检测出程序的设计错误。
通过ThreadingTest进行代码简洁性、注释明确性检查
TT内部支持根据程序的控制流特性对程序进行标准的格式化,因此格式化过程的日志是对代码书写规范性进行检查。
通过TT的静态分析功能,对不建议采用的语法进行检测,例如函数递归调用以及goto语句可以进行检测。
使用ThreadingTest进行代码复杂度分析和安全检查
复杂软件不稳定,也经不起不可预测的行为。所以,我们努力使软件的复杂度变小。如果有条件采用某种自动化工具,可以通过工具对软件设计或/和代码进行控制,用图形化的方法反映出软件结构中的控制流和数据流,通过连结数/调用数、节点数、嵌套深度等这样一些结构关系的检查,获得复杂度的度量,将会获得很好的效果。
TT在对代码的分析过程中,TT可以直接给出代码复杂度的计算结果,通常复杂度越高的软件模块更容易引入缺陷,也更加容易引入安全性问题,高度复杂的数据结构难以彻底测试,可以采用TT等复杂性评估技术来标示出需要进一步改进的区域,以便提升软件的安全性。
方法四:系统级白盒测试技术进行充分测试及冗余代码分析
TT支持功能测试过程中的可持续测试技术,即覆盖率合并,对于多个版本实现智能覆盖率合并,以前述的函数级多版本对比为基础,通过覆盖率合并算法,准确统计出当前最新版本的累积覆盖率,从而极大减少测试工程师的重复测试工作。
通过TT的系统级白盒测试功能,我们可以通过在功能测试过程中,部署上TT,然后对所有的测试用例的白盒覆盖率进行汇总,经过多轮多个用例的测试以后,TT可以清晰的展示未覆盖的代码,这些代码从安全性角度来讲可以分为两类:
1.有些代码为垃圾代码或者不达到代码,从安全角度来讲,这些代码都程序都存在潜在的安全性威胁,需要进行处理。
2.软件测试过程中不充分,这些没有执行的代码,很可能存在潜在的安全漏洞,需要补充用例进行测试,保证测试的全面性和充分性。
目前ThreadingTest个人版是免费使用的,可以在技术网站了解详情,网址:www.teststars.cc,也可以在星云测试网站下载:如果您在安装与试用过程中有任何疑问,您可以加入QQ技术群-“符号执行–穿线测试“,QQ号为:“339834199″
原创文章,作者:carmelaweatherly,如若转载,请注明出处:https://blog.ytso.com/195036.html