软件测试学习-第二章单元测试2

静态测试vs动态测试

静态测试(static testing)

  • 通过手工检查(评审)或自动化工具分析(静态分析)的方式对代码或其他的项目文档进行检查
  • 直接发现缺陷(引起失效的原因)
  • 发现的典型缺陷:与标准之间的偏差、需求内的错误、设计错误、可维护性不足和错误的接口规格说明等等

动态测试(dynamic testing)

  • 通过运行软件的组件或系统来测试
  • 软件发现软件失效(缺陷的外部表现)
  • 发现的典型缺陷:软件运行过程中与规格说明、用户需求之间的偏差

静态测试技术

静态测试技术:不运行被测试程序,对代码或其它项目文档通过检查、阅读进行分析。

三步曲:

  • 互查(Peer Review)
  • 走查(WalkThrough)
  • 评审( Inspection)

评审中的角色 经理,主持人,评审员,记录员,作者

代码评审

代码评审:通过阅读代码来检查源代码与编码标准的符合性以及代码质量的活动。

评审内容

  • 编码规范问题:命名不规范、magic number、System.out…
  • 代码结构问题:重复代码、巨大的方法和类、分层不当
  • 工具、框架使用不当:Spring
  • 实现问题:错误验证、异常处理、事务划分、线程、性能、安全、实现过于复杂、代码可读性不佳、扩展性不好
  • 测试问题:测试覆盖度不高、可测试性不好

代码评审中发现的问题严重程度:·

  • 命名规则和代码风格=低级
  • 控制结构或逻辑问题=中级
  • 冗余问题=高级
  • 性能问题=高级
  • 安全问题=高级
  • 可测量性问题=高级
  • 功能性问题=高级
  • 错误处理=高级
  • 可重用性问题=中级

路径测试

检查每一条独立执行路径的测试,并保证每条语句被至少执行一次。

Checklist:

  • 误解或用错了算符优先级
  • 混合类型运算
  • 变量初值错
  • 精度不够
  • 表达式符号错误
  • 其它

数据结构测试

检查局部数据结构完整性

Checklist:

  • 变量无初值
  • 不适合或不相容的类型说明
  • 变量初始化或默认值有错
  • 不正确的变量名或从来未被使用过
  • 出现上溢或下溢和地址异常
  • 其它

模块接口测试

检查模块接口是否正确

checklist:

  • 输入的实际参数与形式参数是否一致(个数、属性、量纲)
  • 调用其他模块的实际参数与被调模块的形参是否一致。个数、属性、量纲
  • 全程变量的定义在各模块是否一致。
  • 外部输入、输出
  • 文件、缓冲区、错误处理
  • 其它
    代码中的错误怎么下载该视频2

单元边界条件测试

检查临界数据处理的正确性

Checklist:

  • 普通合法数据的处理。
  • 普通非法数据的处理。
  • 边界值内合法边界数据的处理。
  • 边界值外非法边界数据的处理。
  • 其它

单元容错测试

预设的各种出错处理是否正确有效。

Checklist:

  1. 输出的出错信息难以理解
  2. 记录的错误与实际不相符
  3. 异常处理不当
  4. 未提供足够的定位出错的信息
  5. 其它

代码检查

代码检查是一个“静态”的过程:重 点关注编码的规范性,也关注代码错误,从多维度进行检查,以量化的指标报告提供评价结论,是质量提升的一个组成部分

  1. 代码检查的目的:提升软件质量
  2. 代码的要求
    可运行
    易于维护
    灵活性
    可靠性

自动化检查代码工具

Checkstyle插件 链接eclipse-cs.sourceforge.net

阿里巴巴Checkstyle代码规范文件 链接 请将后缀名修改成.xml

安装
  1. 下载完成后将压缩包中features文件夹和plugins文件夹的复制到eclipse中的根目录中进行覆盖;
    软件测试学习-第二章单元测试2
  2. 打开eclipse,Window–>Preferences,如果列表中出现了checkstyle的菜单,则表示安装成功了。
    软件测试学习-第二章单元测试2
  3. 注意:如果启动eclipse时,提示ClassNotFoundException等异常信息,则启动时加上一个“-clean”参数启动即可。
    软件测试学习-第二章单元测试2
使用
软件测试学习-第二章单元测试2

静态语法检查
CheckStyle是一款代码格式检查工具,关注代码格式带来的缺陷、风险和问题

  • 根据设置好的编码规则来检查代码(定制化的)
  • 规则可以触发通知(notification),警告(warning)和错误(error)
  • 只做检查,不修改代码

Findbugs插件 链接 edu.umd.cs.findbugs.plugin.eclipse_3.0.1

安装 与Checkstyle大致类似

下载完成后,将下载的文件解压到eclipse的plugins路径下
软件测试学习-第二章单元测试2

静态逻辑检查
Findbugs是一个静态分析工具,检查类或JAR文件,将字节码与一组缺陷模式进行对比以发现可能的问题

  • 发现的问题大部分都是在 Runtime过程中,会造成程序异常、错误的
  • 可以联系 class所在 package的上下文,对代码进行穿透检查,对隐藏的比较深层次的逻辑错误、资源操作问题等进行报警
  • 更加专注于逻辑风险、错误,例如:可能发生的无限循环,效率低下的数据结构访问等

SourceMonitor工具 链接 SourceMonitor.exe

代码质量检查
SourceMonitor可以为多种编程语言(比如C/C++,JAVA)的源代码文件测试代码数量和性能,最终结果可描绘成图、输出打印

  • 度量、记录和显示代码质量指标:代码行数、注释行数、分支比例、注释比例、类定义个数、方法个数/类、平均语句数/方法、最大复杂度、最大调用深度、平均复杂度、函数个数。口提取代码复杂度信息,为代码重构提供指导
  • 提示代码安全隐患,将问题解决在开发阶段
  • 提高程序员代码质量和工作效率
结果查看
  • XML格式:这些工具都可以产生ML文件,这些XML文件用来产生HTML报表或者是被别的工具用来浏览分析的结果。
  • HTML格式:HTML格式是最受欢迎的产生报表和团队间分享的的方式,你也可以用xs表格创建你自己的报表。
  • IDE插件:几乎所有叫得上名字的DE都给这些工具提供了插件,这使得发现源码中存在的所有问题几乎变成可能。