CN116432570A - 一种芯片的测试用例生成方法、装置及存储介质 - Google Patents

一种芯片的测试用例生成方法、装置及存储介质 Download PDF

Info

Publication number
CN116432570A
CN116432570A CN202111663515.6A CN202111663515A CN116432570A CN 116432570 A CN116432570 A CN 116432570A CN 202111663515 A CN202111663515 A CN 202111663515A CN 116432570 A CN116432570 A CN 116432570A
Authority
CN
China
Prior art keywords
test case
input parameters
function coverage
value
target
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111663515.6A
Other languages
English (en)
Inventor
陈俊洁
毛航宇
郝建业
孙月凤
姜佳君
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202111663515.6A priority Critical patent/CN116432570A/zh
Priority to PCT/CN2022/143439 priority patent/WO2023125821A1/zh
Publication of CN116432570A publication Critical patent/CN116432570A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/243Classification techniques relating to the number of classes
    • G06F18/2431Multiple classes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2115/00Details relating to the type of the circuit
    • G06F2115/02System on chip [SoC] design

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Geometry (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Tests Of Electronic Circuits (AREA)

Abstract

本申请涉及一种芯片的测试用例生成方法、装置及存储介质,其中,该方法可以包括:获取输入参数集合;输入参数集合包括芯片的M个输入参数,M为不小于1的整数;将输入参数集合输入第一模型,生成第一测试用例集合;其中,第一测试用例包括:M个输入参数的取值,第一模型为利用第一测试用例训练样本训练所得到,第一测试用例训练样本中M个输入参数的取值满足预设约束。本申请中,通过生成较小规模的第一测试用例集合,即可达到较高的功能覆盖率,有效减少了测试所需时间,提高了测试效率,节约了测试成本。

Description

一种芯片的测试用例生成方法、装置及存储介质
技术领域
本申请涉及人工智能领域,尤其涉及一种芯片的测试用例生成方法、装置及存储介质。
背景技术
芯片被广泛应用于各类电子设备中,被认为是电子设备的心脏。芯片的生成过程复杂,需要经历芯片规格定义、芯片设计、物理布局、流片生产等诸多环节。其中,芯片设计作为芯片生成过程的上游基础环节尤为关键。通常,开发人员在规格定义环节设计芯片的特征、属性、功能架构,而后在芯片设计环节使用硬件描述语言(Hardware DescriptionLanguage,HDL)编写芯片设计实现的寄存器转换级别(Register-Transfer-Level,RTL)代码,后续环节基于此RTL代码进行进一步开发。由于芯片设计一旦被投入量产,将很难再进行更改,芯片设计上的不足会带来灾难性的经济损失,甚至危害使用者生命安全,因此,保证芯片设计的质量是一项十分重要的任务,在将芯片设计投入到生产环节之前,对芯片设计进行充分测试是十分必要的。
目前,主要采用基于约束驱动的随机测试方法(Constraint Driven Random,CDR)对待测芯片设计(Design Under Test,DUT)进行测试。该方法使用约束求解器对随机生成的测试用例进行校正,并利用校正后的测试用例进行测试,该方法往往需要大规模的测试用例集合,进行较长时间的测试,才能达到较高的功能覆盖率,测试效率较低,测试成本较高。
发明内容
有鉴于此,本申请提出了一种芯片的测试用例生成方法、装置及存储介质。
第一方面,本申请的实施例提供了一种芯片的测试用例生成方法,所述方法包括:获取输入参数集合;所述输入参数集合包括芯片的M个输入参数,M为不小于1的整数;将所述输入参数集合输入第一模型,生成第一测试用例集合;其中,第一测试用例包括:所述M个输入参数的取值,所述第一模型为利用第一测试用例训练样本训练所得到,所述第一测试用例训练样本中所述M个输入参数的取值满足预设约束。
基于上述技术方案,第一测试用例训练样本中输入参数的取值满足预设约束,第一模型为利用第一测试用例训练样本训练所得到的模型,这样,经过训练所得到的第一模型可以学习到该预设约束,即可以从输入参数全部的取值空间中筛选出有效的取值空间,从而有效减少了生成第一测试用例的过程中所需探索的输入参数的取值空间;同时,第一模型可以自动生成输入参数的取值满足预设约束的测试用例,无需进行校正,保证了第一测试用例集合中输入参数取值的多样性,从而通过生成较小规模的第一测试用例集合,即可达到较高的功能覆盖率,有效减少了测试所需时间,有效提高了测试效率,节约了测试成本。
根据第一方面,在所述第一方面的第一种可能的实现方式中,所述方法还包括:确定目标功能覆盖组,所述目标功能覆盖组包括待测试的目标功能;根据功能覆盖组与输入参数之间的关联信息,确定所述输入参数集合中与所述目标功能覆盖组相关联的N个目标输入参数,N为不大于M的正整数;其中,所述功能覆盖组与输入参数之间的关联信息为利用第二测试用例训练样本及所述第二测试用例训练样本对应的第一功能覆盖信息训练所得到;所述第二测试用例训练样本中所述M个输入参数的取值满足所述预设约束,所述第一功能覆盖信息表示各功能覆盖组中已被测试的功能和/或未被测试的功能;确定所述N个目标输入参数的至少一个第一取值组合;利用所述至少一个第一取值组合中的每一个,替代所述第一测试用例集合中的所述N个目标输入参数的一个第二取值组合,得到第二测试用例集合,其中,第二测试用例包括所述M个输入参数的取值。
基于上述技术方案,第一功能覆盖信息表示各功能覆盖组中已被测试的功能和/或未被测试的功能,功能覆盖组与输入参数之间的关联信息为利用输入参数的取值满足预设约束的第二测试用例训练样本、及第二测试用例训练样本对应的第一功能覆盖信息训练所得到,功能覆盖组与输入参数之间的关联信息可以指示相关联的功能覆盖组与输入参数;进而可以根据该关联信息确定输入参数集合中与目标功能覆盖组相关联的目标输入参数,该目标输入参数即为影响目标功能覆盖组中待测试的目标功能能否被测试到的重要参数,从而进一步缩小探索输入参数的取值空间,提升了测试效率;确定目标输入参数的取值组合,并生成包含该取值组合的第二测试用例集合,进而可以针对目标功能覆盖组中待测试的目标功能进行更加高效地测试,有效提升功能覆盖率。在一些示例中,针对未覆盖的功能覆盖组,可以生成能覆盖该功能覆盖组的测试用例,从而有效提升功能覆盖率,尤其对于测试后期通常难以被覆盖的功能覆盖组具有更好的覆盖效果,减少了领域专家的人工介入,降低了测试成本,进一步提升了测试效率,有效缩小了芯片开发周期。
根据上述第一方面的第一种可能的实现方式,在所述第一方面的第二种可能的实现方式中,所述确定所述N个目标输入参数的至少一个第一取值组合,包括:根据所述N个目标输入参数的预设取值范围,随机生成多个候选取值组合;将所述多个候选取值组合中的任一取值组合作为初始迭代回合对应的取值组合;从所述多个候选取值组合中,确定当前迭代回合对应的取值组合;其中,所述当前迭代回合对应的取值组合与已确定的各迭代回合对应的取值组合的差异最大;重复执行上述确定当前迭代回合对应的取值组合的操作,直到满足预设迭代条件;并将各迭代回合对应的取值组合作为所述至少一个第一取值组合。
基于上述技术方案,考虑到对于任一目标输入参数,其对应的取值范围内可以包括较多的取值,若遍历所有的取值,生成的第一取值组合数量规模太大,因此,通过启发式策略进行采样,首先生成多个候选取值组合,进而通过多次迭代,确定每一迭代回合对应的取值组合,且每一迭代回合对应的取值组合与已确定的各迭代回合对应的取值组合的差异最大,从而保证了各迭代回合对应的取值组合中N个目标输入参数的取值更加均匀、多样;进而可以生成输入参数的取值更加均匀、多样的测试用例,在保证功能覆盖率的同时,进一步提升了测试效率。
根据上述各种可能的实现方式,在所述第一方面的第三种可能的实现方式中,所述方法还包括:过滤掉所述第二测试用例集合中所述M个输入参数的取值不满足所述预设约束的第二测试用例。
基于上述技术方案,过滤掉输入参数的取值不满足预设约束的第二测试用例,从而保证第二测试用例集合中各第二测试用例的输入参数的取值均满足预设约束。
根据上述第一方面的各种可能的实现方式,在所述第一方面的第四种可能的实现方式中,所述确定目标功能覆盖组,包括:获取所述第一测试用例集合对应的第二功能覆盖信息,所述第二功能覆盖信息包括各功能覆盖组中未被测试的功能的个数;根据所述第一测试用例集合对应的第二功能覆盖信息,确定第一测试用例集合对应的各功能覆盖组的启发式分数,所述启发式分数与功能覆盖组中未被测试的功能的个数正相关;根据所述各功能覆盖组的启发式分数,确定所述各功能覆盖组对应的概率;基于各功能覆盖组对应的概率,确定至少一个目标功能覆盖组。
基于上述技术方案,通过启发式策略选取目标功能覆盖组,功能覆盖组中未被测试的功能的个数越多,对应的启发式分数越高,则对应的概率越大,则越可能被选为目标功能覆盖组;即针对未被覆盖的功能覆盖组,更有可能被选为目标功能覆盖组;尤其是在测试后期,难以被覆盖的功能覆盖组更有可能被选为目标功能覆盖组,进而可以针对性地生成测试用例,从而提升功能覆盖率,减少了领域专家的人工介入,降低了测试成本,提高了测试效率。
根据上述第一方面的第四种可能的实现方式,在所述第一方面的第五种可能的实现方式中,所述根据所述第一测试用例集合对应的第二功能覆盖信息,确定第一测试用例集合对应的各功能覆盖组的启发式分数,包括:根据所述第一测试用例集合对应的各功能覆盖组中未被测试的功能的个数,确定所述第一测试用例集合对应的未被测试的功能总数;根据所述各功能覆盖组中未被测试的功能的个数占所述未被测试的功能总数的比重,确定所述各功能覆盖组的启发式分数。
根据上述第一方面或第一方面的各种可能的实现方式,在所述第一方面的第六种可能的实现方式中,所述方法还包括:获取所述第一测试用例训练样本;利用所述第一测试用例训练样本对第一预设模型进行训练,得到所述第一模型。
基于上述技术方案,利用输入参数的取值满足预设约束的第一测试用例训练样本对第一预设模型进行训练,在训练过程中,第一预设模型可以不断学习不同输入参数之间的取值约束,从规模庞大的输入参数的取值空间中筛选出有效的取值空间,这样,训练得到的第一模型能够生成输入参数的取值满足预设约束的第一测试用例,且生成第一测试用例的过程中所需探索的输入参数的取值空间减少,避免了生成冗余或无效的测试用例,无需进行校正,保证了第一测试用例集合中输入参数取值的多样性,从而通过生成较小规模的测试用例集合,即可达到较高的功能覆盖率,有效减少了测试所需时间,提高了测试效率,节约了测试成本。
根据上述第一方面的第六种可能的实现方式,在所述第一方面的第七种可能的实现方式中,所述第一预设模型包括生成对抗网络,所述生成对抗网络包含生成器及判别器;所述利用所述第一测试用例训练样本对所述第一预设模型进行训练,得到所述第一模型,包括:利用所述第一测试用例训练样本对所述生成对抗网络进行多轮训练;并确定每轮训练收敛时的生成器对应的测试用例不变率,所述测试用例不变率表示生成器生成的测试用例的M个输入参数中取值符合所述预设约束的输入参数的比率;将与最大测试用例不变率对应的生成器,作为所述第一模型。
基于上述技术方案,利用第一测试用例训练样本对生成对抗网络中的判别器和生成器进行多轮对抗训练,通过不断训练,生成器可以挖掘到不同输入参数之间潜在的取值约束,且从规模庞大的输入参数的取值空间中筛选出有效的取值空间,从而减少了生成测试用例的过程中所需探索的输入参数的取值空间。将与最大测试用例不变率对应的生成器作为第一模型,从而可以利用第一模型自动生成输入参数的取值满足预设约束的测试用例,在达到较高的功能覆盖率的同时,有效减少了所需生成的测试用例数量,提高了测试效率,节约了测试成本。
根据上述第一方面的第七种可能的实现方式,在所述第一方面的第八种可能的实现方式中,所述方法还包括:利用收敛时的判别器,过滤掉所述第二测试用例集合中所述M个输入参数不满足所述预设约束的第二测试用例。
根据上述第一方面的各种可能的实现方式,在所述第一方面的第九种可能的实现方式中,所述方法还包括:获取所述第二测试用例训练样本及所述第二测试用例训练样本对应的第一功能覆盖信息;利用所述第二测试用例训练样本及所述第一功能覆盖信息对第二预设模型进行训练,得到所述功能覆盖组与输入参数之间的关联信息。
基于上述技术方案,利用第二测试用例训练样本及第二测试用例训练样本对应的第一功能覆盖信息对第二预设模型进行训练,从而挖掘出各功能覆盖组与输入参数之间的关联关系,即针对任一功能覆盖组,挖掘出影响该功能覆盖组中功能能否被测试到的重要输入参数,从而得到功能覆盖组与输入参数之间的关联信息;该关联信息可以为进一步生成测试用例地过程提供引导,以便针对性地生成能够覆盖目标功能覆盖组中功能覆盖点的测试用例,从而有效提升功能覆盖率,同时,进一步缩小了测试用例生成过程中所需探索的输入参数的取值空间,有效提高了测试效率。
根据上述第一方面的第九种可能的实现方式,在所述第一方面的第十种可能的实现方式中,所述第二预设模型包括随机森林模型;所述利用所述第二测试用例训练样本及所述第一功能覆盖信息对所述第二预设模型进行训练,得到所述功能覆盖组与输入参数之间的关联信息,包括:针对所述目标功能覆盖组,将所述第二测试用例训练样本输入到所述随机森林模型,并以所述第一功能覆盖信息作为标签,训练所述随机森林模型,得到所述功能覆盖组与输入参数之间的关联信息。
基于上述技术方案,针对任一功能覆盖组,可以以第二测试用例训练样本对应的第一功能覆盖信息作为标签,利用第二测试用例训练样本对与该功能覆盖组对应的随机森林模型进行训练,从而挖掘出该功能覆盖组与测试用例的输入参数之间的关联关系,即挖掘出影响该功能覆盖组中功能能否被测试到的重要输入参数,从而得到功能覆盖组与输入参数之间的关联信息;该关联信息可以为进一步生成测试用例地过程提供引导,以便针对性地生成能够覆盖目标功能覆盖组中功能覆盖点的测试用例,从而有效提升功能覆盖率,同时,进一步缩小了测试用例生成过程中所需探索的输入参数的取值空间,有效提高了测试效率。
根据上述第一方面的各种可能的实现方式,在所述第一方面的第十一种可能的实现方式中,所述利用所述至少一个第一取值组合中的每一个,替代所述第一测试用例集合中的所述N个目标输入参数的一个第二取值组合,包括:针对每一第一取值组合,确定与该第一取值组合的相似度满足预设条件的第二取值组合,作为该第一取值组合的目标第二取值组合;利用该第一取值组合替代所述目标第二取值组合。
基于上述技术方案,第二取值组合中输入参数的取值满足预设约束,将与第一取值组合的相似度满足预设约束的第二取值组合作为目标第二取值组合,从而最大程度保证生成的包含该第一取值组合的第二测试用例中输入参数的取值满足预设约束。
第二方面,本申请的实施例提供了一种芯片的测试用例生成装置,所述装置包括:传输模块,用于获取输入参数集合;所述输入参数集合包括芯片的M个输入参数,M为不小于1的整数;处理模块,用于将所述输入参数集合输入第一模型,生成第一测试用例集合;其中,第一测试用例包括:所述M个输入参数的取值,所述第一模型为利用第一测试用例训练样本训练所得到,所述第一测试用例训练样本中所述M个输入参数的取值满足预设约束。
基于上述技术方案,第一测试用例训练样本中输入参数的取值满足预设约束,第一模型为利用第一测试用例训练样本训练所得到的模型,这样,经过训练所得到的第一模型可以学习到该预设约束,即可以从输入参数全部的取值空间中筛选出有效的取值空间,从而有效减少了生成第一测试用例的过程中所需探索的输入参数的取值空间;同时,第一模型可以自动生成输入参数的取值满足预设约束的测试用例,无需进行校正,保证了第一测试用例集合中输入参数取值的多样性,从而通过生成较小规模的第一测试用例集合,即可达到较高的功能覆盖率,有效减少了测试所需时间,有效提高了测试效率,节约了测试成本。
根据第二方面,在所述第二方面的第一种可能的实现方式中,所述处理模块,还用于:确定目标功能覆盖组,所述目标功能覆盖组包括待测试的目标功能;根据功能覆盖组与输入参数之间的关联信息,确定所述输入参数集合中与所述目标功能覆盖组相关联的N个目标输入参数,N为不大于M的正整数;其中,所述功能覆盖组与输入参数之间的关联信息为利用第二测试用例训练样本及所述第二测试用例训练样本对应的第一功能覆盖信息训练所得到;所述第二测试用例训练样本中所述M个输入参数的取值满足所述预设约束,所述第一功能覆盖信息表示各功能覆盖组中已被测试的功能和/或未被测试的功能;确定所述N个目标输入参数的至少一个第一取值组合;利用所述至少一个第一取值组合中的每一个,替代所述第一测试用例集合中的所述N个目标输入参数的一个第二取值组合,得到第二测试用例集合,其中,第二测试用例包括所述M个输入参数的取值。
基于上述技术方案,第一功能覆盖信息表示各功能覆盖组中已被测试的功能和/或未被测试的功能,功能覆盖组与输入参数之间的关联信息为利用输入参数的取值满足预设约束的第二测试用例训练样本、及第二测试用例训练样本对应的第一功能覆盖信息训练所得到,功能覆盖组与输入参数之间的关联信息可以指示相关联的功能覆盖组与输入参数;进而可以根据该关联信息确定输入参数集合中与目标功能覆盖组相关联的目标输入参数,该目标输入参数即为影响目标功能覆盖组中待测试的目标功能能否被测试到的重要参数,从而进一步缩小探索输入参数的取值空间,提升了测试效率;确定目标输入参数的取值组合,并生成包含该取值组合的第二测试用例集合,进而可以针对目标功能覆盖组中待测试的目标功能进行更加高效地测试,有效提升功能覆盖率。在一些示例中,针对未覆盖的功能覆盖组,可以生成能覆盖该功能覆盖组的测试用例,从而有效提升功能覆盖率,尤其对于测试后期通常难以被覆盖的功能覆盖组具有更好的覆盖效果,减少了领域专家的人工介入,降低了测试成本,进一步提升了测试效率,有效缩小了芯片开发周期。
根据上述第二方面的第一种可能的实现方式,在所述第二方面的第二种可能的实现方式中,所述处理模块,还用于:根据所述N个目标输入参数的预设取值范围,随机生成多个候选取值组合;将所述多个候选取值组合中的任一取值组合作为初始迭代回合对应的取值组合;从所述多个候选取值组合中,确定当前迭代回合对应的取值组合;其中,所述当前迭代回合对应的取值组合与已确定的各迭代回合对应的取值组合的差异最大;重复执行上述确定当前迭代回合对应的取值组合的操作,直到满足预设迭代条件;并将各迭代回合对应的取值组合作为所述至少一个第一取值组合。
基于上述技术方案,考虑到对于任一目标输入参数,其对应的取值范围内可以包括较多的取值,若遍历所有的取值,生成的第一取值组合数量规模太大,因此,通过启发式策略进行采样,首先生成多个候选取值组合,进而通过多次迭代,确定每一迭代回合对应的取值组合,且每一迭代回合对应的取值组合与已确定的各迭代回合对应的取值组合的差异最大,从而保证了各迭代回合对应的取值组合中N个目标输入参数的取值更加均匀、多样;进而可以生成输入参数的取值更加均匀、多样的测试用例,在保证功能覆盖率的同时,进一步提升了测试效率。
根据上述第二方面的各种可能的实现方式,在所述第二方面的第三种可能的实现方式中,所述处理模块,还用于:过滤掉所述第二测试用例集合中所述M个输入参数的取值不满足所述预设约束的第二测试用例。
基于上述技术方案,过滤掉输入参数的取值不满足预设约束的第二测试用例,从而保证第二测试用例集合中各第二测试用例的输入参数的取值均满足预设约束。
根据上述第二方面的各种可能的实现方式,在所述第二方面的第四种可能的实现方式中,所述处理模块,还用于:获取所述第一测试用例集合对应的第二功能覆盖信息,所述第二功能覆盖信息包括各功能覆盖组中未被测试的功能的个数;根据所述第一测试用例集合对应的第二功能覆盖信息,确定第一测试用例集合对应的各功能覆盖组的启发式分数,所述启发式分数与功能覆盖组中未被测试的功能的个数正相关;根据所述各功能覆盖组的启发式分数,确定所述各功能覆盖组对应的概率;基于各功能覆盖组对应的概率,确定至少一个目标功能覆盖组。
基于上述技术方案,通过启发式策略选取目标功能覆盖组,功能覆盖组中未被测试的功能的个数越多,对应的启发式分数越高,则对应的概率越大,则越可能被选为目标功能覆盖组;即针对未被覆盖的功能覆盖组,更有可能被选为目标功能覆盖组;尤其是在测试后期,难以被覆盖的功能覆盖组更有可能被选为目标功能覆盖组,进而可以针对性地生成测试用例,从而提升功能覆盖率,减少了领域专家的人工介入,降低了测试成本,提高了测试效率。
根据上述第二方面的第四种可能的实现方式,在所述第二方面的第五种可能的实现方式中,所述处理模块,还用于:根据所述第一测试用例集合对应的各功能覆盖组中未被测试的功能的个数,确定所述第一测试用例集合对应的未被测试的功能总数;根据所述各功能覆盖组中未被测试的功能的个数占所述未被测试的功能总数的比重,确定所述各功能覆盖组的启发式分数。
根据上述第二方面或各种可能的实现方式,在所述第二方面的第六种可能的实现方式中,所述处理模块,还用于:获取所述第一测试用例训练样本;利用所述第一测试用例训练样本对第一预设模型进行训练,得到所述第一模型。
基于上述技术方案,利用输入参数的取值满足预设约束的第一测试用例训练样本对第一预设模型进行训练,在训练过程中,第一预设模型可以不断学习不同输入参数之间的取值约束,从规模庞大的输入参数的取值空间中筛选出有效的取值空间,这样,训练得到的第一模型能够生成输入参数的取值满足预设约束的第一测试用例,且生成第一测试用例的过程中所需探索的输入参数的取值空间减少,避免了生成冗余或无效的测试用例,无需进行校正,保证了第一测试用例集合中输入参数取值的多样性,从而通过生成较小规模的测试用例集合,即可达到较高的功能覆盖率,有效减少了测试所需时间,有效提高了测试效率,节约了测试成本。
根据上述第二方面的第六种可能的实现方式,在所述第二方面的第七种可能的实现方式中,所述第一预设模型包括生成对抗网络,所述生成对抗网络包含生成器及判别器;所述处理模块,还用于:利用所述第一测试用例训练样本对所述生成对抗网络进行多轮训练;并确定每轮训练收敛时的生成器对应的测试用例不变率,所述测试用例不变率表示生成器生成的测试用例的M个输入参数中取值符合所述预设约束的输入参数的比率;将与最大测试用例不变率对应的生成器,作为所述第一模型。
基于上述技术方案,利用第一测试用例训练样本对生成对抗网络中的判别器和生成器进行多轮对抗训练,通过不断训练,生成器可以挖掘到不同输入参数之间潜在的取值约束,且从规模庞大的输入参数的取值空间中筛选出有效的取值空间,从而减少了生成测试用例的过程中所需探索的输入参数的取值空间。将与最大测试用例不变率对应的生成器作为第一模型,从而可以利用第一模型自动生成输入参数的取值满足预设约束的测试用例,在达到较高的功能覆盖率的同时,有效减少了所需生成的测试用例数量,提高了测试效率,节约了测试成本。
根据上述第二方面的第七种可能的实现方式,在所述第二方面的第八种可能的实现方式中,所述处理模块,还用于:利用收敛时的判别器,过滤掉所述第二测试用例集合中所述M个输入参数不满足所述预设约束的第二测试用例。
根据上述第二方面的各种可能的实现方式,在所述第二方面的第九种可能的实现方式中,所述处理模块,还用于:获取所述第二测试用例训练样本及所述第二测试用例训练样本对应的第一功能覆盖信息;利用所述第二测试用例训练样本及所述第一功能覆盖信息对第二预设模型进行训练,得到所述功能覆盖组与输入参数之间的关联信息。
基于上述技术方案,利用第二测试用例训练样本及第二测试用例训练样本对应的第一功能覆盖信息对第二预设模型进行训练,从而挖掘出各功能覆盖组与输入参数之间的关联关系,即针对任一功能覆盖组,挖掘出影响该功能覆盖组中功能能否被测试到的重要输入参数,从而得到功能覆盖组与输入参数之间的关联信息;该关联信息可以为进一步生成测试用例地过程提供引导,以便针对性地生成能够覆盖目标功能覆盖组中功能覆盖点的测试用例,从而有效提升功能覆盖率,同时,进一步缩小了测试用例生成过程中所需探索的输入参数的取值空间,有效提高了测试效率。
根据上述第二方面的第九种可能的实现方式,在所述第二方面的第十种可能的实现方式中,所述第二预设模型包括随机森林模型;所述处理模块,还用于:针对所述目标功能覆盖组,将所述第二测试用例训练样本输入到所述随机森林模型,并以所述第一功能覆盖信息作为标签,训练所述随机森林模型,得到所述功能覆盖组与输入参数之间的关联信息。
基于上述技术方案,针对任一功能覆盖组,可以以第二测试用例训练样本对应的第一功能覆盖信息作为标签,利用第二测试用例训练样本对与该功能覆盖组对应的随机森林模型进行训练,从而挖掘出该功能覆盖组与测试用例的输入参数之间的关联关系,即挖掘出影响该功能覆盖组中功能能否被测试到的重要输入参数,从而得到功能覆盖组与输入参数之间的关联信息;该关联信息可以为进一步生成测试用例地过程提供引导,以便针对性地生成能够覆盖目标功能覆盖组中功能覆盖点的测试用例,从而有效提升功能覆盖率,同时,进一步缩小了测试用例生成过程中所需探索的输入参数的取值空间,有效提高了测试效率。
根据上述第二方面的各种可能的实现方式,在所述第二方面的第十一种可能的实现方式中,所述处理模块,还用于:针对每一第一取值组合,确定与该第一取值组合的相似度满足预设条件的第二取值组合,作为该第一取值组合的目标第二取值组合;利用该第一取值组合替代所述目标第二取值组合。
基于上述技术方案,第二取值组合中输入参数的取值满足预设约束,将与第一取值组合的相似度满足预设约束的第二取值组合作为目标第二取值组合,从而最大程度保证生成的包含该第一取值组合的第二测试用例中输入参数的取值满足预设约束。
第三方面,本申请的实施例提供了一种芯片的测试用例生成装置,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令时实现上述第一方面或者第一方面的各种可能的实现方式中的芯片的测试用例生成方法。
第四面,本申请的实施例提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述第一方面或者第一方面的各种可能的实现方式中的芯片的测试用例生成方法。
第五方面,本申请的实施例提供了一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行上述第一方面或者第一方面的各种可能的实现方式中的芯片的测试用例生成方法。
上述第二方面到第五方面及各种可能的实现方式的技术效果,可参见上述第一方面及第一方面的各种可能的实现方式的技术效果。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本申请的示例性实施例、特征和方面,并且用于解释本申请的原理。
图1示出不同环节进行芯片测试的示意图。
图2示出对芯片设计进行测试的场景示意图。
图3示出测试用例、功能覆盖点及功能覆盖组的关系示意图。
图4示出了基于约束驱动的随机测试方法的流程示意图。
图5示出根据本申请一实施例的一种芯片的测试用例生成方法的流程图。
图6示出根据本申请一实施例的另一种芯片的测试用例生成方法的流程图。
图7示出根据本申请一实施例的另一种芯片的测试用例生成方法的流程图。
图8示出根据本申请一实施例的另一种芯片的测试用例生成方法的流程图。
图9示出根据本申请一实施例的另一种芯片的测试用例生成方法的流程图。
图10示出根据本申请一实施例的一种确定目标功能覆盖组的方法流程图。
图11示出根据本申请一实施例的一种确定第一取值组合的方法流程图。
图12示出根据本申请一实施例的另一种芯片的测试用例生成方法的流程图。
图13示出根据本申请一实施例的测试结果对比图。
图14示出根据本申请一实施例的一种芯片的测试用例生成装置的结构图。
图15示出根据本申请一实施例的一种芯片的测试用例生成装置的结构示意图。
具体实施方式
以下将参考附图详细说明本申请的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本申请,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本申请同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本申请的主旨。
为了便于理解,下面首先对本申请实施例中涉及的一些概念进行介绍。
1、生成对抗网络(generative adversarial networks,GAN)
生成对抗网络的基本结构包括生成器(generator)和判别器(discriminator)。受博弈论中的零和博弈启发,在训练过程中,将生成问题视作判别器和生成器这两个网络的对抗和博弈:生成器用于利用随机噪声(例如,均匀分布或者正态分布的噪声)产生合成数据,判别器用于分辨生成器的输出数据和真实数据。生成器试图产生更接近真实数据的数据,相应地,判别器试图更完美地分辨真实数据与生成器输出的数据。这样,生成对抗网络通过生成器和判别器相互博弈学习,生成器与判别器在对抗中进步,在进步后继续对抗,生成对抗网络的性能不断提升,生成器生成的数据也就越来越完美,逼近真实数据,进而可以利用生成器得到期望的数据。
2、随机森林(Random Forests,RF)
随机森林是指以一定数目的决策树(Decision Tree)作为基学习器构建组成的分类模型;通过样本对各决策树进行训练得到随机森林,在利用随机森林进行分类时,每一决策树均进行分类,并可以通过投票法根据多数原则决定最终的分类结果。
其中,决策树是一个树形结构,通过从根节点向下传递完成决策,决策树生成算法可以包括迭代二叉树三代(Iterative Dichotomiser 3,ID3)、C4.5(ID3算法的一个扩展)和分类回归树算法(Classification And Regression Tree,CART)等,其中,决策树的生成过程中,每一节点基于选定的最优的特征(feature)进行分裂,以使末端节点上包含的样本尽量是同一种类别。在随机森林中决策树的生成过程具有两大特点:随机选取样本集以及随机选取每一节点的特征;其中,随机选取样本集是指从原始样本集中采取有放回的抽样方式构造子样本集,子样本集的样本数量与原始样本集相同,通过每一子样本集训练出一棵决策树;与随机选取样本集类似,决策树的每一个节点分裂过程并未用到所有的特征,而是从所有的特征中随机选取一定数量的特征,之后根据评估指标从随机选取的特征中选取出最优的特征作为该节点分裂时采用的特征,其中,评估指标可以包括信息熵(Information Entropy)、信息增益(Gain Ratio)、基尼指数(Gini Index)等等。
3、硬件描述语言(Hardware Description Language,HDL)
硬件描述语言是一种用形式化方法描述数字电路和系统的语言。基于这种语言,芯片开发人员可以系统地描述芯片的设计思想。常见的硬件描述语言可以包括超高速集成电路硬件描述语言(Very-High-Speed Integrated Circuit Hardware DescriptionLanguage,VHDL)和Verilog硬件描述语言。
4、寄存器转换级别(Register-Transfer-Level,RTL)
寄存器转换级别是一种芯片设计的级别,在该级别下的芯片设计代码描述了芯片中的各级寄存器以及不同寄存器之间信号的转换。
5、芯片测试
芯片测试贯穿于芯片设计环节及生产环节,图1示出不同环节进行芯片测试的示意图,如图1所示,在芯片设计环节,芯片测试可以包括:芯片设计阶段的芯片设计测试;在生产环节,芯片测试可以包括:在晶圆加工阶段的过程工艺测试、封装阶段的晶圆测试、在量产成品阶段的设计测试等等。
其中,芯片设计阶段的芯片设计测试具有时间占比长、人员投入高、开销大等特点。从时间成本的角度看,在大多数芯片项目中,测试工作占据了超过60%的开发周期。开发团队花费在芯片设计测试上的时间已经超过芯片设计开发上的时间。从人力成本的角度看,芯片开发团队中的测试人员比重逐年增多,从数量上已经超越芯片设计开发人员。芯片设计的测试成本直接影响了芯片的整个开发周期。
相对于其他阶段的测试,芯片设计测试具有独特挑战,首先,与传统软件测试方法常用的结构覆盖不同,功能覆盖在芯片设计测试中起着更重要的作用。其次,由于待测芯片设计的功能众多,其输入参数的规模庞大,且不同输入参数之间包含复杂的取值约束,因此,传统软件测试方法难以对其庞大且复杂的输入参数取值空间进行高效探索。
图2示出对芯片设计进行测试的场景示意图,如图2所示,生成测试用例,将测试用例输入到芯片仿真器中,并得到仿真结果,其中,仿真结果可以包括功能覆盖率等,若仿真结果不符合预期,则可以生成新的测试用例,并输入到上述芯片仿真器中,重复执行上述操作,直到仿真结果符合预期。
5、测试用例
测试用例,也称测试参数用例或测试输入,是指为了对待测芯片设计进行测试,而向待测芯片设计提供的一组数据。每一测试用例可以包括多个预设输入参数及各输入参数的取值,基于输入参数的不同取值组合,对应生成多个测试用例。其中,预设输入参数为在芯片设计时设计好的参数,每一输入参数的取值在预先设计好的取值范围内。例如,如表1所示,x1、x2…xK为K个测试用例,这K个测试用例组合了一个测试用例集合;p1、p2…pL为测试用例中包含的L个输入参数,a11、a12…aKL为测试用例中输入参数的取值,例如,测试用例x3所在行中a31、a32…a3L即为测试用例x3各输入参数的取值,其中,a32表示测试用例x3中输入参数p2的取值。对于任意两个测试用例,至少一个输入参数的取值不同。
表1-测试用例及对应的输入参数
Figure BDA0003450867210000101
6、功能覆盖率(Functional Coverage,FCOV)
功能覆盖率是指待测芯片设计的功能覆盖点(Functional cover bins)被测试用例所覆盖的比率,实现高功能覆盖率是芯片设计测试的重要目标之一。
其中,每一功能覆盖点代表待测芯片设计中的某个需要测试的功能;功能覆盖点被测试用例所覆盖表明该功能覆盖点所对应的需要测试的功能被测试到。在芯片设计测试中,可以基于需要测试的待测芯片设计的功能不同,划分出多个功能覆盖点。相近功能所对应的功能覆盖点可以组成一个功能覆盖组(Functional cover group),即一个功能覆盖组中的功能覆盖点代表了待测芯片设计中多个需要测试的相近的功能;对于任意两个功能覆盖组,所包含的功能覆盖点均不同。
在进行测试时,将测试用例输入到芯片仿真器后,在仿真环境中运行后可以得到对应的功能覆盖信息,如,功能覆盖组被覆盖的情况、功能覆盖点被覆盖的情况、功能覆盖率等,图3示出测试用例、功能覆盖点及功能覆盖组的关系示意图,如图3所示,功能覆盖组包括两个功能覆盖点,测试用例在待测芯片设计的仿真环境中运行后,功能覆盖组中的一个功能覆盖点被覆盖,即该功能覆盖点所对应的功能被测试到;而另一个功能覆盖点未被覆盖,即该功能覆盖点所对应的功能未被测试到;进而可以计算被测试用例覆盖的待测芯片设计的功能覆盖点数量与待测芯片设计的所有功能覆盖点数量的比值,从而得到功能覆盖率。
7、基于约束驱动的随机测试方法(Constraint Driven Random,CDR)
基于约束驱动的随机测试方法为现阶段芯片设计测试主要采用的测试方式。该方法随机在各输入参数的取值范围内选取对应输入参数的取值,即随机生成待测芯片设计的测试用例,但随机产生的测试用例中各输入参数取值可能违反了不同输入参数之间的取值约束,无法直接应用于测试,进而使用可以求解上述不同输入参数之间的取值约束的约束求解器对随机生成的测试用例进行校正,从而得到校正后的测试用例,并利用校正后的测试用例对待测芯片设计进行测试。其中,上述不同输入参数之间的取值约束可以在芯片设计过程中预先设定;例如,芯片设计时定义输入参数a及输入参数b,其中,输入参数a的数值表示接口A的状态,a=1表示接口A打开,a=0表示接口A关闭;输入参数b的数值表示接口B的状态,b=1表示接口B打开,b=0表示接口B关闭;则设定的输入参数a与输入参数b之间的取值约束可以为:输入参数a与数去参数b的取值不能够同时为1,即设计接口A与接口B不能同时打开。再例如,芯片设计时定义输入参数c、输入参数d与输入参数e,则设定的输入参数a、输入参数b及输入参数c三者之间的取值约束可以为:输入参数c、输入参数d及输入参数e的取值之和不能大于某一数值。
图4示出了基于约束驱动的随机测试方法的流程示意图,如图4所示,主要流程包括:1)采用随机的方式为待测芯片设计产生大量的测试用例,从而得到测试用例集合;2)约束求解器可以自动基于芯片设计环节定义的不同输入参数之间的取值约束,对不符合该预设的约束的测试用例的输入参数取值进行修改,从而生成相比随机生成的测试用例更加满足预设的约束的测试用例集合;3)将满足不同输入参数之间的取值约束的测试用例集合输入到芯片仿真器中进行仿真,得到所覆盖的功能覆盖点数量,然后和预先定义的需要测试的功能覆盖点数量进行对比,从而得到功能覆盖率。
举例来说,将上述表1所示的K个测试用例输入到约束求解器中,约束求解器对各测试用例中不符合输入参数之间的取值约束的输入参数取值进行自动修改,从而得到校正后的测试用例;表2为经过约束求解器校正后的测试用例,及各测试用例的输入参数取值。如表2所示,x'1、x'2…x'K为经过约束求解器校正后的K个测试用例,p1、p2…pL为测试用例中包含的L个输入参数,a11、a12、a'13…aKL为测试用例中输入参数的取值,其中,a'13、a'32、a'2L等表示约束求解器所修改的输入参数的取值,例如,a'13表示约束求解器对上述表1中测试用例x1中输入参数p3的取值a13进行修改后的取值。
表2-经过约束求解器校正后的测试用例及对应的输入参数取值
Figure BDA0003450867210000121
将表2所示的经过约束求解器校正后的测试用例输入到芯片仿真器中运行,从而可以得到各测试用例对应的功能覆盖信息,表3示出了测试用例及对应的功能覆盖信息,如表3所示,x'1、x'2…x'K为经过约束求解器校正后的K个测试用例,g1、g2…gR为R个功能覆盖组,b1、b2…bT为T个功能覆盖点,c11、c12…cKT为功能覆盖参数,表示对应的功能覆盖点是否被对应的测试用例所覆盖,即功能覆盖点所代表的需要测试的功能是否被测试到;例如,c12、c22、c23分别表示功能覆盖组g1中功能覆盖点b1、b2、b3是否被测试用例x'2所覆盖。示例性地,可以利用c11、c12…或cKT的不同取值区分对应的功能覆盖点已被对应的测试用例覆盖与对应功能覆盖点未被对应的测试用例覆盖;例如,c11、c12…或cKT可以取0或1,其中,取1时表示功能覆盖参数所在列对应的功能覆盖点被所在行对应的测试用例所覆盖,取0时表示功能覆盖参数所在列对应的功能覆盖点未被所在行对应的测试用例所覆盖;如c22=1,则表示功能覆盖点b2被测试用例x'2覆盖,c22=0,则表示功能覆盖点b2未被测试用例x'2覆盖。
表3-测试用例及对应的功能覆盖信息
Figure BDA0003450867210000122
上述基于约束驱动的随机测试方法虽然能够生成满足不同输入参数之间的取值约束的测试用例,但是由于待测芯片设计通常涉及数量众多的输入参数,输入参数的取值空间规模庞大,且存在大量且复杂的不同输入参数之间的取值约束,在基于约束驱动的随机测试方法中随机生成测试用例方式并未考虑不同输入参数之间的取值约束,从而会随机产生大量冗余的甚至无效的测试用例,进而约束求解器对随机生成的测试用例中不符合要求的输入参数的取值进行了修改,其在一定程度上限制了所探索到的输入参数的取值空间,所生成的测试用例集合中输入参数取值的多样性变差,因此,往往需要生成较大规模的测试用例集合,进行较长时间的测试,才能达到较高的功能覆盖率,测试效率较低,测试成本较高。
为了解决上述技术问题,本申请提供了一种芯片的测试用例生成方法。示例性地,该方法可以由处理器、服务器、服务器集群等具有数据处理能力的实体执行。在一些示例中,上述实体中还可以模拟待测芯片设计的仿真环境,从而在仿真环境中运行测试用例,并可以得到对应的仿真结果。
图5示出根据本申请一实施例的一种芯片的测试用例生成方法的流程图。如图5所示,该方法可以包括以下步骤:
步骤501、获取输入参数集合。
其中,输入参数集合包括芯片的M个输入参数,M为不小于1的整数。
示例性地,芯片可以为待测芯片设计;例如,可以为终端设备的系统级芯片(System on Chip,SOC)、服务器芯片、人工智能芯片、通信基站芯片、通信终端芯片或者其他专用芯片等等各种类型的待测芯片设计,对此不作限定。
示例性地,输入参数集合可以包括在芯片设计阶段预先定义好的待测芯片设计的输入参数,例如,输入参数集合可以包括上述表1中的输入参数p1、p2…pL。
示例性地,还可以获取输入参数集合中各输入参数对应的取值范围,可以理解的是,各输入参数对应的取值范围可以在芯片设计时预先设定。
步骤502、将输入参数集合输入第一模型,生成第一测试用例集合。
其中,第一测试用例包括:上述M个输入参数的取值,第一模型为利用第一测试用例训练样本训练所得到,第一测试用例训练样本中M个输入参数的取值满足预设约束。
示例性地,预设约束可以包括M个输入参数中任意两个或多个输入参数之间的取值约束,可以理解的是,该M个输入参数中任意两个或多个输入参数之间的取值约束可以在芯片设计时预先设定。
其中,第一测试用例训练样本可以为预先生成的测试用例;第一测试用例训练样本中包括上述输入参数集合中M个输入参数,且该M个输入参数的取值满足预设约束;示例性地,第一测试用例训练样本可以包括采用基于约束驱动的随机测试方法所生成的测试用例;例如,可以包括上述表2中测试用例x'1、x'2…或x'K。
该步骤中,第一模型为利用第一测试用例训练样本训练所得到的模型,这样,第一模型可以学习到不同输入参数之间的取值约束,将输入参数集合输入到第一模型,第一模型可以自动生成输入参数的取值满足预设约束的一个或多个第一测试用例,即第一测试用例集合。示例性地,第一模型可以包括生成对抗网络的生成器,例如,可以包括GAN、瓦瑟斯坦生成对抗网络(Wasserstein GAN,WGAN)、瓦瑟斯坦生成对抗网络-梯度约束(Wasserstein GAN-gradient penalty,WGAN-GP)、互信息生成对抗网络(InfoGAN)的生成器,还可以包括变分自编码器(Variational Autoencoder,VAE)、条件式变换自编码器(Conditional Variational Autoencoders,CVAE)以及其他类似的模型,对此不作限定。
示例性地,可以将该M个输入参数及各输入参数对应的取值范围输入到第一模型,从而利用第一模型自动生成一个或多个测试用例,每一测试用例均包括该M个输入参数的取值,各输入参数的取值均在对应的预设取值范围内,且M个输入参数的取值满足预设约束。
进一步的,可以将生成的第一测试用例集合输入到芯片仿真器中运行,从而得到对应的功率覆盖率。示例性地,可以获取预设的功能覆盖点数量,并获取第一测试用例集合在仿真环境中运行后所覆盖的功能覆盖点的数量,进而计算所覆盖的功能覆盖点的数量与预设的功能覆盖点数量的比值,得到第一测试用例集合对应的功率覆盖率。由于待测芯片设计通常涉及数量众多的输入参数,且每一输入参数取值范围通常较大,从而造成输入参数的取值空间规模庞大,此外,还存在大量且复杂的不同输入参数之间的取值约束;该步骤中第一模型学习到了不同输入参数之间的取值约束,即从规模庞大的输入参数的取值空间中筛选出有效的取值空间,从而减少了第一模型生成第一测试用例的过程中所需探索的输入参数的取值空间;同时,由于第一模型生成的第一测试用例的输入参数的取值满足预设约束,无需进行校正,保证了测试用例集合中输入参数取值的多样性,从而可以覆盖更多的功能覆盖点,这样,通过生成较小规模的测试用例集合,花费更少的测试时间,即可达到较高的功能覆盖率,有效提高了测试效率。相对于基于约束驱动的随机测试方法中随机生成测试用例的方式,在达到相同的功能覆盖率的情况下,有效减少了所需测试用例的数量。
示例性地,可以重复执行将输入参数集合输入第一模型,生成第一测试用例集合的操作,直到满足预设的停止条件;例如,停止条件可以包括累积生成的测试用例的数量超过第一预设值或者功能覆盖率超过第二预设值等等。其中,第一预设值、第二预设值可以根据测试需求进行设定,对此不作限定。作为一个示例,每执行一次将输入参数集合输入第一模型的操作后,第一模型可以自动生成预设数量的第一测试用例,计算第一模型累积生成的第一测试用例数量,并与第一预设值进行比较,若累积生成的第一测试用例数量超多第一预设值,则停止上述将输入参数集合输入第一模型的操作。作为另一个示例,每执行一次将输入参数集合输入第一模型的操作后,第一模型可以自动生成预设数量的第一测试用例,第一测试用例集合中所包含的第一测试用例的数量不断增加,相应的功能覆盖率随之增加,将功能覆盖率与第二预设值进行比较,若功能覆盖率超过该第二预设值,则停止上述将输入参数集合输入第一模型的操作,从而完成测试。
本申请实施例中,第一测试用例训练样本中输入参数的取值满足预设约束,第一模型为利用第一测试用例训练样本训练所得到的模型,这样,经过训练所得到的第一模型可以学习到该预设约束,即可以从输入参数全部的取值空间中筛选出有效的取值空间,从而有效减少了生成第一测试用例的过程中所需探索的输入参数的取值空间;同时,第一模型可以自动生成输入参数的取值满足预设约束的测试用例,无需进行校正,保证了第一测试用例集合中输入参数取值的多样性,从而通过生成较小规模的第一测试用例集合,即可达到较高的功能覆盖率,有效减少了测试所需时间,有效提高了测试效率,节约了测试成本。
下面对利用第一测试用例训练样本训练得到第一模型的方式进行示例性地说明。
图6示出根据本申请一实施例的另一种芯片的测试用例生成方法的流程图。如图6所示,该方法可以包括以下步骤:
步骤601、获取第一测试用例训练样本。
其中,第一测试用例训练样本具体说明可参照前文相关表述,此处不再赘述。
示例性地,可以根据输入参数集合中,采用随机方式生成预设数量的测试用例,例如,可以采用随机方式生成小批量的测试用例,进而将上述随机生成的测试用例输入到约束求解器中,约束求解器可以对不满足预设约束的随机生成的测试用例中输入参数的取值进行修改,从而得到预设数量的输入参数取值满足预设约束的测试用例,即测试用例训练样本集合,第一测试用例训练样本即为该测试用例训练样本集合中的任一个。其中,上述预设数量可以根据需求进行设置,对此不作限定。
步骤602、利用第一测试用例训练样本对第一预设模型进行训练,得到第一模型。
示例性地,第一预设模型可以包括生成对抗网络,生成对抗网络包含生成器及判别器;例如,第一预设模型可以为GAN、WGAN、WGAN-GP,InfoGAN,Variational Autoencoder,Conditional Variational Autoencoders等等,对此不作限定。
该步骤中,可以采用常规训练方式,利用上述获取的第一测试用例训练样本对第一预设模型进行训练,从而得到训练后的模型,即第一模型。
作为一个示例,上述步骤601及602可以在上述步骤501之前执行。作为另一个示例,在上述步骤502中,通过重复执行将输入参数集合输入第一模型的操作,生成第一测试用例集合的情况下,可以在执行完一次或多次操作后,利用新生成的第一测试用例对第一模型进行训练,从而进一步提高第一模型的性能。
这样,利用输入参数的取值满足预设约束的第一测试用例训练样本对第一预设模型进行训练,在训练过程中,第一预设模型可以不断学习不同输入参数之间的取值约束,在一些示例中,第一预设模型可以不断学习约束求解器对随机生成的测试用例中输入参数取值的调整,从规模庞大的输入参数的取值空间中筛选出有效的取值空间,这样,训练得到的第一模型能够生成输入参数的取值满足预设约束的第一测试用例,且生成第一测试用例的过程中所需探索的输入参数的取值空间减少,从而避免了生成冗余或无效的测试用例,无需进行校正,保证了第一测试用例集合中输入参数取值的多样性,从而可以覆盖更多的功能覆盖点,这样,通过生成较小规模的第一测试用例集合,即可达到较高的功能覆盖率,有效减少了测试所需时间,有效提高了测试效率,节约了测试成本。
下面以第一预设模型为生成对抗网络为例,对上述步骤602中,利用第一测试用例训练样本对第一预设模型进行训练,得到第一模型的过程进行详细介绍。
图7示出根据本申请一实施例的另一种芯片的测试用例生成方法的流程图。如图7所示,该方法可以包括以下步骤:
步骤701、利用第一测试用例训练样本对生成对抗网络进行多轮训练;并确定每轮训练收敛时的生成器对应的测试用例不变率。
其中,测试用例不变率表示生成器生成的测试用例的M个输入参数中取值符合预设约束的输入参数的比率。示例性地,可以通过约束求解器,确定测试用例不变率;将生成器生成的测试用例输入到约束求解器中,约束求解器会对不满足预设约束的输入参数的取值进行修改,这样,测试用例的M个输入参数中取值未被修改的输入参数即为满足预设约束的输入参数,从而可以求取测试用例不变率。
在一种可能的实现方式中,在每一轮训练中,可以将输入参数集合及各输入参数的取值范围输入到生成器中,生成目标测试用例;将目标测试用例及第一测试用例训练样本,输入到判别器中,得到目标测试用例与第一训练测试用例的相似度;根据相似度,得到损失函数值;进行根据损失函数值进行反向传播,训练生成器及判别器,直至达到收敛。进而,可以将收敛时生成器所生成的目标测试用例,输入到约束求解器中,约束求解器可以对该目标测试用例中不满足预设约束的输入参数取值进行修改;从而可以得到该目标测试用例在经过约束求解器前后取值没有被修改的输入参数数量,计算该数量与所有输入参数总数的比值,即为本轮训练收敛时的生成器对应的测试用例不变率。可以理解的是,生成器对应的测试用例不变率越高表明生成器所生成的测试用例中取值满足预设约束的输入参数越多,即生成器的性能越好。
步骤702、将与最大测试用例不变率对应的生成器,作为第一模型。
示例性地,在上述每轮训练得到的生成器对应的测试用例不变率中,选取出最大测试用例不变率,可以理解的是,相对于其他轮训练得到的生成器,与最大测试用例不变率对应的生成器,可以更好地生成输入参数的取值满足预设约束的测试用例,该生成器更好地学习到了输入参数之间的取值约束,因此,将与最大测试用例不变率对应生成器作为第一模型,以用于生成输入参数的取值满足预设约束的测试用例。
本申请实施例,利用第一测试用例训练样本对生成对抗网络中的判别器和生成器进行多轮对抗训练,在训练过程中,生成器的更新目标是生成的目标测试用例能够骗过判别器,以被识别为与相应的第一测试用例样本相同,判别器的更新目标是能够将生成器生成的目标测试用例识别出来;通过不断训练,生成器和判别器的能力越来越强,生成器可以挖掘到不同输入参数之间潜在的取值约束,从规模庞大的输入参数的取值空间中筛选出有效的取值空间,从而减少了生成测试用例的过程中所需探索的输入参数的取值空间。这样,利用第一测试用例训练样本对生成对抗网络进行多轮训练,实现了挖掘不同输入参数之间潜在的取值约束,并将与最大测试用例不变率对应的生成器作为第一模型,从而可以利用第一模型自动生成输入参数的取值满足预设约束的测试用例,在达到较高的功能覆盖率的同时,有效减少了所需生成的测试用例数量,提高了测试效率,节约了测试成本。
进一步地,由于待测芯片设计的复杂性,基于约束驱动的随机测试方法中约束求解器对于输入参数的取值进行修改的方式是未知的,因此,约束求解器难以针对未覆盖的功能覆盖点生成对应的测试用例;在测试后期通常依然存在许多难以被覆盖的功能覆盖点,对于这些难以被覆盖的功能覆盖点,往往需要领域专家的介入,通过人工设计相关的测试用例进行测试,这会消耗大量的时间,从而大幅增加了测试成本,降低了测试效率,影响了芯片开发周期。
为此,本申请实施例在上述获取输入参数的取值满足预设约束的第一测试用例基础上,通过目标功能覆盖组与输入参数之间的关联信息,进一步缩小探索输入参数的取值空间,从而生成能够有效测试目标功能覆盖组中未测试功能的测试用例,提升功能覆盖率。
图8示出根据本申请一实施例的另一种芯片的测试用例生成方法的流程图。如图8所示,该方法可以包括以下步骤:
步骤801、获取输入参数集合。
该步骤的具体说明可参照上述步骤501中相关表述,此处不再赘述。
步骤802、将输入参数集合输入第一模型,生成第一测试用例集合。
该步骤的具体说明可参照上述步骤502中相关表述,此处不再赘述。
步骤803、确定目标功能覆盖组。
其中,目标功能覆盖组包括待测试的目标功能。示例性地,目标功能覆盖组可以为预设的功能覆盖组中的任一个;例如,目标功能覆盖组可以为上述表3中g1、g2…或gR;目标功能即为目标功能覆盖组中所包含的功能覆盖点所代表的需要测试的功能。
步骤804、根据功能覆盖组与输入参数之间的关联信息,确定输入参数集合中与目标功能覆盖组相关联的N个目标输入参数,N为不大于M的正整数。其中,功能覆盖组与输入参数之间的关联信息为利用第二测试用例训练样本及第二测试用例训练样本对应的第一功能覆盖信息训练所得到。
第二测试用例训练样本中M个输入参数的取值满足预设约束;第二测试用例训练样本可以为预先生成的测试用例;示例性地,第二测试用例训练样本可以与上述第一测试用例训练样本相同。
第一功能覆盖信息表示各功能覆盖组中已被测试的功能和/或未被测试的功能。第二测试用例训练样本对应的第一功能覆盖信息可以包括目标功能覆盖组中已被第二测试用例训练样本测试到的功能和/或目标功能覆盖组中未被第二测试用例训练样本测试到的功能。其中,功能覆盖组中已被测试的功能即为该功能覆盖组中被第二测试用例训练样本所覆盖的功能覆盖点所代表的需要测试的功能,功能覆盖组中未被测试的功能即为该功能覆盖组中未被第二测试用例训练样本所覆盖的功能覆盖点所代表的需要测试的功能。示例性地,第一功能覆盖信息可以包括上述表3中功能覆盖参数c11、c12…cKT的取值;例如,若表3中测试用例x'2为第二测试用例训练样本,则对应的第一功能覆盖信息可以包括功能覆盖组g1对应的功能覆盖参数c12、c22、c23的取值,功能覆盖组g2对应的功能覆盖参数c24、c25、c26、c27的取值…等R个功能覆盖组对应的功能覆盖参数的取值。
功能覆盖组与输入参数之间的关联信息可以指示相关联的功能覆盖组与输入参数,对于任一功能覆盖组,若一个输入参数对该功能覆盖组所包含的功能覆盖点被覆盖情况有影响或影响较大,则认为该功能覆盖组与该输入参数存在关联,否则,该功能覆盖组与该输入参数不存在关联。可以理解的是,任一功能覆盖组可以与一个或多个输入参数相关联;任一输入参数也可以与一个或多个功能覆盖组相关联。
该步骤,功能覆盖组与输入参数之间的关联信息为利用输入参数的取值满足预设约束的第二测试用例训练样本、及第二测试用例训练样本对应的第一功能覆盖信息训练,所挖掘出的各功能覆盖组与输入参数之间的关联信息;进而根据该关联信息确定输入参数集合中与目标功能覆盖组相关联目标输入参数,该目标输入参数即为影响目标功能覆盖组所包含的功能覆盖点是否被覆盖的重要参数,即影响目标功能覆盖组中待测试的目标功能能否被测试到的重要参数。
步骤805、确定N个目标输入参数的至少一个第一取值组合。
其中,第一取值组合中包含N个目标输入参数的取值。示例性地,可以根据各目标输入参数对应的取值范围,确定多个第一取值组合,在任意两个第一取值组合中至少一个目标输入参数的取值不同。
由于目标输入参数与目标功能覆盖组相关联,即目标输入参数对目标功能覆盖组中待测试的目标功能能否被测试到有影响,因此,可以确定一定数量的第一取值组合,以使目标输入参数的取值尽量多样化,从而在提升功能覆盖率的同时,有效提升测试效率;示例性地,可以遍布各目标输入参数的取值范围内的所有取值,从而生成多个第一取值组合。
步骤806、利用至少一个第一取值组合中的每一个,替代第一测试用例集合中的N个目标输入参数的一个第二取值组合,得到第二测试用例集合;其中,第二测试用例包括M个输入参数的取值。
可以理解的是,第一取值组合与第二取值组合包括目标输入参数的取值可以相同,也可以不同;由于第一取值组合包括与目标功能覆盖组中相关联的目标输入参数的取值,利用第一取值组合替代第二取值组合,得到的第二测试用例集合可以更加有效的覆盖目标功能覆盖组中的功能覆盖点,从而对目标功能覆盖组中待测试的目标功能进行有效测试,提升功能覆盖率。
示例性地,可以通过下述方式实现利用每一个第一取值组合,替代第一测试用例集合中的第二取值组合。
方式一、针对每一第一取值组合,确定与该第一取值组合的相似度满足预设条件的第二取值组合,作为该第一取值组合的目标第二取值组合;利用该第一取值组合替代目标第二取值组合。示例性地,可以获取第一测试用例集合中每一第一测试用例的第二取值组合,从而得到多个第二取值组合,针对任一第一取值组合,分别计算该第一取值组合与各第二取值组合的相似度,并将最高相似度对应的第二取值组合作为目标第二取值组合,进而在目标第二取值组合所在的第一测试用例中,利用该第一取值组合替代目标第二取值组合,从而得到第二测试用例。由于第二取值组合中输入参数的取值满足预设约束,将与第一取值组合的相似度满足预设约束的第二取值组合作为目标第二取值组合,从而最大程度保证生成的包含该第一取值组合的第二测试用例中输入参数的取值满足预设约束。
方式二、针对每一第一取值组合,依次替代各第一测试用例的第二取值组合。示例性地,可以获取第一测试用例集合中每一第一测试用例的第二取值组合,从而得到多个第二取值组合,针对任一第一取值组合,依次替换各第二取值组合,从而得到多个第二测试用例,以此类推,直到针对所有第一取值组合,完成上述替代操作。
示例性地,可以重复执行上述步骤803-806,针对每次确定的目标功能覆盖组,生成对目标功能覆盖组中待测试的目标功能进行有效测试的第二测试用例,直到满足预设条件;预设条件可以包括:累积生成的测试用例的数量超过预设数量、功能覆盖率满足预设要求或者遍历了所有的预设功能覆盖点组等等。
本申请实施例中,第一功能覆盖信息表示各功能覆盖组中已被测试的功能和/或未被测试的功能,功能覆盖组与输入参数之间的关联信息为利用输入参数的取值满足预设约束的第二测试用例训练样本、及第二测试用例训练样本对应的第一功能覆盖信息训练所得到,功能覆盖组与输入参数之间的关联信息可以指示相关联的功能覆盖组与输入参数;进而可以根据该关联信息确定输入参数集合中与目标功能覆盖组相关联的目标输入参数,该目标输入参数即为影响目标功能覆盖组中待测试的目标功能能否被测试到的重要参数,从而进一步缩小探索输入参数的取值空间,提升了测试效率;确定目标输入参数的取值组合,并生成包含该取值组合的第二测试用例集合,进而可以针对目标功能覆盖组中待测试的目标功能进行更加高效地测试,有效提升功能覆盖率。在一些示例中,针对未覆盖的功能覆盖组(或功能覆盖点),可以生成能覆盖该功能覆盖组的测试用例,从而有效提升功能覆盖率,尤其对于测试后期通常难以被覆盖的功能覆盖组(或功能覆盖点)具有更好的覆盖效果,减少了领域专家的人工介入,降低了测试成本,进一步提升了测试效率,有效缩小了芯片开发周期。
下面对上述得到功能覆盖组与输入参数之间的关联信息的过程进行示例性地说明。
图9示出根据本申请一实施例的另一种芯片的测试用例生成方法的流程图。如图9所示,该方法可以包括:
步骤901、获取第二测试用例训练样本及第二测试用例训练样本对应的第一功能覆盖信息。
其中,第二测试用例训练样本及第一功能覆盖信息的具体说明可参照前文相关表述,此处不再赘述。
示例性地,可以根据输入参数集合中,采用随机方式生成一定数量的测试用例,将上述随机生成的测试用例输入到约束求解器中,约束求解器可以对不满足预设约束的随机生成的测试用例中输入参数的取值进行修改,从而得到输入参数取值满足预设约束的测试用例,即测试用例训练样本集合,第二测试用例训练样本即为该测试用例训练样本集合中的任一个;进而可以将第二测试用例训练样本输入到芯片仿真器中运行,从而得到第二测试用例训练样本对应的第一功能覆盖信息。
步骤902、利用第二测试用例训练样本及第一功能覆盖信息对第二预设模型进行训练,得到功能覆盖组与输入参数之间的关联信息。
示例性地,第二预设模型可以为随机森林模型,例如,可以为通过ID3、C4.5、CART等决策树生成算法构建的随机森林模型;还可以包括其他用于挖掘不同对象之间的关联关系的模型,对此不作限定。
作为一个示例,以第二预设模型为随机森林模型为例,针对目标功能覆盖组,可以将第二测试用例训练样本输入到随机森林模型,并以第一功能覆盖信息作为标签,训练该随机森林模型,得到功能覆盖组与输入参数之间的关联信息。
示例性地,将第二测试用例训练样本集合输入到随机森林模型中,以目标功能覆盖组中已被第二测试用例训练样本测试到的功能和目标功能覆盖组中未被第二测试用例训练样本测试到的功能作为标签,训练该随机森林模型,在训练过程中,通过不断挖掘第二测试用例训练样本中不同输入参数对分类的影响,即不同输入参数对目标功能覆盖组中功能能否被测试到影响,确定每一节点分裂时采用的输入参数,使得训练后的随机森林模型能够准确预测第二测试用例训练样本对于目标功能覆盖组中功能覆盖点的覆盖情况;在上述训练过程中,各节点分裂时采用的输入参数即为对目标功能覆盖组中功能能否被测试到有影响的输入参数,进而在训练完成后,可以确定各有影响的输入参数的重要性,并根据重要性高低从中选择N个最重要的输入参数作为与目标功能覆盖组相关联的输入参数,其中,N的数值可以根据实际需求进行设定。在预设的功能覆盖组为多个的情况下,针对任一预设功能覆盖组,均可以通过上述方式训练对应的一个随机森林模型,得到与该预设功能覆盖组相关联的输入参数,从而可以根据各预设功能覆盖组及与各功能覆盖组相关联的输入参数,确定功能覆盖组与输入参数之间的关联信息。
作为一个示例,在上述随机森林模型训练完成后,针对每一节点分裂时采用的输入参数,可以计算该输入参数的重要性评分,该重要性评分可以评估输入参数在对第二测试用例训练样本集合进行分类的过程中所起的作用,即该输入参数对目标功能覆盖组的覆盖情况的影响程度,可以理解的是,重要性评分越高,则对应的输入参数对实现第二测试用例训练样本集合的准确分类越重要,即对应的输入参数对目标功能覆盖组中的功能覆盖点被覆盖情况影响越大;例如,可以将输入参数在随机森林模型的所有决策树中节点分裂不纯度(如、基尼指数、信息熵、信息增益等)的平均改变量作为该输入参数的重要性评分;从而按照重要性评分高低进行排序,并将排列在前的N个输入参数作为与目标功能覆盖组相关联的输入参数。
举例来说,以训练功能覆盖组g对应的随机森林模型为例,获取测试用例训练样本集,测试用例训练样本集中有K个测试用例训练样本,每个测试用例训练样本对应的标签为功能覆盖组g对应的功能覆盖信息,每个样本中包含L个输入参数;在训练每一棵决策树时,首先,在测试用例训练样本集中有放回的随机取样K次,从而选择K个测试用例训练样本,利用选择的这K个测试用例训练样本训练该决策树,即作为该决策树根节点处的样本;然后,在该决策树的每个节点需要分裂时,随机从L个输入参数中选择l个输入参数,其中,l为选小于L的常数;根据功能覆盖组g对应的功能覆盖信息确定l个输入参数中各输入参数对应的评估指标值,进而从l个输入参数中选择一个评估指标值最优的输入参数作为该节点分裂时采用的特征,例如,以评估指标为基尼指数为例,对于任一输入参数,可以计算该输入参数每一可能取值对应的基尼指数,进而得到该输入参数对应的基尼指数,以此类推,得到所有输入参数对应的基尼指数,从而选择最小基尼指数所对应的输入参数,作为该节点分裂时采用的特征;同理,每个节点按照该方式确定对应的特征并进行分裂,直到节点无法继续分裂或节点数量超过预设值,则生成一棵决策树,且不进行剪枝。这样,通过重复执行上述随机取样及随机选取每一节点的特征的操作,从而生成预设数量的决策树,即完成随机森林的训练。在完成训练后,可以计算节点分裂所采用的各输入参数对应的重要性评分,并选出重要性评分最高的若干输入参数,作为与功能覆盖组g存在关联,从而得到功能覆盖组g与输入参数之间的关联信息。
这样,考虑到待测芯片设计可能包括大规模的输入参数,然而针对任一功能覆盖组,可能并非所有的输入参数对该功能覆盖组中各功能覆盖点被覆盖情况有影响,本申请实施例中,利用第二测试用例训练样本及第二测试用例训练样本对应的第一功能覆盖信息对第二预设模型进行训练,从而挖掘出各功能覆盖组与输入参数之间的关联关系,即针对任一功能覆盖组,挖掘出影响该功能覆盖组中功能能否被测试到的重要输入参数,从而得到功能覆盖组与输入参数之间的关联信息。作为一个示例,针对任一功能覆盖组,可以以第二测试用例训练样本对应的第一功能覆盖信息作为标签,利用第二测试用例训练样本对与该功能覆盖组对应的随机森林模型进行训练,从而挖掘出该功能覆盖组与测试用例的输入参数之间的关联关系,即挖掘出影响该功能覆盖组中功能能否被测试到的重要输入参数,从而得到功能覆盖组与输入参数之间的关联信息。上述关联信息可以为进一步生成测试用例地过程提供引导,以便针对性地生成能够覆盖目标功能覆盖组中功能覆盖点的测试用例,从而有效提升功能覆盖率,同时,进一步缩小了测试用例生成过程中所需探索的输入参数的取值空间,有效提高了测试效率。
进一步地,在上述各实施例中,还可以基于预定义的启发式策略,高效地生成测试用例,以进一步提升测试效率。
作为一个示例,可以通过预定义的启发式策略,确定目标功能覆盖组,例如,在上述步骤803中,可以通过预定义的启发式策略,确定目标功能覆盖;示例性地,可以利用轮盘算法、依次选择等启发式策略确定目标功能覆盖组。
图10示出根据本申请一实施例的一种确定目标功能覆盖组的方法流程图,如图10所示,可以包括以下步骤:
步骤1001、获取第一测试用例集合对应的第二功能覆盖信息。
其中,第二功能覆盖信息可以包括各功能覆盖组中未被测试的功能的个数,即各功能覆盖组中未被第一测试用例集合覆盖的功能覆盖点的个数。
步骤1002、根据第一测试用例集合对应的第二功能覆盖信息,确定第一测试用例集合对应的各功能覆盖组的启发式分数。
其中,启发式分数与功能覆盖组中未被测试的功能的个数正相关。可以理解的是,功能覆盖组中未被测试的功能的个数越多,则功能覆盖组的启发式分数越大。
示例性地,可以根据第一测试用例集合对应的各功能覆盖组中未被测试的功能的个数,确定第一测试用例集合对应的未被测试的功能总数;根据各功能覆盖组中未被测试的功能的个数占未被测试的功能总数的比重,确定各功能覆盖组的启发式分数。
示例性地,功能覆盖组的启发式分数可以如下述公式(1)所示:
Figure BDA0003450867210000211
在公式(1)中,Sg为功能覆盖组g的启发式分数,ug为功能覆盖组g中未被覆盖的功能覆盖点个数,G为功能覆盖组g所在的功能覆盖组集合,uk为功能覆盖组集合G中第k个功能覆盖组中未被覆盖的功能覆盖点个数。
步骤1003、根据各功能覆盖组的启发式分数,确定各功能覆盖组对应的概率。
其中,功能覆盖组对应的概率与功能覆盖组的启发式分数正相关。可以理解的是,功能覆盖组的启发式分数越高,则对应的概率越大。
示例性地,基于上述公式(1)得到的启发式分数,功能覆盖组对应的概率可以如下述公式(2)所示:
Figure BDA0003450867210000212
/>
在公式(2)中,rg为功能覆盖组g对应的概率,Sg为功能覆盖组g的启发式分数,G为功能覆盖组g所在的功能覆盖组集合,Sk为功能覆盖组集合G中第k个功能覆盖组的启发式分数。
步骤1004、基于各功能覆盖组对应的概率,确定至少一个目标功能覆盖组。
示例性地,可以采用轮盘算法,基于各功能覆盖组对应的概率,选择一个或多个功能覆盖组作为目标功能覆盖组;功能覆盖组对应的概率越高,则越可能被选为目标功能覆盖组。
本申请实施例中,通过启发式策略选取目标功能覆盖组,功能覆盖组中未被测试的功能的个数越多,对应的启发式分数越高,则对应的概率越大,则越可能被选为目标功能覆盖组;即针对未被覆盖的功能覆盖组,更有可能被选为目标功能覆盖组;尤其是在测试后期,难以被覆盖的功能覆盖组更有可能被选为目标功能覆盖组,进而可以针对性地生成测试用例,从而提升功能覆盖率,减少了领域专家的人工介入,降低了测试成本,提高了测试效率。
作为一个示例,可以基于预定义的启发式策略,确定第一取值组合,例如,在上述步骤805中,可以根据启发式策略确定N个目标输入参数的至少一个第一取值组合;示例性地,可以利用基于距离采样(T-wise)算法、固定尺寸候选集(Fixed-Size-Candidate-Set,FSCS)等自适应随机采样算法作为启发式策略,确定第一取值组合。
图11示出根据本申请一实施例的一种确定第一取值组合的方法流程图,如图11所示,可以包括以下步骤:
步骤1101、根据N个目标输入参数的预设取值范围,随机生成多个候选取值组合。
示例性地,可以生成较大数量的候选取值组合,例如,可以生成30*k个候选取值组合,k为预设的取值组合数量。
步骤1102、将多个候选取值组合中的任一取值组合作为初始迭代回合对应的取值组合。
该步骤中,在初始迭代回合,可以在上述多个候选取值组合中随机选择一个取值组合。
步骤1103、从多个候选取值组合中,确定当前迭代回合对应的取值组合。
其中,当前迭代回合对应的取值组合与已确定的各迭代回合对应的取值组合的差异最大。
示例性地,针对任一候选取值组合,可以计算其与已确定的先前各迭代回合对应的取值组合的总距离(如欧氏距离);进而,对各候选取值组合对应的总距离进行比较,最大总距离对应的候选取值组合即为当前迭代回合对应的取值组合;从而保证了各迭代回合对应的取值组合中目标输入参数的取值更加均匀、多样。
步骤1104、重复执行上述确定当前迭代回合对应的取值组合的操作,直到满足预设迭代条件;并将各迭代回合对应的取值组合作为至少一个第一取值组合。
示例性地,预设迭代条件可以为所确定的各迭代回合对应的取值组合达到预设的取值组合数量K。
考虑到对于任一目标输入参数,其对应的取值范围内可以包括较多的取值,若遍历所有的取值,生成的第一取值组合数量规模太大,例如,N个目标输入参数的预设取值范围内均包含512个取值,若遍历所有取值,则存在512N个取值组合。本申请实施例中,通过启发式策略进行采样,首先生成多个候选取值组合,进而通过多次迭代,确定每一迭代回合对应的取值组合,且每一迭代回合对应的取值组合与已确定的各迭代回合对应的取值组合的差异最大,从而保证了各迭代回合对应的取值组合中N个目标输入参数的取值更加均匀、多样;进而可以生成输入参数的取值更加均匀、多样的测试用例,在保证功能覆盖率的同时,有效减少了所需的测试用例数量,进一步提升了测试效率。
进一步地,考虑到第二测试用例相对于第一测试用例,部分输入参数的取值进行了修改,因此,得到的第二测试用例集合中,可能存在输入参数的取值不满足预设约束的第二测试用例;在一种可能的实现方式中,可以对上述得到第二测试用例集合中各测试用例进行后处理,过滤掉第二测试用例集合中M个输入参数的取值不满足预设约束的第二测试用例。示例性地,可以在上述步骤806之后执行上述后处理操作。
作为一个示例,可以利用在上述训练生成对抗网络的过程中收敛时的判别器,过滤掉第二测试用例集合中M个输入参数的取值不满足预设约束的第二测试用例。示例性地,可以在对生成对抗网络进行多轮训练中,确定得到与最大测试用例不变率对应的生成器的一轮训练,从而利用该轮训练收敛时的判别器,过滤掉第二测试用例集合中M个输入参数的取值不满足预设约束的第二测试用例。
作为另一个示例,可以利用上述约束求解器,过滤掉第二测试用例集合中M个输入参数不满足预设约束的第二测试用例。示例性地,将第二测试用例集合输入到约束求解器,对输入参数的取值不满足预设约束的第二测试用例进行校正,从而实现过滤掉第二测试用例集合中M个输入参数的取值不满足预设约束的第二测试用例。
本申请实施例中,过滤掉输入参数的取值不满足预设约束的第二测试用例,从而保证第二测试用例集合中各第二测试用例的输入参数的取值均满足预设约束。
下面以某一待测芯片设计D为例,对上述芯片的测试用例生成方法进行举例说明。该待测芯片设计D的基本信息为:输入参数集合中包括575个输入参数,功能覆盖点为7219个,对应的功能覆盖组为681个。
图12示出根据本申请一实施例的另一种芯片的测试用例生成方法的流程图,如图12所示,可以包括以下几个阶段包括:
1、信息获取阶段;该阶段可以获取待测芯片设计的相关信息,例如,输入参数集合、各输入参数的取值范围、功能覆盖点、功能覆盖组、功能覆盖组与功能覆盖点的对应关系等等。该阶段还可以获取测试用例集合及功能覆盖信息等,以作为下述训练生成对抗网络及随机森林模型的训练样本。
示例性地,使用随机方式生成小批量(例如10000个)的测试用例集合X1,将测试用例集合X1输入到约束求解器中,约束求解器会对测试用例集合X1中的输入参数的取值不满足预设约束的测试用例进行校正,并返回输入参数的取值满足预设约束的测试用例集合X2,将测试用例集合X2输入到仿真器F中运行,得到对应的功能覆盖信息,该功能覆盖信息可以为一个10000*7219的功能覆盖矩阵Mcover,在Mcover中,每一行表示测试用例集合X2中的一个测试用例,每一列表示一个功能覆盖点,每个元素的取值为0或1,其中,取1时表示该元素所在行对应的测试用例覆盖了该元素所在列对应的功能覆盖点,取0时表示该元素所在行对应的测试用例未覆盖了该元素所在列对应的功能覆盖点。
2、信息挖掘阶段,该阶段用于学习测试用例的不同输入参数之间的取值约束,以及挖掘出各功能覆盖组与输入参数之间的关联关系。
示例性地,初始化生成对抗网络的生成器与判别器,并定义优化器和损失函数。将上述获取的测试用例集合X2作为训练样本,训练生成对抗网络。在训练过程中,用随机噪声作为生成器的输入,产生假样本,并用判别器判别真假样本,根据损失值对判别器和生成器进行端对端的训练;使得生成器对测试用例集合X2与测试用例集合X1之间的约束关系C(X1,X2)的建模能力越来越好,即不断学习测试用例的不同输入参数之间的取值约束。重复上述训练过程若干轮,并计算每一轮训练收敛时,生成器生成的测试用例对应的测试用例不变率,其中,最大测试用例不变率的生成器对约束关系C(X1,X2)的建模最好,保留该最大测试用例不变率对应的生成器的模型权重,从而用于下一阶段生成输入参数的取值满足预设约束的测试用例。
示例性地,对于任一功能覆盖组g,将上述获取的测试用例集合X2作为训练样本,功能覆盖矩阵Mcover中功能覆盖组g对应的
Figure BDA0003450867210000231
作为标签,以输入参数作为节点分裂的特征,训练随机森林模型,使其能够准确预测测试用例集合X2中各测试用例对于功能覆盖组g中功能覆盖点的覆盖情况;对于训练好的随机森林模型,使用各输入参数的不纯度,确定功能覆盖组g与输入参数p的关联信息R(g,p),其中,不纯度越大,对应的输入参数对功能覆盖组g中的功能覆盖点的覆盖情况影响越大,从而选取出N个对功能覆盖组g中的功能覆盖点的覆盖情况影响最大的输入参数,并将这N个输入参数集合表示为Pg。这样,针对每一功能覆盖组,均通过上述方式训练对应的一个随机森林模型,挖掘功能覆盖组与输入参数之间的关联关系,从而得到各功能覆盖组与输入参数之间的关联信息;在后续阶段生成测试用例的过程中,以该关联信息作为启发式导向,快速生成覆盖效果更好的测试用例。
3、测试用例生成阶段,该阶段基于启发式策略,利用上述学习到的测试用例的不同输入参数之间的取值约束,以及挖掘出各功能覆盖组与输入参数之间的关联关系,指导朝着更有可能达到更高功能覆盖率的方向生成测试用例。
示例性地,首先,利用上述阶段中最大测试用例不变率对应的生成器,生成输入参数的取值满足预设约束的测试用例集合X3。其次,采用启发式策略选择需要被覆盖的功能覆盖组g,例如,对于每一功能覆盖组组,可以参照上述公式(1)计算对应的启发式分数,参照上述公式(2)计算对应的概率,进而通过轮盘算法采样功能覆盖组g;根据上述阶段得到的各功能覆盖组与输入参数之间的关联信息,确定与功能覆盖组g相关联的输入参数集合Pg,并根据每个输入参数p(p∈Pg)的取值范围随机生成30000条可能的取值组合,作为候选取值组合集合,并从候选取值组合集合中选取1000条输入参数的取值分布较多样、较均匀的取值组合,并将这1000条取值组合替代测试用例集合X3中的1000条测试用例中相应输入参数的取值组合,生成测试用例集合X4。最后,将上述生成的测试用例集合X4输入到仿真器F中,并得到相应的功能覆盖信息,并对是否满足测试停止条件进行判断,若不满足,则重复执行上述测试用例生成阶段,直到触发测试停止条件。
这样,通过上述“先建模,后生成”的方式,首先,利用生成对抗网络学习不同输入参数之间的取值约束,并利用随机森林挖掘功能覆盖组和输入参数的关联关系;进而,通过一轮或多轮迭代生成测试用例集合,其中,在每轮迭代中,利用训练好的生成器生成输入参数的取值满足预设约束的测试用例,通过启发式策略选择本轮关心的功能覆盖组,确定与该功能覆盖组相关联的一个或多个输入参数,并生成每一输入参数的多样化的取值组合;将多样化的取值组合及输入参数的取值满足预设约束的测试用例进行融合,针对性地生成测试用例集合,从而对所选择的功能覆盖组中待被测试的功能进行更加高效地测试;这样,通过生成较小规模的测试用例集合,即可达到较高的功能覆盖率,尤其对于测试后期通常难以被覆盖的功能覆盖组具有更好的覆盖效果,有效减少了领域专家的人工介入,从而可以通过自动生成测试用例实现100%功能覆盖率,降低了测试成本,减少了测试所需时间,有效缩小了芯片开发周期;同时,大幅缩减了生成测试用例时所需探索的输入参数的取值空间,大幅提升了测试效率。
图13示出根据本申请一实施例的测试结果对比图,其中,虚线为采用本申请实施例中芯片的测试用例生成方法对上述待测芯片设计D进行测试得到的测试结果,实线为采用基于约束驱动的随机测试方法对上述待测芯片设计D进行测试得到的测试结果。如图13所示,在达到7176个功能覆盖点被覆盖的情况下,采用本申请实施例中方法仅需10543个测试用例,而采用基于约束驱动的随机测试方法需要20000个测试用例,即本申请实施例中方法能够节约94.57%的测试用例,可见,在覆盖相同数量的功能覆盖点时,采用本申请实施例中方法能够有效减少所需的测试用例数量。此外,在生成20000个测试用例的情况下,采用本申请实施例中方法能够覆盖7217个功能覆盖点,而采用基于约束驱动的随机测试方法仅能覆盖7176个功能覆盖点,可见,在生成相同数量的测试用例时,采用本申请实施例中方法能够有效提高功能覆盖率。
基于上述方法实施例的同一发明构思,本申请的实施例还提供了一种芯片的测试用例生成装置,该芯片的测试用例生成装置用于执行上述方法实施例所描述的技术方案。例如,可以执行上述图5-图12中任一所示方法的各步骤。
图14示出根据本申请一实施例的一种芯片的测试用例生成装置的结构图,如图14所示,该装置可以包括:传输模块1401,用于获取输入参数集合;所述输入参数集合包括芯片的M个输入参数,M为不小于1的整数;处理模块1402,用于将所述输入参数集合输入第一模型,生成第一测试用例集合;其中,第一测试用例包括:所述M个输入参数的取值,所述第一模型为利用第一测试用例训练样本训练所得到,所述第一测试用例训练样本中所述M个输入参数的取值满足预设约束。
在一种可能的实现方式中,所述处理模块1402,还用于:确定目标功能覆盖组,所述目标功能覆盖组包括待测试的目标功能;根据功能覆盖组与输入参数之间的关联信息,确定所述输入参数集合中与所述目标功能覆盖组相关联的N个目标输入参数,N为不大于M的正整数;其中,所述功能覆盖组与输入参数之间的关联信息为利用第二测试用例训练样本及所述第二测试用例训练样本对应的第一功能覆盖信息训练所得到;所述第二测试用例训练样本中所述M个输入参数的取值满足所述预设约束,所述第一功能覆盖信息表示各功能覆盖组中已被测试的功能和/或未被测试的功能;确定所述N个目标输入参数的至少一个第一取值组合;利用所述至少一个第一取值组合中的每一个,替代所述第一测试用例集合中的所述N个目标输入参数的一个第二取值组合,得到第二测试用例集合,其中,第二测试用例包括所述M个输入参数的取值。
在一种可能的实现方式中,所述处理模块1402,还用于:根据所述N个目标输入参数的预设取值范围,随机生成多个候选取值组合;将所述多个候选取值组合中的任一取值组合作为初始迭代回合对应的取值组合;从所述多个候选取值组合中,确定当前迭代回合对应的取值组合;其中,所述当前迭代回合对应的取值组合与已确定的各迭代回合对应的取值组合的差异最大;重复执行上述确定当前迭代回合对应的取值组合的操作,直到满足预设迭代条件;并将各迭代回合对应的取值组合作为所述至少一个第一取值组合。
在一种可能的实现方式中,所述处理模块1402,还用于:过滤掉所述第二测试用例集合中所述M个输入参数的取值不满足所述预设约束的第二测试用例。
在一种可能的实现方式中,所述处理模块1402,还用于:获取所述第一测试用例集合对应的第二功能覆盖信息,所述第二功能覆盖信息包括各功能覆盖组中未被测试的功能的个数;根据所述第一测试用例集合对应的第二功能覆盖信息,确定第一测试用例集合对应的各功能覆盖组的启发式分数,所述启发式分数与功能覆盖组中未被测试的功能的个数正相关;根据所述各功能覆盖组的启发式分数,确定所述各功能覆盖组对应的概率;基于各功能覆盖组对应的概率,确定至少一个目标功能覆盖组。
在一种可能的实现方式中,所述处理模块1402,还用于:根据所述第一测试用例集合对应的各功能覆盖组中未被测试的功能的个数,确定所述第一测试用例集合对应的未被测试的功能总数;根据所述各功能覆盖组中未被测试的功能的个数占所述未被测试的功能总数的比重,确定所述各功能覆盖组的启发式分数。
在一种可能的实现方式中,所述处理模块1402,还用于:获取所述第一测试用例训练样本;利用所述第一测试用例训练样本对第一预设模型进行训练,得到所述第一模型。
在一种可能的实现方式中,所述第一预设模型包括生成对抗网络,所述生成对抗网络包含生成器及判别器;所述处理模块1402,还用于:利用所述第一测试用例训练样本对所述生成对抗网络进行多轮训练;并确定每轮训练收敛时的生成器对应的测试用例不变率,所述测试用例不变率表示生成器生成的测试用例的M个输入参数中取值符合所述预设约束的输入参数的比率;将与最大测试用例不变率对应的生成器,作为所述第一模型。
在一种可能的实现方式中,所述处理模块1402,还用于:利用收敛时的判别器,过滤掉所述第二测试用例集合中所述M个输入参数不满足所述预设约束的第二测试用例。
在一种可能的实现方式中,所述处理模块1402,还用于:获取所述第二测试用例训练样本及所述第二测试用例训练样本对应的第一功能覆盖信息;利用所述第二测试用例训练样本及所述第一功能覆盖信息对第二预设模型进行训练,得到所述功能覆盖组与输入参数之间的关联信息。
在一种可能的实现方式中,所述第二预设模型包括随机森林模型;所述处理模块1402,还用于:针对所述目标功能覆盖组,将所述第二测试用例训练样本输入到所述随机森林模型,并以所述第一功能覆盖信息作为标签,训练所述随机森林模型,得到所述功能覆盖组与输入参数之间的关联信息。
在一种可能的实现方式中,所述处理模块1402,还用于:针对每一第一取值组合,确定与该第一取值组合的相似度满足预设条件的第二取值组合,作为该第一取值组合的目标第二取值组合;利用该第一取值组合替代所述目标第二取值组合。
上述图14所示的芯片的测试用例生成装置及其各种可能的实现方式的技术效果及具体描述可参见上述芯片的测试用例生成方法,此处不再赘述。
需要说明的是,应理解以上芯片的测试用例生成装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调度的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调度软件的形式实现,部分模块通过硬件的形式实现。
本申请的实施例提供了一种芯片的测试用例生成装置,包括:处理器以及用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令时实现上述方法。示例性地,可以实现上述图5-图12中任一所示的芯片的测试用例生成方法。
图15示出根据本申请一实施例的一种芯片的测试用例生成装置的结构示意图,如图15所示,该芯片的测试用例生成装置可以包括:至少一个处理器1501,通信线路1502,存储器1503以及至少一个通信接口1504。
处理器1501可以是一个通用中央处理器(central processing unit,CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本申请方案程序执行的集成电路。
通信线路1502可包括一通路,在上述组件之间传送信息。
通信接口1504,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,RAN,无线局域网(wireless local area networks,WLAN)等。
存储器1503可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、只读光盘(compactdisc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过通信线路1502与处理器相连接。存储器也可以和处理器集成在一起。本申请实施例提供的存储器通常可以具有非易失性。其中,存储器1503用于存储执行本申请方案的计算机执行指令,并由处理器1501来控制执行。处理器1501用于执行存储器1503中存储的计算机执行指令,从而实现本申请上述实施例中提供的方法。示例性地,可以实现上述图5-图12中任一所示方法的各步骤。
可选的,本申请实施例中的计算机执行指令也可以称之为应用程序代码,本申请实施例对此不作具体限定。
示例性地,处理器1501可以包括一个或多个CPU,例如图15中的CPU0和CPU1。
示例性地,芯片的测试用例生成装置可以包括多个处理器,例如图15中的处理器1501和处理器1507。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,芯片的测试用例生成装置还可以包括输出设备1505和输入设备1506。输出设备1505和处理器1501通信,可以以多种方式来显示信息。例如,输出设备1505可以是液晶显示器(liquid crystal display,LCD),发光二级管(lightemitting diode,LED)显示设备,阴极射线管(cathode ray tube,CRT)显示设备,或投影仪(projector)等。输入设备1506和处理器1501通信,可以以多种方式接收用户的输入。例如,输入设备1506可以是鼠标、键盘、触摸屏设备或传感设备等。
作为一个示例,结合图15所示的芯片的测试用例生成装置,上述图14中的传输模块1401可以由图15中的通信接口1504来实现;上述图14中的处理模块1402可以由图15中的处理器1501来实现。
本申请的实施例提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。示例性地,可以实现上述图5-图12中任一所示方法的各步骤。
本申请的实施例提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述方法。示例性地,可以实现上述图5-图12中任一所示方法的各步骤。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RandomAccess Memory,RAM)、只读存储器(Read Only Memory,ROM)、可擦式可编程只读存储器(Electrically Programmable Read-Only-Memory,EPROM或闪存)、静态随机存取存储器(Static Random-Access Memory,SRAM)、便携式压缩盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、数字多功能盘(Digital Video Disc,DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
这里所描述的计算机可读程序指令或代码可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本申请操作的计算机程序指令可以是汇编指令、指令集架构(Instruction Set Architecture,ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(Local Area Network,LAN)或广域网(WideArea Network,WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(Field-ProgrammableGate Array,FPGA)或可编程逻辑阵列(Programmable Logic Array,PLA),该电子电路可以执行计算机可读程序指令,从而实现本申请的各个方面。
这里参照根据本申请实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本申请的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本申请的多个实施例的装置、系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。
也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行相应的功能或动作的硬件(例如电路或ASIC(Application SpecificIntegrated Circuit,专用集成电路))来实现,或者可以用硬件和软件的组合,如固件等来实现。
尽管在此结合各实施例对本发明进行了描述,然而,在实施所要求保护的本发明过程中,本领域技术人员通过查看所述附图、公开内容、以及所附权利要求书,可理解并实现所述公开实施例的其它变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其它单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
以上已经描述了本申请的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (27)

1.一种芯片的测试用例生成方法,其特征在于,所述方法包括:
获取输入参数集合;所述输入参数集合包括芯片的M个输入参数,M为不小于1的整数;
将所述输入参数集合输入第一模型,生成第一测试用例集合;其中,第一测试用例包括:所述M个输入参数的取值,所述第一模型为利用第一测试用例训练样本训练所得到,所述第一测试用例训练样本中所述M个输入参数的取值满足预设约束。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定目标功能覆盖组,所述目标功能覆盖组包括待测试的目标功能;
根据功能覆盖组与输入参数之间的关联信息,确定所述输入参数集合中与所述目标功能覆盖组相关联的N个目标输入参数,N为不大于M的正整数;其中,所述功能覆盖组与输入参数之间的关联信息为利用第二测试用例训练样本及所述第二测试用例训练样本对应的第一功能覆盖信息训练所得到;所述第二测试用例训练样本中所述M个输入参数的取值满足所述预设约束,所述第一功能覆盖信息表示各功能覆盖组中已被测试的功能和/或未被测试的功能;
确定所述N个目标输入参数的至少一个第一取值组合;
利用所述至少一个第一取值组合中的每一个,替代所述第一测试用例集合中的所述N个目标输入参数的一个第二取值组合,得到第二测试用例集合,其中,第二测试用例包括所述M个输入参数的取值。
3.根据权利要求2所述的方法,其特征在于,所述确定所述N个目标输入参数的至少一个第一取值组合,包括:
根据所述N个目标输入参数的预设取值范围,随机生成多个候选取值组合;
将所述多个候选取值组合中的任一取值组合作为初始迭代回合对应的取值组合;
从所述多个候选取值组合中,确定当前迭代回合对应的取值组合;其中,所述当前迭代回合对应的取值组合与已确定的各迭代回合对应的取值组合的差异最大;
重复执行上述确定当前迭代回合对应的取值组合的操作,直到满足预设迭代条件;并将各迭代回合对应的取值组合作为所述至少一个第一取值组合。
4.根据权利要求2或3所述的方法,其特征在于,所述方法还包括:
过滤掉所述第二测试用例集合中所述M个输入参数的取值不满足所述预设约束的第二测试用例。
5.根据权利要求2-4中任一项所述的方法,其特征在于,所述确定目标功能覆盖组,包括:
获取所述第一测试用例集合对应的第二功能覆盖信息,所述第二功能覆盖信息包括各功能覆盖组中未被测试的功能的个数;
根据所述第一测试用例集合对应的第二功能覆盖信息,确定第一测试用例集合对应的各功能覆盖组的启发式分数,所述启发式分数与功能覆盖组中未被测试的功能的个数正相关;
根据所述各功能覆盖组的启发式分数,确定所述各功能覆盖组对应的概率;
基于各功能覆盖组对应的概率,确定至少一个目标功能覆盖组。
6.根据权利要求5所述的方法,其特征在于,所述根据所述第一测试用例集合对应的第二功能覆盖信息,确定第一测试用例集合对应的各功能覆盖组的启发式分数,包括:
根据所述第一测试用例集合对应的各功能覆盖组中未被测试的功能的个数,确定所述第一测试用例集合对应的未被测试的功能总数;
根据所述各功能覆盖组中未被测试的功能的个数占所述未被测试的功能总数的比重,确定所述各功能覆盖组的启发式分数。
7.根据权利要求1-6中任一项所述的方法,其特征在于,所述方法还包括:
获取所述第一测试用例训练样本;
利用所述第一测试用例训练样本对第一预设模型进行训练,得到所述第一模型。
8.根据权利要求7所述的方法,其特征在于,所述第一预设模型包括生成对抗网络,所述生成对抗网络包含生成器及判别器;
所述利用所述第一测试用例训练样本对第一预设模型进行训练,得到所述第一模型,包括:
利用所述第一测试用例训练样本对所述生成对抗网络进行多轮训练;并确定每轮训练收敛时的生成器对应的测试用例不变率,所述测试用例不变率表示生成器生成的测试用例的M个输入参数中取值符合所述预设约束的输入参数的比率;
将与最大测试用例不变率对应的生成器,作为所述第一模型。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:利用收敛时的判别器,过滤掉所述第二测试用例集合中所述M个输入参数不满足所述预设约束的第二测试用例。
10.根据权利要求2-9中任一项所述的方法,其特征在于,所述方法还包括:
获取所述第二测试用例训练样本及所述第二测试用例训练样本对应的第一功能覆盖信息;
利用所述第二测试用例训练样本及所述第一功能覆盖信息对第二预设模型进行训练,得到所述功能覆盖组与输入参数之间的关联信息。
11.根据权利要求10所述的方法,其特征在于,所述第二预设模型包括随机森林模型;
所述利用所述第二测试用例训练样本及所述第一功能覆盖信息对所述第二预设模型进行训练,得到所述功能覆盖组与输入参数之间的关联信息,包括:
针对所述目标功能覆盖组,将所述第二测试用例训练样本输入到所述随机森林模型,并以所述第一功能覆盖信息作为标签,训练所述随机森林模型,得到所述功能覆盖组与输入参数之间的关联信息。
12.根据权利要求2-11中任一项所述的方法,其特征在于,利用所述至少一个第一取值组合中的每一个,替代所述第一测试用例集合中的所述N个目标输入参数的一个第二取值组合,包括:
针对每一第一取值组合,确定与该第一取值组合的相似度满足预设条件的第二取值组合,作为该第一取值组合的目标第二取值组合;
利用该第一取值组合替代所述目标第二取值组合。
13.一种芯片的测试用例生成装置,其特征在于,所述装置包括:
传输模块,用于获取输入参数集合;所述输入参数集合包括芯片的M个输入参数,M为不小于1的整数;
处理模块,用于将所述输入参数集合输入第一模型,生成第一测试用例集合;其中,第一测试用例包括:所述M个输入参数的取值,所述第一模型为利用第一测试用例训练样本训练所得到,所述第一测试用例训练样本中所述M个输入参数的取值满足预设约束。
14.根据权利要求13所述的装置,其特征在于,所述处理模块,还用于:确定目标功能覆盖组,所述目标功能覆盖组包括待测试的目标功能;根据功能覆盖组与输入参数之间的关联信息,确定所述输入参数集合中与所述目标功能覆盖组相关联的N个目标输入参数,N为不大于M的正整数;其中,所述功能覆盖组与输入参数之间的关联信息为利用第二测试用例训练样本及所述第二测试用例训练样本对应的第一功能覆盖信息训练所得到;所述第二测试用例训练样本中所述M个输入参数的取值满足所述预设约束,所述第一功能覆盖信息表示各功能覆盖组中已被测试的功能和/或未被测试的功能;确定所述N个目标输入参数的至少一个第一取值组合;利用所述至少一个第一取值组合中的每一个,替代所述第一测试用例集合中的所述N个目标输入参数的一个第二取值组合,得到第二测试用例集合,其中,第二测试用例包括所述M个输入参数的取值。
15.根据权利要求14所述的装置,其特征在于,所述处理模块,还用于:根据所述N个目标输入参数的预设取值范围,随机生成多个候选取值组合;将所述多个候选取值组合中的任一取值组合作为初始迭代回合对应的取值组合;从所述多个候选取值组合中,确定当前迭代回合对应的取值组合;其中,所述当前迭代回合对应的取值组合与已确定的各迭代回合对应的取值组合的差异最大;重复执行上述确定当前迭代回合对应的取值组合的操作,直到满足预设迭代条件;并将各迭代回合对应的取值组合作为所述至少一个第一取值组合。
16.根据权利要求14或15所述的装置,其特征在于,所述处理模块,还用于:过滤掉所述第二测试用例集合中所述M个输入参数的取值不满足所述预设约束的第二测试用例。
17.根据权利要求14-16中任一项所述的装置,其特征在于,所述处理模块,还用于:获取所述第一测试用例集合对应的第二功能覆盖信息,所述第二功能覆盖信息包括各功能覆盖组中未被测试的功能的个数;根据所述第一测试用例集合对应的第二功能覆盖信息,确定第一测试用例集合对应的各功能覆盖组的启发式分数,所述启发式分数与功能覆盖组中未被测试的功能的个数正相关;根据所述各功能覆盖组的启发式分数,确定所述各功能覆盖组对应的概率;基于各功能覆盖组对应的概率,确定至少一个目标功能覆盖组。
18.根据权利要求17所述的装置,其特征在于,所述处理模块,还用于:根据所述第一测试用例集合对应的各功能覆盖组中未被测试的功能的个数,确定所述第一测试用例集合对应的未被测试的功能总数;根据所述各功能覆盖组中未被测试的功能的个数占所述未被测试的功能总数的比重,确定所述各功能覆盖组的启发式分数。
19.根据权利要求13-18中任一项所述的装置,其特征在于,所述处理模块,还用于:获取所述第一测试用例训练样本;利用所述第一测试用例训练样本对第一预设模型进行训练,得到所述第一模型。
20.根据权利要求19所述的装置,其特征在于,所述第一预设模型包括生成对抗网络,所述生成对抗网络包含生成器及判别器;
所述处理模块,还用于:利用所述第一测试用例训练样本对所述生成对抗网络进行多轮训练;并确定每轮训练收敛时的生成器对应的测试用例不变率,所述测试用例不变率表示生成器生成的测试用例的M个输入参数中取值符合所述预设约束的输入参数的比率;将与最大测试用例不变率对应的生成器,作为所述第一模型。
21.根据权利要求20所述的装置,其特征在于,所述处理模块,还用于:利用收敛时的判别器,过滤掉所述第二测试用例集合中所述M个输入参数不满足所述预设约束的第二测试用例。
22.根据权利要求14-21中任一项所述的装置,其特征在于,所述处理模块,还用于:获取所述第二测试用例训练样本及所述第二测试用例训练样本对应的第一功能覆盖信息;利用所述第二测试用例训练样本及所述第一功能覆盖信息对第二预设模型进行训练,得到所述功能覆盖组与输入参数之间的关联信息。
23.根据权利要求22所述的装置,其特征在于,所述第二预设模型包括随机森林模型;所述处理模块,还用于:针对所述目标功能覆盖组,将所述第二测试用例训练样本输入到所述随机森林模型,并以所述第一功能覆盖信息作为标签,训练所述随机森林模型,得到所述功能覆盖组与输入参数之间的关联信息。
24.根据权利要求14-23中任一项所述的装置,其特征在于,所述处理模块,还用于:针对每一第一取值组合,确定与该第一取值组合的相似度满足预设条件的第二取值组合,作为该第一取值组合的目标第二取值组合;利用该第一取值组合替代所述目标第二取值组合。
25.一种芯片的测试用例生成装置,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令时实现权利要求1-12任意一项所述的方法。
26.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1-12中任意一项所述的方法。
27.一种计算机程序产品,其特征在于,当所述计算机程序产品在计算机上运行时,使得所述计算机执行权利要求1-12中任一项所述的方法。
CN202111663515.6A 2021-12-31 2021-12-31 一种芯片的测试用例生成方法、装置及存储介质 Pending CN116432570A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202111663515.6A CN116432570A (zh) 2021-12-31 2021-12-31 一种芯片的测试用例生成方法、装置及存储介质
PCT/CN2022/143439 WO2023125821A1 (zh) 2021-12-31 2022-12-29 一种芯片的测试用例生成方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111663515.6A CN116432570A (zh) 2021-12-31 2021-12-31 一种芯片的测试用例生成方法、装置及存储介质

Publications (1)

Publication Number Publication Date
CN116432570A true CN116432570A (zh) 2023-07-14

Family

ID=86998018

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111663515.6A Pending CN116432570A (zh) 2021-12-31 2021-12-31 一种芯片的测试用例生成方法、装置及存储介质

Country Status (2)

Country Link
CN (1) CN116432570A (zh)
WO (1) WO2023125821A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117291132A (zh) * 2023-11-27 2023-12-26 上海小厘科技有限公司 一种芯片验证系统、方法及存储介质

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116932403B (zh) * 2023-07-25 2024-06-11 太初(无锡)电子科技有限公司 测试用例的生成方法
CN116825169B (zh) * 2023-08-31 2023-11-24 悦芯科技股份有限公司 一种基于测试设备的异常存储芯片检测方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113297060A (zh) * 2020-05-11 2021-08-24 阿里巴巴集团控股有限公司 一种数据测试方法及其装置
CN113076250B (zh) * 2021-04-14 2023-08-25 南京大学 带约束测试模型的动态随机测试方法、装置、存储介质
CN113407393B (zh) * 2021-05-25 2023-01-24 鹏城实验室 芯片验证方法、终端设备、验证平台以及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117291132A (zh) * 2023-11-27 2023-12-26 上海小厘科技有限公司 一种芯片验证系统、方法及存储介质
CN117291132B (zh) * 2023-11-27 2024-02-20 上海小厘科技有限公司 一种芯片验证系统、方法及存储介质

Also Published As

Publication number Publication date
WO2023125821A1 (zh) 2023-07-06

Similar Documents

Publication Publication Date Title
US20200210847A1 (en) Ensembling of neural network models
CN116432570A (zh) 一种芯片的测试用例生成方法、装置及存储介质
Kawaguchi et al. Ordered sgd: A new stochastic optimization framework for empirical risk minimization
US11853893B2 (en) Execution of a genetic algorithm having variable epoch size with selective execution of a training algorithm
US20160358070A1 (en) Automatic tuning of artificial neural networks
US20150135166A1 (en) Source code generation, completion, checking, correction
CN104798043B (zh) 一种数据处理方法和计算机系统
CN110366734A (zh) 优化神经网络架构
US20220147877A1 (en) System and method for automatic building of learning machines using learning machines
CN110533150B (zh) 基于支持向量机回归模型的测试生成与重用系统及方法
US11269760B2 (en) Systems and methods for automated testing using artificial intelligence techniques
CN105446952A (zh) 用于处理语义片段的方法和系统
CN111582315A (zh) 样本数据处理方法、装置及电子设备
US20190205763A1 (en) Information processing device, information processing method and information processing program
CN117236278B (zh) 一种基于数字孪生技术的芯片生产仿真方法及系统
CN112243509A (zh) 从异构源生成数据集用于机器学习的系统和方法
Rodriguez et al. Multi-objective information retrieval-based NSGA-II optimization for requirements traceability recovery
CN116737334A (zh) 任务调度及数据集标签更新方法、装置和电子设备
Fakhouri et al. Improved Path Testing Using Multi-Verse Optimization Algorithm and the Integration of Test Path Distance.
CN111026661B (zh) 一种软件易用性全面测试方法及系统
Huang et al. Neural fault analysis for sat-based atpg
Pereira et al. AI4CITY-An Automated Machine Learning Platform for Smart Cities
Grohmann Reliable Resource Demand Estimation
CN111753992A (zh) 筛选方法和筛选系统
US20240037425A1 (en) Integrated machine learning and rules platform for improved accuracy and root cause analysis

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination