测试方法

一、 测试方法的分类

  • 静态测试方法
  • 动态测试方法

1. 静态测试方法

  • 不执行程序的测试方法。
  • 主要用于测试文档和代码(文档)。

2. 动态测试方法

  • 通过运行程序来发现缺陷的测试方法。
    • 黑盒测试方法
    • 白盒测试方法
    • 灰盒测试方法(白 + 黑)

2.1 黑盒测试

  • 也称为功能测试、数据驱动测试、基于规格说明书测试。
    在这里插入图片描述

  • 从用户观点出发,主要以软件规格说明书为依据,对程序功能和接口进行测试,对 输入输出数据之间的对应关系进行测试。

  • 它不涉及到程序的内部结构,如果外部特性本身有问题或规格说明书有问题,则无 法察觉。

    • 安全性测试、互操作性测试也属于功能测试。
    • 方法如大纲法、场景法、等价类、边界值、决策表、错误猜测等。
  • 黑盒测试方法还用于测试软件的非功能性特性。

    • 非功能测试用于测试系统工作的怎么样,包括但不限于
      • 可用性/可靠性/稳定性/健壮性/可恢复性测试
      • 可维护性测试
      • 易用性测试
      • 可移植性/兼容性测试
      • 配置测试
      • 文档测试
      • 国际化测试/本地化测试
    • 当不涉及程序内部结构时,上述测试类型也使用黑盒测试方法。

2.2 白盒测试

  • 也称结构测试、逻辑驱动测试、基于程序本身的测试、程序员测试。
    在这里插入图片描述

  • 结构测试需要完全了解程序结构和处理过程,按照程序内部逻辑测试程序,检验程 序中每条通路是否按照预定要求工作。

2.3 黑盒测试与白盒测试的区别

在这里插入图片描述

二、静态测试方法

静态测试方法包括评审和静态分析方法。

1. 评审

1.1 评审的含义、过程和目的

在这里插入图片描述

1.2 评审的角色

在这里插入图片描述

1.3 评审的分类

  • 文档审查
  • 代码审查
  • 代码走查

1.4 代码审查

1.4.1 代码审查的含义、过程和目的

在这里插入图片描述

1.4.2 代码审查的方法和范围
  • 具体做法方法
    • 互查
  • 通常合格的代码应具备正确性、清晰性、规范性、一致性和高效性,概括起来, 代码审查的工作涵盖下列方面
    • 业务逻辑的审查
    • 算法的效率
    • 代码风格
      • if(1 == j)与if(j == 1),问:以上哪种代码风格较好?
      • if (j>MAX_NUM) 与 if (j>2000),哪个好?
    • 编程规则

1.5 代码走查

在这里插入图片描述

2. 静态分析方法

在这里插入图片描述

2.1 数据流分析

  • 使用了未声明/定义的变量
  • 变量声明了没有使用

2.2 控制流分析

在这里插入图片描述

2.3 复杂度分析

  • 复杂度分析给出一组能描述程序代码的复杂度特征的度量。
    在这里插入图片描述
  • 计算复杂度
    在这里插入图片描述

3. 静态测试的意义

在这里插入图片描述

4. 静态测试可以发现的缺陷

  • 引用一个没有定义值的变量;
  • 从未使用的变量;
  • 模块和组件之间接口不一致;
  • 不可达代码(unreachable code)或死代码(dead code);
  • 违背编程规则;
  • 安全漏洞;
  • 代码和软件模型的语法错误等。

5. 一些静态分析工具

[OSS]代表开源软件,[PROPRIETARY]代表付费软件。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、白盒测试方法

1. 单元测试用例的设计方法

  • 白盒测试方法
  • 黑盒测试方法
  • 以白盒测试方法为主,并适当地结合黑盒测试方法

2. 白盒测试方法

  • 逻辑覆盖法
    • 语句覆盖
    • 判定覆盖
    • 条件覆盖
    • 判定-条件覆盖
    • 条件组合覆盖
  • 路径覆盖法

3. 白盒测试方法的步骤

3.1 获得需求、获得/画出程序流程图/算法图

在这里插入图片描述

3.2 画出控制流图

  • 根据需求来画
  • 根据算法图/流程图来画
  • 弄清预期结果
    在这里插入图片描述

3.3 选择覆盖方法设计测试用例

3.3.1 语句覆盖法 C0
  • 目标
    • 程序中的每个可执行语句至少被执行一次。
  • 度量(覆盖率)
    • 被执行的语句数/所有可能的语句数。
    • 被执行的路径数/所有可能的路径数。
      在这里插入图片描述
  • 用例
    • a=2,b=1,c=6
    • 用例对语句的覆盖率:100%
    • 用例对路径的覆盖率:25%
  • 语句覆盖能发现语句错误
    在这里插入图片描述
  • 语句覆盖不能发现逻辑错误/条件错误
    在这里插入图片描述
3.3.2 分支/判定覆盖 C1
  • 目标
    • 程序中的每个判定的取真分支和取假分支至少执行一次。
      在这里插入图片描述
  • 用例
    • a=2,b=1,c=6
    • a=-1,b=1,c=1
    • 用例对语句的覆盖率:100%
    • 用例对路径的覆盖率:50%
  • 分支/判定覆盖能发现逻辑错误
    在这里插入图片描述
  • 分支/判定覆盖不能发现组合判断中的条件错误
    在这里插入图片描述
3.3.3 条件覆盖 C2
  • 目标
    • 程序每个判定中每个条件的可能取值至少满足一次。
  • 未必比 C1 更全面。
  • 不能发现逻辑错误。
    在这里插入图片描述
  • 用例
    在这里插入图片描述
  • 思考:覆盖率?
3.3.4 判定-条件覆盖 C1+C2
  • 目标
    • 每个条件中的所有可能取值至少执行一次,同时,每个判定的可能结果至少执 行一次。
  • 可能会导致某些条件掩盖了另一些条件。
    在这里插入图片描述
  • 用例
    在这里插入图片描述
3.3.5 条件组合覆盖/多条件覆盖 C3
  • 目标
    • 每个判定中的所有的条件取值组合至少执行一次。
  • 比 C2 全面。
    在这里插入图片描述
  • 用例
    在这里插入图片描述
3.3.6 路径覆盖 C4
  • 目标
    • 用例覆盖程序中的所有可能的执行路径。
  • 不切实际
    • 因为涉及到相当长和几乎无穷尽的路径数。
    • 任何可能的循环在程序段中都被视为是可能的路径。
  • 用例
    在这里插入图片描述
  • 路径覆盖优化
    在这里插入图片描述
  • 从源节点到汇节点的线性独立路径数(根据圈复杂度计算)
    • V(G)=e-n+2p=10-7+2=5
    • 当规模很小时,我们可以直观地标识独立路径。
  • 以下给出的是用节点/边序列表示的路径:
    • p1:A,B,C,G/1,4,9
    • p2:A,B,C,B,C, G/1,4,3,4,9
    • p3:A,B,E,F,G/1,5,8,10
    • p4:A,D,E,F,G/2,6,8,10
    • p5:A,D,F,G/2,7,10
  • 案例
    在这里插入图片描述

四、 白盒测试工具

  • 内存资源泄漏检查工具
    • 如 Numega 中的 BounceChecker,Rational 的 Purify 等;
  • 代码覆盖率检查工具
    • 如 Numega 的 TrueCoverage , Rational 的 PureCoverage ,TeleLogic 公 司 的 Logiscope;
  • 代码性能检查工具
    • 如 Logiscope 和 Macabe 等。
  • 静态源代码分析工具
    • 类似于编译器,能够检查源代码,发现违反编程语言语法规则和大量定义编程规范的代码。
  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
敏捷测试流程是一种灵活的测试方法,旨在应对快速变化的需求和交付周期。它强调快速、频繁、可迭代的测试,并注重团队合作和持续改进。 敏捷测试流程通常包括以下步骤: 1. 制定测试计划:测试团队与相关利益相关者合作,确定测试目标、范围和计划。测试计划应基于项目的具体需求和风险,以达到最佳测试效果。 2. 分解需求:测试团队与开发团队共同分解原型或用户故事,并确定可测量和可验收的需求标准。这有助于确保测试用例覆盖所有功能,并减少对后期更改的影响。 3. 设计测试用例:测试团队根据需求分解的结果,设计各类测试用例,包括功能测试、性能测试、安全性测试等。测试用例要覆盖不同场景和边界条件。 4. 执行测试用例:在开发迭代期间,测试团队根据测试计划和设计的测试用例执行测试活动。他们会及时发现和报告缺陷,并与开发团队合作解决问题。 5. 反馈和改进:测试团队定期与产品负责人、开发团队和其他利益相关者共享测试结果和反馈。他们评估测试过程中的成功和挑战,并通过持续改进来提高测试效率和质量。 6. 迭代回顾:在每个迭代结束后,测试团队与项目团队一起进行回顾。他们分享经验教训,讨论测试成果和挑战,并制定下一个迭代的改进计划。 敏捷测试流程的优势在于其灵活性和迭代性。它可以在需求变化时快速调整测试策略,并通过频繁测试和反馈来确保产品质量。这种流程要求测试团队具备良好的沟通能力、快速学习和适应变化的能力,以及扎实的测试技能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值