代码要求
可运行
易于维护
灵活性
可靠性
静态测试(static testing)
通过手工检查(评审)或自动化工具分析(静态分析)的方式对代或其他的项目文档进
行检查
直接发现缺陷(引起失效的原因)
发现的典型缺陷:与标准之间的偏差、需求内的错误、设计错误、可维护性不足和错误接口规格说明等等
步骤
互查(Peer Review)
走查(Walk Through)
评审( Inspection )
如果没有需求文档就列一些常见问题形成一个检查列表
数据结构测试
- 误解或用错了算符优先级
- 混合类型运算
- 变量初值错
- 精度不够
- 表达式符号错
- 其他
模块接口测试
- 输入的实际参数与形式参数是否一致(个数、属性、量纲)
- 调用其他模块的实际参数与被调模块的形参是否一致。
- 个数、属性、量纲
- 全程变量的定义在各模块是否一致。
- 外部输入、输出
- 文件、缓冲区、错误处理
- 其它
临界数据处理的正确性测试
- 普通合法数据的处理。
- 普通非法数据的处理。
- 边界值内合法边界数据的处理。
- 边界值外非法边界数据的处理。
- 其它
异常处理测试
- 输出的出错信息难以理解
- 记录的错误与实际不相符
- 异常处理不当
- 未提供足够的定位出错的信息
- 其它
动态测试(dynamic testing)
发现的典型缺陷:软件运行过测试软件
发现软件失效(缺陷的外部表现)
发现的典型缺陷:软件运行过程中与规格说明、用户需求之间的偏差
代码检查工具
- Checkstyle:静态语法检查
- Findbugs:静态逻辑bug检查
- SourceMonitor:代码质量自动检查
Checkstyle
CheckStyle是一款代码格式检查工具,关注代码格式带来的缺陷、风险和问题。
根据设置好的编码规则来检查代码(定制化的)
规则可以触发通知(notification),警告(warning)和错误(error)
只做检查,不修改代码
Findbugs
Findbugs是一个静态分析工具,检查类或JAR文件,将字节码与一组缺陷模式进行对比以发现可能的问题。
- 发现的问题大部分都是在Runtime过程中,会造成程序异常、错误的
- 可以联系class所在package的上下文,对代码进行穿透检查,对隐藏的比较深层次的逻辑错误、资源操作问题等进行报警
- 更加专注于逻辑风险、错误,例如:可能发生的无限循环,效率低下的数据结构访问等
SourceMonitor
SourceMonitor可以为多种编程语言(比如C/C++ ,JAVA)的源代码文件测试代码数量和性能,最终结果可描绘成图、输出打印。
度量、记录和显示代码质量指标:代码行数、注释行数、分支比例、注释比例、类定义个数、方法个数/类、平均语句数/方法、最大复杂度、最大调用深度、平均复杂度、函数个数。
提取代码复杂度信息,为代码重构提供指导
提示代码安全隐患,将问题解决在开发阶段
提高程序员代码质量和工作效率