服务热线

  • 服务电话:0756-3391906
  • 软件测试技术:0756-3391891
  • 嵌入式软件测试:0756-3391732
  • 网络测试技术:0756-3396982
  • 监督电话:0756-3391848
  • 软件业务服务:0756-3391906
  • 网络业务服务:0756-3396981

当前位置: 首页 >> 经典案例 >> 开发过程测试

《xx平台库》自动化静态测试及研究分析

    

xx平台库》自动化静态测试及研究分析

一、项目概述与背景                             
      珠海南方软件产品检测中心受xx公司委托,采用自动化测试手段与人工分析相结合的方法,对其使用C语言开发的“xx平台库V1.00.02项目进行源代码质量缺陷检查、安全漏洞扫描和代码质量度量等静态测试,实现该软件性能和安全性的全面提升。
二、项目源代码静态测试内容、方法及结果
      本次测试,重点针对影响系统性能和安全性的源代码质量缺陷和安全漏洞开展静态测试。首先组织包括开发人员在内的技术团队,建立提高系统性能和安全性的相关技术指标体系,该指标体系包括三个部分:1、包括使用已释放内存和缓冲区溢出等质量缺陷20大类共计148个技术指标;2、包括DNS欺骗和弱加密等安全漏洞4类共计23个技术指标;3、检查质量风险较高的执行过于复杂的即圈复杂度大于20的方法。然后,采用Klocwork Insight完成源代码质量缺陷检查、安全漏洞扫描和代码质量度量。
      1、源代码质量缺陷检查部分测试内容及结果:
     本次源代码质量缺陷检查涵盖了使用已释放内存,缓冲区溢出,COM字符串类型检测,值计算后没有使用,并发性检测,忽略返回值,在析构函数中释放不匹配的内存,不恰当的迭代使用,内存泄漏,不匹配的返回类型,空指针引用,资源处理错误,编码规范检查,规则检查,使用未初始化数据,没有使用的局部变量,不可达代码,可疑代码和解析告警20方面148个技术指标的内容。其中COM字符串类型检测,值计算后没有使用,并发性检测,忽略返回值,在析构函数中释放不匹配的内存,不恰当的迭代使用,内存泄漏,不匹配的返回类型,编码规范检查,规则检查,打印功能格式,没有使用的局部变量,不可达代码,可疑代码和解析告警没有发现质量缺陷;使用已释放内存发现1个质量缺陷,缓冲区溢出发现30个质量缺陷,空指针引用发现24个质量缺陷,资源处理错误发现3个质量缺陷,使用未初始化数据发现1个质量缺陷。
      2、安全漏洞扫描部分测试内容及结果:
     本次安全漏洞扫描涵盖了DNS欺骗,弱加密,注册表操作,没有验证的用户输入4个方面23个技术指标的内容。其中DNS欺骗,弱加密和注册表操作3个方面没有发现安全漏洞,没有验证的用户输入方面发现1个安全漏洞。
      3、代码质量度量部分测试内容及结果:
     本次软件架构分析及代码质量度量生成了项目的软件架构图,列出了83个圈复杂度大于20的方法。检测中心将软件架构图和圈复杂度大于20的方法提交给送检方。
 三、代码质量缺陷和安全漏洞扫描测试问题结果严重程度理论与用户认可度研究结果

      本次测试结束后,检测中心组织企业开发人员、技术专家和测试人员完成了人工分析和测试结果评估。完成过滤误报结果同时,采用军方业界通用分类标准将测试问题结果按照严重程度划分为十个等级,即对确认测试问题结果进行了理论评估,同时开展了测试问题结果用户认可度反馈评估。具体分级内容和结果见1和表2

 

代码质量缺陷测试问题结果严重程度理论与用户认可度研究结果列表        1
 
      缺陷指标
缺陷级别
备注
理论严重程度
用户认可度
使用已释放内存
2
D
问题严重程度分级:
1     关键错误(Critical)
2     严重错误(Severe)
3     错误(Error)
4     不期望出现的问题(Unexpected)
5     需要调查的问题(Investigate)
6     警告(Warning)
7     建议(Suggestion)
8     风格(Style)
9     检查(Review)
10    消息(Info)
用户认可度分级:
A 重点关注
B 主要关注
C 关注
D 需要调查
-- 未出现,待定
缓冲区溢出
1
A
COM字符串类型检测
--
--
值计算后没有使用
--
--
并发性检测
--
--
忽略返回值
--
--
在析构函数中释放不匹配的内存
--
--
不恰当的迭代使用
--
--
内存泄漏
--
--
不匹配的返回类型
--
--
空指针引用
1
A
资源处理错误
5
A
编码规范检查
--
--
规则检查
--
--
打印功能格式
--
--
使用未初始化数据
3
A
没有使用的局部变量
--
--
不可达代码
--
--
可疑代码
--
--
解析告警
--
--
 
代码安全漏洞测试问题结果严重程度理论与用户认可度研究结果列表       2
   安全漏洞指标
 
漏洞级别
备注
理论严重程度
用户认可度
DNS欺骗
--
--
问题严重程度分级:
1     关键错误(Critical)
2     严重错误(Severe)
3     错误(Error)
4     不期望出现的问题(Unexpected)
5     需要调查的问题(Investigate)
6     警告(Warning)
7     建议(Suggestion)
8     风格(Style)
9     检查(Review)
10    消息(Info)
用户认可度分级:
A 重点关注
B 主要关注
C 关注
D 需要调查
-- 未出现,待定
弱加密
--
--
注册表操作
--
--
没有验证的用户输入
1
D