CN110209566A - 一种对软件的测试方法及装置 - Google Patents
一种对软件的测试方法及装置 Download PDFInfo
- Publication number
- CN110209566A CN110209566A CN201810307095.XA CN201810307095A CN110209566A CN 110209566 A CN110209566 A CN 110209566A CN 201810307095 A CN201810307095 A CN 201810307095A CN 110209566 A CN110209566 A CN 110209566A
- Authority
- CN
- China
- Prior art keywords
- parameter
- test
- value
- underlying
- input
- 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.)
- Granted
Links
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/3688—Test management for test execution, e.g. scheduling of test suites
-
- 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/3696—Methods or tools to render software testable
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)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例公开了一种对软件的测试方法及装置,其中方法包括:获取用于对待测试软件进行测试的测试参数,每一个所述测试参数中包括至少一个基础参数值;根据所述测试参数生成输入参数;将所述输入参数输入到所述待测试软件,对所述待测试软件进行测试。采用本发明实施例,在一定程度上可以避免无效输入参数输入到待测试软件中,提高了软件测试的执行效率。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种对软件的测试方法及装置。
背景技术
软件测试在软件开发周期中占据不可分割的地位,可以用来促进鉴定软件的正确性、安全性和质量。换句话说,软件测试是一种实际输出与预期输出之间的审核或者比较的过程,软件测试根据测试用例分析预期结果,接着将测试用例作为测试输入,得到测试结果,进一步的根据校验规则将预期结果和测试结果对比审核,分析该软件是否达到正确性、安全性以及质量标准。
由此可知,测试用例中包括的各个测试参数作为软件测试不可缺少的一部分,其生成方法成为软件测试中重点关注的问题。
发明内容
本发明实施例提供了一种对软件的测试方法及装置,可提升软件测试的执行效率。
一方面,本发明实施例提供了一种对软件的测试方法,包括:
获取用于对待测试软件进行测试的测试参数,每一个所述测试参数中包括至少一个基础参数值;
根据所述测试参数生成输入参数,所述输入参数包括组合参数,所述组合参数包括:根据邻接矩阵在所述测试参数之间进行基础参数值组合计算得到的组合参数值;
将所述输入参数输入到所述待测试软件,对所述待测试软件进行测试;
其中,所述测试参数中的每一个基础参数值被设置了状态类型,所述邻接矩阵是根据所述状态类型生成的用于指示所述测试参数之间的基础参数值是否进行组合的矩阵。
另一方面,本发明实施例提供了一种对软件的测试装置,包括:
获取单元,用于获取用于对待测试软件进行测试的测试参数,每一个所述测试参数中包括至少一个基础参数值;
生成单元,用于根据测试参数生成输入参数,输入参数包括组合参数,组合参数包括:根据邻接矩阵在所述测试参数之间进行基础参数值组合计算得到的组合参数值;
输入单元,用于将输入参数输入到待测试软件中;
测试单元,用于对待测试软件进行测试。
再一方面,本发明实施例还提供了一种智能终端,包括处理器、输入设备、输出设备和存储器,处理器、输入设备、输出设备和存储器互相连接,其中,存储器用于存储计算机程序,计算机程序包括程序指令,处理器被配置用于调用程序指令执行第一方面的对软件的测试方法。
相应地,本发明实施例还提供了一种计算机存储介质,计算机存储介质存储有计算机程序,计算机程序包括程序指令,程序指令被处理器执行时执行第一方面的对软件的测试方法。
本发明实施例在对待测试软件进行测试的过程中,根据对待测试软件进行测试的各个测试参数中的基础参数值的状态类型以及邻接矩阵,生成输入到待测试软件中的输入参数,进一步的利用输入参数对待测试软件进行测试。利用邻接矩阵对各个测试参数中的基础参数值的组合进行控制,在一定程度上避免了无效输入参数输入到待测试软件中,提高了软件测试的执行效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本发明实施例提供的一种测试流程示意图;
图1b是本发明实施例提供的另一种测试流程示意图;
图2是本发明实施例提供的一种对软件的测试方法的流程示意图;
图3是本发明实施例提供的另一种对软件的测试方法的流程示意图;
图4a是本发明实施例提供的一种第一组合参数生成方法的流程示意图;
图4b是本发明实施例提供的另一种第一组合参数生成方法的流程示意图;
图5是本发明实施例提供的一种第二组合参数生成方法的流程示意图;
图6本发明实施例提供的又一种对软件的测试方法的的流程示意图;
图7是本发明实施例提供的一种对软件的测试装置的结构示意图;
图8是本发明实施例提供的一种智能终端的结构示意图。
具体实施方式
本发明实施例,对于需要测试的待测试软件,可以通过引入各种各样的测试参数对待测试软件进行测试,在测试过程中,输入到待测试软件中的输入参数是根据各个测试参数中基础参数值生成的,例如,对于某个即时通讯应用软件,可以包括关于账号的测试参数、关于密码的测试参数等等,而关于账号的测试参数则可能有多个具体数字账号、具体字符账号等等基础参数值,同理,关于密码的测试参数则可能包括多组数字构成的多组基础参数值。对于测试参数中的基础参数值,可以通过相互组合的方式来确定出组合参数,在本发明实施例中,组合参数是根据各个测试参数中基础参数值和邻接矩阵来确定组合的。该邻接矩阵是用来表示各个基础参数之间的相邻关系的,基于邻接矩阵的指示,可以将不同测试参数的基础参数值进行组合,邻接矩阵可以基于不同的待测试软件以及测试参数之间的关系来人工设置。在一个实施例中,可以依据测试参数中基础参数值生成具有有向图特性的邻近矩阵,这样可以基于各个测试参数的基础参数值自动完成邻近矩阵的生成。
在对软件测试的研究中发现,可以将软件测试的测试用例按照逻辑划分为很多测试步骤,依据测试步骤可以画出测试流程图如图1a和图1b所示。测试流程图是一个具有特殊顶点S的有向图G。在正常情况下,从S到G的其余每个顶点都有一条有向通路,即G的每个顶点都是从S出发可达的,若存在不通,则认为该用例测试失败。软件测试中各个测试用例步骤可以抽象为一些列的输入、输出以及校验项,根据输入以及预定规则可以推导得出对应的校验规则从而形成不同的测试用例,即对于一个测试步骤来说,每个输入参数对应待测试软件的一个输出结果,根据该输出结果可以推导出一个校验规则。简单来说,软件测试的过程就是将每个测试步骤中的输入参数输入到待测试软件中,根据各个测试步骤中输入参数的状态,基于推导规则推测待测试软件的输出结果,根据该输出结果确定出校验规则,进而利用校验规则验证在各个测试步骤输入当前输入参数状态的情况下对待测试软件的测试是否成功。
由此可知,生成一个测试用例必不可少的步骤是确定测试用例的输入,而对于一个测试用例步骤来说,可以将输入抽象成各个输入参数,因此对于软件测试来说,确定输入参数是软件测试的关键。本发明实施例提出的对软件的测试方法利用了有向图的收敛特性,对生成输入参数的过程加以控制,使得输入参数的数量急剧收敛,且同时减少无效输入参数的生成,可以提高软件测试的执行效率。
举例来说,假设在一个测试步骤中测试参数的状态分为两种,合法状态Y和非法状态N,每种状态下包括多个基础参数值,推导规则:只有当该步骤中所有测试参数的基础参数值都为Y状态时,校验规则才为Y,否则校验规则为N,也就是说,如果该测试步骤的输入参数中包括的基础参数值都是处于Y状态的基础参数值,则校验规则为Y;如果该测试步骤的输入参数中包括了一个处于N状态的基础参数值,则校验规则就为N。假设该测试步骤中包括两个测试参数,分别为a和b,测试参数a中包括处于Y状态的基础参数值1和处于N状态的基础参数值0,b中包括处于Y状态的基础参数值3和处于N状态的基础参数值8。若采用传统叉乘方法得到该测试步骤的输入参数,即将该测试步骤中所有处于Y状态和处于N状态的测试参数的基础参数值进行叉乘,会得到输入参数中包括(1,3)、(1,8)、(0,3)和(0,8),依据上述推导规则中:只要保证输入参数中有一个处于N状态的基础参数值就可以满足校验规则为N,在本例中与输入参数(0,3)、(0,8)以及(1,8)关联的校验规则均为N,因此输入参数(0,3)、(0,8)以及(1,8)中有两个参数可以视为多余或者无效的输入参数。若采用本发明实施中的叉乘方法,得到的输入参数为(1,3)和(0,3),或者(1,3)和(1,8),或者(1,3)和(0,8),保证各个测试参数中只有一个处于N状态的基础参数值参与到叉乘中,避免了无效输入参数的生成。
请参见图2是本发明实施例的一种对软件的测试方法的流程示意图,在软件测试的每一个测试步骤中,可能包括多个测试参数,每个测试参数中包括的基础参数值可能处于不同状态类型。比如在大数据、云服务等大型软件测试中,一个系统对外提供了很多功能,而每个功能可能需要调用若干个接口组合完成,每个接口参数可能有几十个,且几十个参数处于不同的状态类型。在一个实施例中,在对待测试软件进行测试之前首先要S201获取用于对待测试软件进行测试的测试参数,其中,测试参数的数量至少为一个,且每个测试参数中包括至少一个基础参数值,每个基础参数值被设置了状态类型。测试参数可以指对该测试步骤的功能有影响的参数,比如在测试某社交软件是否能够正常登陆时,测试参数可以指社交软件的账号或者密码等。在获取到测试参数后,可S202根据该测试参数生成输入参数,该输入参数中可包括组合参数,由于测试参数中各个基础参数值被设置了状态类型,因此根据测试参数得到的输入参数也具有状态类型。在一个实施例中,对待测试软件的输入参数可能是两个或者多个测试参数组成的组合参数,该组合参数是根据各个测试参数之间生成的邻接矩阵得到的,组合参数中包括的组合参数值在测试参数之间进行基础参数值组合计算得到的。简单来说,如果上述S201步骤中获取到的测试参数数量为一个,则可以将该测试参数中包括的基础参数值作为输入参数;如果上述获取到的测试参数为两个或者多个,则输入参数可以是两个或者多个测试参数中的基础参数值按照一定规则进行组合得到的组合参数。举例来说,在对某社交软件进行测试的某个测试步骤中,如果通过步骤S201获取到对该社交软件进行测试的测试参数为账号,且账号中包括的基础参数值为123456和987654,则该测试步骤的输入参数可以为123456或者987654;如果通过步骤S201获取到的对该社交软件进行测试的测试参数为账号和密码,且假设密码中包括的基础参数值为tx8866,则该测试步骤的输入参数可以为123456和tx8866的组合参数,也可以是987654和tx8866的组合参数。
在S202得到输入参数之后,S203将输入参数输入到待测试软件中,对待测试软件进行测试。在一个实施例中,如图3所示为一种将输入参数输入到待测试软件中,对待测试软件进行测试的方法,图3所示的对待测试软件进行测试可包括:S301:根据输入参数预估得到测试估计结果数据;S302:确定与测试估计结果数据关联的目标校验规则;S303:将输入参数输入到待测试软件中,得到测试结果数据;S304根据目标校验规则对测试结果数据进行验证,确定在输入参数下对待测试软件的测试是否成功。也就是说,先根据输入参数预测该待测试软件输出结果即测试估计结果数据,然后选择与该测试估计结果数据相关联的校验规则作为目标校验规则,进一步的将输入参数输入到待测试软件中,得到测试结果数据,利用上述获得的目标校验规则对该测试结果数据进行验证,如果验证通过则说明在当前输入参数下对待测试软件的测试成功,如果验证未通过则说明在当前输入参数下对待测试软件的测试失败。举例来说,在对某社交软件的测试中通过步骤S201和S202之后获取到输入参数为社交软件账号,根据该账号推测测试估计结果数据应该是社交软件界面显示输入密码的提示。接着根据该测试估计结果数据得到目标校验规则,即如果社交软件界面显示输入密码的提示,则说明测试成功;如果社交软件界面显示其他提示消息,则说明测试失败。进一步的,将输入参数输入到待测试软件中,得到测试结果数据,如果测试结果数据为“请输入密码”,则说明在当前输入参数下对该社交软件的测试成功。如果测试结果数据为“请输入账号”,则说明在当前输入参数下对该社交软件的测试失败。
在一个实施例中,目标校验规则可以是从多个校验规则中选取的,每一个校验规则被设置了校验类型,确定与测试估计结果数据关联的目标校验规则,可包括:根据输入参数的状态类型,确定目标校验类型;从属于该目标校验类型的校验规则中,选择与测试估计结果数据关联的目标校验规则。也就是说,不同的校验类型下包括多个校验规则,校验类型与输入参数的状态类型有关,可先根据输入参数的状态类型,确定目标校验类型,再根据测试估计结果数据在该校验类型中选择目标校验规则。举例来说,在对某社交软件的测试过程中,假设输入参数包括账号和密码,并且假设输入参数的状态类型包括Y状态类型和N状态类型两种,也即输入参数包括的账号和密码分别有Y和N两种状态类型。假设在某次测试过程中输入参数的状态类型为Y状态类型,即账号和密码的状态类型都为Y状态类型,则可确定目标校验类型也为Y状态类型,Y状态类型下包括多条校验规则,比如第一校验规则为:如果输入参数包括的账号和密码是匹配的,则在输出“正在登陆”提示消息;第二校验规则为:如果输入参数包括的账号和密码不匹配,则输出“账号或密码不正确”的提示消息。进一步的,从目标校验类型下的多条校验规则中选择与测试估计结果数据关联的目标校验规则:如果测试估计结果数据为“正在登陆”,则可选择第一校验规则作为目标校验规则;如果测试估计结果数据为“账号或密码不正确”,则可选择第二校验规则作为目标校验规则。
在一个实施例中,如果S201获取到的测试参数包括第一测试参数和第二测试参数,在S202根据测试参数生成输入参数之前,对软件的测试方法还包括如图4a所示的步骤:S401:根据确定的第一测试参数中各个基础参数值的状态类型和第二测试参数中各个基础参数值的状态类型,生成第一邻接矩阵;S402根据该第一邻接矩阵对第一测试参数和第二测试参数之间的各个基础参数值进行组合计算,得到第一组合参数。也就是说,如果在某个测试步骤中包括第一测试参数和第二测试参数两个测试参数,在获取到上述第一测试参数和第二测试参数之后,可根据第一测试参数和第二测试参数生成第一邻接矩阵,通过第一邻接矩阵得到第一组合参数,进一步的该第一组合参数可以作为输入参数。
在一个实施例中,所述S401具体可以包括:将第一测试参数中N个基础参数值依次展开,构成一行,并将第二测试参数中M个基础参数值依次展开,构成一列;根据第一测试参数中各个基础参数值的状态类型和第二测试参数中各个基础参数值的状态类型,生成M*N矩阵,该M*N矩阵构成第一邻接矩阵。在该M*N邻接矩阵中,元素值Aij=1或0,其中,当所述第一测试参数中的第j个基础参数值和所述第二测试参数中第i个基础参数值均为第一状态类型时,Aij=1;当第一测试参数中的第j个基础参数值和第二测试参数中第i个基础参数值均为第二状态类型时,Aij=0;当所述第一测试参数中的第j个基础参数值为第二状态类型时,Amj=1,m为1至M中的任意一个数值;当第二测试参数中的第i个基础参数值为第二状态类型时,Ain=1,n为1至N中任意一个数值。
举例来说,假设两个测试参数如表1所示分别为第一测试参数input_a和第二测试参数input_b,第一状态类型为Y,第二状态类型为N。根据第一测试参数和第二测试参数生成一个5*5阶的第一邻接矩阵中如图4b中区域403,区域403所示的第一邻接矩阵中,第一测试参数的第一个基础参数值和第二个测试参数的第二个基础参数值都为Y状态,也即与第2行第1列相关的两个基础参数值均为Y状态,则A21=1;第一测试参数的第4个基础参数值和第二测试参数的第5个基础参数值都为N状态,也即与第5行第4列的两个基础参数值均为N状态,则A54=0;第一测试参数的第4个基础参数值为N状态,则Am4=1,m为1至5中任意一个指,比如在表2中m等于1,也即与第2行第4列相关的两个基础参数值中有一个为Y状态,一个为N状态,则A14=1。或者可以有A24=1或A34=1,本发明实施例只是列举了一种可能的第一邻接矩阵形式,对具体的第一邻接矩阵不做限定。第二测试参数中第5个基础参数值为第二状态类型时,A5n=1,比如表2中n等于1时,也即与第5行第1列相关的两个基础参数值中有一个为Y状态,一个为N状态,则A51=1,或者可以有A52=1或A53=1。
在一个实施例中,在根据第一邻接矩阵进行的组合计算中,所述第一邻接矩阵中元素值为1时,表明所述元素值相关的所述第一测试参数中的基础参数值与所述元素值相关的第二测试参数的基础参数值进行组合;所述邻接矩阵中元素值为0时,表明所述元素值相关的所述第一测试参数中的基础参数值与所述元素值相关的第二测试参数的基础参数值之间不进行组合。也就是说,在第一邻接矩阵中若与某个元素相关的第一测试参数中基础参数值和与该元素相关的第二测试参数中基础参数值需要进行组合,则第一邻接矩阵中该元素值为1,若上述两个基础参数值不需要组合,则在第一邻接矩阵中该元素值为0。
下面通过举例来说明第一邻接矩阵的生成过程以及根据邻接矩阵生成组合参数的过程,如表1中所示假设在一个测试步骤中包括两个测试参数分别为input_a和input_b,input_a中包括5个基础参数值,其中,基础参数值1、2和3为Y状态基础参数值,基础参数值-1和0为N状态基础参数值。同理,input_b中包括5个基础参数值,基础参数值a、b和c为Y状态基础参数值,1和%为N状态基础参数值。根据上述一个实施例中所述的第一邻接矩阵的生成过程可如下:将测试参数input_a中5个基础参数值依次展开,构成一行,并将测试参数input_b中5个基础参数值展开构成一列,形成的表格如图4b中所示;根据测试参数input_a中5个基础参数值的状态类型和测试参数input_b中5个基础参数值的状态类型,再结合组合规则在表格交叉处填写1或0,如果与表格中交叉处相关的input_a中的基础参数值与input_b中的基础参数值需要组合,则在表格交叉处填写1,如果不需要组合,则在交叉处填写0,完成1和0填写之后形成一个5*5阶矩阵如图4b中区域403,该矩阵即第一邻接矩阵。
其中,组合规则是根据推导规则推导得到的,假设在一个实施例中推导规则为当测试步骤中输入参数中包括的基础参数值都为Y时,校验规则为Y,否则为N,则根据该推导规则可知组合规则可为在组合中状态类型为N的基础参数值只能出现一次,状态类型为Y的基础参数值全部出现。
表1测试参数
测试参数 | 状态类型Y | 状态类型N |
input_a | 1,2,3 | -1,0 |
input_b | a,b,c | 1,% |
按照该组合规则,第一邻接矩阵中各个元素值计算过程:在图4b的区域4031处,与区域4031相关的测试参数input_a的基础参数值为1,与区域4031相关的测试参数input_b的基础参数值为a,基础参数值1在input_a中处于Y状态,基础参数值a在测试参数input_b中也处于Y状态,根据组合规则为了满足组合参数中为Y状态的基础参数值组合全部出现,则上述的两个基础参数值需要进行组合,因此在区域4031处填入1;在图4b的区域4032和区域4033处,与区域4032相关的两个基础参数值分别为处于N状态的input_a中基础参数值-1和处于Y状态的input_b中基础参数值为a的基础参数值,与区域4033相关的两个基础参数值分别为处于N状态的input_a中基础参数值-1和处于Y状态的input_b中基础参数值b,根据组合规则为了满足组合参数中为N状态的基础参数值只出现一次,也就是状态为N的基础参数值-1只能出现一次,因此在区域4032和区域4033只能有一处填入1,即(-1,a)和(-1,b)两种组合只有一种能在组合参数中出现,在本实施例中假设组合(-1,a)出现,所以在图4b的区域4032填入1,在区域4033填入0。依照上述列举的填写规则完成整个图4b所示的表格中交叉处内容的填写,生成一个5*5阶第一邻接矩阵。本例只是列举了一种邻接矩阵中元素值生成的方法,还可以有其他方式确定第一邻接矩阵中各个元素值,本实施例不做限定。
在一个实施例中,S201获得到的测试参数还包括第三测试参数,则在上一个实施例中,生成第一邻接矩阵得到第一组合参数之后,根据测试参数生成输入参数之前,对软件的测试方法还包括:S501:确定第一组合参数中各个组合参数值的状态类型;S502:根据第三测试参数中各个基础参数值的状态类型和组合参数中各个基础参数值的状态类型,生成第二邻接矩阵;S503:根据第二邻接矩阵生成第二组合参数。也就是说,如果S201步骤中获取到的测试参数包括两个或者两个以上测试参数,获取组合参数的步骤可以为首先从多个测试参数中任意选取两个测试参数,根据选取的两个测试参数中的各个基础参数值的状态生成第一邻接矩阵,进而根据第一邻接矩阵生成第一组合参数;然后,从剩下的多个测试参数中选取一个测试参数与该第一组合参数生成第二邻接矩阵,进而得到第二组合参数,按照此种方法最后完成一个测试步骤中所有测试参数的组合后,获取最终的组合参数。
在一个实施例中,所述S501包括:若第一组合参数中,目标组合参数值是由处于第一状态类型的第一测试参数中基础参数值和处于第一状态类型的所述第二测试参数中基础参数值进行组合计算得到的,该目标组合参数值为第一状态类型;若第一组合参数中,目标参数值是由处于第一状态类型的第一测试参数中基础参数值和处于第二状态类型的第二测试参数中基础参数值进行组合计算得到的,该目标组合参数值为第二状态类型;若第一组合参数中,目标参数值是由处于第二状态类型的第一测试参数中基础参数值进行组合计算得到的,该目标组合参数值为第二状态类型。
举例来说,基于上述例子,假设一个测试步骤中除了包括测试参数input_a和input_b,还包括测试参数input_c,如表2所示,在上述例子中利用测试参数input_a中各个基础参数值的状态类型和input_b中各个基础参数值的状态类型生成第一邻接矩阵,得到第一组合参数后,确定组合参数中各个组合参数值的状态类型,然后根据组合参数中各个组合参数值的状态类型和测试参数input_c生成第二邻接矩阵如表3,具体步骤与第一邻接矩阵生成的相同,可参见上例中第一邻接矩阵生成的描述,在此不再赘述。由第二邻接矩阵确定第二组合参数,将第二组合参数作为本例中测试步骤的最终组合参数。一个实施例中,可以通过判断第一组合参数中各个组合参数值是由input_a中哪个状态类型的基础参数值和input_b中哪个状态类型的基础参数值进行组合计算得到的,确定第一组合参数值的状态类型。比如,根据图4b区域403的第一邻接矩阵可知第一组合参数包括组合参数值(1,a)和(-1,a)等,组合参数值(1,a)是由测试参数input_a中处于Y状态的基础参数值1和测试参数input_b中处于Y状态的基础参数值a进行组合计算得到的,所以组合参数值(1,a)状态类型为Y;组合参数值(-1,a)是由测试参数input_a中处于N状态的基础参数值-1和测试参数input_b中处于Y状态的基础参数值a进行组合计算得到的,所以组合参数值(-1,a)状态类型为N。
表2测试参数
表3第二邻接矩阵生成方法
在一个实施例中,一种对软件的测试方法流程可以如图6所示,包括:S601:根据预设规则设定测试参数映射关系函数;S602:根据该关系函数以及有向图算法生成的邻接矩阵;S603:根据邻接矩阵生成输入参数,形成测试用例;S604:将测试用例输入到带测试软件中,对待测试软件进行测试;S605:验证在当前输入参数下对待测试软件的测试是否成功。一个实施例中,根据预设规则设定测试参数映射关系函数,可以理解为将软件测试流程分成多个测试步骤,每个测试步骤中包括多个测试参数,测试参数与测试步骤之间形成映射关系。比如测试步骤1包括测试参数a,测试参数b和测试参数c,那么测试步骤1和测试参数a,b,c为关系函数。其中,根据邻接矩阵生成输入参数以及对待测试软件进行测试的可行的实施方法和步骤已经在前面具体面熟,在本实施例中不再赘述。本实施例对软件的测试方法可以通过对用例生成过程加以控制,避免了无效用例的生成,提高了软件测试的执行效率和命中率。
本发明实施例在对待测试软件进行测试的过程中,根据对待测试软件进行测试的各个测试参数中的基础参数值的状态类型以及邻接矩阵,生成输入到待测试软件中的输入参数,进一步的利用输入参数对待测试软件进行测试。利用邻接矩阵对各个测试参数中的基础参数值的组合进行控制,在一定程度上避免了无效输入参数输入到待测试软件中,提高了软件测试的执行效率。
基于上述方法实施例的描述,本发明实施例还提供了一种对软件的测试装置的结构示意图,请参见图7。如图7所示,本发明实施例中的对软件的测试装置可包括:
获取单元701,用于获取用于对待测试软件进行测试的测试参数,每一个所述测试参数中包括至少一个基础参数值;
生成单元702,用于根据所述测试参数生成输入参数,所述输入参数包括组合参数,所述组合参数包括:根据邻接矩阵在所述测试参数之间进行基础参数值组合计算得到的组合参数值;
输入单元703,用于将所述输入参数输入到所述待测试软件中;
测试单元704,用于对所述待测试软件进行测试;
其中,所述测试参数中的每一个基础参数值被设置了状态类型,所述邻接矩阵是根据所述测试参数的状态类型生成的、用于指示所述测试参数之间的基础参数值是否进行组合的矩阵。
在一个实施例中,测试单元704具体用于:根据所述输入参数预估得到测试估计结果数据;确定与所述测试估计结果数据关联的目标校验规则;将所述输入参数输入到所述待测试软件,得到测试结果数据;根据所述目标校验规则对所述测试结果数据进行验证,确定在所述输入参数下对所述待测试软件的测试是否成功。
在一个实施例中,所述目标校验规则是从多个校验规则中选取的,每一个校验规则被设置了校验类型,确定与所述测试估计结果数据关联的目标校验规则具体实施方式可以是:根据所述输入参数的状态类型,确定目标校验类型;从属于所述目标校验类型的校验规则中,选择与所述测试估计结果数据关联的目标校验规则。
在一个实施例中,获取单元701获取到的测试参数包括第一测试参数和第二测试参数,所述对软件的测试装置还包括处理单元705。生成单元702,还用于根据确定的所述第一测试参数中各个基础参数值的状态类型和所述第二测试参数中各个基础参数值的状态类型,生成第一邻接矩阵;处理单元705,用于根据所述第一邻接矩阵对所述第一测试参数和所述第二测试参数之间的各个基础参数值进行组合计算,得到第一组合参数。
在一个实施例中,生成单元702用于根据确定的所述第一测试参数中各个基础参数值的状态类型和所述第二测试参数中各个基础参数值的状态类型,生成第一邻接矩阵的具体实施方式可以是:将所述第一测试参数中N个基础参数值依次展开,构成一行,并将所述第二测试参数中M个基础参数值依次展开,构成一列;根据所述第一测试参数中各个基础参数值的状态类型和所述第二测试参数中各个基础参数值的状态类型,生成M*N矩阵,该M*N矩阵构成所述第一邻接矩阵;在所述M*N矩阵中,元素值Aij=1或0,其中,当所述第一测试参数中的第j个基础参数值和所述第二测试参数中第i个基础参数值均为第一状态类型时,Aij=1;当第一测试参数中的第j个基础参数值和第二测试参数中第i个基础参数值均为第二状态类型时,Aij=0;当所述第一测试参数中的第j个基础参数值为第二状态类型时,Ami=1,m为1至M中的任意一个数值;当第二测试参数中的第i个基础参数值为第二状态类型时,Ain=1,n为1至N中任意一个数值。
在一个实施例中,在根据第一邻接矩阵进行的组合计算中,所述第一邻接矩阵中元素值为1时,表明所述元素值相关的所述第一测试参数中的基础参数值、与所述元素值相关的第二测试参数的基础参数值进行组合;所述邻接矩阵中元素值为0时,表明所述元素值相关的所述第一测试参数中的基础参数值、与所述元素值相关的第二测试参数的基础参数值之间不进行组合。
在一个实施例中,获取单元701获取到的测试参数还包括第三参数,对软件的测试装置还包括确定单元706。所述确定单元706,用于确定第一组合参数中各个组合参数值的状态类型;所述生成单元702,还用于根据所述第三测试参数中各个基础参数值的状态类型和所述组合参数中各个基础参数值的状态类型,生成第二邻接矩阵;所述生成单元702,还用于根据所述第二邻接矩阵生成第二组合参数。
在一个实施例中,所述确定单元706具体用于:若所述第一组合参数中,目标组合参数值是由处于第一状态类型的所述第一测试参数中基础参数值、和处于第一状态类型的所述第二测试参数中基础参数值进行组合计算得到,所述目标组合参数值为所述第一状态类型;若所述第一组合参数中,目标参数值是由处于第一状态类型的所述第一次测试参数中基础参数值、和处于第二状态类型的所述第二测试参数中基础参数值进行组合计算得到的,所述目标组合参数值为第二状态类型;若所述第一组合参数中,所述目标参数值是由处于第二状态类型的所述第一测试参数中基础参数值、和处于第一状态类型的所述第二测试参数中基础参数值进行组合计算得到的,所述目标组合参数值为第二状态类型。
本发明实施例中可以通过生成单元702将获取单元702获取到的测试参数生成输入参数,通过输入单元703将所述输入参数输入到对测试软件中,利用测试单元704对所述待测试软件进行测试,可以在一定程度上避免无效输入参数输入到待测试软件中,从而提高了软件测试的执行效率。
请参见图8,是本发明另一实施例提供的一种智能终端的结构示意图。如图8所示的本实施例中的智能终端可以包括:一个或多个处理器801;一个或多个输入设备802,一个或多个输出设备803和存储器804。上述处理器801、输入设备802、输出设备803和存储器804通过总线805连接。存储器804用于存储计算机程序,所述计算机程序包括程序指令,处理器801用于执行所述存储器804存储的程序指令。其中,处理器801被配置用于调用程序指令执行:
获取用于对待测试软件进行测试的测试参数,每一个所述测试参数中包括至少一个基础参数值;
根据所述测试参数生成输入参数,所述输入参数包括组合参数,所述组合参数包括:根据邻接矩阵在所述测试参数之间进行基础参数值组合计算得到的组合参数值;
将所述输入参数输入到所述待测试软件,对所述待测试软件进行测试;
其中,所述测试参数中的每一个基础参数值被设置了状态类型,所述邻接矩阵是根据所述测试参数的状态类型生成的、用于指示所述测试参数之间的基础参数值是否进行组合的矩阵。
在一个实施例中,将所述输入参数输入到所述待测试软件,对所述待测试软件进行测试,处理器801被配置用于调用程序指令具体执行:根据所述输入参数预估得到测试估计结果数据;确定与所述测试估计结果数据关联的目标校验规则;将所述输入参数输入到所述待测试软件,得到测试结果数据;根据所述目标校验规则对所述测试结果数据进行验证,确定在所述输入参数下对所述待测试软件的测试是否成功。
在一个实施例中,所述目标校验规则是从多个校验规则中选取的,每一个校验规则被设置了校验类型,所述确定与所述测试估计结果数据关联的目标校验规则,处理器801被配置用于调用程序指令具体执行:根据所述输入参数的状态类型,确定目标校验类型;从属于所述目标校验类型的校验规则中,选择与所述测试估计结果数据关联的目标校验规则。
在一个实施例中,获取的测试参数包括第一测试参数和第二测试参数,所述根据所述测试参数生成输入参数之前,处理器801被配置用于调用程序指令还执行:根据确定的所述第一测试参数中各个基础参数值的状态类型和所述第二测试参数中各个基础参数值的状态类型,生成第一邻接矩阵;根据所述第一邻接矩阵对所述第一测试参数和所述第二测试参数之间的各个基础参数值进行组合计算,得到第一组合参数。
在一个实施例中,所述根据确定的所述第一测试参数中各个基础参数值的状态类型和所述第二测试参数中各个基础参数值的状态类型,生成第一邻接矩阵,处理器801被配置用于调用程序指令具体执行:将所述第一测试参数中N个基础参数值依次展开,构成一行,并将所述第二测试参数中M个基础参数值依次展开,构成一列;根据所述第一测试参数中各个基础参数值的状态类型和所述第二测试参数中各个基础参数值的状态类型,生成M*N矩阵,该M*N矩阵构成所述第一邻接矩阵;在所述M*N矩阵中,元素值Aij=1或0,其中,当所述第一测试参数中的第j个基础参数值和所述第二测试参数中第i个基础参数值均为第一状态类型时,Aij=1;当第一测试参数中的第j个基础参数值和第二测试参数中第i个基础参数值均为第二状态类型时,Aij=0;当所述第一测试参数中的第j个基础参数值为第二状态类型时,Ami=1,m为1至M中的任意一个数值;当第二测试参数中的第i个基础参数值为第二状态类型时,Ain=1,n为1至N中任意一个数值。
在一个实施例中,处理器801被配置用于调用程序指令还执行:在根据第一邻接矩阵进行的组合计算中,所述第一邻接矩阵中元素值为1时,表明所述元素值相关的所述第一测试参数中的基础参数值、与所述元素值相关的第二测试参数的基础参数值进行组合;所述邻接矩阵中元素值为0时,表明所述元素值相关的所述第一测试参数中的基础参数值、与所述元素值相关的第二测试参数的基础参数值之间不进行组合。
在一个实施例中,所述测试参数还包括第三测试参数,所述根据所述测试参数生成输入参数之前,处理器801被配置用于调用程序指令还执行:确定所述第一组合参数中各个组合参数值的状态类型;根据所述第三测试参数中各个基础参数值的状态类型和所述组合参数中各个基础参数值的状态类型,生成第二邻接矩阵;根据所述第二邻接矩阵生成第二组合参数。
在一个实施例中,所述确定所述第一组合参数中各个基础参数值的状态类型,处理器801被配置用于调用程序指令具体执行:若所述第一组合参数中,目标组合参数值是由处于第一状态类型的所述第一测试参数中基础参数值、和处于第一状态类型的所述第二测试参数中基础参数值进行组合计算得到,所述目标组合参数值为所述第一状态类型;若所述第一组合参数中,目标参数值是由处于第一状态类型的所述第一次测试参数中基础参数值、和处于第二状态类型的所述第二测试参数中基础参数值进行组合计算得到的,所述目标组合参数值为第二状态类型;若所述第一组合参数中,所述目标参数值是由处于第二状态类型的所述第一测试参数中基础参数值、和处于第一状态类型的所述第二测试参数中基础参数值进行组合计算得到的,所述目标组合参数值为第二状态类型。
该处理器801可以是中央处理单元(Central Processing Unit,CPU),该处理器还可以是其他通用处理器,即微处理器或者任何常规的处理器。该输入设备802可以包括触控板、指纹采传感器、麦克风等,该输出设备803可以包括显示器、扬声器等。该存储器804可以包括只读存储器和随机存取存储器,并向处理器801提供指令和数据。因此,在此对于处理器801和存储器804不作限定。
需要说明的是,上述描述的终端和单元的具体工作过程,可以参考前述各个实施例中的相关描述,在此不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明的部分实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。
Claims (10)
1.一种对软件的测试方法,其特征在于,包括:
获取用于对待测试软件进行测试的测试参数,每一个所述测试参数中包括至少一个基础参数值;
根据所述测试参数生成输入参数,所述输入参数包括组合参数,所述组合参数包括:根据邻接矩阵在所述测试参数之间进行基础参数值组合计算得到的组合参数值;
将所述输入参数输入到所述待测试软件,对所述待测试软件进行测试;
其中,所述测试参数中的每一个基础参数值被设置了状态类型,所述邻接矩阵是根据所述测试参数的状态类型生成的、用于指示所述测试参数之间的基础参数值是否进行组合的矩阵。
2.如权利要求1所述的方法,其特征在于,所述将所述输入参数输入到所述待测试软件,对所述待测试软件进行测试,包括:
根据所述输入参数预估得到测试估计结果数据;
确定与所述测试估计结果数据关联的目标校验规则;
将所述输入参数输入到所述待测试软件,得到测试结果数据;
根据所述目标校验规则对所述测试结果数据进行验证,确定在所述输入参数下对所述待测试软件的测试是否成功。
3.如权利要求2所述的方法,其特征在于,所述目标校验规则是从多个校验规则中选取的,每一个校验规则被设置了校验类型,所述确定与所述测试估计结果数据关联的目标校验规则,包括:
根据所述输入参数的状态类型,确定目标校验类型;
从属于所述目标校验类型的校验规则中,选择与所述测试估计结果数据关联的目标校验规则。
4.如权利要求1所述的方法,其特征在于,获取的测试参数包括第一测试参数和第二测试参数,所述根据所述测试参数生成输入参数之前,所述方法还包括:
根据确定的所述第一测试参数中各个基础参数值的状态类型和所述第二测试参数中各个基础参数值的状态类型,生成第一邻接矩阵;
根据所述第一邻接矩阵对所述第一测试参数和所述第二测试参数之间的各个基础参数值进行组合计算,得到第一组合参数。
5.如权利要求4所述的方法,其特征在于,所述根据确定的所述第一测试参数中各个基础参数值的状态类型和所述第二测试参数中各个基础参数值的状态类型,生成第一邻接矩阵,包括:
将所述第一测试参数中N个基础参数值依次展开,构成一行,并将所述第二测试参数中M个基础参数值依次展开,构成一列;
根据所述第一测试参数中各个基础参数值的状态类型和所述第二测试参数中各个基础参数值的状态类型,生成M*N矩阵,该M*N矩阵构成所述第一邻接矩阵;
在所述M*N矩阵中,元素值Aij=1或0,其中,当所述第一测试参数中的第j个基础参数值和所述第二测试参数中第i个基础参数值均为第一状态类型时,Aij=1;当第一测试参数中的第j个基础参数值和第二测试参数中第i个基础参数值均为第二状态类型时,Aij=0;当所述第一测试参数中的第j个基础参数值为第二状态类型时,Ami=1,m为1至M中的任意一个数值;当第二测试参数中的第i个基础参数值为第二状态类型时,Ain=1,n为1至N中任意一个数值。
6.如权利要求5所述的方法,其特征在于,所述方法还包括:
在根据第一邻接矩阵进行的组合计算中,所述第一邻接矩阵中元素值为1时,表明所述元素值相关的所述第一测试参数中的基础参数值、与所述元素值相关的第二测试参数的基础参数值进行组合;所述邻接矩阵中元素值为0时,表明所述元素值相关的所述第一测试参数中的基础参数值、与所述元素值相关的第二测试参数的基础参数值之间不进行组合。
7.如权利要求5或6所述的方法,其特征在于,所述测试参数还包括第三测试参数,所述根据所述测试参数生成输入参数之前,所述方法还包括:
确定所述第一组合参数中各个组合参数值的状态类型;
根据所述第三测试参数中各个基础参数值的状态类型和所述组合参数中各个基础参数值的状态类型,生成第二邻接矩阵;
根据所述第二邻接矩阵生成第二组合参数。
8.如权利要求7所述的方法,其特征在于,所述确定所述第一组合参数中各个基础参数值的状态类型,包括:
若所述第一组合参数中,目标组合参数值是由处于第一状态类型的所述第一测试参数中基础参数值、和处于第一状态类型的所述第二测试参数中基础参数值进行组合计算得到,所述目标组合参数值为所述第一状态类型;
若所述第一组合参数中,目标参数值是由处于第一状态类型的所述第一次测试参数中基础参数值、和处于第二状态类型的所述第二测试参数中基础参数值进行组合计算得到的,所述目标组合参数值为第二状态类型;
若所述第一组合参数中,所述目标参数值是由处于第二状态类型的所述第一测试参数中基础参数值、和处于第一状态类型的所述第二测试参数中基础参数值进行组合计算得到的,所述目标组合参数值为第二状态类型。
9.一种对软件的测试装置,其特征在于,包括:
获取单元,用于获取用于对待测试软件进行测试的测试参数,每一个所述测试参数中包括至少一个基础参数值;
生成单元,用于根据所述测试参数生成输入参数,所述输入参数包括组合参数,所述组合参数包括:根据邻接矩阵在所述测试参数之间进行基础参数值组合计算得到的组合参数值;
输入单元,用于将所述输入参数输入到所述待测试软件中;
测试单元,用于对所述待测试软件进行测试。
10.一种智能终端,其特征在于,包括处理器、输入设备、输出设备和存储器,所述处理器、所述输入设备、所述输出设备和所述存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求1-8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810307095.XA CN110209566B (zh) | 2018-04-08 | 2018-04-08 | 一种对软件的测试方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810307095.XA CN110209566B (zh) | 2018-04-08 | 2018-04-08 | 一种对软件的测试方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110209566A true CN110209566A (zh) | 2019-09-06 |
CN110209566B CN110209566B (zh) | 2021-09-28 |
Family
ID=67778959
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810307095.XA Active CN110209566B (zh) | 2018-04-08 | 2018-04-08 | 一种对软件的测试方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110209566B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113852571A (zh) * | 2021-08-20 | 2021-12-28 | 阿里巴巴(中国)有限公司 | 分配流量的方法以及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5495571A (en) * | 1992-09-30 | 1996-02-27 | Microsoft Corporation | Method and system for performing parametric testing of a functional programming interface |
CN102135937A (zh) * | 2011-03-15 | 2011-07-27 | 西安邮电学院 | 一种两两覆盖组合软件测试用例集生成方法 |
CN102314395A (zh) * | 2011-10-12 | 2012-01-11 | 中国农业银行股份有限公司 | 一种测试用例生成方法及系统 |
CN103164330A (zh) * | 2011-12-14 | 2013-06-19 | 航天信息股份有限公司 | 软件测试用例自动生成方法 |
CN103853652A (zh) * | 2012-11-29 | 2014-06-11 | 百度在线网络技术(北京)有限公司 | 一种测试案例生成方法及装置 |
CN106095673A (zh) * | 2016-06-07 | 2016-11-09 | 深圳市泰久信息系统股份有限公司 | 基于web接口的自动化测试方法及系统 |
-
2018
- 2018-04-08 CN CN201810307095.XA patent/CN110209566B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5495571A (en) * | 1992-09-30 | 1996-02-27 | Microsoft Corporation | Method and system for performing parametric testing of a functional programming interface |
CN102135937A (zh) * | 2011-03-15 | 2011-07-27 | 西安邮电学院 | 一种两两覆盖组合软件测试用例集生成方法 |
CN102314395A (zh) * | 2011-10-12 | 2012-01-11 | 中国农业银行股份有限公司 | 一种测试用例生成方法及系统 |
CN103164330A (zh) * | 2011-12-14 | 2013-06-19 | 航天信息股份有限公司 | 软件测试用例自动生成方法 |
CN103853652A (zh) * | 2012-11-29 | 2014-06-11 | 百度在线网络技术(北京)有限公司 | 一种测试案例生成方法及装置 |
CN106095673A (zh) * | 2016-06-07 | 2016-11-09 | 深圳市泰久信息系统股份有限公司 | 基于web接口的自动化测试方法及系统 |
Non-Patent Citations (1)
Title |
---|
习乐等: "基于关联矩阵的两两组合测试算法", 《计算机与数字工程》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113852571A (zh) * | 2021-08-20 | 2021-12-28 | 阿里巴巴(中国)有限公司 | 分配流量的方法以及装置 |
CN113852571B (zh) * | 2021-08-20 | 2023-11-28 | 阿里巴巴(中国)有限公司 | 分配流量的方法以及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110209566B (zh) | 2021-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lindell et al. | A framework for constructing fast MPC over arithmetic circuits with malicious adversaries and an honest-majority | |
US10318740B2 (en) | Security risk scoring of an application | |
US8646085B2 (en) | Apparatus for reconfiguration of a technical system based on security analysis and a corresponding technical decision support system and computer program product | |
CN105491054B (zh) | 恶意访问的判断方法、拦截方法与装置 | |
Bailey et al. | Implementing panel-corrected standard errors in R: The pcse package | |
CN107369034A (zh) | 一种用户调研诚信判断的方法和装置 | |
Rahman et al. | Impact analysis of topology poisoning attacks on economic operation of the smart power grid | |
CN110430045B (zh) | 一种基于分布式共识算法的随机数生成方法 | |
Rahman et al. | A formal model for verifying the impact of stealthy attacks on optimal power flow in power grids | |
Devroey et al. | Abstract test case generation for behavioural testing of software product lines | |
CN108964914A (zh) | 抗侧信道攻击的sm2点乘架构 | |
US11080393B2 (en) | Secure computation system, secure computation apparatus, secure computation method, and secure computation program | |
CN110110551B (zh) | 一种数据存储方法及装置 | |
CN110209566A (zh) | 一种对软件的测试方法及装置 | |
CN109831294A (zh) | Spn型分组密码抗故障攻击能力评估方法及装置 | |
Levitin et al. | Optimal spot-checking for collusion tolerance in computer grids | |
CN108965315A (zh) | 一种终端设备的可信认证方法、装置及终端设备 | |
CN107395623A (zh) | 接口访问数据验证方法及装置、计算机存储介质和设备 | |
Garn et al. | Weighted combinatorial sequence testing for the TLS protocol | |
Tran et al. | An approach to select cost-effective risk countermeasures | |
CN114936121A (zh) | 一种故障模拟方法、装置、系统和介质 | |
Wang et al. | Cross cloud MapReduce: A result integrity check framework on hybrid clouds | |
CN106709333A (zh) | 一种应用编程的安全性检测方法及装置 | |
Eswaraiah et al. | Automated proofs of signatures using bilinear pairings | |
Rahman et al. | Security design against stealthy attacks on power system state estimation: A formal approach |
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 |