欢迎来到天天文库
浏览记录
ID:48406149
大小:45.50 KB
页数:15页
时间:2020-01-19
《5 代码检查与走查.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、代码检查、走查与评审在执行程序之前的人工测试静态测试和动态测试静态测试(人工测试)不运行程序进行测试,即检查和审阅静态黑盒测试——检查产品说明书静态白盒测试——检查代码,在不执行的条件下有条理地仔细审查软件设计、体系结构和代码,从而找出软件缺陷的过程,有时称为结构分析。动态测试(基于计算机的测试)运行和使用软件以发现错误,即通常意义上的测试人工测试人工测试方法的正规性、精确性不如基于计算机测试,但并不妨碍测试取得成功,相反可以提高测试的功效和可靠性错误发现得越早,改正错误成本越低,正确改正错误可能性越大程序员在开始基于计算机的测试时要
2、经历一个心理上的转变,改正早期发现的错误比改正后期计算机执行发现的错误时失误更少更容易定位以及发现由该错误引发的其他缺陷(如连锁错误或类似错误)降低调试成本通常会有效地查找出30%-70%的逻辑设计和编码错误代码检查实施过程协调人在代码检查前几天分发程序清单和设计规范编码人员讲述程序的逻辑结构,其他人员提问题并判断是否存在错误(对照历来常见的编码错误列表)注意力集中在发现错误而非纠正错误上(非调试)会议结束后,程序员会得到一份已发现错误的清单代码检查的其他作用程序员会得到编程风格、算法选择及编程技术等方面的反馈信息其他参与者也可以同样
3、受益代码检查的错误列表1.数据引用错误变量使用前是否赋值或初始化?(例1,2)容易引起变量使用错误,特别是对于引用变量。在java中要求局部变量在使用前必须初始化。数组下标的范围和类型(例3)是否存在下标越界错误,下标类型是否为整型。被引用的变量或内存的属性是否与编译器预期的一致?(例4)如A类型的引用是否指向的是非A类型对象。代码检查的错误列表(cont)2.数据声明错误是否所有变量都已声明?例5绝大多数编程语言要求变量先定义后使用,可保证变量使用的安全性。变量的初始化是否正确?变量的初始化是否与其存储空间的类型一致?例6是否每个变
4、量都有正确的长度、类型和存储类别?是否存在相似名称的变量?3.运算错误(例7)是否存在非算术变量之间的算数运算?是否存在混合模式或不同字长变量之间的运算?(int与float类型)目标变量大小是否小于所赋值的大小?(精度损失或越界错误)中间结果是否上溢或下溢?是否存在除0错误?操作符的优先顺序是否正确?整数除法是否正确?(精度问题,如2*(i/2)==i)代码检查的错误列表(cont)代码检查的错误列表(cont)4.比较错误是否有不同类型数据的比较运算?(如日期与数字)(例8)是否有混合模式或不同长度数据的比较运算?比较运算符是否正
5、确?(如至多、至少,不小于)布尔表达式(与、或、非)是否正确?比较运算符是否与布尔表达式相混合?(如2
6、配等。代码检查的错误列表(cont)代码检查的错误列表(cont)6.接口错误形参和实参的数量是否相等?形参的类型是否与实参的类型相匹配?形参的属性是否与实参的顺序相匹配?形参的单位是否和实参匹配?(属逻辑错误)7.输入输出错误(例11)文件属性是否正确?缓冲区、内存大小是否足够来保留程序将读取的文件?文件在使用前是否打开?文件在使用后是否关闭了?是否处理了IO错误?输出结果是否正确。代码检查的错误列表(cont)代码检查的错误列表(cont)8.其他检查是否存在未引用过的变量?编译通过的程序是否存在“警告”或“提示”信息?程序或模块
7、是否对输入的合法性进行了检查?(如第一章中三角形例)程序是否遗漏了某个功能?代码走查代码走查和代码检查类似,都是以小组为单位进行代码阅读,是一系列规程和错误检查技术的集合。二者的过程大致相同,不同之处在于规程稍微不同走查会议期间,每个测试用例都在人们脑中推演,即把测试的数据沿着程序的逻辑结构走一遍,记录程序的状态供监视,很多错误是在向程序员提问的过程中发现的。其他与代码检查相同的地方参与者所持的态度同样非常关键代码走查也会带来同样的附带作用桌面检查桌面检查桌面检查可视为由单人进行的代码检查或代码走查由一个人阅读程序,对照错误列表检查程
8、序,对程序推演的过程。桌面检查的缺点桌面检查的效率低是一个完全没有约束的过程,缺少互相促进的效应违反了测试原则:人们一般不能有效测试自己编写的程序,因此桌面检查最好由其他人而非该程序的编写人员来完成小结人工测试的必要性和
此文档下载收益归作者所有