一文详解!嵌入式软件的自动化测试框架、测试流程与功能研究分析

2023-10-27

目录

引言

1.嵌入式软件自动化测试平台分析

2.嵌入式软件自动化测试平台概要设计

3.嵌入式软件自动化测试平台详细设计

3.3 功能设计


引言

嵌入式软件是指被设计用于嵌入或控制另一个产品、设备或系统的软件。它在各种应用领域(例如消费电子、工业控制、医疗设备)中都得到广泛应用。由于嵌入式软件的复杂性和安全性要求较高,因此需要进行自动化测试。

进入二十一世纪之后,硬件元器件得到了飞速发展,从而也是的嵌入式软件的功能更加强大和复杂.随之而来的也是嵌入式软件测试工作的加重,传统的软件测试技术已经难以满足嵌入式软件越来越复杂的需求.而目前,市场上已经有较多的传统软件自动化测试技术,如何在这些技术的基础上进行改进,从而能够适应嵌入式软件环境,从而实现嵌入式软件的自动化测试,是嵌入式软件发展的重要方向.

1.嵌入式软件自动化测试平台分析

嵌入式软件的自动化测试即利用脚本来自动化驱动嵌入式软件的运行,并且自动收集相关数据进行分析,最终生成相应的测试报告.虽然,嵌入式软件的自动化测试流程与一般PC机应用软件的自动化测试流程相同。但是,由于嵌入式软件软件对电子设备的高度依赖性,以及电子设备收周围环境影响较重,从而导致嵌入式软件的自动化测试平台存在如下的问题.

(1)由于电子元器件受到周围环境的影响,无论在宿主机上所进行的动态测试多充分,也无法保证嵌入式软件在实际的硬件环境中通过.

(2)硬件系统非常复杂,难以对测试过程中所发现的问题进行排查.

(3)植入桩点会影响系统的实时性.

(4)上位机的测试环境中,由于上位机与下位机的通信量较大,测试结果数据较多,容易导致通信的堵塞.

2.嵌入式软件自动化测试平台概要设计

通过对嵌入式自动化测试框架的分析,本文提出一种由脚本驱动器.接口映射表.数据驱动器和支持函数库所组成的,针对嵌入式自动化软件测试的组合型测试框架.

如图1所示,高层脚本调用执行下层脚本;底层运行脚本通过查询接口映射表调用待测试系统接口进行驱动和通信;测试脚本从数据文件调用数据执行测试。

(1)脚本驱动器

脚本驱动器调用高层脚本,高层脚本调用下层脚本.底层脚本包括待测试系统具体的测试步骤.

(2)接口映射表

接口映射表借鉴了关键字驱动测试框架中的组件映射表思想.测试人员根据待测试系统的实际需求,设计接口名称和参数,从而实现待测试系统的抽象化.在运行测试脚本是,首先通过映射表匹配接口名称和参数,当系统接口改变时,只需要改变映射表即可,从而实现测试系统与待测试系统的松耦合.

(3)数据驱动器

数据启动器是测试脚本与数据文件的连接器,通常采用文本文件.XML文件等来实现.

在测试过程中,需要数据时,有数据驱动器读取数据.数据驱动器是脚本与测试数据分离,当测试数据变更时,只需要修改数据驱动器,而不需要对脚本进行改动.

(4)支持函数库

包含了数据缓存.文件操作.字符串处理等测试框架中所用到的通用处理函数.

3.嵌入式软件自动化测试平台详细设计

3.1 测试框架设计

嵌入式软件自动化测试平台的卡框架,采用嵌入式软件通用的Host/Target测试策略.

如图2所示,本文所设计的嵌入式软件自动化测试平台采用测试管理工具和测试代理双层结构。

3.2 测试流程设计

在进行嵌入式软件自动化测试时,测试人员的工作包括:编写配置文件.编写脚本.生成数据文件.测试报告分析等工作.嵌入式软件的自动化测试流程如图3所示.

当建立了管理工具和测试代理自检的通信之后,向测试代理发送测试请求,并且将脚本和数据传送到测试代理上.测试代理将测试脚本存放到特定的区域执行,并且将测试结果返回给宿主端.当宿主端接收到测试代理所发送脚本执行完毕信号后,发送新的测试脚本和数据给测试代理,直到所有的脚本测试完成之后,对测试代理所返回的测试结果进行分析,得出最终的测试报告.

3.3 功能设计

3.3.1 管理工具功能

为了不占用宿主段过多资源,将一些协助测试模块都放在宿主端中.管理工具的功能结构如图4所示.

(1)脚本配置管理模块

在进行嵌入式软件自动化测试之前,需要设计一份配置文件.在配置文件中定义好了脚本位置.宿主机与测试代理之间的通信.脚本执行时间间隔.通信桩点个数等内容.测试管理工具先对脚本配置文件进行解析,并且将解析的信息传送给目标机.

(2)插桩模块

通过插桩对待测试软件的功能进行细分,并且根据执行的情况,来分析待测试软件的测试覆盖情况.

(3)日志分析生成模块

测试日志文件中主要包含了待测试软件的测试结果,以及测试覆盖信息.其中测试报告中包括了测试跟踪信息.测试用例.测试用例的期望和实际结果.测试用例的执行情况及汇总等.测试覆盖信息包括:测试和未测试的代码段.功能的覆盖标记及汇总等信息.

(4)数据通信模块

主要负责宿主机与测试代理之间的消息通信.

3.3.2 测试代理功能

测试代理运行在目标机上,是整个嵌入式软件自动化测试平台的核心,测试代理的整体结构如图5所示.

(1)测试驱动模块

根据配置管理,对管理工具发送的测试脚本进行解析,并且调用工具库中的通用函数来完成测试.同时,将测试结果和桩点覆盖信息存入到特定区域.

(2)数据驱动模块

在数据文件主要包含了测试脚本文件.测试数据文件和测试结果文件.当测试需要数据是,可以通过数据驱动模块完成数据表查找和数据批量处理等操作.对于测试数据量大,测试步骤类似的测试过程,可以极大的减少测试的复杂度.

(3)数据通信模块

主要负责与管理工具的数据通信模块进行数据交互.主要负责接收管理工具所发送的配置信息.脚本信息和数据文件信息;同时将测试结果和测试覆盖信息返回给管理工具.

 作为一位过来人也是希望大家少走一些弯路,希望能对你带来帮助。(WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、大厂面试真题、简历模板等等),相信能使你更好的进步!

留【自动化测试】即可【自动化测试交流】:574737577(备注ccc)http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=2szVdJcy6VnqVi_zYhQd8aI9U5yfUv34&authKey=leQfP2SBsSV1%2FUzpd2OtJhdk%2F0SH%2FzEdi8uCVyM4q8w%2FHQEA1WUh3aqS9kyXZxUH&noverify=0&group_code=574737577

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一文详解!嵌入式软件的自动化测试框架、测试流程与功能研究分析 的相关文章

  • 8年经验之谈!一文看懂性能测试的流程!

    每天做着点点点测试有没有危机感 突然有一天 领导说 小王 今天把996福报系统压一下 下班前把压测报告发我邮箱 啥 压测 今天 报告 怎么压 怎么写 从来没做过啊 心里一万匹草泥马奔跑而过 别说996了 估计明天都下不了班了 好歹也像功能测
  • 软件测试基础知识与面试理论总结(答案+文档)

    一 什么是软件 软件是计算机系统中的程序和相关文件或文档的总称 二 什么是软件测试 说法一 使用人工或自动的手段来运行或测量软件系统的过程 以检验软件系统是否满足规定的要求 并找出与预期结果之间的差异 说法二 软件测试就是利用一定的方法对软
  • 软件测试基础知识+面试题总结

    一 什么是软件 软件是计算机系统中的程序和相关文件或文档的总称 二 什么是软件测试 说法一 使用人工或自动的手段来运行或测量软件系统的过程 以检验软件系统是否满足规定的要求 并找出与预期结果之间的差异 说法二 软件测试就是利用一定的方法对软
  • 9个最受欢迎的开源自动化测试框架盘点

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 自动化测试框架可以帮助测试人员评估多个Web和移动应用程序的功能 安全性 可用性和可访问性 尽管团队可以自己构建复杂的自动化测试框架 但是当他们可以使用
  • “性能压测揭密:关键指标分析!“

    在进行全链路压测和性能测试时 需要关注多个关键性能指标 KPIs 来评估系统的性能表现 以下是一些常见的性能测试指标 1 吞吐量 Throughput 系统在单位时间内能够处理的请求数量或事务数量 通常以每秒请求数 RPS TPS 来衡量
  • “揭秘性能测试工具:优化软件性能的关键秘籍“

    性能测试工具的设计宗旨是为了模拟用户对软件应用程序或系统的各种操作 旨在评估关键的性能指标 包括响应时间 吞吐量 并发能力和资源利用率 通过这些工具模拟的多用户环境 我们能够产生与实际工作负载相似的条件 并监测系统在这种情况下的性能表现 一
  • 使用Hypothesis生成测试数据

    Hypothesis是Python的一个高级测试库 它允许编写 测试用例 时参数化 然后生成使测试失败的简单易懂的测试数据 可以用更少的工作在代码中发现更多的bug 安装 pip install hypothesis 如何设计 测试数据 通
  • 最佳利用Mock提升测试效率的7个技巧!

    再聊这个问题之前 我们先了解一下公司技术架构的演变过程 这样我们才能真正体会到我们为什么要使用 Mock功能 单体应用 在早期 大部分公司的应用技术栈主要可以分为两大类 LAMP Linux Apache MySQL PHP 和 MVC S
  • Jmeter 性能-并发量计算

    并发概念 指网站在同一时间访问的人数 人数越大瞬间带宽要求更高 服务器并发量分为 业务并发用户数 最大并发访问数 系统用户数 同时在线用户数 估算业务并发量的公式 C nL T C C 3 C的平方根 说明 C是平均的业务并发用户数 n是l
  • 微信小程序的自动化测试框架

    微信发布了小程序的自动化测试框架Minium 提供了多种运行验证方式 其特点 支持一套脚本 iOS Android 模拟器 三端运行 提供丰富的页面跳转方式 看不到也能去得到 可以获取和设置小程序页面数据 让测试不止点点点 可以直接触发小程
  • 基于Loadrunner的性能分析及调优经验分享

    公司某个系统的微信端计划将开放给几百上千的人员登录查询 并且登录账号为同一账号多人使用 后台服务能够支撑起多用户的并发操作以及成百上千人登录微信端对生产数据库或者登录查询的性能效率高成为交付可靠生产环境的必要条件 因此 项目组决定提交测试
  • 软件测试|Pydantic详细介绍与基础入门

    简介 Pydantic 是一个强大的 Python 库 用于数据验证和解析 特别是用于处理 JSON 数据 它的主要目标是使数据验证和解析变得简单 直观和可维护 本文将介绍 Pydantic 的基础知识 包括如何定义模型 验证数据以及处理错
  • 软件测试|使用Python读写yaml文件,你会了吗?

    简介 YAML YAML Ain t Markup Language 是一种可读的数据序列化格式 它常用于配置文件和数据交换 Python 提供了许多库来处理 YAML 文件 在本文中 我们将探讨如何使用 PyYAML 库来读取和写入 YA
  • 甜蜜而简洁 —— 深入了解Pytest插件pytest-sugar

    在日常的软件开发中 测试是确保代码质量的关键步骤之一 然而 对于测试报告的生成和测试结果的可读性 一直以来都是开发者关注的焦点 Pytest插件 pytest sugar 以其清晰而美观的输出 为我们提供了一种愉悦的测试体验 本文将深入介绍
  • 月薪2W的软件测试工程师,到底是做什么的?

    在生活中 我们常常会遇到以下几种窘迫时刻 准备骑共享单车出行 却发现扫码开锁半天 车子都没有反应 手机导航打车 却发现地图定位偏差很大 司机总是跑错地方 买个水 却遭遇自动售货机吐币 或者不找零钱 好不容易休息打个游戏 却一直出现卡顿 闪退
  • 探索自动化测试断言:提升测试效率与质量的关键!

    前言 断言在自动化测试中起着关键的作用 它是验证测试结果是否符合预期的重要手段 如果在自动化测试过程中忽视了断言 那么这个测试就失去了其本质的意义 因为我们无法得知测试结果是否达到了预期的效果 因此 断言在自动化测试中的重要性不言而喻 那么
  • 2024拒绝行业内卷!八年软件测试20K*16薪行业心得 想入行必看

    目前工作做软件测试工作8年 属于高级测试员那个级别吧 现在看到各行各业的人都在转行学习软件测试 想给大家一些学习建议和忠告 很多粉丝都跟我说今年行情很差 找不到工资 真的找不到工作了吗 我们常在网上看到的 程序员饱和 程序员过剩 其实一般是
  • 软件测试/测试开发/全日制/测试管理丨Android WebView 技术原理

    Android WebView是一个内置的组件 允许在Android应用中嵌套显示Web内容 Android WebView的技术原理涉及到使用WebKit引擎来渲染Web内容 并提供一系列API和回调函数 使得开发人员可以控制和定制Web
  • 一文让你了解UI自动化测试

    测试都起什么作用 是项目的保险 但不是项目的救命草 测试无实际产出 但作用远大于实际产出 测试是从项目维度保证质量 而不是测试阶段 UI自动化 下面简称自动化 基于UI进行自动功能测试 以Web端作为例子 一般的UI功能自动化都是基于HTM
  • 一文让你快速写出高效的软件测试用例

    前言 编写测试用例的目的就是确保测试过程全面高效 有据可查 但要编写出高效的测试用例 需要搞清楚什么是测试用例 以及如何编写出高效的测试用例 接下来将从以下几个部分来进行展开 1 什么是测试用例 2 如何编写测试用例 3 软件测试学习资源分

随机推荐

  • c存储类别、连接、内存管理

    目录 1 存储类别 2 变量的3个特质 作用域 链接 存储期 3 自动变量 4 寄存器变量 5 块内 无连接 静态变量 6 外部链接的静态变量 6 1定义和声明 7 内部链接的静态变量 8 函数的储存类别 1 存储类别 解释 内存的使用 声
  • websocket连接状态码

    最近在做websocket 需要用到这些 查资料记录下 官网 https developer mozilla org zh CN docs Web API CloseEvent CloseEvent code 只读 返回一个 unsigne
  • Windows WSL中安装Android Studio

    1 安装WSL 我使用的是Windows10 1803版本 安装的是Ubuntu16 04 LTS版本 参考 Windows Subsystem for Linux Installation Guide for Windows 10 2 配
  • 【C语言基础练习】百钱买百鸡问题。母鸡3元钱一只,小鸡1元钱三只,问100元钱要刚好买100只鸡,编程实现母鸡和小鸡各多少只?

    百钱买百鸡问题 母鸡3元钱一只 小鸡1元钱三只 问100元钱要刚好买100只鸡 编程实现母鸡和小鸡各多少只 1 include
  • major.minor version 51.0

    mavn deploy报错 maven版本低了换个高的或者用IDEA自带的
  • chatgpt赋能python:Python数据框基本操作

    Python 数据框基本操作 Python 是一种流行的编程语言 常用于数据分析 数据科学和机器学习等领域 Python 中数据框是一种非常重要的数据类型 也被称为表格或二维数组 本文将介绍 Python 数据框的基本操作 什么是 Pyth
  • jenkins 公钥配置

    Jenkins所在服务器linuxA 应用服务器LinuxB a生成的公钥 放到B服务器 服务器B 在 root ssh路径下建立authorized keys文件 将服务器A生成的id rsa pub 公钥 内容复制到authorized
  • 前端对json配置文件的读取

    一 JSON文件的数据格式为 名字为 path json ipPath http 10 12 37 11 8085 二 在前端页面中对文件进行读取 其中返回的data的数据类型是object 对path json文件进行读取 getJSON
  • 07 Linux补充|秋招刷题|9月6日

    目录 Linux 结构体内存字节对齐 静态变量static 空指针 Linux 结构体内存字节对齐 结构体内存字节要对 32位系统 4 8 32 64位系统 8 16 24 字节对 字节对 是指在计算机中 各种类型数据按照 定的规则在空间上
  • 解决Win10家庭版没有‘本地用户和组’问题

    win10系统是家庭版 并且没有本地用户和组 处理方法 将系统升至为win10专业版 然后下载microKMS v17 02 14做的激活 1 打开运行窗口 输入 gpedit msc或者secpol msc 点击确定 弹出提示框提示找不到
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)

    FFmpeg 是一个非常优秀的视频处理开源工具 假如你想把avi或者flv转成mpp4的时候 你就不必要用格式工厂很繁琐的方式去转换格式 因为比如flv和mp4他的编码 视频编码和音频编码 都是h 264编码其实并没有变 这是封装格式不一样
  • 算法学习day27

    文章目录 39 组合总和 回溯法 40 组合总和II 回溯 131 分割回文串 回溯 39 组合总和 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target 找出 candidates 中可以使数字和为目标数
  • mybatis中resultMap和resultType区别,三分钟读懂

    先说结论 resultmap与resulttype的区别为 对象不同 描述不同 类型适用不同 说人话就是 resultmap和resulttype功能差不多 但是resultmap功能更强大 resultType 使用resultType进
  • 成员变量与属性是不同的

    成员变量 在类体的变量部分中定义的变量 也称为字段 属性 官方定义为属性是指get或者set方法名 去掉get或者set后 把剩余的部分首字母改为小写后 即为这个类的属性 例 public class Test private String
  • 基础算法01

    冒泡排序 基本思想是 将相邻的记录的关键码进行比较 若前面记录的关键码大于后面记录的关键码 则将它们交换 否则不交换 bool swapped true do swapped false for int i 0 i
  • 在idea中配置 gitignore忽略文件(一)

    针对一些不用每次提交的文件 设置不让其提交到git的本地仓库中 先在idea中安装gitignore插件 点击File gt Settings 选择plugs 在右边搜索 ignore 点击Install 安装完成后就可以愉快的使用了 不过
  • 界面、线程与Qt线程

    1 当界面的操作频率很高 而且还要考虑用户体验时 耗时的操作会独占系统cpu资源 让界面卡死在那里 这时需要考虑多线程方案 将耗时的操作放在 线程中执行 如下例 界面需要不停地添加字符串 如果不使用线程处理的话界面会卡死 下面我们先使用UC
  • 主成分分析(Principal Component Analysis,PCA)详解

    PCA是非常重要的统计方法 其实际应用非常广泛 但是很多讲解太过于公式化 很难让初学者消化 本文将从一个实际例子出发 并对数学公式原理及推导过程作出详细解释 即使你的数学基础比较差 在看完这篇博客之后 相信你会对PCA会有一个透彻的认知 P
  • 构造函数初始化:提高代码可读性和执行效率

    在C 中 构造函数是用来初始化对象数据成员的 一个对象在创建的时候 构造函数会被自动调用 以便为该对象的数据成员赋初值 传统的初始化方式是在构造函数内部对数据成员逐一进行初始化 这种方式虽然可行 但是代码复杂度高且效率低下 本文将介绍如何使
  • 一文详解!嵌入式软件的自动化测试框架、测试流程与功能研究分析

    目录 引言 1 嵌入式软件自动化测试平台分析 2 嵌入式软件自动化测试平台概要设计 3 嵌入式软件自动化测试平台详细设计 3 3 功能设计 引言 嵌入式软件是指被设计用于嵌入或控制另一个产品 设备或系统的软件 它在各种应用领域 例如消费电子