浅谈软件静态测试中的代码审查.doc_第1页
浅谈软件静态测试中的代码审查.doc_第2页
浅谈软件静态测试中的代码审查.doc_第3页
浅谈软件静态测试中的代码审查.doc_第4页
浅谈软件静态测试中的代码审查.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

浅谈软件静态测试中的代码审查摘要:本文描述了软件代码审查的作用、代码审查内容、代码审查过程,并列举一些常见代码审查问题。关键词:软件代码审查;代码审查过程;代码审查问题discussion on the code review of software static testingyuan zhengjiang(jiangnan institute of electrical and mechanical design,guiyang550009,china)abstract:this paper describes the software code to examine the role,content,code review process,and lists some common problems of code review.keywords:software code review;code review process;code review problem一、引言软件测试常用方法可分为动态测试和静态测试,只有动态测试和静态测试有效结合,才能更好的完成软件测试工作。代码审查是软件静态测试中常用的软件测试方法之一,代码审查时,只要测试人员方法得当、足够细心,往往能够产生意想不到的效果。二、代码审查的作用代码审查是在不执行软件的条件下有条理的仔细审查软件代码,从而找出软件缺陷的过程。代码审查可以找出动态测试难以发现或隔离的软件缺陷。在开发过程初期让测试人员集中精力进行软件代码审查非常有价值:可以提高代码质量;在项目的早期发现缺陷,将损失降至最低;促进团队沟通、促进知识共享、共同提高。代码审查还可以为动态测试时设计和执行测试用例提供思路。通过代码审查,可以确定有问题或者容易产生软件缺陷的特性范围。三、代码审查的过程代码审查过程可分为:代码审查策划阶段、代码审查实施阶段以及代码审查总结阶段。(一)代码审查策划阶段1.项目负责人分配代码审查任务;2.确定代码审查策略:依据软件开发文档,确定软件关键模块,作为代码审查重点;将复杂度高的模块也作为代码审查的重点;3.项目负责人确定代码审查单,审查内容一般可包括:(1)可追溯性:代码是否遵循详细设计?代码是否与需求一致?(2)逻辑:表示优先级的括号用法是否正确?代码是否依赖赋值顺序?“ifelse”和“switch”使用是否正确清晰?循环能否结束?复合语句是否正确地被花括号括起来?case语句是否所有可能出现的情况均已考虑?“goto”是否使用?(3)数据:变量在使用前是否已初始化?变量的声明是否按组划分为外部的和内部的?除最明显的声明外,是否所有声明都有注释?每个命名是否仅用于一个用途?常量名是否都大写?常量是否都是通过“#define”定义的?用于多个文件中的常量是否在一个头文件中定义?头文件中是否存在可执行的代码?定义为指针的变量是否作为指针使用(而不是作为整数)?指针是否初始化?释放内存后是否将指针立即设置为null(或0)?传递指针到另一个函数的代码是否首先检查了指针的有效性?通过指针写入动态分配内存的代码是否首先检查了指针的有效性?宏的命名是否都大写?数组是否越界?(4)接口:在所有的函数及过程调用中,参数的个数都正确吗?形参与实参类型匹配吗?参数顺序正确吗?如果访问共享内存,是否具有相同的共享内存结构模式?(5)文档:软件文档是否与代码一致?(6)注释:注释与代码是否一致?用于理解代码的注释是否提供了必要的信息?是否对数组和变量的作用进行了描述?(7)异常处理:是否所有可能的错误都已加以考虑?(8)内存:在向动态分配的内存写入之前是否检查了内存申请是否成功?若采用动态分配内存,内存空间分配是否正确?当内存空间不再需要时,是否被明确的释放?(9)其它:是否检查了函数调用返回值?所有的输入变量都用到了吗?所有的输出变量在输出前都已赋值了吗?4.确定代码审查进度安排,项目负责人负责安排代码审查的进度。(二)代码审查实施阶段1.代码讲解:软件开发人员详细向测试人员讲解如何以及为何这样实现,测试人员提出问题和建议。通过代码讲解,测试人员对被审查的软件有了一个全面的认识,为后续代码审查打下良好的基础。2.静态分析:一般采用静态分析工具进行,主要分析软件的代码规模、模块数、模块调用关系、扇入、扇出、圈复杂度、注释率等软件质量度量元。静态分析在代码审查时应优先进行,有利于软件测试人员在后续代码审查时对软件建立宏观上认识,在审查中容易做到有的放矢,更易于发现软件代码中的缺陷。3.规则检查:采用静态分析工具对源程序进行编码规则检查,对于工具报出的问题再由人工进行进一步的分析以确认软件问题,是一种比较有效的方法。4.正式代码审查:代码审查可分两步进行:独立审查和会议审查。根据情况,这两步可以反复进行多次。(1)独立审查:测试人员根据项目负责人的工作分配,独自对自己负责的软件模块进行代码审查。测试人员根据代码审查单,对相关代码进行阅读、理解和分析后,记录发现的错误和疑问。(2)会议审查:项目负责人主持召开会议,测试人员和开发人员参加;测试人员就独立审查发现的问题和疑问与开发人员沟通,并讨论形成一致意见;对发现的问题汇总,填写软件问题报告单,提交开发人员处理。5.更改确认:开发人员对问题进行处理,代码审查人员对软件的处理情况进行确认,验证更改的正确性,并防止出现新的问题。(三)代码审查总结阶段代码审查工作结束后,项目负责人总结代码审查结果;编写测试报告,对软件代码质量进行评估,给出合理建议。把代码审查提出的所有问题、亮点及最终结论详细的记录下来,供其他软件项目代码审查借鉴。必要时,可建立常见软件代码缺陷数据库,为软件代码审查人员培训和执行代码审查提供数据支持,也可以为软件编码规则制定规范提供实践依据。四、代码审查中的常见问题如果软件测试人员熟悉常见的软件代码审查问题,对代码审查效率是很有帮助的。笔者根据自己的应验,列举部分常见软件代码审查问题如下(仅供参考):(1)浮点数相等比较:可能造成程序未按设计的路径执行;(2)因设计原因导致某些代码不能执行:如逻辑表达式永远为真(或假)造成某分支不能执行、代码前面有return语句、某模块从未被调用等;(3)switch语句没有break语句(有意如此设计时除外);(4)数组越界使用:数组越界容易发生在数组下标是计算得到的情况下,而且审查时很难发现这种代码缺陷,应加以重视;(5)变量未初始化就使用或者是条件赋值就使用;(6)程序中存在未使用的多余变量;(7)复合逻辑表达式没有使用括号造成运算顺序错误;(8)有返回值的函数中return没有带返回值;(9)逻辑判别的表达式不是逻辑表达式;(10)动态分配的内存没有及时释放:忘记写内存释放代码或由于其它逻辑缺陷导致内存释放代码未得到执行;(11)没有对缓冲区溢出进行必要的防护;(12)访问空指针,即指针未初始化就使用;(13)指针指向的内存释放后,未将指针置为null:其它函数访问该指针时,判断指针不为空,当作有效指针使用,会造成内存访问错误;(14)注释说明与程序代码实现不一致,甚至相反;(15)循环存在不能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论