CN109977030B - 一种深度随机森林程序的测试方法及设备 - Google Patents
一种深度随机森林程序的测试方法及设备 Download PDFInfo
- Publication number
- CN109977030B CN109977030B CN201910343573.7A CN201910343573A CN109977030B CN 109977030 B CN109977030 B CN 109977030B CN 201910343573 A CN201910343573 A CN 201910343573A CN 109977030 B CN109977030 B CN 109977030B
- Authority
- CN
- China
- Prior art keywords
- test
- coverage rate
- generation
- test case
- forest
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3676—Test management for coverage analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供一种深度随机森林程序的测试方法及设备,该方法包括根据一代测试用例集获取一代三级覆盖率信息,一代三级覆盖率信息包括第一多粒度扫描完全覆盖率信息、第一级联森林任一类型覆盖率信息和第一级联森林全类型测试覆盖率信息;若一代三级覆盖率信息不符合预设测试要求,则对一代测试用例集的测试用例三级覆盖率进行排序处理,得到排序结果,根据排序结果得到父代交叉算子信息;对父代交叉算子信息进行交叉变异操作,以更新一代测试用例集,直至符合预设测试要求。通过测试覆盖率计算标准,得到三级覆盖率信息,且整个测试流程可以在达到预设测试要求时自动停止,降低了测试的成本。
Description
技术领域
本发明涉及软件测试技术领域,尤其涉及一种深度随机森林程序的测试方法及设备。
背景技术
软件测试在软件的开发环节中是很重要的一步,软件测试是在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程,但软件测试的测试用例可能不够充分,不够全面,因此不能发现软件中的错误,而通常软件测试的覆盖标准就是用来衡量测试是否充分是否可靠的评价标准。
传统的软件测试覆盖标准是度量测试用例在代码层面的覆盖程度,例如语句覆盖、分支覆盖等等,但是其并不适用于深度随机森林这种新的深度学习模型,例如深度随机森林,是由多个决策树组成的森林及他们连接关系的集合,因此试图用传统的代码逻辑解释其原理并不可行,因此如何更好的实现对于深度随机森林程序的测试,已经为了本行业亟待解决的问题。
发明内容
本发明实施例提供一种深度随机森林程序的测试方法及设备,用以上述背景技术中所提出的技术问题,或至少部分解决上述背景技术中所提出的技术问题。
第一方面,本发明实施例提供一种深度随机森林程序的测试方法,包括:
根据一代测试用例集获取一代三级覆盖率信息,所述一代三级覆盖率信息包括第一多粒度扫描完全覆盖率信息、第一级联森林任一类型覆盖率信息和第一级联森林全类型测试覆盖率信息;
若所述一代三级覆盖率信息不符合预设测试要求,则对所述一代测试用例集的测试用例三级覆盖率进行排序处理,得到排序结果,根据所述排序结果得到父代交叉算子信息;
对所述父代交叉算子信息进行交叉变异操作,以更新一代测试用例集,直至符合预设测试要求。
第二方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述深度随机森林程序的测试方法的步骤。
第三方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所述深度随机森林程序的测试方法的步骤。
本发明实施例提供的深度随机森林程序的测试方法及设备,通过具体提供多粒度扫描完全覆盖率标准、级联森林任一类型覆盖率标准和级联森林全类型测试覆盖率标准从而可以计算得到测试用例集的三级覆盖率信息,当测试用例集的三级覆盖率信息不符合测试标准时,则对该测试用例集中的各个测试用例通过遗传迭代的方法进行处理,从而得到优化后的测试用例集,并重新进行测试,直至测试用例集的三级覆盖率符合测试标准,本发明实施例通过本发明设定的测试覆盖率计算标准,从而可以计算得到三级覆盖率信息,且整个测试流程可以在达到预设测试要求时自动停止,否则持续循环测试,整个过程无需大量人工操作,降低了测试的成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例所描述的深度随机森林程序的测试方法流程图;
图2为本发明一实施例所描述的基于遗传算法的深度随机森林程序的测试方法流程图;
图3为本发明一实施例所描述的覆盖分析步骤流程图;
图4为本发明一实施例所描述的遗传迭代流程图;
图5为本发明一实施例所描述的电子设备结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明一实施例所描述的深度随机森林程序的测试方法流程图,如图1所示,包括:
步骤S1,根据一代测试用例集获取一代三级覆盖率信息,所述一代三级覆盖率信息包括第一多粒度扫描完全覆盖率信息、第一级联森林任一类型覆盖率信息和第一级联森林全类型测试覆盖率信息;
步骤S2,若所述一代三级覆盖率信息不符合预设测试要求,则对所述一代测试用例集中的测试用例三级覆盖率进行排序处理,得到排序结果,根据所述排序结果得到父代交叉算子信息;
步骤S3,对所述父代交叉算子信息进行交叉变异操作,以更新一代测试用例集,直至符合预设测试要求。
具体的,本发明实施例中所描述的一代测试用例集是指本代测试用例集,在本代测试用例集之前还可以存在上一代测试用例集,以及初始测试用例集;在本代测试用例集之后还可以存在更新后的下一代测试用例集,其可以表述为二代测试用例集。
本发明实施例中所描述的测试用例集是指同一代测试用例的集合,本发明实施例中所描述的初始测试用例集是指开始测试时的初始代测试用例的集合,初始测试用例可以是在深度随机森林的训练阶段,随机挑选一部分训练数据作为初始测试用例。
本发明实施例中所描述的三级覆盖率信息是指多粒度扫描完全覆盖率信息、级联森林任一类型覆盖率信息和级联森林全类型测试覆盖率信息;通过测试用例集中所有测试用例的测试覆盖情况计算得到该测试用例集的三级覆盖率信息。
本发明实施例中所描述的测试覆盖情况可以是指运行过程中监控多粒度扫描的两个随机森林中每个决策树的输出情况,将每个决策树所到达的叶子结点记录下来作为作为此测试用例的多粒度扫描结点覆盖情况。然后监控级联森林中每个随机森林的输出结果,作为此测试用例的级联森林类型覆盖情况。覆盖分析将记录每一代种群的所有个体的覆盖情况。
本发明实施例中所描述的任一类型是指深度随机森林需要预测的具体类型的其中任意一个类型,本发明实施例中所描述的全类型是指需要具体预测的类型的所有类型,且需要预测的具体类型数量可以预先设定。
深度随机森林的结构分为两个部分,分别是多粒度扫描(Multi-GrainedScanning)和级联森林(Cascade Forest),两个部分分工完成一次预测,而对于级联森林可以具体区别为任一类型覆盖率预测和全类型测试覆盖预测。
通过多粒度扫描完全覆盖率标准对所述一代测试用例集进行处理,得到第一多粒度扫描完全覆盖率信息,具体为:
其中,N={n1,n2,n3,…}为一个随机森林里的所有决策树,ni∈N(1<i<|N|)为随机森林中的一颗决策树,T={t1,t2,t3,…}为测试集,L={l1,l2,l3,…}为决策树的所有叶子节点,lj∈L(1<j<|L|)为决策树的其中一个叶子节点,φ(t,n)表示决策树n在测试t∈T作为输入下的输出结果,即到达的叶子节。
通过级联森林任一类型覆盖率标准对所述一代测试用例集进行处理,得到第一级联森林任一类型覆盖率信息,具体为:
其中,F={f1,f2,f3,…}为级联森林里的所有随机森林,fi∈F(1<i<|F|)为其中一个随机森林,N={n1,n2,n3,…}为需要预测的所有类型,ni∈N(1<i<|N|)为其中一个类型,T={t1,t2,t3,…}为测试集,φn(t,f)表示森林f在测试t下对预测类n的输出结果;K为任一类型概率去世范围均分为K(K∈N*)个部分,表示森林f的对n类型输出的第i部分,如果则表示在测试t下森林f的对n类型输出的第i部分被覆盖。
通过级联森林全类型测试覆盖率标准对所述一代测试用例集进行处理,得到第一级联森林全类型测试覆盖率信息,具体为:
其中,F={f1,f2,f3,…}为级联森林里的所有随机森林,fi∈F(1<i<|F|)为其中一个随机森林,N={n1,n2,n3,…}为需要预测的所有类型,ni∈N(1<i<|N|)为其中一个类型,T={t1,t2,t3,…}为测试集,φn(t,f)表示森林f在测试t下对预测类n的输出结果;K为任一类型概率去世范围均分为K(K∈N*)个部分,表示森林f的对n类型输出的第i部分,如果则表示在测试t下森林f的对n类型输出的第i部分被覆盖,从而获取一代三级覆盖率信息。
本发明实施例中所描述的对一代测试用例集中的测试用例三级覆盖率进行排序处理具体是指,按照第一多粒度扫描完全覆盖率信息>第一级联森林全类型覆盖率信息>第一级联森林任一类型测试覆盖率信息的权重标准进行排序,即优先比较多粒度扫描完全覆盖率信息,当其相等时则比较级联森林全类型覆盖率信息,当级联森林全类型覆盖率信息相等时,比较级联森林任一类型覆盖率信息,从而得到排序结果,根据排序结果选取其中排序靠前的m个测试用例作为父代交叉算子信息。
对附带交叉算子进行交叉变异操作具体是指交叉算子将两个父代交叉算子信息中的测试用例个体的二进制编码数据作为的基因做叉操作:
随机将父代中的个体两两配对,然后随机选择其二进制数据串中的一段区间作为交叉区间,将区间内的数据进行交换,交换后的两个父代个体形成新的子代个体。
例如,以二进制参数作为程序输入为例:
prent1:01010|11001010|10110101
prent2:10101|00101011|00010100
交叉得:
child1:01010|00101011|10110101
child2:10101|11001010|00010100
然后,变异算子将每个通过交叉算子产生的子代个体进行变异操作,对每个交叉算子产生的子代个体随机选择一个数据位,对位值取反以达到变异效果。
例如,以二进制参数作为程序输入为例:
child1:01010|0|010101110110101
对选取位进行变异得:
child3:01010|1|010101110110101
以及
child2:1010111001010000|1|0100
对选取位进行变异得:
child4:1010111001010000|0|0100
以上例子中,两个父代个体经过交叉和变异后产生了四个子代,所以对于选择算子中的选择数量m,假如选择m的值为初代种群数量的一半,那么将产生初代种群数量一半的父代,然后经过交叉算子和变异算子将产生2m个子代,其数量正好与初代种群个体数量一样。所以在选择算子中,如果m的取值等于初代种群个体数量的一半,则无论经过几次迭代种群个体数量将不会改变;如果m的取值大于初代种群个体数量的一半,则种群个体数量将逐代增加;如果m的取值小于初代种群个体数量的一半,则种群个体数量将逐代减少,从而更新一代测试用例集。
更优的,在实际应用中,根据平台算力和成本等限制因素可选择不同策略,例如:
1)在迭代初期先适当降低m的取值,淘汰低适应度的个体,使得只有适应度高的个体基因可以遗传下去,加快迭代速度且使得种群中大部分为适应度高的个体;然后在迭代后期适当提高m的取值,以在覆盖率较高的情况下增加种群个体数量。
2)在迭代初期先适当提高m的取值,使种群个体数量快速增长,提高种群的基因多样性,然后在迭代后期适当降低m的取值,淘汰大量适应度低的个体,适应度高的个体则被筛选下来,以在测试用例数量较高的情况下提高覆盖率。
在实际应用中,不同策略可相互结合使用,根据初始测试用例集的不同质量和不同时间、算力等成本要求,m的取值可以在每次迭代时灵活变化。
本发明实施例通过具体提供多粒度扫描完全覆盖率标准、级联森林任一类型覆盖率标准和级联森林全类型测试覆盖率标准从而可以计算得到测试用例集的三级覆盖率信息,当测试用例集的三级覆盖率信息不符合测试标准时,则对该测试用例集中的各个测试用例通过遗传迭代的方法进行处理,从而得到优化后的测试用例集,并重新进行测试,直至测试用例集的三级覆盖率符合测试标准,本发明实施例通过本发明设定的测试覆盖率计算标准,从而可以计算得到三级覆盖率信息,且整个测试流程可以在达到预设测试要求时自动停止,否则持续循环测试,整个过程无需大量人工操作,降低了测试的成本。
在上述实施例的基础上,在所述根据一代测试用例集获取一代三级覆盖率信息之前,所述方法还包括:
依次对一代测试用例集中的测试用例进行覆盖率计算,得到所述测试用例三级覆盖率信息;
根据所述测试用例三级覆盖率信息得到一代测试用例集的一代三级覆盖率信息。
具体的,本发明实施例中所描述的对一代测试用例集中的测试用例进行覆盖率计算具体是指将该测试用例的三级覆盖情况和相对于一代测试用例集的上一代测试用例集的三级覆盖情况相加之后,再进行覆盖率计算,从而得到测试用例的三级覆盖率信息,此处计算测试用例的三级覆盖率信息仍然是采用多粒度扫描完全覆盖率标准、级联森林任一类型覆盖率标准和级联森林全类型测试覆盖率标准来得到。
由于测试用例集是指该一代测试用例的集合,因此可以通过各个测试用例三级覆盖率信息从而得到一代测试用例集的一代三级覆盖率信息。
本发明实施例通过将测试用例的覆盖情况与上一代测试用例集的覆盖情况相加后,再计算覆盖率,克服了单个测试用例个体在执行时,每个决策树都将到达一个叶子结点,所导致的单独计算单个测试用例个体覆盖率将得到相同的结果,无法区分实适用度的情况,最终确定了测试用例集的适应度。
在上述实施例的基础上,所述测试用例进行覆盖率计算,得到所述测试用例三级覆盖率信息的步骤,具体为:
获取所述测试用例的上一代测试用例集三级覆盖率信息;
对所述测试用例进行三级覆盖率计算,得到测试用例三级覆盖结果信息;
根据所述测试用例三级覆盖结果信息和所述上一代测试用例集三级覆盖率信息得到所述测试用例三级覆盖率信息。
具体的,输入本代测试用例和上一代测试用例集的测试覆盖情况,将本代测试用例覆盖情况与上一代测试用例集的覆盖情况相加,然后通过多粒度扫描完全覆盖率标准、级联森林任一类型覆盖率标准和级联森林全类型测试覆盖率标准得到测试用例三级覆盖结果信息;
然后将测试用例三级覆盖结果信息减去上一代测试用例集三级覆盖率信息,从而得到本代测试用例个体相对于上一代测试用例集的覆盖率提高量,即得到测试用例三级覆盖率信息。
本发明实施例通过将测试用例的覆盖情况与上一代测试用例集的覆盖情况相加后,再计算覆盖率,克服了单个测试用例个体在执行时,每个决策树都将到达一个叶子结点,所导致的单独计算单个测试用例个体覆盖率将得到相同的结果,无法区分实适用度的情况,最终确定了测试用例集的适应度。
在上述实施例的基础上,所述根据一代测试用例集获取一代三级覆盖率信息的步骤,具体为:
通过多粒度扫描完全覆盖率标准对所述一代测试用例集进行处理,得到第一多粒度扫描完全覆盖率信息;
通过级联森林任一类型覆盖率标准对所述一代测试用例集进行处理,得到第一级联森林任一类型覆盖率信息;
通过级联森林全类型测试覆盖率标准对所述一代测试用例集进行处理,得到第一级联森林全类型测试覆盖率信息;
根据所述第一多粒度扫描完全覆盖率信息、第一级联森林任一类型覆盖率信息和第一全类型测试覆盖率信息得到所述一代三级覆盖率信息。
具体的,通过多粒度扫描完全覆盖率标准对所述一代测试用例集进行处理,将一代测试用例集覆盖情况输入多粒度扫描完全覆盖标准,得到第一多粒度扫描完全覆盖率信息,具体为:
其中,N={n1,n2,n3,…}为一个随机森林里的所有决策树,ni∈N(1<i<|N|)为随机森林中的一颗决策树,T={t1,t2,t3,…}为测试集,L={l1,l2,l3,…}为决策树的所有叶子节点,lj∈L(1<j<|L|)为决策树的其中一个叶子节点,φ(t,n)表示决策树n在测试t∈T作为输入下的输出结果,即到达的叶子节。
通过级联森林任一类型覆盖率标准对所述一代测试用例集进行处理,将一代测试用例集覆盖情况输入级联森林任一类型覆盖标准,得到第一级联森林任一类型覆盖率信息,具体为:
其中,F={f1,f2,f3,…}为级联森林里的所有随机森林,fi∈F(1<i<|F|)为其中一个随机森林,N={n1,n2,n3,…}为需要预测的所有类型,ni∈N(1<i<|N|)为其中一个类型,T={t1,t2,t3,…}为测试集,φn(t,f)表示森林f在测试t下对预测类n的输出结果;K为任一类型概率去世范围均分为K(K∈N*)个部分,表示森林f的对n类型输出的第i部分,如果则表示在测试t下森林f的对n类型输出的第i部分被覆盖。
通过级联森林全类型测试覆盖率标准对所述一代测试用例集进行处理,将一代测试用例集覆盖情况输入级联森林全类型测试覆盖标准,得到第一级联森林全类型测试覆盖率信息,具体为:
其中,F={f1,f2,f3,…}为级联森林里的所有随机森林,fi∈F(1<i<|F|)为其中一个随机森林,N={n1,n2,n3,…}为需要预测的所有类型,ni∈N(1<i<|N|)为其中一个类型,T={t1,t2,t3,…}为测试集,φn(t,f)表示森林f在测试t下对预测类n的输出结果;K为任一类型概率去世范围均分为K(K∈N*)个部分,表示森林f的对n类型输出的第i部分,如果则表示在测试t下森林f的对n类型输出的第i部分被覆盖,从而获取一代三级覆盖率信息。
在上述实施例的基础上,多粒度扫描完全覆盖率标准的扫描结果会作为输入数据多次输入给级联森林,其扫描结果将会影响级联森林的每一层;
若,N={n1,n2,n3,…}为一个随机森林里的所有决策树,ni∈N(1<i<|N|)为其中一颗决策树,T={t1,t2,t3,…}为测试集,L={l1,l2,l3,…}为决策树的所有叶子节点,lj∈L(1<j<|L|)为决策树的其中一个叶子节点,φ(t,n)表示决策树n在测试t∈T作为输入下的输出结果,即到达的叶子节点。
如果φ(t,n)∈L则表示决策树n在测试t下到达了其中一个叶子节点,就说这个节点被覆盖。所以对于一颗决策树的叶子节点覆盖率为:
随机森林里的所有决策树的叶子节点覆盖率的平均值就是整个随机森林的叶子节点覆盖率:
然同样的叶子节点覆盖率会有不同的覆盖方式,例如有两个决策树n1和n2,n1,n2的覆盖率都为0.8时,他们的平均值为0.8,当n1的覆盖率为1,而n2的覆盖率为0.6时他们的平均值也为0.8。虽然平均覆盖率相同但后者对n2的覆盖显然是不够充分的。所以引入了叶子节点全覆盖率标准。
则说明这棵树被完全覆盖。
则森林中所有树的完全覆盖率,即多粒度扫描完全覆盖率标准为:
其中,N={n1,n2,n3,…}为一个随机森林里的所有决策树,ni∈N(1<i<|N|)为随机森林中的一颗决策树,T={t1,t2,t3,…}为测试集,L={l1,l2,l3,…}为决策树的所有叶子节点,lj∈L(1<j<|L|)为决策树的其中一个叶子节点,φ(t,n)表示决策树n在测试t∈T作为输入下的输出结果,即到达的叶子节。
本发明实施例通过考虑一颗决策树的叶子节点覆盖率,联想到当一个决策树中叶子节点都被覆盖到的情况,且多粒度扫描每个粒度由一个随机森林和一个完全随机森林组成,因此分别计算他们的完全覆盖率再计算平均值即可确定多粒度扫描完全覆盖率标准,从而可以根据多粒度扫描完全覆盖率标准计算多粒度扫描完全覆盖率。
在上述实施例的基础上,级联森林由多粒度扫描结果作为每层输入的部分,不断将其交给下一层,将级联森林中的最小单位—随机森林的输出结果作为测试覆盖的计算标准;设定F={f1,f2,f3,…}为级联森林里的所有随机森林,fi∈F(1<i<|F|)为其中一个随机森林,N={n1,n2,n3,…}为需要预测的所有类型,ni∈N(1<i<|N|)为其中一个类型,T={t1,t2,t3,…}为测试集,φn(t,f)表示森林f在测试t下对预测类n的输出结果。
在级联森林中每级由多层森林组成,层数由多粒度扫描中的扫描粒度数量决定,且级联森林的预测类型可以根据需要预先设定,若存在n个预测类型,则每个森林都将输出一个n维向量作为输出结果,例如当存在3个预测类型,则每个森林将输出一个三维向量作为输出理解,如(0.2,0.5,0.8)表示三个类型的预测可能性分别为20%、50%和80%,每个类别的取值范围都在(0,1)内。
则级联森林的对任一n类型的测试覆盖率可由所有随机森林的平均值求得,即级联森林任一类型覆盖率标准具体为:
其中,F={f1,f2,f3,…}为级联森林里的所有随机森林,fi∈F(1<i<|F|)为其中一个随机森林,N={n1,n2,n3,…}为需要预测的所有类型,ni∈N(1<i<|N|)为其中一个类型,T={t1,t2,t3,…}为测试集,φn(t,f)表示森林f在测试t下对预测类n的输出结果;K为任一类型概率去世范围均分为K(K∈N*)个部分,表示森林f的对n类型输出的第i部分,如果则表示在测试t下森林f的对n类型输出的第i部分被覆盖。
根据级联森林任一类型覆盖率标准可以得到级联森林全类型测试覆盖率标准具体为:
其中,F={f1,f2,f3,…}为级联森林里的所有随机森林,fi∈F(1<i<|F|)为其中一个随机森林,N={n1,n2,n3,…}为需要预测的所有类型,ni∈N(1<i<|N|)为其中一个类型,T={t1,t2,t3,…}为测试集,φn(t,f)表示森林f在测试t下对预测类n的输出结果;K为任一类型概率去世范围均分为K(K∈N*)个部分,表示森林f的对n类型输出的第i部分,如果则表示在测试t下森林f的对n类型输出的第i部分被覆盖。
该覆盖标准可以综合计算整个级联森林的测试覆盖标准,或单独计算某个测试类型的测试标准,其中,K的取值越大则对测试的说服力越高,对测试的要求也越严格。
例如有一个手写汉字识别的深度随机森林系统,分类的类型中有2000个为常用汉字,有8000个为生僻汉字,可以单独计算说明每层森林对常用汉字的测试覆盖率达到了什么水平,而对生僻字的测试覆盖率达到了什么水平。因此在测试时,可以对不同的类型规定不同的覆盖率要求,比如对常用汉字规定比较高的覆盖率要求,而对生僻字规定较低的覆盖率要求,如此可降低测试成本和缩短测试周期。
本发明实施例通过分别设定多粒度扫描完全覆盖率标准、级联森林任一类型覆盖率标准和级联森林全类型测试覆盖率标准从而使得深度随机森林程序的测试有了覆盖评价标准,解决了本领域中无法有效对深度随机森林进行测试的痛点。
在上述实施例的基础上,所述对所述一代测试用例集中的测试用例三级覆盖率进行排序处理,得到排序结果的步骤,具体包括:
对所述一代测试用例集中的测试用例多粒度扫描完全覆盖率信息进行排序,得到多粒度扫描排序结果信息;
对所述一代测试用例集中的测试用例级联森林任一类型覆盖率信息进行排序,得到任一类型覆盖率排序结果信息;
对所述一代测试用例集中的测试用例级联森林全类型测试覆盖率信息进行排序,得到全类型覆盖率排序结果信息;
根据所述多粒度扫描排序结果信息、任一类型覆盖率排序结果信息和全类型覆盖率排序结果信息得到排序结果。
具体的,首先对一代测试用例集中的测试用例多粒度扫描完全覆盖率信息进行排序,得到多粒度扫描排序结果信息;然后通过多粒度扫描排序结果信息选取排序结果较为靠前的测试用例作为父代交叉算子信息。
当多粒度扫描排序结果信息全部相等时,才开始对一代测试用例集中的测试用例全类型测试覆盖率信息进行排序,得到全类型覆盖率排序结果信息,然后通过全类型覆盖率排序结果信息,选取排序结果较为靠前的测试用例作为父代交叉算子信息。
当多粒度扫描排序结果信息和全类型覆盖率排序结果信息全部相等时,则对例级联森林任一类型覆盖率信息进行排序,得到任一类型覆盖率排序结果信息,然后通过任一类型覆盖率排序结果信息,选取排序结果较为靠前的测试用例作为父代交叉算子信息。
本发明实施例通过设定不同权重排序,从而通过排序结果选取更优的测试用例作为父代交叉算子信息,适用于遗传迭代算法,从而生成优化后的新测试用例,代替原测试用例,整个测试流程自动生成新的测试用例,执行、新家测试用例,无需大量人工操作,降低了测试成本。
在上述实施例的基础上,图2为本发明一实施例所描述的基于遗传算法的深度随机森林程序的测试方法流程图,如图2所示,步骤210,开始,进入步骤220,执行测试用例,然后分别进入步骤230,记录多粒度扫描覆盖节点和步骤240,记录级联森林输出覆盖情况,从而进入步骤250,得到测试用例覆盖情况,此处的覆盖情况是其运行过程中监控多粒度扫描的两个随机森林中每个决策树的输出情况,将每个决策树所到达的叶子结点记录下来作为作为此测试用例的多粒度扫描结点覆盖情况。然后监控级联森林中每个随机森林的输出结果,作为此测试用例的级联森林类型覆盖情况。覆盖分析将记录每一代种群的所有个体的覆盖情况;进入步骤260,计算三级覆盖率信息,具体是将本代测试用例覆盖情况与上一代测试用例集的覆盖情况相加,然后通过多粒度扫描完全覆盖率标准、级联森林任一类型覆盖率标准和级联森林全类型测试覆盖率标准得到该测试用例三级覆盖率信息;然后进入步骤270,判断该测试用例三级覆盖率信息是否达到测试目标,若达到测试目标,则进入步骤280,结束测试,若未达到测试目标,则进入步骤290,选择父代交叉算子信息,然后进入步骤2010,交叉变异,对父代交叉算子进行交叉变异操作,进入步骤2020,更新测试用例,得到更新后的测试用例,然后返回步骤220,重新执行更新后的测试用例,直至达到目测目标。
本发明实施例通过具体提供多粒度扫描完全覆盖率标准、级联森林任一类型覆盖率标准和级联森林全类型测试覆盖率标准从而可以计算得到测试用例集的三级覆盖率信息,当测试用例集的三级覆盖率信息不符合测试标准时,则对该测试用例集中的各个测试用例通过遗传迭代的方法进行处理,从而得到优化后的测试用例集,并重新进行测试,直至测试用例集的三级覆盖率符合测试标准,本发明实施例通过本发明设定的测试覆盖率计算标准,从而可以计算得到三级覆盖率信息,且整个测试流程可以在达到预设测试要求时自动停止,否则持续循环测试,整个过程无需大量人工操作,降低了测试的成本。
图3为本发明一实施例所描述的覆盖分析步骤流程图,如图3所示,包括:步骤310,开始,然后进入步骤320,测试用例集,输入测试用例集合;进入步骤330,定义i=1,定义计算器i,将其初始化为0;进入步骤340,执行第i个测试用例,将测试用例集里的第i个测试用例输入深度随机森林测试;记录覆盖情况;进入步骤360记录多粒度扫描覆盖结点和步骤350记录级联森林输出覆盖;然后进入步骤370,计数器i+1;进入步骤380,i+1是否为最后一个测试用例,判断测试用例集是否全部执行完成,是则继续进入步骤390,分析测试覆盖情况,输出测试用例集的测试覆盖情况,否则返回步骤340继续执行第i个测试用例;最后进入步骤3100结束流程。
图4为本发明一实施例所描述的遗传迭代流程图,如图4所示,包括步骤410,开始,开始流程,进入步骤420,三级覆盖率信息,输入上一代的三级覆盖率信息,步骤430,是否达到测试要求,若达到测试要求则进入步骤4100,结束流程,否则进入步骤440,上一代测试用例集,输入上一代测试用例集,然后进行步骤450,选择;步骤460,交叉;步骤470,变异;然后进入步骤480,得到新的测试用例集,再进入步骤490,对新的测试用例集进行覆盖分析。
本发明实施例通过遗传迭代算法,对不符合预设测试要求的测试用例集进行优化,从而实现了在达到预设测试标准时将停止测试,否则将持续优化循环测试,该过程无需大量人工操作,降低了测试成本。
图5为本发明一实施例所描述的电子设备结构示意图,如图5所示,该电子设备可以包括:处理器(processor)510、通信接口(Communications Interface)520、存储器(memory)530和通信总线540,其中,处理器510,通信接口520,存储器530通过通信总线540完成相互间的通信。处理器510可以调用存储器530中的逻辑指令,以执行如下方法:根据一代测试用例集获取一代三级覆盖率信息,所述一代三级覆盖率信息包括第一多粒度扫描完全覆盖率信息、第一级联森林任一类型覆盖率信息和第一级联森林全类型测试覆盖率信息;若所述一代三级覆盖率信息不符合预设测试要求,则对所述一代测试用例集的测试用例三级覆盖率进行排序处理,得到排序结果,根据所述排序结果得到父代交叉算子信息;对所述父代交叉算子信息进行交叉变异操作,以更新一代测试用例集,直至符合预设测试要求。
此外,上述的存储器530中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:根据一代测试用例集获取一代三级覆盖率信息,所述一代三级覆盖率信息包括第一多粒度扫描完全覆盖率信息、第一级联森林任一类型覆盖率信息和第一级联森林全类型测试覆盖率信息;若所述一代三级覆盖率信息不符合预设测试要求,则对所述一代测试用例集的测试用例三级覆盖率进行排序处理,得到排序结果,根据所述排序结果得到父代交叉算子信息;对所述父代交叉算子信息进行交叉变异操作,以更新一代测试用例集,直至符合预设测试要求。
本发明实施例提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储服务器指令,该计算机指令使计算机执行上述实施例所提供的一种深度随机森林程序的测试方法,例如包括:根据一代测试用例集获取一代三级覆盖率信息,所述一代三级覆盖率信息包括第一多粒度扫描完全覆盖率信息、第一级联森林任一类型覆盖率信息和第一级联森林全类型测试覆盖率信息;若所述一代三级覆盖率信息不符合预设测试要求,则对所述一代测试用例集的测试用例三级覆盖率进行排序处理,得到排序结果,根据所述排序结果得到父代交叉算子信息;对所述父代交叉算子信息进行交叉变异操作,以更新一代测试用例集,直至符合预设测试要求。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (6)
1.一种深度随机森林程序的测试方法,其特征在于,包括:
根据一代测试用例集获取一代三级覆盖率信息,所述一代三级覆盖率信息包括第一多粒度扫描完全覆盖率信息、第一级联森林任一类型覆盖率信息和第一级联森林全类型测试覆盖率信息;
若所述一代三级覆盖率信息不符合预设测试要求,则对所述一代测试用例集中的测试用例三级覆盖率进行排序处理,得到排序结果,根据所述排序结果得到父代交叉算子信息;
对所述父代交叉算子信息进行交叉变异操作,以更新一代测试用例集,直至符合预设测试要求;
其中,所述根据一代测试用例集获取一代三级覆盖率信息的步骤,具体为:
通过多粒度扫描完全覆盖率标准对所述一代测试用例集进行处理,得到第一多粒度扫描完全覆盖率信息;
通过级联森林任一类型覆盖率标准对所述一代测试用例集进行处理,得到第一级联森林任一类型覆盖率信息;
通过级联森林全类型测试覆盖率标准对所述一代测试用例集进行处理,得到第一级联森林全类型测试覆盖率信息;
根据所述第一多粒度扫描完全覆盖率信息、第一级联森林任一类型覆盖率信息和第一全类型测试覆盖率信息得到所述一代三级覆盖率信息;
其中,所述多粒度扫描完全覆盖率标准具体为:
其中,N={n1,n2,n3,…}为一个随机森林里的所有决策树,ni∈N(1<i<|N|)为随机森林中的一颗决策树,T={t1,t2,t3,…}为测试集,L={l1,l2,l3,…}为决策树的所有叶子节点,lj∈L(1<j<|L|)为决策树的其中一个叶子节点,φ(t,n)表示决策树n在测试t∈T作为输入下的输出结果,即到达的叶子节;
其中,所述级联森林任一类型覆盖率标准具体为:
其中,F={f1,f2,f3,…}为级联森林里的所有随机森林,fi∈F(1<i<|F|)为其中一个随机森林,N={n1,n2,n3,…}为需要预测的所有类型,ni∈N(1<i<|N|)为其中一个类型,T={t1,t2,t3,…}为测试集,φn(t,f)表示森林f在测试t下对预测类n的输出结果;K为任一类型概率去世范围均分为K(K∈N*)个部分,表示森林f的对n类型输出的第i部分,如果则表示在测试t下森林f的对n类型输出的第i部分被覆盖;
其中,所述级联森林全类型测试覆盖率标准具体为:
2.根据权利要求1所述深度随机森林程序的测试方法,其特征在于,在所述根据一代测试用例集获取一代三级覆盖率信息之前,所述方法还包括:
依次对一代测试用例集中的测试用例进行覆盖率计算,得到测试用例三级覆盖率信息;
根据所述测试用例三级覆盖率信息得到一代测试用例集的一代三级覆盖率信息。
3.根据权利要求2所述深度随机森林程序的测试方法,其特征在于,所述对一代测试用例集中的测试用例进行覆盖率计算,得到测试用例三级覆盖率信息的步骤,具体为:
获取所述测试用例的上一代测试用例集三级覆盖率信息;
对所述测试用例进行三级覆盖率计算,得到测试用例三级覆盖结果信息;
根据所述测试用例三级覆盖结果信息和所述上一代测试用例集三级覆盖率信息得到所述测试用例三级覆盖率信息。
4.根据权利要求1所述深度随机森林程序的测试方法,其特征在于,所述对所述一代测试用例集中的测试用例三级覆盖率进行排序处理,得到排序结果的步骤,具体包括:
对所述一代测试用例集中的测试用例多粒度扫描完全覆盖率信息进行排序,得到多粒度扫描排序结果信息;
对所述一代测试用例集中的测试用例级联森林任一类型覆盖率信息进行排序,得到任一类型覆盖率排序结果信息;
对所述一代测试用例集中的测试用例级联森林全类型测试覆盖率信息进行排序,得到全类型覆盖率排序结果信息;
根据所述多粒度扫描排序结果信息、任一类型覆盖率排序结果信息和全类型覆盖率排序结果信息得到排序结果。
5.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至4任一项所述深度随机森林程序的测试方法的步骤。
6.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至4任一项所述深度随机森林程序的测试方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910343573.7A CN109977030B (zh) | 2019-04-26 | 2019-04-26 | 一种深度随机森林程序的测试方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910343573.7A CN109977030B (zh) | 2019-04-26 | 2019-04-26 | 一种深度随机森林程序的测试方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109977030A CN109977030A (zh) | 2019-07-05 |
CN109977030B true CN109977030B (zh) | 2022-04-19 |
Family
ID=67086537
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910343573.7A Active CN109977030B (zh) | 2019-04-26 | 2019-04-26 | 一种深度随机森林程序的测试方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109977030B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111061640B (zh) * | 2019-12-18 | 2023-02-17 | 电信科学技术第十研究所有限公司 | 一种软件可靠性测试用例筛选方法及系统 |
CN112597009B (zh) * | 2020-12-15 | 2024-04-02 | 北京时代民芯科技有限公司 | 一种基于覆盖率排序的FPGA内嵌PCIExpressIP核量产测试优化方法 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0424314D0 (en) * | 2003-11-04 | 2004-12-01 | Tayvin 306 Ltd | Wireless network application testing |
CN102176200A (zh) * | 2009-09-25 | 2011-09-07 | 南京航空航天大学 | 一种软件测试用例自动生成方法 |
CN102323906A (zh) * | 2011-09-08 | 2012-01-18 | 哈尔滨工程大学 | 一种基于遗传算法的mc/dc测试数据自动生成方法 |
CN102436417A (zh) * | 2011-09-28 | 2012-05-02 | 于秀山 | 代码与功能覆盖映射系统及其覆盖映射方法 |
CN102831479A (zh) * | 2012-07-29 | 2012-12-19 | 江苏大学 | Nsga-ii多目标优化搜索方法 |
CN103473171A (zh) * | 2013-08-28 | 2013-12-25 | 北京信息科技大学 | 一种基于函数调用路径的覆盖率动态跟踪方法及装置 |
CN106095684A (zh) * | 2016-06-17 | 2016-11-09 | 北京大学 | 一种预测性变异测试方法 |
CN107577603A (zh) * | 2017-08-31 | 2018-01-12 | 中国科学院软件研究所 | 一种基于测试用例构建决策树的程序条件语句自动化修复系统及方法 |
CN108416219A (zh) * | 2018-03-18 | 2018-08-17 | 西安电子科技大学 | 一种Android二进制文件漏洞检测方法及系统 |
CN108446214A (zh) * | 2018-01-31 | 2018-08-24 | 浙江理工大学 | 基于dbn的测试用例进化生成方法 |
CN108647146A (zh) * | 2018-05-11 | 2018-10-12 | 北京信息科技大学 | 基于修正条件判定组合覆盖的测试用例生成方法 |
CN108804304A (zh) * | 2017-05-05 | 2018-11-13 | 北京京东尚科信息技术有限公司 | 测试用例生成方法及装置、存储介质、电子设备 |
CN109492593A (zh) * | 2018-11-16 | 2019-03-19 | 西安电子科技大学 | 基于主成分分析网络和空间坐标的高光谱图像分类方法 |
-
2019
- 2019-04-26 CN CN201910343573.7A patent/CN109977030B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0424314D0 (en) * | 2003-11-04 | 2004-12-01 | Tayvin 306 Ltd | Wireless network application testing |
CN102176200A (zh) * | 2009-09-25 | 2011-09-07 | 南京航空航天大学 | 一种软件测试用例自动生成方法 |
CN102323906A (zh) * | 2011-09-08 | 2012-01-18 | 哈尔滨工程大学 | 一种基于遗传算法的mc/dc测试数据自动生成方法 |
CN102436417A (zh) * | 2011-09-28 | 2012-05-02 | 于秀山 | 代码与功能覆盖映射系统及其覆盖映射方法 |
CN102831479A (zh) * | 2012-07-29 | 2012-12-19 | 江苏大学 | Nsga-ii多目标优化搜索方法 |
CN103473171A (zh) * | 2013-08-28 | 2013-12-25 | 北京信息科技大学 | 一种基于函数调用路径的覆盖率动态跟踪方法及装置 |
CN106095684A (zh) * | 2016-06-17 | 2016-11-09 | 北京大学 | 一种预测性变异测试方法 |
CN108804304A (zh) * | 2017-05-05 | 2018-11-13 | 北京京东尚科信息技术有限公司 | 测试用例生成方法及装置、存储介质、电子设备 |
CN107577603A (zh) * | 2017-08-31 | 2018-01-12 | 中国科学院软件研究所 | 一种基于测试用例构建决策树的程序条件语句自动化修复系统及方法 |
CN108446214A (zh) * | 2018-01-31 | 2018-08-24 | 浙江理工大学 | 基于dbn的测试用例进化生成方法 |
CN108416219A (zh) * | 2018-03-18 | 2018-08-17 | 西安电子科技大学 | 一种Android二进制文件漏洞检测方法及系统 |
CN108647146A (zh) * | 2018-05-11 | 2018-10-12 | 北京信息科技大学 | 基于修正条件判定组合覆盖的测试用例生成方法 |
CN109492593A (zh) * | 2018-11-16 | 2019-03-19 | 西安电子科技大学 | 基于主成分分析网络和空间坐标的高光谱图像分类方法 |
Non-Patent Citations (5)
Title |
---|
DeepGauge: multigranularity testing criteria for deep learning systems;L. Ma, F. Xu, F. Zhang, J. Sun, M. Xue, B. Li, et al;《In Proceedings of the 33rd ACM/IEEE International Conference on Automated Software Engineering》;20180903;全文 * |
Deep-Hunter: A Coverage-Guided Fuzz Testing Framework for Deep Neural Networks;X. Xie, L. Ma, F. Juefei-Xu, M. Xue, H. Chen, Y. Liu, et al;《https://arxiv.org/abs/1809.01266》;20181116;全文 * |
Deepmutation: Mutation testing of deep learning systems;L. Ma, F. Zhang, J. Sun, M. Xue, B. Li, F. Juefei-Xu, C. Xie, L.;《The 29th IEEE International Symposium on Software Reliability Engineering (ISSRE)》;20181119;全文 * |
一种变异真值表故障模型的神经网络测试生成算法;戴金玲 许爱强;《电子设计工程》;20171031(第201719期);全文 * |
基于输出域的测试用例自动生成方法研究;尤枫 赵瑞莲 吕珊珊;《计算机研究与发展》;20160331(第201603期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109977030A (zh) | 2019-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3819827A1 (en) | Machine learning device and method | |
US20180276105A1 (en) | Active learning source code review framework | |
US20190205762A1 (en) | Method for topological optimization of graph-based models | |
CN109977030B (zh) | 一种深度随机森林程序的测试方法及设备 | |
CN112668809B (zh) | 建立自闭症儿童康复效果预测模型的方法 | |
CN112699045A (zh) | 一种基于多种群遗传算法的软件测试用例生成方法 | |
CN111641608A (zh) | 异常用户识别方法、装置、电子设备及存储介质 | |
CN111832949A (zh) | 一种装备作战试验鉴定指标体系构建方法 | |
JP2018190127A (ja) | 判定装置、分析システム、判定方法および判定プログラム | |
CN111352830B (zh) | 基于语句占优关系的变异测试数据进化生成方法 | |
CN114185800A (zh) | 基于遗传算法的测试用例生成方法、系统、设备及介质 | |
Berti et al. | Central limit theorems for an Indian buffet model with random weights | |
Huang et al. | Harnessing deep learning for population genetic inference | |
JP2009175925A (ja) | 照合パラメータ最適化装置、最適化方法および最適化制御プログラム | |
CN113642226A (zh) | 基于多目标进化算法的公平机器学习模型的训练方法 | |
CN113743461B (zh) | 无人机集群健康度评估方法及装置 | |
JP7468088B2 (ja) | 画像処理システム、及び画像処理プログラム | |
CN110162704B (zh) | 基于多因子遗传算法的多规模关键用户提取方法 | |
CN112466398A (zh) | 斑马鱼模型评价人基因功能可行性的判断方法及装置 | |
US20220222544A1 (en) | Analysis device, analysis method, and analysis program | |
CN111160662A (zh) | 一种风险预测方法、电子设备及存储介质 | |
Rodríguez et al. | Evolutionary artificial neural network for success forecast in software process improvement | |
CN117709205B (zh) | 航空发动机剩余使用寿命预测方法、装置、设备以及介质 | |
JP7314711B2 (ja) | 画像処理システム、及び画像処理プログラム | |
CN117494119B (zh) | 一种基于群智能优化算法的模型构建方法及装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |