一种芯片测试系统、方法、设备及介质转让专利

申请号 : CN202210760710.9

文献号 : CN114816894B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 郑俊飞任明刚

申请人 : 苏州浪潮智能科技有限公司

摘要 :

本发明公开了一种芯片测试系统、方法、设备及介质,系统包括:应用层、通信层、虚拟化层、硬件设备层和引擎层,应用层配置为将用户操作转化为用例执行请求,并基于所述通信层的通信协议将所述用例执行请求发送到用例服务调度模块;用例服务调度模块配置为基于用例执行请求调用虚拟主机上的用例服务;用例服务配置为从用例执行请求中获取测试参数,并将测试参数配置到硬件设备;硬件设备配置为基于测试参数调用对应的算法加速引擎来执行测试,并将测试结果通过用例服务调度模块返回到应用层。本发明的方案提高了测试系统的可移植性、安全性及可靠性;降低了系统模块间的耦合并增强了系统可扩展性。

权利要求 :

1.一种芯片测试系统,其特征在于,包括:

应用层、通信层、虚拟化层、硬件设备层和引擎层,其中,所述通信层包括通信协议;所述虚拟化层包括用例服务调度模块、云平台、部署于所述云平台上的虚拟服务和虚拟主机、部署于所述虚拟主机上的用例服务,所述硬件设备层包括硬件设备,所述引擎层包括用于硬件设备的算法加速引擎;

所述应用层配置为将用户操作转化为用例执行请求,并基于所述通信协议将所述用例执行请求发送到所述用例服务调度模块;

所述用例服务调度模块包括服务接口触发模块和服务接口调用模块,其中,所述服务接口触发模块配置为响应于接收到所述用例执行请求,基于所述用例执行请求中的消息类型字段从服务接口哈希表中查找到对应的服务接口;

所述服务接口调用模块配置为调用所述对应的服务接口发送用例执行请求到Web服务器,以基于所述Web服务器将所述用例执行请求转发到所述用例服务;

所述用例服务配置为从所述用例执行请求中获取测试参数,并将所述测试参数配置到所述硬件设备;

所述硬件设备配置为基于所述测试参数调用对应的算法加速引擎来执行测试,并将测试结果通过所述用例服务调度模块返回到所述应用层。

2.根据权利要求1所述的系统,其特征在于,所述应用层包括用户操作界面;

所述算法加速引擎配置为在测试结束后,将测试结果返回到所述虚拟主机的用例服务;

所述虚拟主机配置为基于所述用例服务将所述测试结果返回到所述用例服务调度模块;

所述用例服务调度模块配置为将所述测试结果进一步返回到应用层并将其展示到所述用户操作界面。

3.根据权利要求1所述的系统,其特征在于,所述用例服务调度模块包括服务接口配置模块,所述服务接口配置模块配置为:获取部署到所述云平台的虚拟服务,并基于所述虚拟服务将对应的服务接口分层级写入服务接口配置文件,其中每一层级包括至少一个服务接口,每一个服务接口包括被动服务接口、主动服务接口及下级服务接口。

4.根据权利要求3所述的系统,其特征在于,所述用例服务调度模块包括服务接口检测模块和服务接口解析模块,所述服务接口检测模块配置为:定时检测所述服务接口配置文件是否发生变化;

响应于所述服务接口配置文件发生变化,则触发所述服务接口解析模块,并通过所述服务接口解析模块对所述服务接口配置文件进行更新;

所述服务接口解析模块配置为从所述服务接口配置文件中读取并逐行解析所述服务接口。

5.根据权利要求3所述的系统,其特征在于,所述用例服务调度模块包括服务接口解析模块,所述服务接口解析模块配置为:获取本层级服务接口中的下一个服务接口;

判断所述下一个服务接口是否为所述本层级服务接口中的最后一个服务接口;

响应于所述下一个服务接口不为所述本层级服务接口中的最后一个服务接口,判断下一个服务接口的被动服务接口是否为空;

基于所述下一个服务接口的被动服务接口是否为空的判断结果,判断下一个服务接口的主动服务接口是否为空;

基于所述下一个服务接口的主动服务接口是否为空的判断结果,判断下一个服务接口的下级服务接口是否为空;

响应于所述下一个服务接口的下级服务接口为空或不为空,返回获取本层级的下一个服务接口的步骤以继续对本层级下一个服务接口的下一个服务接口进行解析直到解析完本层级的所有服务接口。

6.根据权利要求5所述的系统,其特征在于,基于所述下一个服务接口的被动服务接口是否为空的判断结果,判断下一个服务接口的主动服务接口是否为空包括:响应于所述下一个服务接口的被动服务接口不为空,在服务接口哈希表中注册所述被动服务接口,并判断下一个服务接口的主动服务接口是否为空,其中,所述被动服务接口用于在接收到测试请求时调用;

响应于所述下一个服务接口的被动服务接口为空,则直接判断下一个服务接口的主动服务接口是否为空。

7.根据权利要求5所述的系统,其特征在于,基于所述下一个服务接口的主动服务接口是否为空的判断结果,判断下一个服务接口的下级服务接口是否为空,包括:响应于所述下一个服务接口的主动服务接口不为空,启动线程轮询,判断下一个服务接口的下级服务接口是否为空,其中,所述线程轮询用于调用所述本层级服务接口的主动服务接口;

响应于所述下一个服务接口的主动服务接口为空,则直接判断下一个服务接口的下级服务接口是否为空。

8.根据权利要求5所述的系统,其特征在于,响应于所述下一个服务接口的下级服务接口不为空,返回获取本层级的下一个服务接口的步骤以继续对本层级下一个服务接口的下一个服务接口进行解析直到解析完本层级的所有服务接口,包括:响应于所述下一个服务接口的下级服务接口不为空,基于所述下级服务接口获取下一层级的服务接口,并递归解析下一层级的服务接口直到所有下层级的所有服务接口解析完毕;

返回获取本层级的下一个服务接口的步骤以继续对本层级下一个服务接口的下一个服务接口进行解析直到解析完本层级的所有服务接口。

9.根据权利要求5所述的系统,其特征在于,所述服务接口解析模块还配置为:响应于所述下一个服务接口为所述本层级服务接口中的最后一个服务接口,结束本层级的服务接口解析。

10.根据权利要求1所述的系统,其特征在于,所述用例服务配置为调用硬件测试工具,并基于所述硬件测试工具调用对应的硬件外设驱动来驱动对应的硬件设备以执行相应的硬件测试。

11.一种芯片测试方法,其特征在于,应用于测试系统,所述测试系统包括:应用层、通信层、虚拟化层、硬件设备层和引擎层,其中,所述通信层包括通信协议,所述虚拟化层包括用例服务调度模块、云平台、部署于所述云平台上的虚拟服务和虚拟主机、部署于所述虚拟主机上的用例服务,所述硬件设备层包括硬件设备,所述引擎层包括用于硬件设备的算法加速引擎,其中,所述用例服务调度模块包括服务接口触发模块和服务接口调用模块,方法包括:所述应用层将用户操作转化为用例执行请求,并基于通信协议将所述用例执行请求发送到所述用例服务调度模块;

所述服务接口触发模块响应于接收到所述用例执行请求,基于所述用例执行请求中的消息类型字段从服务接口哈希表中查找到对应的服务接口;

所述服务接口调用模块调用所述对应的服务接口发送用例执行请求到Web服务器,以基于所述Web服务器将所述用例执行请求转发到所述用例服务;

所述用例服务从所述用例执行请求中获取测试参数,并将所述测试参数配置到硬件设备;

所述硬件设备基于所述测试参数调用对应的算法加速引擎来执行测试,并将测试结果通过所述用例服务调度模块返回到所述应用层。

12.一种计算机设备,包括:

至少一个处理器;以及

存储器,所述存储器存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时执行如权利要求11所述的方法的步骤。

13.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时执行如权利要求11所述的方法的步骤。

说明书 :

一种芯片测试系统、方法、设备及介质

技术领域

[0001] 本发明涉及测试技术领域,尤其涉及一种芯片测试系统、方法、设备及介质。

背景技术

[0002] Web服务是一种分布式应用软件设计方法,可实现跨平台、跨编程语言、低耦合、自包含的分布式应用软件,不同网络主机上运行的不同软件,不论使用什么编程语言、运行平台、通信协议,只要都按照web服务设计,即可不依赖第三方软硬件任意交换数据。
[0003] 随着芯片国产化替代需求日益迫切,市场上涌现出众多芯片设计公司,然而芯片研发特征是周期较长,包含架构、设计、测试、流片、流片后测试等多个阶段,为了降低研发周期,研究人员设计了许多芯片仿真测试系统,以便芯片设计、验证等工作并行执行。
[0004] 目前通常的芯片仿真测试平台设计方法是,将整个系统分为前后端两部分,前端展示用户界面并将用户操作发送给后端,后端利用虚拟化技术添加模拟芯片行为的硬件,然后根据前端提交的测试命令执行相应的测试流,并将测试结果返回到前端进行展示。
[0005] 上述芯片仿真测试系统虽然能够对芯片进行测试,但是存在以下问题:
[0006] 1)系统可移植性较差。由于测试系统基于特定hypervisor(管理程序)实现,当更换hypervisor时,所有环境部署操作如镜像创建、系统安装、启动、关闭虚拟机等,都需更换为新的hypervisor接口,并且也不便于虚拟主机之间的动态迁移。
[0007] 2)系统安全及可靠性较差。由于系统缺少镜像备份、动态迁移、数据和网络安全、状态监控等机制,并且没有经过内外部用户充分测试,系统容易开发不完善。例如未考虑宿主机存储介质损坏,或者因受到内外部攻击如网络拒绝服务攻击等而产生难以恢复的异常。
[0008] 3)系统耦合度较高不容易扩展。由于没有统一规划,新添加硬件、驱动和测试代码,不仅可能重复,还可能影响原有模块运行,需要耗费大量精力定位模块冲突问题,许多研发人员采用重复安装虚拟机等方式解决冲突,又进一步增加了资源消耗和环境部署工作。

发明内容

[0009] 有鉴于此,本发明提出了一种芯片测试系统、方法、设备及介质,解决了现有测试系统可移植性差、可靠性差、扩展困难等问题,通过对应用层、通信层、虚拟化层、设备层以及引擎层的设计,屏蔽了底层hypervisor的差异,减少了更换hypervisor带来的额外环境部署工作;并且结合云平台软硬件服务如身份认证、镜像服务、动态迁移等,使得系统的可移植性和可靠性提高;并且基于web服务的插件式用例服务开发机制,支持添加任何芯片测试项目到测试系统,新服务与系统原有其他服务没有耦合,不会影响原有模块运行,使得系统可扩展性增强。
[0010] 基于上述目的,本发明实施例的一方面提供了一种芯片测试系统,系统具体包括:
[0011] 应用层、通信层、虚拟化层、硬件设备层和引擎层,其中,所述通信层包括通信协议;所述虚拟化层包括用例服务调度模块、云平台、部署于所述云平台上的虚拟服务和虚拟主机、部署于所述虚拟主机上的用例服务,所述硬件设备层包括硬件设备,所述引擎层包括用于硬件设备的算法加速引擎;
[0012] 所述应用层配置为将用户操作转化为用例执行请求,并基于所述通信协议将所述用例执行请求发送到所述用例服务调度模块;
[0013] 所述用例服务调度模块配置为基于所述用例执行请求调用所述虚拟主机上的用例服务;
[0014] 所述用例服务配置为从所述用例执行请求中获取测试参数,并将所述测试参数配置到所述硬件设备;
[0015] 所述硬件设备配置为基于所述测试参数调用对应的算法加速引擎来执行测试,并将测试结果通过所述用例服务调度模块返回到所述应用层。
[0016] 在一些实施方式中,所述应用层包括用户操作界面;
[0017] 所述算法加速引擎配置为在测试结束后,将测试结果返回到所述虚拟主机的用例服务;
[0018] 所述虚拟主机配置为基于所述用例服务将所述测试结果返回到所述用例服务调度模块;
[0019] 所述用例服务调度模块配置为将所述测试结果进一步返回到应用层并将其展示到所述用户操作界面。
[0020] 在一些实施方式中,所述用例服务调度模块包括服务接口配置模块,所述服务接口配置模块配置为:
[0021] 获取部署到所述云平台的虚拟服务,并基于所述虚拟服务将对应的服务接口分层级写入服务接口配置文件,其中每一层级包括至少一个服务接口,每一个服务接口包括被动服务接口、主动服务接口及下级服务接口。
[0022] 在一些实施方式中,所述用例服务调度模块包括服务接口检测模块和服务接口解析模块,所述服务接口检测模块配置为:
[0023] 定时检测所述服务接口配置文件是否发生变化;
[0024] 响应于所述服务接口配置文件发生变化,则触发所述服务接口解析模块,并通过所述服务接口解析模块对所述服务接口配置文件进行更新;
[0025] 所述服务接口解析模块配置为从所述服务接口配置文件中读取并逐行解析所述服务接口。
[0026] 在一些实施方式中,所述用例服务调度模块包括服务接口解析模块,所述服务接口解析模块配置为:
[0027] 获取本层级服务接口中的下一个服务接口;
[0028] 判断所述下一个服务接口是否为所述本层级服务接口中的最后一个服务接口;
[0029] 响应于所述下一个服务接口不为所述本层级服务接口中的最后一个服务接口,判断下一个服务接口的被动服务接口是否为空;
[0030] 基于所述下一个服务接口的被动服务接口是否为空的判断结果,判断下一个服务接口的主动服务接口是否为空;
[0031] 基于所述下一个服务接口的主动服务接口是否为空的判断结果,判断下一个服务接口的下级服务接口是否为空;
[0032] 响应于所述下一个服务接口的下级服务接口为空或不为空,返回获取本层级的下一个服务接口的步骤以继续对本层级下一个服务接口的下一个服务接口进行解析直到解析完本层级的所有服务接口。
[0033] 在一些实施方式中,基于所述下一个服务接口的被动服务接口是否为空的判断结果,判断下一个服务接口的主动服务接口是否为空包括:
[0034] 响应于所述下一个服务接口的被动服务接口不为空,在服务接口哈希表中注册所述被动服务接口,并判断下一个服务接口的主动服务接口是否为空,其中,所述被动服务接口用于在接收到测试请求时调用;
[0035] 响应于所述下一个服务接口的被动服务接口为空,则直接判断下一个服务接口的主动服务接口是否为空。
[0036] 在一些实施方式中,基于所述下一个服务接口的主动服务接口是否为空的判断结果,判断下一个服务接口的下级服务接口是否为空,包括:
[0037] 响应于所述下一个服务接口的主动服务接口不为空,启动线程轮询,判断下一个服务接口的下级服务接口是否为空,其中,所述线程轮询用于调用所述本层级服务接口的主动服务接口;
[0038] 响应于所述下一个服务接口的主动服务接口为空,则直接判断下一个服务接口的下级服务接口是否为空。
[0039] 在一些实施方式中,响应于所述下一个服务接口的下级服务接口不为空,返回获取本层级的下一个服务接口的步骤以继续对本层级下一个服务接口的下一个服务接口进行解析直到解析完本层级的所有服务接口,包括:
[0040] 响应于所述下一个服务接口的下级服务接口不为空,基于所述下级服务接口获取下一层级的服务接口,并递归解析下一层级的服务接口直到所有下层级的所有服务接口解析完毕;
[0041] 返回获取本层级的下一个服务接口的步骤以继续对本层级下一个服务接口的下一个服务接口进行解析直到解析完本层级的所有服务接口。
[0042] 在一些实施方式中,所述服务接口解析模块还配置为:
[0043] 响应于所述下一个服务接口为所述本层级服务接口中的最后一个服务接口,结束本层级的服务接口解析。
[0044] 在一些实施方式中,所述用例服务调度模块包括服务接口触发模块,所述服务接口触发模块配置为:
[0045] 响应于接收到所述用例执行请求,基于所述用例执行请求中的消息类型字段从服务接口哈希表中查找到对应的服务接口。
[0046] 在一些实施方式中,所述用例服务调度模块包括服务接口调用模块,所述服务接口调用模块配置为:
[0047] 调用所述对应的服务接口发送用例执行请求到Web服务器,以基于所述Web服务器将所述用例执行请求转发到所述用例服务。
[0048] 在一些实施方式中,所述用例服务配置为调用硬件测试工具,并基于所述硬件测试工具调用对应的硬件外设驱动来驱动对应的硬件设备以执行相应的硬件测试。
[0049] 本发明实施例的另一方面,还提供了一种芯片测试方法,应用于测试系统,方法包括:
[0050] 应用层将用户操作转化为用例执行请求,并基于通信协议将所述用例执行请求发送到所述用例服务调度模块;
[0051] 所述用例服务调度模块基于所述用例执行请求调用虚拟主机上的用例服务;
[0052] 所述用例服务从所述用例执行请求中获取测试参数,并将所述测试参数配置到硬件设备;
[0053] 所述硬件设备基于所述测试参数调用对应的算法加速引擎来执行测试,并将测试结果通过所述用例服务调度模块返回到所述应用层。
[0054] 本发明实施例的又一方面,还提供了一种计算机设备,包括:至少一个处理器;以及存储器,所述存储器存储有可在所述处理器上运行的计算机程序,所述计算机程序由所述处理器执行时实现如上方法的步骤。
[0055] 本发明实施例的再一方面,还提供了一种计算机可读存储介质,计算机可读存储介质存储有被处理器执行时实现如上方法步骤的计算机程序。
[0056] 本发明至少具有以下有益技术效果:1)提高了系统的可移植性。系统底层更换hypervisor不需要修改环境部署流程,例如虚拟机镜像创建、操作系统安装、启动、关闭、挂起、恢复虚拟机等,并且部署特定用例服务接口的镜像可在裸金属、虚拟机、容器之间任意迁移;2)提高了系统的安全及可靠性。基于云平台成熟的用户身份认证、镜像备份、动态迁移、数据和网络安全、状态监控等机制,并且由于云平台经受大规模用户充分测试,系统故障率较低,故障自恢复能力也较强,并且可有效过滤内外部用户的恶意网络攻击;3)降低了系统模块间的耦合并增强了系统可扩展性。统一的用例服务调度模块,减少了重复的测试代码编写工作,基于web服务接口的用例服务插件开发框架,使得各测试开发人员开发的测试模块不会互相依赖,各服务接口耦合度较低,减少了因模块耦合造成的系统故障难以定位问题,新增加软硬件测试模块,不会干扰原有模块运行。

附图说明

[0057] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
[0058] 图1为本发明提供的芯片测试系统的一实施例的结构示意图;
[0059] 图2为本发明提供的芯片测试系统的又一实施例的结构示意图;
[0060] 图3为本发明提供的服务接口配置文件的一实施例的示意图;
[0061] 图4为本发明提供的服务接口哈希表的匹配流程图;
[0062] 图5为本发明提供的芯片测试方法的一实施例的框图;
[0063] 图6为本发明提供的计算机设备的一实施例的结构示意图;
[0064] 图7为本发明提供的计算机可读存储介质的一实施例的结构示意图。

具体实施方式

[0065] 为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
[0066] 需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
[0067] 基于上述目的,本发明实施例的第一个方面,提出了一种芯片测试系统的实施例。如图1所示,系统包括:
[0068] 应用层10、通信层20、虚拟化层30、硬件设备层40和引擎层50,其中,所述通信层20包括通信协议21;虚拟化层30包括用例服务调度模块31、云平台32、部署于云平台32上的虚拟服务33和虚拟主机34、部署于虚拟主机34上的用例服务35,硬件设备层40包括硬件设备41,引擎层50包括用于硬件设备的算法加速引擎51。
[0069] 基于上述测试系统进行测试的流程如下:
[0070] S1、应用层将用户操作转化为用例执行请求,并基于通信协议将用例执行请求发送到用例服务调度模块;
[0071] S2、用例服务调度模块基于用例执行请求调用虚拟主机上的用例服务;
[0072] S3、用例服务从用例执行请求中获取测试参数,并将测试参数配置到硬件设备;
[0073] S4、硬件设备基于测试参数调用对应的算法加速引擎来执行测试,并将测试结果通过用例服务调度模块返回到所述应用层。
[0074] 应用层提供用户操作界面,并将通过用户操组界面获取的用户操作转为用例执行请求发送到虚拟化层的用例服务调度模块,用例服务调度模块根据测试参数调用不同虚拟化环境(即虚拟主机,例如裸金属服务器、虚拟机、容器等)上的用例服务,用例服务调用底层硬件(如FPGA原型验证平台、流片后硬件、模拟硬件、测试桩等)执行测试并将结果通过用例服务返回到用例服务调度模块,通过用例服务调度模块进一步返回到用户操作界面。
[0075] 上述测试系统可应用于芯片研发的各个阶段的测试,例如,系统架构阶段、设计阶段、流片阶段、流片后阶段等多个阶段的测试。
[0076] 通过上述测试系统实现了对芯片的测试,并且通过对应用层、通信层、虚拟化层、设备层以及引擎层的设计,屏蔽了底层hypervisor的差异,减少了更换hypervisor带来的额外环境部署工作;并且结合云平台软硬件服务如身份认证、镜像服务、动态迁移等,使得系统的可移植性和可靠性提高;并且用例服务调度模块,支持添加任何芯片测试项目到测试系统,使新服务与系统原有其他服务没有耦合,不会影响原有模块运行,增强了系统的可扩展性。
[0077] 下面通过一具体的实施例对上述测试系统的应用层、通信层、虚拟化层、设备层以及引擎层进行更加具体的说明。
[0078] 如图2所示,为又一芯片测试系统的结构示意图。
[0079] 下面对图2中各个模块的功能进行介绍。
[0080] S001 应用层,用于给用户展示用户操作界面,用户操作界面包括S001、S002、S003中的任意一种;
[0081] S002 浏览器界面,基于web浏览器的图形用户操作界面;
[0082] S003 图形用户界面,基于桌面应用图形库的图形用户操作界面;
[0083] S004 命令行界面,基于终端命令行、无图形元素的用户操作界面;
[0084] S005 通信层,用于在应用层和虚拟化层的用例服务调度模块之间通信,包括S006、S007、S008中的任意一种;
[0085] S006 超文本传输协议(HTTP),一种位于网络传输层之上的应用层数据传输协议;
[0086] S007 网络传输层协议,基于网络传输层的数据传输协议,可提供套接字形式接口;
[0087] S008 高级消息队列协议,基于网络传输层之上的应用层消息发布‑订阅协议;
[0088] S009 虚拟化层,用于提供测试设备、测试环境、测试用例运行的各种载体;
[0089] S010 用例服务调度,用于接收应用层发来的各种测试命令;
[0090] S011 裸金属,云平台上可提供虚拟软硬件资源的物理服务器,为虚拟主机的一种,每一次测试根据应用场景只能选取一种虚拟主机部署于云平台上;
[0091] S012 裸金属用例服务,运行在裸金属服务器之上的用例服务模块,为虚拟主机的一种,每一次测试根据应用场景只能选取一种虚拟主机部署于云平台上;
[0092] S013 虚拟机,云平台上可提供软硬件资源的虚拟主机,通过物理服务器的hypervisor软件创建,由于存在hypervisor软件开销,因此相比同样配置的裸金属性能较低;
[0093] S014 虚拟机用例服务,运行在虚拟机之上的用例服务模块;
[0094] S015 容器,云平台上使用轻量级虚拟化技术的容器,通常只能运行单个进程;
[0095] S016 容器用例服务,运行在容器之上的用例服务模块;
[0096] S017 云平台,提供计算、网络、存储、应用软件等虚拟服务的云计算平台;
[0097] S018 认证服务,提供管理用户的身份认证、服务规则和服务令牌等信息的服务;
[0098] S019 镜像服务,提供注册、下载、创建不同种类、不同版本操作系统镜像的服务;
[0099] S020 计算服务,提供虚拟机的创建、删除、挂起、恢复等生命周期管理的服务;
[0100] S021 存储服务,提供作为虚拟硬盘的块存储和用于存放对象数据的对象存储服务;
[0101] S022 网络服务,提供虚拟交换机/网桥、虚拟路由器、DHCP、命名空间等服务;
[0102] S023 设备层,提供各种用于可用于模拟芯片行为的硬件设备,每一次测试根据应用场景只能选取一种硬件设备来执行相应的测试;
[0103] S024 物理硬件,流片前FPGA原型验证硬件、流片后硬件等;
[0104] S025 模拟硬件,通过软件模拟芯片行为的模拟硬件设备;
[0105] S026 测试桩,通过软件模拟的硬件测试接口,不具备任何硬件功能;
[0106] S027 引擎层,包含硬件内部各种算法加速引擎;
[0107] S028 压缩,压缩算法的硬件加速引擎;
[0108] S029 纠删,纠删算法的硬件加速引擎;
[0109] S030 加解密,加解密算法的硬件加速引擎;
[0110] S031 RAID,磁盘冗余阵列算法的硬件加速引擎;
[0111] S032 网络offload,网络协议如TCP/UDP/IP等算法的硬件加速引擎;
[0112] S033 音视频编解码,音视频编解码算法的硬件加速引擎。
[0113] 下面结合图2,对测试系统进行芯片的测试流程进行说明。
[0114] S11、应用层在接收到用户在用户操作界面上执行测试用例后,应用层将用户操作转化为用例执行请求,并基于通信层的某种通信协议(包括但不限于超文本传输协议、网络传输层协议、高级消息队列协议等)转发用例执行请求到虚拟化层的用例服务调度模块;
[0115] S12、用例服务调度模块将用例执行请求提交到web服务器,通过web服务器将用例执行请求转发到相应虚拟主机(包括但不限于裸金属、虚拟机、容器等)上的用例服务;
[0116] S13、虚拟主机上的用例服务从用例执行请求中获取测试参数,并将测试参数配置到相应的硬件设备(包括但不限于物理硬件、模拟硬件、测试桩等)中,硬件设备调用不同的硬件引擎执行相应的测试用例,包括但不限于压缩、纠删、加解密、RAID、网络offload、音视频编解码等;
[0117] S14、硬件引擎执行完测试用例后,将测试结果返回到虚拟主机的用例服务当中;
[0118] S15、虚拟主机的用例服务将测试结果进一步返回到用例服务调度模块;
[0119] S16、用例服务调度模块将测试结果进一步返回到应用层软件并将其展示到操作界面。
[0120] 上述方案具有如下好处:
[0121] 1)提高了系统的可移植性。系统底层更换hypervisor不需要修改环境部署流程,例如虚拟机镜像创建、操作系统安装、启动、关闭、挂起、恢复虚拟机等,并且部署特定用例服务接口的镜像可在裸金属、虚拟机、容器之间任意迁移;
[0122] 2)提高了系统的安全及可靠性。基于云平台成熟的用户身份认证、镜像备份、动态迁移、数据和网络安全、状态监控等机制,并且由于云平台经受大规模用户充分测试,系统故障率较低,故障自恢复能力也较强,并且可有效过滤内外部用户的恶意网络攻击。
[0123] 3)降低了系统模块间的耦合并增强了系统可扩展性。统一的用例服务调度模块,减少了重复的测试代码编写工作,基于web服务接口的用例服务插件开发框架,使得各测试开发人员开发的测试模块不会互相依赖,各服务接口耦合度较低,减少了因模块耦合造成的系统故障难以定位问题,新增加软硬件测试模块,不会干扰原有模块运行。
[0124] 在一些实施方式中,所述应用层包括用户操作界面;
[0125] 所述算法加速引擎配置为在测试结束后,将测试结果返回到所述虚拟主机的用例服务;
[0126] 所述虚拟主机配置为基于所述用例服务将所述测试结果返回到所述用例服务调度模块;
[0127] 所述用例服务调度模块配置为将所述测试结果进一步返回到应用层并将其展示到所述用户操作界面。
[0128] 在一些实施方式中,所述用例服务调度模块包括服务接口配置模块,所述服务接口配置模块配置为:
[0129] 获取部署到所述云平台的虚拟服务,并基于所述虚拟服务将对应的服务接口分层级写入服务接口配置文件,其中每一层级包括至少一个服务接口,每一个服务接口包括被动服务接口、主动服务接口及下级服务接口。
[0130] 如图3所示,为服务接口配置文件的示意图。
[0131] 结合图3对配置服务接口配置文件的具体过程如下:
[0132] 假设服务开发人员在开发某一项特定服务,例如针对某一芯片的测试服务。在将虚拟服务部署到云平台的虚拟机镜像模板后,基于部署的虚拟服务将测试需要的服务接口写入配置文件的某一层级,作为该层级的一个用例服务接口,每个用例服务接口包括被动服务接口(用于接收到命令后执行命令处理,如设备控制、用例执行服务)、主动服务接口(用于主动上报服务状态,如硬件中断处理等)、下级服务接口(如果该服务包含更多子服务,如用例执行服务可能包含压缩、纠删、冗余阵列等算法加速芯片子测试服务,则在下级服务接口体现)。
[0133] 更加具体的,被动服务接口用于接收到命令后执行命令处理,如设备控制、用例执行服务等;主动服务接口用于主动上报服务状态,如硬件中断处理等;下级服务接口用于关联子服务,如果当前服务包含更多子服务,如用例执行服务可能包含压缩、纠删、冗余阵列等算法加速芯片子测试服务,则在下级服务接口体现。
[0134] 在一些实施方式中,所述用例服务调度模块包括服务接口检测模块和服务接口解析模块,所述服务接口检测模块配置为:
[0135] 定时检测所述服务接口配置文件是否发生变化;
[0136] 响应于所述服务接口配置文件发生变化,则触发所述服务接口解析模块,并通过所述服务接口解析模块对所述服务接口配置文件进行更新;
[0137] 所述服务接口解析模块配置为从所述服务接口配置文件中读取并逐行解析所述服务接口。
[0138] 下面结合图3对服务接口检测模块的检测过程进行说明。
[0139] S21、定时检测服务接口配置文件有无变化;
[0140] S22、如果服务接口配置文件有变化,则停止所有服务;
[0141] S23、触发服务接口解析模块,通过服务接口解析模块实现服务接口配置文件的在线更新。
[0142] 下面为服务接口解析模块的解析过程:
[0143] 从服务接口配置文件中逐行解析服务接口;
[0144] 如果判断被动服务接口不为空,则将被动服务接口配置到服务接口哈希表中,当用例服务调度模块收到用例执行消息后,根据消息类型字段在哈希表查找匹配的被动服务接口执行相应的测试用例;
[0145] 如果判断主动服务接口不为空,则将启动一个线程轮询调用该服务接口,服务可通过该接口在必要时向应用层软件上报服务的运行状态,如上报硬件中断通知、硬件异常状态信息或者其他服务异常状态信息等。
[0146] 如图4所示,为服务接口哈希表的匹配流程图。
[0147] 用户提交的每一级测试参数的消息类型均可触发对应层级的服务接口,然后将该层级的参数1作为下一级测试参数的标识字段,对下级测试参数执行同样处理过程,不同开发者可以为不同的云平台主机配置不同的服务接口,从而实现定制化的测试环境。
[0148] 在一些实施方式中,所述用例服务调度模块包括服务接口解析模块,所述服务接口解析模块配置为:
[0149] 获取本层级服务接口中的下一个服务接口;
[0150] 判断所述下一个服务接口是否为所述本层级服务接口中的最后一个服务接口;
[0151] 响应于所述下一个服务接口不为所述本层级服务接口中的最后一个服务接口,判断下一个服务接口的被动服务接口是否为空;
[0152] 基于所述下一个服务接口的被动服务接口是否为空的判断结果,判断下一个服务接口的主动服务接口是否为空;
[0153] 基于所述下一个服务接口的主动服务接口是否为空的判断结果,判断下一个服务接口的下级服务接口是否为空;
[0154] 响应于所述下一个服务接口的下级服务接口为空或不为空,返回获取本层级的下一个服务接口的步骤以继续对本层级下一个服务接口的下一个服务接口进行解析直到解析完本层级的所有服务接口。
[0155] 在一些实施方式中,基于所述下一个服务接口的被动服务接口是否为空的判断结果,判断下一个服务接口的主动服务接口是否为空包括:
[0156] 响应于所述下一个服务接口的被动服务接口不为空,在服务接口哈希表中注册所述被动服务接口,并判断下一个服务接口的主动服务接口是否为空,其中,所述被动服务接口用于在接收到测试请求时调用;
[0157] 响应于所述下一个服务接口的被动服务接口为空,则直接判断下一个服务接口的主动服务接口是否为空。
[0158] 在一些实施方式中,基于所述下一个服务接口的主动服务接口是否为空的判断结果,判断下一个服务接口的下级服务接口是否为空,包括:
[0159] 响应于所述下一个服务接口的主动服务接口不为空,启动线程轮询,判断下一个服务接口的下级服务接口是否为空,其中,所述线程轮询用于调用所述本层级服务接口的主动服务接口;
[0160] 响应于所述下一个服务接口的主动服务接口为空,则直接判断下一个服务接口的下级服务接口是否为空。
[0161] 在一些实施方式中,响应于所述下一个服务接口的下级服务接口不为空,返回获取本层级的下一个服务接口的步骤以继续对本层级下一个服务接口的下一个服务接口进行解析直到解析完本层级的所有服务接口,包括:
[0162] 响应于所述下一个服务接口的下级服务接口不为空,基于所述下级服务接口获取下一层级的服务接口,并递归解析下一层级的服务接口直到所有下层级的所有服务接口解析完毕;
[0163] 返回获取本层级的下一个服务接口的步骤以继续对本层级下一个服务接口的下一个服务接口进行解析直到解析完本层级的所有服务接口。
[0164] 在一些实施方式中,所述服务接口解析模块还配置为:
[0165] 响应于所述下一个服务接口为所述本层级服务接口中的最后一个服务接口,结束本层级的服务接口解析。
[0166] 下面结合图3对服务接口解析模块的解析过程进行说明。
[0167] S30、获取本层级服务接口中的下一个服务接口;
[0168] S31、判断下一个服务接口是否为本层级服务接口中的最后一个服务接口;
[0169] S32、响应于下一个服务接口为本层级服务接口中的最后一个服务接口,结束本层级的服务接口解析;
[0170] S33、响应于下一个服务接口不为本层级服务接口中的最后一个服务接口,判断下一个服务接口的被动服务接口是否为空;
[0171] S34、响应于所述下一个服务接口的被动服务接口为空,则直接执行步骤S36;
[0172] S35、响应于下一个服务接口的被动服务接口不为空,在服务接口哈希表中注册被动服务接口(即回调接口),其中,被动服务接口用于在接收到测试请求时调用;
[0173] S36、判断下一个服务接口的主动服务接口是否为空;
[0174] S37、响应于下一个服务接口的主动服务接口为空,则直接执行步骤S39;
[0175] S38、响应于下一个服务接口的主动服务接口不为空,启动线程轮询,所述线程轮询用于调用所述本层级服务接口的主动服务接口;
[0176] S39、判断下一个服务接口的下级服务接口是否为空;
[0177] S40、响应于下一个服务接口的下级服务接口为空,返回获取本层级的下一个服务接口的步骤以继续对本层级下一个服务接口的下一个服务接口进行解析直到解析完本层级的所有服务接口。
[0178] S41、响应于下一个服务接口的下级服务接口不为空,基于下级服务接口获取下一层级的服务接口,并递归解析下一层级的服务接口直到所有下层级的所有服务接口解析完毕;
[0179] S42、返回获取本层级的下一个服务接口的步骤以继续对本层级下一个服务接口的下一个服务接口进行解析直到解析完本层级的所有服务接口。
[0180] 本实施例通过统一的用例服务调度模块,减少了重复的测试代码编写工作,通过对服务接口配置文件的检测与解析降低了各服务接口耦合度,减少了因模块耦合造成的系统故障难以定位问题,新增加软硬件测试模块,不会干扰原有模块运行,从而降低了系统模块间的耦合并增强了系统可扩展性。
[0181] 在一些实施方式中,所述用例服务调度模块包括服务接口触发模块,所述服务接口触发模块配置为:
[0182] 响应于接收到所述用例执行请求,基于所述用例执行请求中的消息类型字段从服务接口哈希表中查找到对应的服务接口。
[0183] 下面结合图3对服务接口触发模块的触发过程进行说明。
[0184] S51、用户在应用层软件操作界面上执行用例;
[0185] S52、应用层软件将用户操作转换为用例执行请求,并将用例执行请求发送到用例服务调度模块,触发用例调度模块查找哈希表执行对应的服务接口。
[0186] 本实施例通过统一的用例服务调度模块,减少了重复的测试代码编写工作,通过服务接口文件的配置降低了各服务接口耦合度,减少了因模块耦合造成的系统故障难以定位问题,新增加软硬件测试模块,不会干扰原有模块运行,从而降低了系统模块间的耦合并增强了系统可扩展性。
[0187] 在一些实施方式中,所述用例服务调度模块包括服务接口调用模块,所述服务接口调用模块配置为:
[0188] 调用所述对应的服务接口发送用例执行请求到Web服务器,以基于所述Web服务器将所述用例执行请求转发到所述用例服务。
[0189] 下面结合图3对服务接口调用模块的调用过程进行说明。
[0190] S61、服务接口调用模块调用对应的服务接口(回调接口)时会自动提交用例执行请求到web服务器;
[0191] S62、web服务器将用例执行请求转发给相应的用例服务;
[0192] S63、用例服务调用各种编程语言编写的硬件测试工具,如使用python编写的auduino控制工具,或者使用c编写的PCIe复位工具等;
[0193] S64、各种硬件测试工具调用硬件设备(外设)驱动执行硬件测试操作;
[0194] S65、硬件设备驱动控制物理/模拟硬件设备执行相应的硬件测试操作。
[0195] 本实施例通过统一的用例服务调度模块,减少了重复的测试代码编写工作,基于web服务接口的用例服务插件开发框架,使得各测试开发人员开发的测试模块不会互相依赖,各服务接口耦合度较低,减少了因模块耦合造成的系统故障难以定位问题,新增加软硬件测试模块,不会干扰原有模块运行,从而降低了系统模块间的耦合并增强了系统可扩展性。
[0196] 在一些实施方式中,所述用例服务配置为调用硬件测试工具,并基于所述硬件测试工具调用对应的硬件外设驱动来驱动对应的硬件设备以执行相应的硬件测试。
[0197] 基于同一发明构思,根据本发明的另一个方面,如图5所示,本发明的实施例还提供了一种芯片测试方法,应用于测试系统,方法包括:
[0198] S100、应用层将用户操作转化为用例执行请求,并基于通信协议将所述用例执行请求发送到所述用例服务调度模块;
[0199] S200、所述用例服务调度模块基于所述用例执行请求调用虚拟主机上的用例服务;
[0200] S300、所述用例服务从所述用例执行请求中获取测试参数,并将所述测试参数配置到硬件设备;
[0201] S400、所述硬件设备基于所述测试参数调用对应的算法加速引擎来执行测试,并将测试结果通过所述用例服务调度模块返回到所述应用层。
[0202] 基于同一发明构思,根据本发明的另一个方面,如图6所示,本发明的实施例还提供了一种计算机设备30,在该计算机设备30中包括处理器310以及存储器320,存储器320存储有可在处理器上运行的计算机程序321,处理器310执行程序时执行如上的方法的步骤。
[0203] 其中,存储器作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中的所述芯片测试方法对应的程序指令/模块。处理器通过运行存储在存储器中的非易失性软件程序、指令以及模块,从而执行装置的各种功能应用以及数据处理,即实现上述方法实施例的芯片测试方法。
[0204] 存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据装置的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至本地模块。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0205] 基于同一发明构思,根据本发明的另一个方面,如图7所示,本发明的实施例还提供了一种计算机可读存储介质40,计算机可读存储介质40存储有被处理器执行时执行如上方法的计算机程序410。
[0206] 最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,程序的存储介质可为磁碟、光盘、只读存储记忆体(ROM)或随机存储记忆体(RAM)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
[0207] 本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
[0208] 以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
[0209] 应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
[0210] 所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。