生成测试用例的方法、电子设备及存储介质与流程

文档序号:27762731发布日期:2021-12-04 00:08阅读:123来源:国知局
生成测试用例的方法、电子设备及存储介质与流程

1.本公开实施例涉及逻辑系统设计技术领域,尤其涉及一种生成测试用例的方法、电子设备及存储介质。


背景技术:

2.在集成电路的验证领域,仿真一般是指将设计进行编译之后在计算机或硬件仿真设备上运行,以对设计的各种功能进行仿真测试。设计可以是,例如,用于供专门应用的集成电路(application specific integrated circuit,简称asic)或者片上系统芯片(system

on

chip,简称soc)的设计。因此,在仿真中被测试或验证的设计又可以称为待测设备(device under test,简称dut)。
3.在生成仿真测试所需的测试用例时,以随机生成测试用例的方式需要较长的时间才能满足仿真测试所需的功能覆盖要求。


技术实现要素:

4.有鉴于此,本公开提出了一种用于生成测试用例的方法、电子设备及存储介质。
5.本公开第一方面,提供了一种用于生成测试用例的方法,其中,所述测试用例用于在逻辑系统设计的仿真过程中测试所述逻辑系统设计的多个功能单元。所述方法包括:获取用于生成测试用例的约束条件;根据所述约束条件生成第一组测试用例,其中,所述第一组测试用例用于覆盖所述多个功能单元的一部分;基于所述第一组测试用例测试所述逻辑系统设计;确定所述测试的未覆盖功能单元和当前覆盖率;以及响应于所述当前覆盖率不满足预设测试覆盖率条件,根据所述未覆盖功能单元生成第二组测试用例。
6.本公开第二方面,提供了一种电子设备,包括:存储器,用于存储一组指令;以及至少一个处理器,配置为执行该组指令以进行如第一方面所述的方法。
7.本公开第三方面,提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储电子装置的一组指令,该组指令用于使所述电子装置执行第一方面所述的方法。
8.本公开提供的用于生成测试用例的方法、电子设备及存储介质,通过添加测试用例的生成约束条件,并依据测试结果修改约束条件以此控制后续生成的测试用例,从而减少测试用例生成的时间和空间开销,提高仿真测试的效率。
附图说明
9.为了更清楚地说明本公开或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
10.图1为根据本公开实施例的主机的示意图。
11.图2为根据本公开实施例的仿真测试工具的示意图。
12.图3为根据本公开实施例的一种测试用例生成系统的示意图。
13.图4为根据本公开实施例的另一种测试用例生成系统的示意图。
14.图5为根据本公开实施例的仿真测试流程的示意图。
15.图6a为根据本公开实施例的一种生成测试用例的方法的流程图。
16.图6b为根据本公开实施例的另一种生成测试用例的方法的流程图。
具体实施方式
17.为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
18.需要说明的是,除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
19.仿真测试是在运行仿真测试工具的主机上对逻辑系统设计施加各种激励以检测逻辑系统设计是否可以实现预定的功能。
20.图1示出了根据本公开实施例的主机100的示意图。主机100可以是运行仿真工具的电子设备。如图1所示,主机100可以包括:处理器102、存储器104、网络接口106、外围接口108和总线110。其中,处理器102、存储器104、网络接口106和外围接口108通过总线110实现彼此之间在主机内部的通信连接。
21.处理器102可以是中央处理器(central processing unit,cpu)、图像处理器、神经网络处理器(npu)、微控制器(mcu)、可编程逻辑器件、数字信号处理器(dsp)、应用专用集成电路(application specific integrated circuit,asic)、或者一个或多个集成电路。处理器102可以用于执行与本公开描述的技术相关的功能。在一些实施例中,处理器102还可以包括集成为单一逻辑组件的多个处理器。如图1所示,处理器102可以包括多个处理器102a、102b和102c。
22.存储器104可以配置为存储数据(例如,指令集、计算机代码、中间数据等)。在一些实施例中,用于仿真测试设计的仿真测试工具可以是存储器104中存储的计算机程序。如图1所示,存储器存储的数据可以包括程序指令(例如,用于实现本公开的仿真方法的程序指令)以及要处理的数据(例如,存储器可以存储在编译过程产生的临时代码)。处理器102也可以访问存储器存储的程序指令和数据,并且执行程序指令以对要处理的数据进行操作。存储器104可以包括易失性存储装置或非易失性存储装置。在一些实施例中,存储器104可以包括随机访问存储器(ram)、只读存储器(rom)、光盘、磁盘、硬盘、固态硬盘(ssd)、闪存、存储棒等。
23.网络接口106可以配置为经由网络向主机100提供与其他外部设备的通信。该网络可以是能够传输和接收数据的任何有线或无线的网络。例如,该网络可以是有线网络、本地无线网络(例如,蓝牙、wifi、近场通信(nfc)等)、蜂窝网络、因特网、或上述的组合。可以理
解的是,网络的类型不限于上述具体示例。在一些实施例中,网络接口106可以包括任意数量的网络接口控制器(nic)、射频模块、接收发器、调制解调器、路由器、网关、适配器、蜂窝网络芯片等的任意组合。
24.外围接口108可以配置为将主机100与一个或多个外围装置连接,以实现信息输入及输出。例如,外围装置可以包括键盘、鼠标、触摸板、触摸屏、麦克风、各类传感器等输入设备以及显示器、扬声器、振动器、指示灯等输出设备。
25.总线110可以被配置为在主机100的各个组件(例如处理器102、存储器104、网络接口106和外围接口108)之间传输信息,诸如内部总线(例如,处理器

存储器总线)、外部总线(usb端口、pci

e总线)等。
26.需要说明的是,尽管上述主机架构仅示出了处理器102、存储器104、网络接口106、外围接口108和总线110,但是在具体实施过程中,该主机架构还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述主机架构中也可以仅包含实现本公开实施例方案所必需的组件,而不必包含图中所示的全部组件。
27.在逻辑系统设计领域(例如芯片设计领域),可以利用仿真工具对设计进行仿真。该仿真工具可以是运行在图1所示主机100上的计算机程序。
28.图2示出了根据本公开实施例的仿真测试工具200的示意图。如图2所示,仿真测试工具200可以包括测试用例生成器210和仿真器220。
29.测试用例生成器可以基于约束条件代码来生成测试用例。约束条件代码又可以称为约束条件。通常,编写约束条件的源语言是高级编程语言。高级编程语言可以例如是c、c++等软件编程语言、dsl(domain specific language)等领域描述语言、systemverilog等硬件描述语言等。通常,测试用例生成器210可以存储在图1所示的存储器104中,并且由处理器102执行,以依据约束条件生成测试用例。
30.仿真器220可以根据测试用例对逻辑系统设计进行仿真测试,并输出仿真测试结果。例如,仿真器可以将仿真测试结果经由图1的外围接口108输出到输出装置上(输出装置例如显示器等),同时,仿真器220还可以依据仿真测试结果修改约束条件并将约束条件发送至测试用例生成器210。
31.在一些实施例中,设计可以是一个用systemverilog语言编写的验证环境,例如通用验证方法学(universal verification methodology,uvm)环境。通过利用仿真测试工具200仿真设计,可以构建一个uvm环境,并可以在该uvm环境中对一个待测设备(device under test,简称dut)进行验证。设计的描述(例如,hdl描述)通过编译可以形成仿真程序。该仿真程序在uvm环境中可以被用作dut。
32.图3示出了根据本公开实施例的测试用例生成系统300的示意图,如图3所示,测试用例生成系统300可以包括测试用例生成工具310和仿真测试工具320。测试用例生成系统300可以生成多组测试用例,用于在逻辑系统设计的仿真过程中测试逻辑系统设计的多个功能单元。逻辑系统设计的功能单元可以是逻辑系统设计的一个功能模块(例如,通信模块、存储模块、计算模块)。功能单元也可以是一个大功能模块下的小功能模块(例如,计算模块中的通用计算模块、神经网络计算模块等)或者是功能模块的一部分(例如,存储模块的各个地址段等)。简而言之,逻辑系统设计的功能单元的粒度可以根据测试的要求而具体的设置。
33.在本公开实施例中,测试用例生成工具310可以实现约束条件读取和测试用例生成功能,并且可以进一步包括约束条件代码获取单元3100、约束条件代码解析单元3110、测试用例生成单元3120、以及测试用例缓存单元3130。
34.如图3所示,约束条件代码获取单元3100可以从外部(例如,用户)获取约束,并生成相应的约束条件代码3101。约束条件代码解析单元3110可以对约束条件代码3101进行解析,以生成可被测试用例生成单元3120读取的约束解析条件代码3111。测试用例生成单元3120可以根据约束解析条件代码3111生成测试用例3121,并且将生成的测试用例3121发送至测试用例缓存单元3130。测试用例缓存单元3130可以缓存收到的测试用例3121。可以理解,在一些实施例中,测试用例生成单元3120也可以将生成的测试用例3121直接发送到仿真测试工具320中。
35.在本公开实施例中,仿真工具320可以使用从测试用例缓存单元3130中提交的测试用例3131对逻辑系统设计进行仿真测试,并输出仿真测试结果。仿真工具320可以包括仿真测试单元3200、测试结果分析单元3210和约束条件代码修改单元3220。
36.仿真测试单元3200可以结合测试用例3131来仿真逻辑系统设计,并得到仿真测试结果。仿真测试结果可以包括测试覆盖率3211。
37.如图3所示,测试结果分析单元3210可以将获取到的仿真测试结果中的测试覆盖率3211与预设的测试覆盖率阈值进行比较。当测试覆盖率3211尚未满足预设测试覆盖率条件时,测试结果分析单元3210将仿真测试结果中的未覆盖功能单元定义3212提交约束条件代码修改单元3220以生成新的约束条件代码。预设测试覆盖率条件可以是测试覆盖率3211高于测试覆盖率阈值。
38.在本公开的一些实施例中,测试用例生成工具310中的测试用例生成单元3120并未读取约束解析条件代码而是直接生成随机测试用例,如图4所示。图4示出了根据本公开实施例的另一种测试用例生成系统400的示意图,测试用例生成系统400可以包括测试用例生成工具410和仿真测试工具420。
39.在本公开实施例中,测试生成工具410可以实现约束条件读取和测试用例生成功能。如图4所示,约束条件代码获取单元4100获取用户输入的约束,并生成约束条件代码4101。约束条件代码解析单元4110可对约束条件代码4101进行解析,以生成可被测试用例筛选单元4140读取的约束解析条件代码4111。测试用例筛选单元4140获得约束解析条件代码4111后读取测试用例缓存单元4130,得到提交至仿真测试单元的测试用例4141。
40.另一方面,测试用例生成单元4120读取测试用例缓存单元4130,当测试用例缓存单元4130中测试用例数量小于或等于一预设阈值时,新生成一组随机测试用例4121并发送至测试用例缓存单元。
41.在本公开实施例中,仿真工具420的仿真测试单元4200可以使用从测试用例筛选单元4140中提交的测试用例4141对逻辑系统设计进行仿真测试,并输出仿真测试结果。另外,如图4所示,测试结果分析单元4210将获取到的仿真测试结果中的测试覆盖率4211与预设的测试覆盖率阈值进行比较,当测试覆盖率4211尚未满足预设测试覆盖率条件时,测试结果分析单元4210将仿真测试结果中的未覆盖功能单元定义4212提交约束条件代码修改单元4220以生成新的约束条件代码。类似地,预设测试覆盖率条件可以是测试覆盖率4211高于测试覆盖率阈值。
42.在一些实施例中,测试用例生成系统300或400还可以获取用于生成测试用例的多个约束条件;基于该多个约束条件生成满足预设测试覆盖率条件的多组测试用例;以及基于该多个约束条件、该逻辑系统设计、以及该多组测试用例训练神经网络模型。这样,对于该逻辑系统设计而言,当用户输入一个新的约束条件时,可以利用训练的神经网络模型来快速生成一组测试用例。由于神经网络的介入,该组测试用例可以实现更高的覆盖率,从而提高测试用例覆盖的收敛速度。
43.图5示出了本公开实施例的仿真测试流程500的示意图。该仿真测试可包含两个或两个以上的仿真测试进程,每个进程可分别生成独立的仿真测试结果,所有进程生成的仿真测试结果可合并获得一个仿真测试结果。该仿真测试方法可由图3所示的仿真测试单元3200和测试结果分析单元3210或图4所示的仿真测试单元4200和测试结果分析单元4210实施。参照图5所示,该方流程500可以包括如下步骤。
44.仿真测试单元3200或4200接收生成测试用例5100,在仿真测试单元3200或4200内部生成仿真测试进程5110和仿真测试进程5120,两个仿真测试进程共同获取测试用例5100,并同步进行测试。测试结果分析单元3210或4210获取两个仿真测试进程生成的测试结果,得到仿真测试进程5110生成的未覆盖功能单元5111与测试覆盖率5112,仿真测试进程5120生成的未覆盖功能单元5121与测试覆盖率5122,将两个仿真测试进程分别生成的未覆盖功能单元和测试覆盖率合并处理,得到仿真测试的结果中包含的未覆盖功能单元5101与测试覆盖率5102。
45.本公开的实施例还提供了一种生成测试用例的方法。
46.图6a示出了根据本公开实施例的一种生成测试用例的方法600的流程图。所述测试用例用于在逻辑系统设计的仿真过程中测试所述逻辑系统设计的多个功能单元。该方法可由图3

4所示的测试用例生成系统300或400实施。参照图6所示,该方法600可以包括如下步骤。
47.在步骤s610中,测试用例生成系统可以获取用于生成测试用例的约束条件(例如图3所示的约束条件代码3101)。在一些实施例中,为了获取所述约束条件,测试用例生成系统可以获取用于生成测试用例的初始约束条件,并且对所述初始约束条件进行解析,以得到所述约束条件。
48.在步骤s620中,测试用例生成系统可以根据所述约束条件生成一组测试用例(例如,图3的测试用例3131)。其中,该组测试用例用于覆盖所述多个功能单元的一部分。
49.在一些实施例中,测试用例生成系统可以根据所述约束条件生成测试用例;并且从所述测试用例中筛选得到一组测试用例。可以理解的是,当约束条件不同时,可以得到与不同约束条件对应的不同组的测试用例。在这里,为了便于描述,将根据第一约束条件生成的测试用例称为第一组测试用例,将根据第二约束条件生成的测试用例称为第二组测试用例。
50.在步骤s630中,测试用例生成系统可以基于所述第一组测试用例测试所述逻辑系统设计。
51.在步骤s640中,测试用例生成系统可以确定所述测试的未覆盖功能单元和当前覆盖率。
52.在步骤s650中,测试用例生成系统可以确定当前覆盖率是否满足预设测试覆盖率
条件。当当前覆盖率满足预设测试覆盖率条件时,完成对于所述逻辑系统设计的测试。所述预设测试覆盖率条件可以是所述当前覆盖率高于给定测试覆盖率阈值。
53.在步骤s660中,响应于所述当前覆盖率不满足预设测试覆盖率条件,测试用例生成系统可以根据所述未覆盖功能单元生成第二组测试用例。测试用例生成系统可以进一步基于所述第二组测试用例继续测试所述逻辑系统设计;以及更新所述测试的未覆盖功能单元和当前覆盖率。
54.在一些实施例中,生成第二组测试用例的方式可以如图6b所示。图6b示出了根据本公开实施例的一种生成测试用例的方法610的流程图。与图6a的方法600相比,方法610包括了相同的步骤s610

s650,在此不再赘述。方法600的步骤s660则以步骤s662的方式来实现。具体如下,在步骤s662中,测试用例生成系统可以根据所述未覆盖功能单元更新所述约束条件;以及根据所述更新的约束条件以生成所述第二组测试用例。如图6b所示,当约束条件在步骤s662被更新后,方法610可以回到步骤s620以根据更新的约束条件生成新一组测试用例,也就是第二组测试用例。
55.在一些实施例中,所述第一组测试用例与所述第二组测试用例的覆盖不同的功能单元。通过不断地更新约束条件并生成相应的测试用例,本公开的实施例可以在逻辑系统设计的测试过程中快速覆盖逻辑系统设计的全部功能单元,而不会出现大量测试用例重复测试相同功能单元的问题。
56.在一些实施例中,测试用例生成系统还可以获取用于生成测试用例的多个约束条件;基于所述多个约束条件生成满足所述预设测试覆盖率条件的多组测试用例;以及基于所述多个约束条件、所述逻辑系统设计、以及所述多组测试用例训练神经网络模型。这样,对于所述逻辑系统设计而言,当用户输入一个新的约束条件时,可以利用训练的神经网络模型来快速生成一组测试用例。由于神经网络的介入,该组测试用例可以实现更高的覆盖率,从而提高测试用例覆盖的收敛速度。可以理解的是,用于进行神经网络训练的约束条件以及对应的测试用例也可以由用户直接提供。
57.需要说明的是,本公开的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本公开的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
58.本公开实施例还提供一种存储介质,该存储介质存储至少一组指令,该指令被执行时执行如本公开实施例提供的测试用例的生成方法。
59.本公开实施例还提供存储了指令的计算机可读存储介质。该指令在被电子设备执行时用于进行上述方法。该计算机可读存储介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd

rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
60.上述对本公开的一些实施例进行了描述。其他实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
61.所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本公开的不同方面的许多其它变化,为了简明它们没有在细节中提供。
62.另外,为简化说明和讨论,并且为了不会使本公开难以理解,在所提供的附图中可以示出或可以不示出与集成电路(ic)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本公开难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本公开的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本公开。因此,这些描述应被认为是说明性的而不是限制性的。
63.尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态ram(dram))可以使用所讨论的实施例。
64.本公开旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本公开的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1