浅谈软件静态测试中的代码审查
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
浅谈软件静态测试中的代码审查
摘要:本文描述了软件代码审查的作用、代码审查内容、代码审查过程,并列举一些常见代码审查问题。
关键词:软件代码审查;代码审查过程;代码审查问题discussion on the code review of software static testing yuan 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)逻辑:
——表示优先级的括号用法是否正确?
——代码是否依赖赋值顺序?
——“if…else”和“switch”使用是否正确清晰?
——循环能否结束?
——复合语句是否正确地被花括号括起来?
——case语句是否所有可能出现的情况均已考虑?——“goto”是否使用?
(3)数据:
——变量在使用前是否已初始化?
——变量的声明是否按组划分为外部的和内部的?
——除最明显的声明外,是否所有声明都有注释?
——每个命名是否仅用于一个用途?
——常量名是否都大写?
——常量是否都是通过“#define”定义的?
——用于多个文件中的常量是否在一个头文件中定义?
——头文件中是否存在可执行的代码?
——定义为指针的变量是否作为指针使用(而不是作为整数)?——指针是否初始化?
——释放内存后是否将指针立即设置为null(或0)?
——传递指针到另一个函数的代码是否首先检查了指针的有效性?
——通过指针写入动态分配内存的代码是否首先检查了指针的有效性?
——宏的命名是否都大写?
——数组是否越界?
(4)接口:
——在所有的函数及过程调用中,参数的个数都正确吗?——形参与实参类型匹配吗?
——参数顺序正确吗?
——如果访问共享内存,是否具有相同的共享内存结构模式?(5)文档:
——软件文档是否与代码一致?
(6)注释:
——注释与代码是否一致?
——用于理解代码的注释是否提供了必要的信息?
——是否对数组和变量的作用进行了描述?
(7)异常处理:
——是否所有可能的错误都已加以考虑?
(8)内存:
——在向动态分配的内存写入之前是否检查了内存申请是否成功?
——若采用动态分配内存,内存空间分配是否正确?
——当内存空间不再需要时,是否被明确的释放?
(9)其它:
——是否检查了函数调用返回值?
——所有的输入变量都用到了吗?
——所有的输出变量在输出前都已赋值了吗?
4.确定代码审查进度安排,项目负责人负责安排代码审查的进度。(二)代码审查实施阶段
1.代码讲解:软件开发人员详细向测试人员讲解如何以及为何这样实现,测试人员提出问题和建议。通过代码讲解,测试人员对被审查的软件有了一个全面的认识,为后续代码审查打下良好的基础。
2.静态分析:一般采用静态分析工具进行,主要分析软件的代码规模、模块数、模块调用关系、扇入、扇出、圈复杂度、注释率等软件质量度量元。静态分析在代码审查时应优先进行,有利于软件测试人员在后续代码审查时对软件建立宏观上认识,在审查中容易做到有的放矢,更易于发现软件代码中的缺陷。
3.规则检查:采用静态分析工具对源程序进行编码规则检查,对于工具报出的问题再由人工进行进一步的分析以确认软件问题,是一种比较有效的方法。
4.正式代码审查:代码审查可分两步进行:独立审查和会议审查。根据情况,这两步可以反复进行多次。
(1)独立审查:测试人员根据项目负责人的工作分配,独自对自己负责的软件模块进行代码审查。测试人员根据代码审查单,对相关代码进行阅读、理解和分析后,记录发现的错误和疑问。