浅谈软件代码审查

发表于:2011-4-27 10:34

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:马骏    来源:51Testing软件测试网采编

  1、概述

  随着软件技术在各行各业应用越来越广泛,软件开发队伍日趋庞大,随之而来的软件工程化需求日益增大,在工程项目的开发中,技术人员已经认识到软件开发过程必须按照一定的规范进行,软件需求分析、概要设计、详细设计、程序编码、单元测试、集成测试、系统测试是实施软件工程化必不可少的阶段;在软件开发过程中,测试已经得到了相当的重视,测试工具、测试用例、测试环境已经成为保证软件质量的通用方法。根据软件工程要求,单元测试是测试过程中保证软件基本单元可靠、正确的第一步。理论上讲,单元测试包括静态分析和代码审查,之后才可以进行单元功能、性能的测试和验证。软件的覆盖率测试和结构测试属于静态分析的范畴,可以依靠一些软件工具进行。但是,代码审查必须依靠具有软件系统开发经验、编程经验和测试经验的技术人员集体审查。在实际工作中,这个重要的环节往往被忽视,不经过静态分析和代码审查,直接进行单元测试。本文就这一问题进行讨论,希望静态分析和代码审查能够得到技术人员的重视。

  2、静态分析和代码审查在软件生命周期中的位置

  如果采用结构化方法进行软件开发,那么整个开发过程要经历几个阶段。在系统开发初期,根据系统需求进行概要设计,系统可分解为软件配置项,配置项可以从功能上将系统的功能和性能合理分配,而配置项间的接口常常是软件子系统间的接口。在详细设计阶段,配置项再分解为功能细化的软件单元。软件编码完成后,进行软件单元测试、集成测试和系统测试。单元测试处于编码和集成测试的中间,既要完成验证单元功能的任务,又要提供软件集成测试的条件。单元测试需要完成的工作包括:静态分析、代码审查、测试用例编写、测试执行、结果处理等内容,其中静态分析和代码审查应首先执行。

  ●静态分析:静态分析的目的是通过对源程序分析、目测,但不执行程序,找出源代码中可能的错误和缺陷,对程序设计的结构属性,如分支、路径、转移等进行审查,尽可能地掌握程序的结构,为单元测试测试用例的设计和执行提供信息。

  ●代码审查:代码审查的目的是检查源程序编码是否符合详细设计的编码规定,确保编码与设计的一致性和可追踪性。检查的方面主要包括:书写格式、子程序或函数的入口和出口、数据、参数、程序语言的使用、存储器的使用、可读性、逻辑表达式的正确性、代码结构合理性等。

  静态分析和代码审查通常可以同时进行,通过静态分析掌握源程序结构,通过代码审查,尽量减少书写错误和隐含的逻辑错误,为单元测试提供比较稳定的环境。

  3、代码审查的重点范围

  软件编码的人为因素较多,比如:编程习惯、编程能力、编程技巧等,不同的人对同一个软件设计的思路也不尽相同。但是,软件编程中也存在一些共同的特点是可以规范和控制的,如语句的完整性、注释的明确性、数据定义的准确性、嵌套的次数限制、特定语句的限制等等,这些是软件编码过程中无论采用何种工具都要面临的共同问题。下面列出了进行代码审查时需要重点关注的一些方面。

  1)语句的完整性

  语句的完整性在源程序中是非常容易出错的一个方面,在条件语句If Else、选择语句Switch、循环语句For或While中对Break、Return的使用,经常被程序员简写或忽略。在代码审查中这是应当特别注意的一点。

  2)注释的明确性

  一般来说,一个完整的软件程序应有明确的注释,注释主要包括:序言性注释、功能性注释、数据注释、软件模块注释等。注释的比例一般应大于源程序总行数的1/5。

  3)限定语句的使用

  Goto语句不合理的使用,容易造成程序分支的混乱,使得程序结构清晰度较差、运行无规章可循、追踪困难。在静态分析中,一些软件工具如Logiscope、Rational的pure系列都能在Goto语句较多时,给出警告提示。

  4)数据定义的准确性

  数据定义必须准确,因为它会涉及内存的占用。数据与变量紧密相关,对于变量的检查应注意以下几个方面:

  ●未设初值的变量:对于全局变量一般应赋予初值,而对于局部变量不作严格限制;

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号