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

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(使用前将#替换为@)

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

  • 一篇文章让你搞懂性能测试6大类型及其关系!

    性能测试是软件测试过程的一个关键环节 用于确定和验证应用程序或系统在各种操作条件下的性能特征 目标是确保软件在高负载 高压力 长时间运行以及其他非标准情况下仍能保持预期的行为和效率 一 性能测试的主要类型 1 基线测试 Baseline T
  • 外包干了3个月,技术退步明显.......

    先说一下自己的情况 大专生 18年通过校招进入武汉某软件公司 干了接近4年的功能测试 今年年初 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了四年的功能测试 已经让我变得不思进取 谈了2年的女朋友
  • 软件测试/测试开发全日制培训|Pytest的异常处理

    前言 在断言一些代码块或者函数时会引发意料之中的异常或者其他失败的异常导致程序无法运行时 使用 raises 捕获匹配到的异常可以让代码继续运行 Python的异常处理 try except else finally 示例如下 try pr
  • Appium —— 初识移动APP自动化测试框架Appium

    说到移动APP自动化测试 代表性的测试框架非Appium莫属 从今天开始我们将从 APP结构解析 Appium框架学习 安卓 iOS自动化测试实战 自动遍历回归测试 自动化测试平台及持续集成 多个维度一起由浅入深的学废Appium 今天我们
  • 校招失败后,在小公司熬了 2 年终于进了字节跳动,竭尽全力....

    其实两年前校招的时候就往字节投了一次简历 结果很明显凉了 随后这个理想就被暂时放下了 但是这个种子一直埋在心里这两年除了工作以外 也会坚持写博客 也因此结识了很多优秀的小伙伴 从他们身上学到了特别多东西 把这次面试分享出来 也是希望可以帮助
  • 15分钟无门槛高效构建服务器性能监控系统!

    服务器监控是每个互联网厂商都重视并且想要尽可能做好的事情 从数据收集 数据处理 数据可视化最终再到实时监控告警 这一系列复杂的流程可能耗费企业大量的人力和时间 以至于某些时候因为其复杂性高无法达到预期的监控效果 而当事故发生时才发现 由于监
  • 基于Python + Requests 的Web接口自动化测试框架

    之前采用JMeter进行接口测试 每次给带新人进行培训比较麻烦 干脆用Python实现 将代码和用例分离 易于维护 项目背景 公司的软件采用B S架构 进行数据存储 分析 管理 工具选择 python开发的速度很快 且容易上手 丰富的第三方
  • 软件测试|Windows系统配置pytest+allure环境教程

    前言 allure可以输出非常精美的测试报告 也可以和pytest进行完美结合 不仅可以渲染页面 还可以控制用例的执行 本文我们将介绍Windows系统中如何配置allure环境 第一步 配置Java环境 因为 allure 的运行依赖于J
  • 软件测试|Python openpyxl库使用指南

    简介 我们之前介绍过 python在自动化办公方面可以大放异彩 因为Python有许多的第三方库 其中有很多库就支持我们对office软件进行操作 熟练的使用Python对office进行操作 可以实现自动化办公 极大提升我们的工作效率 本
  • Jmeter 压测-性能调优5大注意

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 2k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • Selenium小技巧!

    Chrome DevTools 简介 Chrome DevTools 是一组直接内置在基于 Chromium 的浏览器 如 Chrome Opera 和 Microsoft Edge 中的工具 用于帮助开发人员调试和研究网站 借助 Chro
  • Linux终端常见用法总结

    熟悉Linux终端的基础用法和常见技巧可以极大提高运维及开发人员的工作效率 笔者结合自身学习实践 总结以下终端用法供同行交流学习 常 见 用 法 1 快捷键 1 1 Alt 在光标位置插入上一次执行命令的最后一个参数 1 2 Ctrl R
  • Jenkins 插件下载速度慢、安装失败了!我教你怎么解决!

    Jenkins部署完毕 如果不安装插件的话 那它就是一个光杆司令 啥事也做不了 所以首先要登陆管理员账号然后点击系统管理再点击右边的插件管理安装CI CD必要插件 但是问题来了 jenkins下载插件速度非常慢 而且经常提示下载插件失败 真
  • 软件测试|Python中如何提取列表中索引为奇数的元素

    简介 在Python中 我们经常需要从列表中提取特定位置的元素 如果我们想要提取列表中索引为奇数的元素 可以使用一些简单的方法来实现这一目标 本文将介绍如何在Python中提取列表中索引为奇数的元素 并提供示例代码来帮助大家更好地理解这个过
  • 软件测试|Pydantic处理时间类型数据

    简介 我们之前介绍过使用 pydantic 验证数据 比如校验数据的格式等 但是在我们的日常工作中 还有一种数据是需要我们验证的 比如时间数据 时间数据不同于字符串 列表等数据 与他们的验证不一样 本文就来为大家介绍一下 pydantic
  • 软件测试|教你使用Python下载图片

    前言 我一直觉得Windows系统默认的桌面背景不好看 但是自己又没有好的资源可以进行替换 突然我一个朋友提醒了我 网络上的图片这么多 你甚至可以每天换很多个好看的背景 但是如果让我手动去设置的话 我觉得太麻烦了 我不如使用技术手段将图片下
  • 测开和测试平台是否有存在的必要?

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 如何写好一个错误报告

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 15:00面试,15:06就出来了,问的问题有点变态。。。

    从小厂出来 没想到在另一家公司又寄了 到这家公司开始上班 加班是每天必不可少的 看在钱给的比较多的份上 就不太计较了 没想到9月一纸通知 所有人不准加班 加班费不仅没有了 薪资还要降40 这下搞的饭都吃不起了 还在有个朋友内推我去了一家互联
  • 一文从0到1手把手教学UI自动化测试之数据驱动!

    在UI的自动化测试中 我们需要把测试使用到的数据分离到文件中 如果单纯的写在我们的测试模块里面 不是一个好的设计 所以不管是什么类型的自动化测试 都是需要把数据分离出来的 当然分离到具体的文件里面 文件的形式其实有很多的 这里主要说明JSO

随机推荐

  • 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 功能设计 引言 嵌入式软件是指被设计用于嵌入或控制另一个产品 设备或系统的软件 它在各种应用领域 例如消费电子