“土木人转行软件测试学习第15天”-白盒测试方法论
  • 白盒测试方法论

    • 基本概念

      • 根据待测产品(软件源代码)的内部实现细节来设计测试用例的方法一般称为白盒测试

      • 白盒测试的执行手段是可以覆盖单元测试、集成测试包括系统测试

      • 白盒测试使用代码覆盖率作为白盒测试的主要度量指标

    • 代码覆盖率常见概念

      • 语句覆盖:每行代码都要覆盖至少一次

      • 判定覆盖:判定表达式的真假至少覆盖一次

      • 判定/条件覆盖:除了判定覆盖一次里面的每个条件也都要覆盖其中的真假各一次

      • 条件组合覆盖:如果判定表达式中有多个条件所有条件组合关系都需要覆盖

      • 分支覆盖:代码的控制流中的每个判定条件之后走过的代码块,每个分支的功能的真假至少都要覆盖一次(分支覆盖可能100%覆盖但不同分支之间也有组合关系)

      • 路径覆盖:多个分支执行顺序连接起来,就形成了一条路径,把这些路径的全集找出来,所有的条件里面(已经覆盖的条件)除以所有总体的路径就会得到路径覆盖率,这就要求所有的路径都需要尽量覆盖

      • 指令覆盖:一行代码会被编译为多条指定,不停代码编译的指令数量是不一样的,用已经测试过执行的指令除以总体指令得出指令覆盖率,尽可能的覆盖所有指令

      • 方法覆盖:指令覆盖是条件覆盖更细维,再往上语句覆盖,再往上语句是包含在各个方法里面的,每个方法至少要被覆盖一次

      • 类覆盖:方法属于类,每个类至少被覆盖一次

    • Java覆盖率统计使用工具

      • emma

      • cobertura

      • jacoco

    • 流程覆盖

      • 流程覆盖通常是在路径覆盖的基础上利用代码执行流来表示代码流程,流程覆盖率统计业务走过所有代码,测试过的代码路径覆盖到总的跟业务相关的路径,流程覆盖用路径覆盖率表达,对流程进行裁剪获得一个适合业务的小规模的业务子集,流程覆盖率就等于测试经过的路径除以业务子集的路径

    • 精准化测试

      • 以代码的调用链与黑盒测试用例的关联关系,根据代码变更自动分析影响范围,根据黑盒测试过程中借助代码流程覆盖数据指导探索式测试, 利用线上的数据推导有效测试用例,代码流程分析与覆盖率统计