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

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

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 总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/640930.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

读AI3.0笔记04_视觉识别

1. 两次飞跃 1.1. ConvNets是当今计算机视觉领域深度学习革命的驱动力 1.1.1. 20世纪80年代便由法国计算机科学家杨立昆提出,而他则是受到了福岛邦彦提出的神经认知机(Neocognitron)的启发 1.2. ImageNet竞赛被看作计算机视觉和人工智能进…

Docker 配置 Gitea + Drone 搭建 CI/CD 平台

Docker 配置 Gitea Drone 搭建 CI/CD 平台 配置 Gitea 服务器来管理项目版本 本文的IP地址是为了方便理解随便打的,不要乱点 首先使用 docker 搭建 Gitea 服务器,用于管理代码版本,数据库选择mysql Gitea 服务器的 docker-compose.yml 配…

Kubernetes(K8S)拉取本地镜像部署Pod 实现类似函数/微服务功能(可设置参数并实时调用)

以两数相加求和为例,在kubernetes集群拉取本地的镜像,实现如下效果: 1.实现两数相加求和 2.可以通过curl实时调用,参数以GET方式提供,并得到结果。(类似调用函数) 一、实现思路 需要准备如下的…

分布式websocket IM聊天系统相关问题问答【第九期】

前言 上期视频讲解了自己关于聊天系统的设计的时候出现了一些不一样的声音。不了解情况的可以看上上期视频。这期主要是讨论。IM聊天系统设计方案多。我的先说明一下自己的技术背景互相之间才能更好的理解。 本期对应视频 目前已经写的文章有。并且有对应视频版本。 git项目地…

FPGA中跨时钟域传数据——(1)单bit脉冲

FPGA中跨时钟域传数据——(1)单bit脉冲 亚稳态模型由快时钟传到慢时钟由慢时钟传到快时钟 亚稳态模型 必须在建立时间和保持时间内,数据不变化,否则会产生亚稳态。 由快时钟传到慢时钟 在快时钟里面进行数据展宽(…

牛客周赛 Round 20 解题报告 | 珂学家 | 状压DP/矩阵幂优化 + 前缀和的前缀和

前言 整体评价 这场比赛很特别,是牛客周赛的第20场,后两题难度直线飙升了。 前四题相对简单,E题是道状压题,历来状压题都难,F题压轴难题了,感觉学到了不少。 A. 赝品 先求的最大值 然后统计非最大值的个…

位置无关码PIC详解:原理、动态链接库、代码重定位

静态链接库将代码和数据在编译时整合到可执行文件,使程序独立运行。动态链接库允许在程序运行时加载,而不是在编译时将库的代码和数据静态地合并到可执行文件中。这允许多个程序共享同一份库,减小程序体积。由于动态链接库在编译时并未确定其…

【Electron】Electron是什么

1. Electron是什么 Electron是使用JavaScript、HTML和CSS构建跨平台(Windows、MacOs、Linux)的桌面应用。Electron其实就是一个可以展示网页内容的壳子,相当于一个独立的浏览器,可以提供给你一些接口,去调用系统的资源…

微软 Power Apps model drven app 模型驱动应用使用Plugin插件实现业务流程跳转阶段功能

微软 Power Apps model drven app 模型驱动应用使用Plugin插件实现业务流程跳转阶段功能 模型驱动应用使用插件实现跳转业务流程阶段跳转功能 在实际操作中总会遇到使用业务流程的需求,那么如何使用plugin实现跳转阶段的功能呢 需求背景是主表上有业务流程&#x…

在Python环境中运行R语言的配环境实用教程

前情提要 在做一些生物信息与医学统计的工作,本来偷懒希望只靠python完成的,结果还是需要用R语言,倒腾了一会儿,调成功了,就记录一下这个过程。 我的环境: win10, pycharm, R-4.3.2 首先,我们…

Redis 面试题 | 05.精选Redis高频面试题

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

muduo网络库剖析——线程Thread类

muduo网络库剖析——线程Thread类 前情从muduo到my_muduo 概要框架与细节成员函数使用方法 源码结尾 前情 从muduo到my_muduo 作为一个宏大的、功能健全的muduo库,考虑的肯定是众多情况是否可以高效满足;而作为学习者,我们需要抽取其中的精…

OpenCV书签 #差值哈希算法的原理与相似图片搜索实验

1. 介绍 差值哈希算法(Difference Hash Algorithm,简称dHash) 是哈希算法的一种,主要可以用来做以图搜索/相似图片的搜索工作。 2. 原理 差值哈希算法通过计算相邻像素的差异来生成哈希,即通过缩小图像的每个像素与平…

高效构建Java应用:Maven的使用总结

一、Maven简介和快速入门 1.1 Maven介绍 Maven-Introduction Maven 是一款为 Java 项目构建管理、依赖管理的工具(软件),使用 Maven 可以自动化构建、测试、打包和发布项目,大大提高了开发效率和质量。 总结:Maven…

excel(wps)之vlookup函数合并sheet数据

VLOOKUP函数是Excel中的一个纵向查找函数,它与LOOKUP函数和HLOOKUP函数属于一类函数,在工作中都有广泛应用,例如可以用来核对数据,多个表格之间快速导入数据等函数功能。功能是按列查找,最终返回该列所需查询列序所对应…

DEB方式安装elastic search7以及使用

参考:https://www.cnblogs.com/anech/p/15957607.html 1、安装elastic search7 #手动下载安装 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.1-amd64.deb wget https://artifacts.elastic.co/downloads/elasticsearch/elastics…

深度学习(4)--Keras安装

目录 Keras安装: 1.1.安装CUDA/cuDDN工具包 1.1.1.安装前准备 1.1.2.安装CUDA 1.1.3.安装cuDDN 1.2.安装Anaconda 1.3.安装tensorflow框架 1.3.1.使用cmd安装 1.3.2.使用Anaconda Prompt安装 1.4.安装Keras框架 1.5.打开jupyter notebook,执行import调用 Keras…

18.鸿蒙HarmonyOS App(JAVA)日期选择器-时间选择器

18.鸿蒙HarmonyOS App(JAVA)日期选择器-时间选择器 点击button按钮触发事件显示月份与获取的时间 Button button3 (Button) findComponentById(ResourceTable.Id_button3);button3.setClickedListener(new Component.ClickedListener() {Overridepublic void onClick(Compon…

基于springboot酒店预订系统

开发工具:IDEA 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 前端技术:AdminLTEjQueryvue.jselementuijsp 服务端技术:springbootmybatis 本系统功能包括: 一、…

实验:MySQL 客户端SocketTimeout 抓包分析

实验准备 服务端环境准备 服务器信息 阿里云 99 大洋白嫖机 $ cat /proc/version Linux version 5.15.0-83-generic (builddlcy02-amd64-027) (gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) #92-Ubuntu SMP Mon Aug 14 09:30:42 UT…