丰富你的场景验证用例

news2024/12/26 21:58:29

即使对于一个非常简单的IP,我们也无法验证充分,或者说无法证明芯片没有bug。一个验证人员所能够做的就是尽可能地发现更多的bug,增强流片成功的信心。

对于芯片的验证用例,在各个基本分支通路都已经覆盖了之后,还需要考虑下如何增加一些变化和随机。

本文介绍一些如何丰富我们的测试用例的策略,在原先的用例的基础上增加变化,派生出衍生场景用例,用于验证不同DUT状态和不同代码路径。

首先一个场景(scenario)是由很多个场景操作(scenario operator)构成,对场景注入变化会得到一个新的场景,我们称之为衍生场景(derived scenario)。

83c3b40c2e40eed46e7b45b2e51793e7.jpeg

一、插入步骤

给场景增加额外的步骤可以使它们更加多样化,从而测试更多的功能,即增加发现芯片bug的机会。

二、增加更多数据

不同的数据可以执行不同的代码路径,导致芯片状态有所变化。如果芯片支持处理操作数op0和op1,可以

先发送op0,然后再发送op0
先发送op0,然后再发送op1
先发送op1,然后再发送op0
先发送op1,然后再发送op1

对验证人员一个比较高的要求是,不能仅观察芯片能够正确处理上述场景,还应该问自己:“芯片如何用到这个操作数?怎样更有意义地增加tetscase输入的数据?哪些场景和我正在测试的场景具有相关性”。

还有一个很重要的考虑因素是,如果spec要求对于data0处理op0,data1处理op1。并且spec没有明说data1不支持op0,data0不支持op0,那么Testcase就要增加{data0,op1}和{data1,op0}的场景。

我们的目的是加强场景验证,而不是彻底改变场景验证的基本目标。验证人员通过增加其他输入、加大数据量或变化场景把整个场景拖长,但是并没有改变场景验证的核心目标。

三、删除步骤

我们可以去掉冗余和可选的步骤,这个操作的想法是使场景的步骤尽可能地减少,可以用来测试芯片的默认值以及模拟用户使用默认配置(不再下发配置)的行为。

验证人员可以使用递进的方式应用这个“删除步骤”,每次只删除一个步骤,直到获得一个最短的测试用例。

四、替换步骤

如果场景验证中某些步骤可以有多种方法完成,就可以用替换步骤来修改这个测试用例。替换步骤实际上是前面两个操作的组合,就是先删除步骤,然后再插入步骤。

五、重复步骤

场景验证经常包含非常明确的顺序。重复步骤操作通过重复单独的步骤或重复一组步骤来给场景验证增加变化,丰富场景验证用例。

初始化后执行某个场景和重复第二次执行某个场景所执行的代码路径是不同的,可能发现那些可能与数据初始化相关的缺陷。如果一个功能使用其他功能初始化的数据值,这两个功能之间的执行顺序就有关系,改变这种顺序可能会发现bug。

六、替换数据

很多情况下,验证场景要求和本地的其他数据库相连接,例如初始化memory hex文件。这些场景会明确配置芯片要执行的动作,验证人员需要知道与相关的数据源如何作用并创建各种各样的变化。

七、替换环境

在我们运行测试用例时,测试的结果与用例执行的环境密切相关。很多时候验证执行的环境也会带入一些人为约束。

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

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

相关文章

Proteus仿真--单个数码管循环显示0-9(仿真文件+程序)

本文主要介绍基于51单片机的单个数码管循环显示0-9,Proteus仿真(完整仿真源文件及代码见文末链接) 仿真运行视频 Proteus仿真--单个数码管循环显示0-9(仿真文件程序) 附完整Proteus仿真资料代码资料 百度网盘链接: ht…

【波形图】在X轴上显示时间和日期

下面的VI截图展示了使用“获取日期/时间(秒)VI”的不同方法。 然后需要设置一下波形图的属性。 由“获取日期/时间(秒)(Get Date/Time In Seconds)”VI创建的时间标识表示自世界时间1904年1月1日星期五12:0…

走近Python爬虫(上):爬虫的作用和技术、获取网页内容、解析网页内容

文章目录 一、绪论爬虫的作用爬虫的技术 二、获取网页—requests模块1.requests模块简单使用2.使用多线程 三、解析网页1.XPath 参考 本文是Python爬虫系列博客的第一篇,内容概览如下: 一、绪论 爬虫的作用 收集数据: 爬虫可用于收集数据&…

roboflow标注检测 / 分割数据集

对比了labelme, makesense.ai和roboflow这3个可以标注数据集的工具之后, 总结一下它们的特点: labelme需要配环境安装,标注的结果是json文件,需要转成所需格式。 makesense.ai不需要下载,在线标注,能用来标…

ENSP L2TP Over IPSec

本文拓扑沿用上一篇文章《ENSP L2TP 配置》,相关配置有差异。 拓扑 准备工作 客户端软件:URL 真机网络可以到达LNS10.100.1.254 防火墙上接口划分到相应安全区域,安全策略全开(本文只是测试,现网中根据自己网络情况严格设置安…

Python selenium驱动下载,模块安装以及基本使用

视频版教程:一天掌握python爬虫【基础篇】 涵盖 requests、beautifulsoup、selenium 我们以谷歌浏览器为例讲解。首先我们要去下载谷歌浏览器驱动。 谷歌浏览器驱动下载地址:Chromium History Versions Download ↓ 查看谷歌浏览器版本 右上角三个点 …

SpringCloud之Eureka的学习【详细】

目录 服务架构演变 单体架构 分布式架构 分布式架构需要考虑的问题 微服务 架构比较 微服务技术对比 服务拆分注意事项 案例 服务远程调用 RestTemplate Eureka注册中心 RestTemplate存在的问题 服务调用考虑的问题 Eureka的作用 搭建EurekaServer 服务注册 …

【达梦数据库】数据查询操作(超详细)

文章目录 数据查询1. 单表查询1. 简单查询2. 条件查询总结举例 3. 函数查询常用多行函数常用单行函数1. 字符函数2. 数值函数3. 日期时间函数常用日期型函数举例 4. 转换函数 4. 查询结果排序(order by)参数说明:注意事项: 2. 连接查询1. 交叉连接&#…

0034Java程序设计-基于Java的飞机大战游戏的设计与实现论文

文章目录 摘 要目 录系统设计开发环境 摘 要 现如今,随着智能手机的兴起与普及,加上4G(the 4th Generation mobile communication ,第四代移动通信技术)网络的深入,越来越多的IT行业开始向手机行业转移重心…

JVM虚拟机:从结构到指令让你对栈有足够的认识

本文重点 在前面的课程中,我们学习了运行时数据区的大概情况,从本文开始,我们将对一些组件进行详细的介绍,本文我们将学习栈。栈内存主管java的运行,是在线程创建时创建的,它是线程私有的,它的生命周期是跟随线程的生命期,也就是说线程结束栈内存就释放了,对于栈来说…

web:[网鼎杯 2020 青龙组]AreUSerialz

题目 点进题目发现 需要进行代码审计 function __destruct() {if($this->op "2")$this->op "1";$this->content "";$this->process();}这里有__destruct()函数,在对象销毁时自动调用,根据$op属性的值进行…

数据结构与算法:二叉树之“堆排序”

目录 一、树概念及结构 二、二叉树树概念及结构 特殊的二叉树 三、堆的概念及结构 四、堆的创建 1、声明结构体 2、初始化 3、销毁 4、添加新元素 5、交换元素 6、向上调整 7、判断堆是否为空 8、移除堆顶元素 9、向下调整 10、获取堆元素个数 五、使用堆排序…

【网络编程】传输层——UDP协议

文章目录 一、传输层1. 再谈端口号2. 端口号范围划分3. 认识知名端口号4. 两个问题5. netstat 与 pidof 二、UDP协议1. UDP协议格式2. UDP协议的特点3. 面向数据报4. UDP的缓冲区5. UDP使用注意事项6. 基于UDP的应用层协议 一、传输层 传输层 负责负责两台计算机之间的端到端的…

阿里云2023年双11活动时间、活动入口、活动内容详细解读

阿里云2023年双11活动正在火热进行中,双11活动时间,阿里云推出了金秋上云季活动,活动包括满减礼包福利,云产品降价让利,下面给大家整理分享阿里云双11活动时间、活动入口、活动内容,助力大家轻松上云&#…

网络爬虫-Requests库主要方法解析

一、Requests库的7个主要方法 其中,request()是 基础方法,其他6个方法都是基于request()的,但最常用的是get() 和 head() 二、request() 13个访问控制参数: 三、get(): 获取某一个url链接的相关资源 四、head() 五、post() 六、…

LCR 021. 删除链表的倒数第 N 个结点

这篇也是凑数的 .... 描述 : 给定一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点 题目 : LeetCode 删除链表的倒数第Nge节点 : LCR 021. 删除链表的倒数第 N 个结点 分析 : 首先创建一个虚拟节点(哨兵节点) , 虚拟节点下一节点指向头节…

从 malloc 分配大块内存失败 来简看 linux 内存管理

文章目录 背景Glibc MallocMalloc 分配大块内存失败原因Overcommit_memory 实现OOM (Out Of Memory) 的实现 背景 应用进程 malloc 返回了null,但是观察到的os 的free内存还有较大的余量 ,很奇怪为什么会这样? 不可能是oom导致的&#xff0…

GAMP源码阅读(上)主要类型、后处理流程、RINEX文件读取

原始 Markdown文档、Visio流程图、XMind思维导图见:https://github.com/LiZhengXiao99/Navigation-Learning 文章目录 一、GAMP 简介1、程序概述2、工具箱介绍3、函数调用关系4、程序执行流程 二、基础类型定义1、宏定义2、结构体定义3、矩阵、向量、最小二乘、卡尔…

以“信”数智,筑“广”生态:亚信科技CEO高念书受邀出席中国广电数字化赋能大会

6月30日,由国家广播电视总局指导、中国广电集团主办的中国广电数字化赋能大会在京召开。国家广播电视总局党组成员、副局长杨小伟,工信部总工程师赵志国,中国移动党组成员、副总经理高同庆等出席会议并致辞,中广电移动网络有限公司…

【ICCV2023】频率成分在少样本学习中的重要性

论文标题:Frequency Guidance Matters in Few-Shot Learning 论文链接:https://openaccess.thecvf.com/content/ICCV2023/html/Cheng_Frequency_Guidance_Matters_in_Few-Shot_Learning_ICCV_2023_paper.html 代码:暂未开源 引用:…