前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >嵌入式基础知识-测试基础概念

嵌入式基础知识-测试基础概念

作者头像
xxpcb
发布2024-01-22 17:42:02
1380
发布2024-01-22 17:42:02
举报

本篇来介绍嵌入式项目开发中,软件测试的相关基础知识

1 测试基础知识

测试是指:在规定的条件下对程序进行操作,以发现错误,对软件质量进行评估

测试的对象包括程序、数据和文档

对于测试,并不是只有测试人员才需要了解,需要了解测试的人员包括:

  • 用户:参与需求验证和验收测试
  • 项目经理:参与测试计划指定
  • 程序员:完成单元测试
  • 测试员:设计和执行测试

1.1 测试原则

系统测试的原则包括:

软件测试的目的是发现软件的错误尽早地、不断地进行测试 避免由原开发软件的人或小组承担 设计测试方案时,不仅要确定输入数据,还要根据根据系统功能确定预期结果 既要包含有效、合理的测试用例,也要包含失效、不合理的用例 检测程序是否做了该做的事,且是否做了不该做的事 严格按照测试计划进行 妥善保存测试计划和测试用例 测试用例可重复使用或追加测试

1.2 测试方法

测试方法可以分为静态测试与动态测试两大类:

1.2.1 静态测试

静态测试可以由人工进行,也可以借助软件工具自动进行。

  • 桌面检查:程序员自己检查编写的程序
  • 代码审查:若干程序员与测试人员组成评审小组,召开程序评审会进行审查
  • 代码走查:由测试人员提供测试用例,程序员在大脑中运行测试用例,检查代码逻辑

1.2.2 动态测试

动态测试的主要特征是必须真正执行被测试的程序,通过输入测试用例,对其运行情况进行分析。

动态测试包括:

  • 黑盒测试:把待测软件当作一个内部结构不可见的黑盒,根据软件功能设计用例,测试软件功能。
  • 白盒测试:明确软件内部代码流程,根据软件代码逻辑设计用例,进行用例覆盖。
  • 灰盒测试:黑盒与白盒测试的结合

1.3 测试策略

在进行软件测试时,如果软件比较庞大复杂,就要考虑一定的测试策略:

  • 自底向上:从底层驱动模块开始测试,然后逐渐合并模块测试
  • 自顶向下: 先测试整个系统,再逐步向下测试底层模块
  • 三明治:自底向上与自顶向下的结合

1.4 测试阶段

在整个的软件开发周期中,会有不同阶段的软件测试,测试的侧重点也不同。

对比软件的开发流程,软件的测试阶段分为单元测试、集成测试、系统测试和验收测试:

  • 单元测试:对应编码阶段,程序自己对单个模块测试,测试模块内部的接口、信息和功能
  • 集成测试:对应详细设计,将模块组合起来测试,可以一次全部组装,也可以增量式组装
  • 系统测试:对应概要设计,用于检验软件产品是否与系统的其它部分协调工作,系统测试适用于评估系统的非功能需求,如性能、可靠性和安全性
  • 验收测试:对应需求阶段,是软件部署前的一个测试操作,其测试范围类似于系统测试,通常由系统提供者和客户共同完成

2 测试用例设计

在进行测试前,需要先设计好测试用例,这里主要介绍动态测试中的黑盒测试与白盒测试的测试用例。

2.1 黑盒测试用例设计

在黑盒测试时,根据软件需求规格说明书进行测试用例的设计。

黑盒测试用例设计包括:

  • 等价类划分:将数据按照某种特性归类,然后在每类数据中选取一个即可。通过设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类。
  • 边界值划分:将边界值作为测试用例,边界值一般为范围的两端值和此范围之外的两端最小间隔的值
  • 错误推测:根据经验推测可能有问题的地方
  • 因果图:由一个结果反推原因,具体结果具体分析

2.2 白盒测试用例设计

在白盒测试时,确定测试数据应根据程序的功能文档指定的覆盖标准,当根据程序的功能文档确定的测试数据不能满足指定的覆盖标准时,可参考程序的内部逻辑分析未满足覆盖标准的原因,并修改文档或增加测试数据。

白盒测试包括:

  • 基本路径测试
  • 循环覆盖测试
  • 逻辑覆盖测试

其中,逻辑覆盖又包括:

  • 语句覆盖(Statement Coverage, SC):设计足够的测试用例,让程序中所有的语句至少执行一次
  • 判定覆盖(Decision Coverage, DC):设计足够的测试用例,让程序中每个判定的每一种可能结果至少出现一次
  • 条件覆盖(Condition Coverage, CC):设计足够的测试用例,让程序中每个判定的每个条件的可能取值至少经历一次
  • 路径覆盖(Path Coverage, PC):设计足够的测试用例,覆盖程序中所有可能的路径

例如如下的程序流程图中:

语句、判定、条件和路径的对应关系如下

在这些准则覆盖层级中: 最弱的准则是语句覆盖,因为执行了所有语句,并不一定执行了所有的条件判定 最强的准则是路径覆盖

另外,还有一些复杂的逻辑覆盖:

  • 条件判断覆盖(Condition/Decision Coverage, C/DC):使得判定中每个条件的真和假至少出现一次,并且每个判定本身的真和假也至少出现一次。
  • 条件组合覆盖(Multiple Condition Coverage, MCC):使得每个判定中条件的各种可能组合都至少出现一次;一定满足DC、CC和C/DC。
  • 修正的条件判断覆盖(Modified Condition/Decision Coverage, MC/DC):每个程序模块的入口和出口都要考虑至少被调用一次,每个程序的判定到所有可能的结果值至少转换一次。

3 总结

本篇介绍了软件测试的相关基础知识,包括静态测试与动态测试、测试策略、测试阶段、白盒测试与黑盒测试等。下篇将根据实例,继续介绍白盒测试,各种语句覆盖的实操设计。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-01-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农爱学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 测试基础知识
    • 1.1 测试原则
      • 1.2 测试方法
        • 1.2.1 静态测试
        • 1.2.2 动态测试
      • 1.3 测试策略
        • 1.4 测试阶段
        • 2 测试用例设计
          • 2.1 黑盒测试用例设计
            • 2.2 白盒测试用例设计
            • 3 总结
            相关产品与服务
            腾讯云服务器利旧
            云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档