如何使用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"

时间: 2024-10-11 12:01:42

如何使用ThreadingTest提高软件安全性检测效率(下)的相关文章

如何使用ThreadingTest提高软件安全性检测效率(上)

一般来说,对安全性要求不高的软件,其安全性测试可以混在单元测试.集成测试.系统测试里一起做.但对安全性有较高需求的软件,则必须做专门的安全性测试,以便在破坏之前预防并识别软件的安全问题.安全性测试(Security Testing)是指有关验证应用程序的安全等级和识别潜在安全性缺陷的过程.应用程序级安全测试的主要目的是查找软件自身程序设计中存在的安全隐患,并检查应用程序对非法侵入的防范能力, 根据安全指标不同测试策略也不同.注意:安全性测试并不最终证明应用程序是安全的,而是用于验证所设立策略的有

如何使用ThreadingTest提高软件安全性检测效率(中)

方法二:ThreadingTest双向追溯专利技术--测试用例(功能)与源代码关系的自动生成 通过ThreadingTest运行测试用例,采用TT百万图元级别的超高速图形绘制技术展示图,对各种大.中.小型软件进行功能逻辑实现分析,实现测试用例与被测源码间相互追溯.该追溯技术方便了用户查看和设计测试用例,通过基于双向追溯的实测用例分析,测试人员可以快速追踪修改代码的波及范围,针对已修改的模块和波及到的模块有针对性的补充测试用例,把回归测试的成本降至最低. 正向追溯技术: 通过点击某个测试用例,追溯

AUCTeX+Emacs 是目前我见过的能最大限度提高 LaTeX 编辑效率的编辑器 (转)

AUCTeX+Emacs 是目前我见过的能最大限度提高 LaTeX 编辑效率的编辑器 效率的提高程度取决于你对 Emacs/lisp 的熟悉程度,但可以说基本上能提高到你所能想象的最大程度了.下面我会就效率方面介绍它的几个特性,不仅与 WinEdt 做对比,同时也和其他 OSX上的某些编辑器做一下对比, 安装和配置网上很多,比如这篇小文档[1],这里就不介绍了. 强大的快捷键系统 (CDLaTeX) 就提高编辑效率而言,快捷键是最重要的,同样的内容别的编辑要按10下键盘才能实现你就按5下就实现了

简单十招提高jQuery执行效率

1. 使用最新版本的jQuery jQuery的版本更新很快,你应该总是使用最新的版本.因为新版本会改进性能,还有很多新功能. 下面就来看看,不同版本的jQuery性能差异有多大.这里是三条最常见的jQuery选择语句: $('.elem') $('.elem', context) context.find('.elem') 我们用1.4.2.1.4.4.1.6.2三个版本的jQuery测试,看看浏览器在1秒内能够执行多少次.结果如下: 可以看到,1.6.2版本的运行次数,远远超过两个老版本.尤

php学习高级-提高PHP编程效率的几点建议

1.如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍. 2.$row['id'] 的速度是$row[id]的7倍. 3.echo 比 print 快,并且使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接,比如echo $str1,$str2. 4.在执行for循环之前确定最大循环数,不要每循环一次都计算最大值,最好运用foreach代替. 5.注销那些不用的变量尤其是大数组,以便释放内存. 6.尽量避免使用__get,__set,__autol

iOS开发——实用篇&提高iOS开发效率的方法和工具

提高iOS开发效率的方法和工具 介绍 这篇文章主要是介绍一下我在iOS开发中使用到的一些可以提升开发效率的方法和工具. IDE 首先要说的肯定是IDE了,说到IDE,Xcode不能跑,当然你也可能同时在使用AppCode等其他的IDE,在这里我主要介绍Xcode中提升开发效率的方法. 1.善用快捷键 快捷键是开发中必不可少的,当你善于使用快捷键的时候,十指在键盘上飞舞,那画面太美,我不敢想象. 常用快捷键操作 2.常用代码片段 开发中有一些常用的代码,可以放到代码片段中,然后下次你就可以使用快捷

提高SQL查询效率(SQL优化)(转载)

(转自http://blog.csdn.net/sforiz/article/details/5345359) 我们要做到不但会写SQL,还要做到写出性能优良的SQL语句. (1)选择最有效率的表名顺序(只在基于规则的优化器中有效): Oracle的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表.如果有3个以上的表连接查询, 那就需要选择交叉表

转:常用的几个提高iOS开发效率的开源类库及工具

常用的几个提高iOS开发效率的开源类库及工具 iOS开发者 : 开发几个常用的开源类库及下载地址: 算上这个连接:http://wenku.baidu.com/view/bbeb0091dd88d0d233d46a00.html 1.json json编码解码2.GTMBase64 base64编码解码3.TouchXML xml解析4.SFHFKeychainUtils 安全保存用户密码到keychain中 5.MBProgressHUD 很棒的一个加载等待特效框架6.ASIHTTPReque

提高jQuery执行效率需要注意几点

1. 使用最新版本的jQuery jQuery的版本更新很快,你应该总是使用最新的版本.因为新版本会改进性能,还有很多新功能. 下面就来看看,不同版本的jQuery性能差异有多大.这里是三条最常见的jQuery选择语句: $('.elem') $('.elem', context) context.find('.elem') 我们用1.4.2.1.4.4.1.6.2三个版本的jQuery测试,看看浏览器在1秒内能够执行多少次.结果如下: 可以看到,1.6.2版本的运行次数,远远超过两个老版本.尤