程序设计缺陷分析.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2011年 9月 内蒙古大学学报 (自然科学版) Sept. 2011 第42卷第5期 JournalofInnerMongoliaUniversity(NaturalScienceEdition) Vo1.42No.5 文章编号 :1000—1638(2011)05—0505—06 程序设计缺 陷分析 于秀山,于长钺 (中国电子系统设备工程公司,北京 100141) 摘要 :程序设计是软件生命周期中一个重要阶段,程序设计缺陷将引发各种软件问题.根据软 件测试中出现的与程序设计有关的缺陷,归纳整理了程序设计方面存在的编码风格、变量初始 化、内存管理等缺陷,并通过实例对部分缺陷进行了分析,给出了修改方法. 关键词 :程序设计;软件测试;缺陷分析 中图分类号 :TP31 文献标志码 :A 引 言 言及程序设计,大部分人并不陌生,也出现了很多程序设计高手,但软件产品,甚至是微软公司开 发的操作系统软件 ,为何频繁出现问题呢?程序设计存在缺陷是一个根本原因!许多看似正确的程 序 ,其实其 中隐藏着缺陷,有很多缺陷通常情况下难 以发现,一旦触发这些缺陷,软件运行将 出现 问 题. 本文根据作者多年软件测试的经验 ,从程序设计的角度 ,对软件测试中发现的问题进行了归纳整 理 ,以期对读者有所帮助. 1 编码风格方面 问题 编码风格看似一些无关紧要的小 问题,但如果处理不当,会产生各种意想不到的缺陷. 常见的编码风格方面的缺陷主要有:布尔型变量被赋值、“一=”运算符与 “=”赋值符混用、按位 运算符 “”、“l”和逻辑运算符 “8L8L”、“lI”混用、单引号 ‘’和双引号 “”字符混用、赋值表达式错用 其他操作符、分号使用不当、自增 /自减 (++/一一)运算符和变量间有空格、错误使用 自增 /自减(+ +/一一)运算符、字符串结束符被误用、对浮点型变量进行相等比较、运算符的优先级使用错误、使用 逗号导致程序发生错误. 1.1 对浮点型变量进行相等比较示例 浮点数在内存中的存储机制和整数不同,有舍入误差,在计算机 中用以表示某个近似实数,但无 法精确.具体来说,这个实数 由一个整数或定点数乘以某个基数 (计算机中通常是 2)的整数次幂得 到 ,这种表示方法类似于基数为 1O的科学记数法.因为浮点数是非精确存储 ,所 以比较浮点数是否相 等时,不能用关系运算符 中的 “一 =”、“!一”、“=”和 “=”进行 比较运算. 例 1: 1 intmain() 2 f 3 floata; 4 floatb; * 收稿 日期 :2011-07-03 作者简介:于秀山(1962一),男,山东栖霞人 ,研究员 ,博士. 内蒙古大学学报 (自然科学版) if(a一一6) return 1; 9 ) 例 1的第 6行语句中,直接使用关系运算符 “==”比较两个浮点数是否相等. 当需要判断两个浮点数是否相等时,应该先设定一个精度 ,比较两个浮点数差的绝对值是否在这 个精度范围内. 修改方法 :将第 6行语句改为 “if(fabs(a--b) 1.OE一10)”. 1.2 按位运算符 “&”、“l”和逻辑运算符 “&&”、“ll”混用示例 这两对运算符 由于形似 ,容易误用. 例 2: 1 f() 2 {return1;} 3 main() 4 { 5 inta一 8; 6 intb一 1: 7 if(ag~b)f(); 8 } 例 2中,第 7行条件判断语句 “if(a~b)”本意是逻辑与运算 “”,被误用为按位与运算符 “8L” 后 ,“81”结果为 0,函数 f()将不会执行. 2 变量初始化 问题 使用未初始化变量是很常见的程序错误,编译器把变量存放在内存 中的某个位置 ,如果变量没有 正确初始化,则该变量存储的数据是未知的,在程序 中直接使用该变量可

文档评论(0)

lingyun51 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档