一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种测试用例的生成方法及一种测试方法与流程

2022-04-02 07:06:35 来源:中国专利 TAG:


1.本技术涉及测试技术领域,尤其涉及一种测试用例的生成方法及一种测试方法。


背景技术:

2.在软件开发过程中,测试是一个十分重要的环节,而测试的一个重要评价指标是测试效率。
3.为了提升测试效率,相关技术中出现了基于代码覆盖的反馈式测试用例生成方法,该方法中,以代码覆盖率(或代码覆盖比例)对测试用例进行评价,基于评价结果指导后续测试用例的生成。然而,发明人发现即时编译类代码是在程序执行过程中(即运行期)进行编译,而不是在执行前进行编译,执行即时编译类代码并不会增加代码覆盖率,所以该方法会减少甚至避免生成对即时编译类代码进行测试的测试用例。这样,测试用例的生成方式并不合理,既不利于对测试对象的充分测试也不利于提升测试效率。


技术实现要素:

4.本技术实施例提供一种测试用例的生成方法及一种测试方法,用以解决相关技术中由于测试用例的生成方式不合理而导致的测试不充分和测试效率低的问题。
5.第一方面,本技术实施例提供一种测试用例的生成方法,包括:
6.对获取的测试用例集中的测试用例进行变形处理,得到备选用例;
7.对所述备选用例中的即时编译类代码进行语义编码,得到所述备选用例的语义编码结果;
8.基于所述备选用例的语义编码结果,确定所述备选用例是否能增加测试对象的语义覆盖度,所述语义覆盖度用于表征对所述测试对象的语义测试的充分程度;
9.若确定所述备选用例能增加所述测试对象的语义覆盖度,则将所述备选用例添加到所述测试用例集中。
10.在一些实施例中,对所述备选用例中的即时编译类代码进行语义编码,得到所述备选用例的语义编码结果,包括:
11.生成所述备选用例的抽象语法树;
12.确定所述抽象语法树中即时编译类代码对应的目标树;
13.按照每个子树包含的节点数量不超过n的规则,对所述目标树进行分解,得到至少两个子树,n为大于1的整数;
14.对所述至少两个子树分别进行语义编码,得到所述备选用例的语义编码结果。
15.在一些实施例中,不同子树之间共用节点,或者,不同子树之间不共用节点。
16.在一些实施例中,对所述至少两个子树分别进行语义编码,得到所述备选用例的语义编码结果,包括:
17.对每个子树中的任一节点,根据所述节点的节点信息对所述节点进行语义表达,所述节点信息包括节点名称、节点类型和所述节点在所述子树中的位置信息;
18.对各节点的语义表达结果进行组合,得到所述子树的语义编码结果;
19.将各子树的语义编码结果作为所述备选用例的语义编码结果。
20.在一些实施例中,基于所述备选用例的语义编码结果,确定所述备选用例是否能增加测试对象的语义覆盖度,包括:
21.对每个子树的语义编码结果进行压缩,得到编码因子;
22.以所述编码因子为索引,从语义数组中查询所述子树对应的元素值,所述语义数组中的每个元素对应所述测试对象的一类代码,所述元素的元素值用于指示是否有测试用例能对该类代码进行测试;
23.基于各子树对应的元素值,确定所述备选用例是否能增加测试对象的语义覆盖度。
24.在一些实施例中,基于各子树对应的元素值,确定所述备选用例是否能增加测试对象的语义覆盖度,包括:
25.若任一子树对应的元素值指示没有测试用例能对所述测试对象的对应类代码进行测试,则确定所述备选用例能增加所述测试对象的语义覆盖度,并更新所述元素值以指示已有测试用例能对对应类代码进行测试;
26.若每个子树对应的元素值均指示已有测试用例能对对应类代码进行测试,则确定所述备选用例不能增加所述测试对象的语义覆盖度。
27.在一些实施例中,还包括:
28.若确定所述备选用例不能增加所述测试对象的语义覆盖度,则丢弃所述备选用例。
29.第二方面,本技术实施例提供一种测试方法,包括:
30.获取测试对象的测试用例集;
31.采用上述任一的测试用例的生成方法对所述测试用例集进行更新;
32.利用更新后的测试用例集对所述测试对象进行测试。
33.第三方面,本技术实施例提供一种测试用例的生成装置,包括:
34.变形模块,用于对测试用例集中的测试用例进行变形处理,得到备选用例;
35.编码模块,用于对所述备选用例中的即时编译类代码进行语义编码,得到所述备选用例的语义编码结果;
36.确定模块,用于基于所述备选用例的语义编码结果,确定所述备选用例是否能增加测试对象的语义覆盖度,所述语义覆盖度用于表征对所述测试对象的语义测试的充分程度;
37.处理模块,用于若确定所述备选用例能增加所述测试对象的语义覆盖度,则将所述备选用例添加到所述测试用例集中。
38.在一些实施例中,所述编码模块具体用于:
39.生成所述备选用例的抽象语法树;
40.确定所述抽象语法树中即时编译类代码对应的目标树;
41.按照每个子树包含的节点数量不超过n的规则,对所述目标树进行分解,得到至少两个子树,n为大于1的整数;
42.对所述至少两个子树分别进行语义编码,得到所述备选用例的语义编码结果。
43.在一些实施例中,不同子树之间共用节点,或者,不同子树之间不共用节点。
44.在一些实施例中,所述编码模块具体用于:
45.对每个子树中的任一节点,根据所述节点的节点信息对所述节点进行语义表达,所述节点信息包括节点名称、节点类型和所述节点在所述子树中的位置信息;
46.对各节点的语义表达结果进行组合,得到所述子树的语义编码结果;
47.将各子树的语义编码结果作为所述备选用例的语义编码结果。
48.在一些实施例中,所述确定模块具体用于:
49.对每个子树的语义编码结果进行压缩,得到编码因子;
50.以所述编码因子为索引,从语义数组中查询所述子树对应的元素值,所述语义数组中的每个元素对应所述测试对象的一类代码,所述元素的元素值用于指示是否有测试用例能对该类代码进行测试;
51.基于各子树对应的元素值,确定所述备选用例是否能增加测试对象的语义覆盖度。
52.在一些实施例中,所述确定模块具体用于:
53.若任一子树对应的元素值指示没有测试用例能对所述测试对象的对应类代码进行测试,则确定所述备选用例能增加所述测试对象的语义覆盖度,并更新所述元素值以指示已有测试用例能对对应类代码进行测试;
54.若每个子树对应的元素值均指示已有测试用例能对对应类代码进行测试,则确定所述备选用例不能增加所述测试对象的语义覆盖度。
55.在一些实施例中,所述处理模块还用于:
56.若确定所述备选用例不能增加所述测试对象的语义覆盖度,则丢弃所述备选用例。
57.第四方面,本技术实施例提供一种测试装置,包括:
58.获取模块,用于获取测试对象的测试用例集;
59.更新模块,用于采用本技术提供的测试用例的生成方法对测试用例集进行更新;
60.测试模块,用于利用更新后的测试用例集对所述测试对象进行测试。
61.第五方面,本技术实施例提供一种电子设备,包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中:
62.存储器存储有可被至少一个处理器执行的指令,该指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述任一测试用例的生成方法或上述测试方法。
63.第六方面,本技术实施例提供一种存储介质,当所述存储介质中的指令由电子设备的处理器执行时,所述电子设备能够执行上述任一测试用例的生成方法或上述测试方法。
64.本技术实施例中,对获取的测试用例集中的测试用例进行变形处理,得到备选用例,对备选用例中的即时编译类代码进行语义编码,得到备选用例的语义编码结果,基于备选用例的语义编码结果,确定备选用例是否能增加测试对象的语义覆盖度,语义覆盖度用于表征对测试对象的语义测试的充分程度,若确定备选用例能增加测试对象的语义覆盖度,则将备选用例添加到测试用例集中,以更新测试用例集。这样,以测试用例变形得到的备选用例中即时编译类代码的语义编码结果,确定备选用例是否能增加测试对象的语义覆
盖度,基于备选用例是否能增加测试对象的语义覆盖度的信息指导测试用例集的更新,可较好地衡量对即时编译类代码的测试情况,提升测试用例的生成质量,既利于提升测试充分程度又利于提升测试效率。
附图说明
65.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
66.图1为本技术实施例提供的一种测试用例的生成方法的流程图;
67.图2为本技术实施例提供的一种对备选用例中的即时编译类代码进行语义编码的流程图;
68.图3为本技术实施例提供的一种确定备选用例是否能增加测试对象的语义覆盖度的流程图;
69.图4为本技术实施例提供的一种子树的结构示意图;
70.图5为本技术实施例提供的一种子树的编码示意图;
71.图6为本技术实施例提供的又一种子树的编码示意图;
72.图7为本技术实施例提供的又一种子树的编码示意图;
73.图8为本技术实施例提供的一种测试方法的流程图;
74.图9为本技术实施例提供的一种测试用例的生成装置的结构示意图;
75.图10为本技术实施例提供的一种测试装置的结构示意图;
76.图11为本技术实施例提供的一种用于实现测试用例的生成方法或用于实现测试方法的电子设备的硬件结构示意图。
具体实施方式
77.为了解决相关技术中由于测试用例的生成方式不合理而导致的测试不充分和测试效率低的问题,本技术实施例提供了一种测试用例的生成方法及一种测试方法。
78.以下结合说明书附图对本技术的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本技术,并不用于限定本技术,并且在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。
79.为了便于理解本技术,本技术涉及的技术术语中:
80.测试用例,一种用于进行测试的脚本文件。
81.即时编译类代码,在程序执行过程中(即运行期)进行编译的代码。
82.抽象语法树(abstract syntax tree,ast),是对源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。
83.下面结合具体实施例对本技术实施例提供的测试方法进行介绍。
84.图1为本技术实施例提供的一种测试方法的流程图,包括以下步骤。
85.在步骤101中,对获取的测试用例集中的测试用例进行变形处理,得到备选用例。
86.为了尽可能快地找到能增加语义覆盖度的测试用例,提升测试用例的生成质量,可从测试用例集中选择语义覆盖度最高的一个测试用例进行变形处理。
87.具体实施时,变形处理的目的是生成与测试用例不同的备选用例,所以能达到这个目的的变形方式均可考虑。其中,变形处理如改变测试用例中的某个变量值,改写测试用例中的某段代码等。
88.在步骤102中,对备选用例中的即时编译类代码进行语义编码,得到备选用例的语义编码结果。
89.具体实施时,可按照图2所示的流程对备选用例中的即时编译类代码进行语义编码,该流程包括以下步骤。
90.在步骤201a中,生成备选用例的抽象语法树。
91.在步骤202a中,确定抽象语法树中即时编译类代码对应的目标树。
92.在步骤203a中,按照每个子树包含的节点数量不超过n的规则,对目标树进行分解,得到至少两个子树。
93.其中,n为大于1的整数。
94.这样,按照每个子树包含的节点数量不超过n的规则,对目标树进行分解,可降低目标树的复杂度,降低后续的编码复杂度。
95.另外,不同子树之间可共用节点也可不共用节点,这样,便于提升目标树的划分自由度,也有利于进一步降低每个子树的复杂度。
96.在步骤204a中,对这至少两个子树分别进行语义编码,得到备选用例的语义编码结果。
97.比如,按照以下步骤对这至少两个子树进行语义编码,得到备选用例的语义编码结果。
98.第一步、对每个子树中的任一节点,根据节点的节点信息对节点进行语义表达,其中,节点信息包括节点名称、节点类型和节点在子树中的位置信息。
99.第二步、对每个子树中各节点的语义表达结果进行组合,得到子树的语义编码结果。
100.比如,按照一定顺序将每个子树中各节点的语义表达结果拼接起来作为子树的语义编码结果。
101.第三步、将各子树的语义编码结果作为备选用例的语义编码结果。
102.在步骤103中,基于备选用例的语义编码结果,确定备选用例是否能增加测试对象的语义覆盖度,语义覆盖度用于表征对测试对象的语义测试的充分程度。
103.其中,测试对象如javascript引擎。
104.具体实施时,可按照图3所示的流程确定备选用例是否能增加测试对象的语义覆盖度,该流程包括以下步骤。
105.在步骤301a中,对每个子树的语义编码结果进行压缩,得到编码因子。
106.其中,编码因子的长度一般是固定的。
107.在步骤302a中,以编码因子为索引,从语义数组中查询子树对应的元素值,语义数组中的每个元素对应测试对象的一类代码,元素的元素值用于指示是否有测试用例能对该类代码进行测试。
108.在步骤303a中,基于各子树对应的元素值,确定备选用例是否能增加测试对象的语义覆盖度。
109.其中,若任一子树对应的元素值指示没有测试用例能对测试对象的对应类代码进行测试,则确定备选用例能增加测试对象的语义覆盖度;而若每个子树对应的元素值均指示已有测试用例能对对应类代码进行测试,则确定备选用例不能增加测试对象的语义覆盖度。
110.在步骤104中,若确定备选用例能增加测试对象的语义覆盖度,则将备选用例添加到测试用例集中。
111.这样,将备选用例作为新的测试用例添加到测试用例集中,以对测试用例集进行更新。
112.在步骤105中,若确定备选用例不能增加测试对象的语义覆盖度,则丢弃备选用例。
113.下面以测试对象为javascript引擎为例,对本技术实施例的测试用例生成方法进行说明。
114.具体实施时,可按照以下步骤生成新的测试用例。
115.步骤1,从javascript引擎当前的测试用例集中选择一个测试用例input.js。
116.步骤2,对input.js进行变形处理,生成一个新的测试用例new.js。
117.一般地,在对javascript引擎进行模糊测试时,测试用例的生成是比较随机的,所以对input.js进行的变形处理也是比较随机的。
118.步骤3,对new.js进行词法分析和语法分析,生成new.js的抽象语法树。
119.步骤4,识别抽象语法树中会被即时(just in time,jit)动态编译的部分。
120.步骤5,将jit动态编译的部分分解成若干节点数不超过n的子树,其中,子树之间可以有重叠的节点。
121.步骤6,对每个子树进行语义编码。
122.图4为本技术实施例提供的一种子树的结构示意图。
123.比如,按照以下步骤对子树进行语义编码:
124.步骤6-1,对抽象语法树中的标识节点(identifier)名称进行规范化,规则如下:
125.变量名称,以var为前缀,按照出现的先后顺序进行编号。比如,idx重命名为var_000,float_array重命名为var_001,依此类推。
126.自定义函数名称,以fun为前缀,按照出现的先后顺序进行编号。比如,这里的cb重命名为fun_001,依此类推。
127.内置函数名称,按照“对象类型_函数名称“的模式重命名。比如,内置函数map重命名为array_map。
128.经过步骤6-1后,图4所示的子树如图5所示。
129.步骤6-2,对抽象语法树中的字面量节点(literal)名称进行规范化,规则如下:
130.数值,分为以下几类:0、1、-1、最大值、负的最大值、标记数值、较小正数、较小负数、中等正数、中等负数、较大正数、较大负数,按照类别进行命名。
131.字符串,分为以下几类:空字符串、关键词字符串、短的字符串、中等字符串、长的字符串,按照类别进行命名。
132.经过步骤6-2后,图5所示的子树如图6所示。
133.步骤6-3,对抽象语法树中的各个节点进行语义编码,编码由类型编号 顺序号构
成。
134.类型包括:声明(statement)、表达式(expression)、操作符(operator)、变量(var)、函数(fun)、数值(num)、字符串等,依次进行编码,其中,声明如if

else判断、for循环等,表达式如变量赋值、操作符如==、=等。
135.命名节点根据其名称获得顺序号。
136.未命名节点根据同类节点枚举顺序获得顺序号。
137.经过步骤6-3后,图6所示的子树如图7所示。
138.需要说明的是,图4所示的子树仅为举例,其包含的节点数量比较少,节点类型也未覆盖到所有节点类型,但其不影响对步骤6的说明。
139.步骤6-4,遍历抽象语法树中的各节点,将各节点的语义编码连接起来得到整个子树的语义编码。
140.比如,将fun_001,block_000,if_000,op_005,var_000,num_0,block_001,op_004,var_001,array_float,作为子树的语义编码结果。
141.步骤7,对每个子树的编码进行压缩,获得指定长度的编码因子。
142.步骤8,以每个子树对应的编码因子为索引,从语义数组中查询子树对应的元素值。
143.其中,语义数组中的每个元素对应javascript引擎的一类代码,这个元素的元素值用于指示是否有测试用例能对该类代码进行测试。比如,当这个元素的元素值为1时,说明已有测试用例能对该类代码进行测试;当这个元素的元素值为0时,说明没有测试用例能对该类代码进行测试。
144.步骤9,基于各子树对应的元素值,确定new.js是否能增加javascript引擎的语义覆盖度。
145.其中,若任一子树对应的元素值为0,则说明new.js可增加javascript引擎的语义覆盖度,可将对应元素值修改为1并将new.js添加到测试用例集中。若所有子树对应的元素值均为1,则说明new.js不能增加javascript引擎的语义覆盖度,可将new.js抛弃。
146.本技术实施例中,通过拆解子树、对子树进行编码、以编码因子为索引查询语义数组的方式,对变形得到的新测试用例的语义空间覆盖进行衡量,然后以衡量结果来反馈式的指导后续的测试用例生成,可显著增加变形生成的新测试用例提高语义空间覆盖度的可能性,而更高的高语义空间覆盖度将会产生更多有价值的测试用例,测试用例的生成方式更加合理,也有利于提升模糊测试的测试效率。
147.图8为本技术实施例提供的一种测试方法的流程图,包括以下步骤。
148.在步骤801中,获取测试对象的测试用例集。
149.其中,测试对象如javascript引擎。
150.在步骤802中,利用本技术实施例中的测试用例生成方法对测试用例集进行更新。
151.在步骤803中,利用更新后的测试用例集对测试对象进行测试。
152.本技术实施例中,建立了基于语义覆盖的测试用例评价体系,将变形后的测试用例中的代码转换成语义序列,计算其在语义空间的覆盖率,以此作为反馈的输入来指导后续的测试用例生成,可快速生成高质量的测试用例,利于提升对测试对象的模糊测试效率。
153.当本技术实施例中提供的方法以软件或硬件或软硬件结合实现的时候,电子设备
中可以包括多个功能模块,每个功能模块可以包括软件、硬件或其结合。
154.基于相同的技术构思,本技术实施例还提供一种测试用例的生成装置,测试用例的生成装置解决问题的原理与上述测试用例的生成方法相似,因此测试用例的生成装置的实施可参见测试用例的生成方法的实施,重复之处不再赘述。
155.图9为本技术实施例提供的一种测试用例的生成装置的结构示意图,包括变形模块901、编码模块902、确定模块903、处理模块904。
156.变形模块901,用于对测试用例集中的测试用例进行变形处理,得到备选用例;
157.编码模块902,用于对所述备选用例中的即时编译类代码进行语义编码,得到所述备选用例的语义编码结果;
158.确定模块903,用于基于所述备选用例的语义编码结果,确定所述备选用例是否能增加测试对象的语义覆盖度,所述语义覆盖度用于表征对所述测试对象的语义测试的充分程度;
159.处理模块904,用于若确定所述备选用例能增加所述测试对象的语义覆盖度,则将所述备选用例添加到所述测试用例集中。
160.在一些实施例中,所述编码模块902具体用于:
161.生成所述备选用例的抽象语法树;
162.确定所述抽象语法树中即时编译类代码对应的目标树;
163.按照每个子树包含的节点数量不超过n的规则,对所述目标树进行分解,得到至少两个子树,n为大于1的整数;
164.对所述至少两个子树分别进行语义编码,得到所述备选用例的语义编码结果。
165.在一些实施例中,不同子树之间共用节点,或者,不同子树之间不共用节点。
166.在一些实施例中,所述编码模块902具体用于:
167.对每个子树中的任一节点,根据所述节点的节点信息对所述节点进行语义表达,所述节点信息包括节点名称、节点类型和所述节点在所述子树中的位置信息;
168.对各节点的语义表达结果进行组合,得到所述子树的语义编码结果;
169.将各子树的语义编码结果作为所述备选用例的语义编码结果。
170.在一些实施例中,所述确定模块903具体用于:
171.对每个子树的语义编码结果进行压缩,得到编码因子;
172.以所述编码因子为索引,从语义数组中查询所述子树对应的元素值,所述语义数组中的每个元素对应所述测试对象的一类代码,所述元素的元素值用于指示是否有测试用例能对该类代码进行测试;
173.基于各子树对应的元素值,确定所述备选用例是否能增加测试对象的语义覆盖度。
174.在一些实施例中,所述确定模块903具体用于:
175.若任一子树对应的元素值指示没有测试用例能对所述测试对象的对应类代码进行测试,则确定所述备选用例能增加所述测试对象的语义覆盖度,并更新所述元素值以指示已有测试用例能对对应类代码进行测试;
176.若每个子树对应的元素值均指示已有测试用例能对对应类代码进行测试,则确定所述备选用例不能增加所述测试对象的语义覆盖度。
177.在一些实施例中,所述处理模块904还用于:
178.若确定所述备选用例不能增加所述测试对象的语义覆盖度,则丢弃所述备选用例。
179.基于相同的技术构思,本技术实施例还提供一种测试装置,测试装置解决问题的原理与上述测试方法相似,因此测试装置的实施可参见测试方法的实施,重复之处不再赘述。
180.图10为本技术实施例提供的一种测试装置的结构示意图,包括获取模块1001、更新模块1002、测试模块1003。
181.获取模块1001,用于获取测试对象的测试用例集;
182.更新模块1002,用于采用本技术提供的测试用例的生成方法对测试用例集进行更新;
183.测试模块1003,用于利用更新后的测试用例集对所述测试对象进行测试。
184.本技术实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,本技术各实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成在一个模块中。各个模块相互之间的耦合可以是通过一些接口实现,这些接口通常是电性通信接口,但是也不排除可能是机械接口或其它的形式接口。因此,作为分离部件说明的模块可以是或者也可以不是物理上分开的,既可以位于一个地方,也可以分布到同一个或不同设备的不同位置上。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
185.在介绍了本技术示例性实施方式的对比学习方法和装置之后,接下来,介绍根据本技术的另一示例性实施方式的电子设备。
186.在一些可能的实施方式中,根据本技术的电子设备可以至少包括至少一个处理器、以及至少一个存储器。其中,存储器存储有程序代码,当程序代码被处理器执行时,使得处理器执行本说明书上述描述的根据本技术各种示例性实施方式的方法。
187.下面参照图11来描述根据本技术的这种实施方式实现的电子设备130。图11显示的电子设备130仅仅是一个示例,不应对本技术实施例的功能和使用范围带来任何限制。
188.如图11所示,电子设备130以通用电子设备的形式表现。电子设备130的组件可以包括但不限于:上述至少一个处理器131、上述至少一个存储器132、连接不同系统组件(包括存储器132和处理器131)的总线133。
189.总线133表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、处理器或者使用多种总线结构中的任意总线结构的局域总线。
190.存储器132可以包括易失性存储器形式的可读介质,例如随机存取存储器(ram)1321和/或高速缓存存储器1322,还可以进一步包括只读存储器(rom)1323。
191.存储器132还可以包括具有一组(至少一个)程序模块1324的程序/实用工具1325,这样的程序模块1324包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
192.电子设备130也可以与一个或多个外部设备134(例如键盘、指向设备等)通信,还可与一个或者多个使得用户能与电子设备130交互的设备通信,和/或与使得该电子设备130能与一个或多个其它电子设备进行通信的任何设备(例如路由器、调制解调器等等)通
信。这种通信可以通过输入/输出(i/o)接口135进行。并且,电子设备130还可以通过网络适配器136与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器136通过总线133与用于电子设备130的其它模块通信。应当理解,尽管图中未示出,可以结合电子设备130使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
193.在示例性实施例中,还提供了一种包括指令的计算机可读存储介质,例如包括指令的存储器132,上述指令可由处理器131执行以完成上述对比学习方法。可选地,存储介质可以是非临时性计算机可读存储介质,例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。
194.在示例性实施例中,还提供一种计算机程序产品,当计算机程序产品被电子设备执行时,电子设备能够实现本技术提供的任一示例性方法。
195.并且,计算机程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、ram、rom、可擦式可编程只读存储器(erasable programmable read-only memory,eprom)、闪存、光纤、光盘只读存储器(compact disk read only memory,cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
196.本技术实施例中用于实现测试用例的生成方法或用于实现测试方法的程序产品可以采用cd-rom并包括程序代码,并可以在计算设备上运行。然而,本技术的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
197.可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
198.可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、射频(radio frequency,rf)等等,或者上述的任意合适的组合。
199.可以以一种或多种程序设计语言的任意组合来编写用于执行本技术操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、c 等,还包括常规的过程式程序设计语言诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络如局域网(local area network,lan)或广域网(wide area network,wan)连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
200.应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划
分仅仅是示例性的并非强制性的。实际上,根据本技术的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
201.此外,尽管在附图中以特定顺序描述了本技术方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
202.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
203.本技术是参照根据本技术实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
204.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
205.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
206.尽管已描述了本技术的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本技术范围的所有变更和修改。
207.显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献