测试方法

代码要求

  • 可运行

  • 易于维护

  • 灵活性
  • 可靠性

静态测试(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)的源代码文件测试代码数量和性能,最终结果可描绘成图、输出打印。

  • 度量、记录和显示代码质量指标:代码行数、注释行数、分支比例、注释比例、类定义个数、方法个数/类、平均语句数/方法、最大复杂度、最大调用深度、平均复杂度、函数个数。

  • 提取代码复杂度信息,为代码重构提供指导

  • 提示代码安全隐患,将问题解决在开发阶段

  • 提高程序员代码质量和工作效率