基于并行变异测试的代码覆盖率检测方法及装置与流程

文档序号:26582604发布日期:2021-09-08 07:52阅读:172来源:国知局
基于并行变异测试的代码覆盖率检测方法及装置与流程

1.本发明涉及计算机软件测试技术领域,具体涉及一种基于并行变异测试的代码覆盖率检测方法及装置。


背景技术:

2.变异测试(mutation testing)也叫做“变异分析”,是一种在细节方面改进程序源代码的软件测试方法。变异测试最初是为了定位揭示测试单元的弱点。这个理论是:如果一个边缘被引入程序源代码,同时出现的程序源代码执行行为不受影响的情况下,这说明了变异代码没被执行过(产生了过剩代码)或者单侧单元无法定位错误。为了使之适用于所有情况,必须引入大量的变异,导致这个程序极大量的副本被编译和执行。
3.目前,开源框架pitest可以满足变异测试的需要,它会采集程序的指令覆盖情况,然后根据覆盖情况,来选择是否变异指令,决定变异后重新执行部分单元测试。针对覆盖情况的检测和指令变异,开源框架pitest是采用注入字节码指令、动态替换字节码来实现的,主进程中,以agent方式启动子进程,并和子进程通过套接字(socket)通信来传递信息,子进程收集覆盖情况或变异执行情况后,将消息传回主进程中,最后主进程来生成变异报告。
4.开源框架pitest在收集覆盖率时,在子进程中单线程执行,并且单元测试前后执行过程中,无法做到环境完全隔离,一方面导致了变异测试的性能低下,另一方面导致实例没有释放造成内存占用过高。


技术实现要素:

5.针对现有技术中的问题,本发明提供一种基于并行变异测试的代码覆盖率检测方法及装置,能够提升变异测试的效率和准确性。
6.为解决上述技术问题,本发明提供以下技术方案:
7.第一方面,本发明提供一种基于并行变异测试的代码覆盖率检测方法,包括:
8.将所有的单元测试任务进行划分处理得到多个任务子集;
9.对每个所述任务子集分配一个子线程,控制所述子线程采集其对应的任务子集的代码覆盖信息;
10.接收每个所述子线程发送的其自身采集的代码覆盖信息并将接收的所述代码覆盖信息进行转换处理得到代码覆盖率。
11.其中,所述将所有的单元测试任务进行划分处理得到多个任务子集,包括:
12.确定所述单元测试任务的数量和每个子线程的任务处理数量;
13.根据所述单元测试任务的数量和每个子线程的任务处理数量确定子线程的数量;
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.图1为本发明实施例中的基于并行变异测试的代码覆盖率检测方法的流程示意图。
40.图2为本发明实施例中的基于并行变异测试的代码覆盖率检测方法中步骤s101的流程示意图。
41.图3为本发明实施例中的基于并行变异测试的代码覆盖率检测方法中步骤s102的流程示意图。
42.图4为本发明实施例中的基于并行变异测试的代码覆盖率检测方法中步骤s103的流程示意图。
43.图5为本发明实施例中的基于并行变异测试的代码覆盖率检测方法的流程图。
44.图6为本发明实施例中的基于并行变异测试的代码覆盖率检测装置的结构示意图。
45.图7为本发明实施例中的电子设备的结构示意图。
具体实施方式
46.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
47.本发明提供一种基于并行变异测试的代码覆盖率检测方法的实施例,参见图1,所述基于并行变异测试的代码覆盖率检测方法具体包含有如下内容:
48.s101:将所有的单元测试任务进行划分处理得到多个任务子集;
49.所有的单元测试任务都在子进程执行,每个单测执行完,若环境没隔离,则会有一部分类的实例,在堆中无法被垃圾回收,最后内存越来越大,可能最终造成子进程内存溢出。
50.在本步骤中,通过将所有单元测试任务进行划分,单元测试任务从原先的单进程执行,最终达到多进程执行,最终实现执行性能的提高,减少内存峰值。
51.s102:对每个所述任务子集分配一个子线程,控制所述子线程采集其对应的任务子集的代码覆盖信息;
52.每个任务子集分给线程池中的一个子线程去执行,这个子线程,仍然会开启一个子进程去执行单元测试,以汇报覆盖情况。
53.在本步骤中,根据子线程能够处理的任务量p,将p个任务分给一个线程。具体执行时,确定单元测试任务的扫描顺序,按顺序来分配。例如:单元测试任务是100个,每个子线程分2个,那最后会有50个子线程去处理。分派子线程来执行划分后的任务子集,每个子线程再通过创建子进程来完成代码覆盖信息采集,子线程收到对应子进程传回的代码覆盖信息。
54.s103:接收每个所述子线程发送的其自身采集的代码覆盖信息并将接收的所述代码覆盖信息进行转换处理得到代码覆盖率。
55.在本步骤中,子线程收到对应子进程传回的代码覆盖信息后,存储到最终的覆盖
情况数据结构中。
56.进一步地,可以在收到代码覆盖信息后,将代码覆盖信息转化成正确的数据结构,具体是确定代码覆盖信息中的探针,再根据探针到代码位置的映射,获得代码位置,然后标记这个代码位置为被覆盖。其中,探针是用于收集覆盖率注入的指令。
57.本步骤可以保证,同一个类在不同进程中运行,探针的插入虽然是分开进行的,但最终均能够指向正确的类的目标指令,且结果能够合并。最终提高执行效率,降低内存峰值,克服的内存溢出的问题。
58.从上述描述可知,本发明实施例提供的基于并行变异测试的代码覆盖率检测方法,将所有的单元测试任务进行划分处理得到多个任务子集;对每个所述任务子集分配一个子线程,控制所述子线程采集其对应的任务子集的代码覆盖信息;接收每个所述子线程发送的其自身采集的代码覆盖信息并将接收的所述代码覆盖信息进行转换处理得到代码覆盖率。能够有效提升变异测试批量执行效率以及变异测试的准确性。
59.在本发明的一实施例中,参见图2,所述基于并行变异测试的代码覆盖率检测方法中步骤s101的一种实现方式,具体包含有如下内容:
60.s1011:确定所述单元测试任务的数量和每个子线程的任务处理数量;
61.s1012:根据所述单元测试任务的数量和每个子线程的任务处理数量确定子线程的数量;
62.s1013:按照所述子线程的数量对所述单元测试任务进行划分处理。
63.在本实施例中,确定单元测试任务的总的数量n以及每个子线程能够处理的任务处理数量p,则需要n/p个子线程,将单元测试任务划分为n/p个任务子集。
64.在本发明的一实施例中,参见图3,所述基于并行变异测试的代码覆盖率检测方法中步骤s102的一种实现方式,具体包含有如下内容:
65.s1021:控制所述子线程开启子进程,通过所述子进程执行所述任务子集中的单元测试任务得到所述任务子集的代码覆盖信息;
66.s1022:通过套接字的通信方式接收所述子进程得到所述任务子集的代码覆盖信息。
67.本实施例中,主进程x创建的线程池中的子线程a收到单元测试任务时,子线程a开启tcp server,然后子线程a开启子进程b执行子线程a,子进程b开启tcp client和子线程a的tcp server通信,传回覆盖率信息。子进程b在扫描代码的字节码时,向子线程a传递探针id信息及代码位置信息,在执行单元测试任务时,向子线程a传回覆盖的探针id信息。由此,最初主进程x通过子进程a就能拿到代码的覆盖情况了。
68.需要说明的是,在使用tcp通讯建立连接时采用客户端服务器模式,这种模式又常常被称为主从式架构,简称为c/s结构,属于一种网络通讯架构,将通讯的双方以客户端(tcp client)与服务器(tcp server)的身份区分开来。tcp通讯属于socket通信协议。
69.在本发明的一实施例中,参见图4,所述基于并行变异测试的代码覆盖率检测方法中步骤s103的一种实现方式,具体包含有如下内容:
70.s1031:根据所述代码覆盖信息确定代码位置并对所述代码位置处的代码标记为被覆盖;
71.s1032:基于标记为被覆盖的代码确定所述代码覆盖率。
72.在本实施例中,代码覆盖信息包含:探针id以及探针id到代码位置的映射。不同子线程创建的子进程,虽然探针id不同,但映射过去的代码位置是一样的。所以主进程可以获得正确的代码位置,即拿到的探针覆盖目标指令是正确的。根据代码是否被覆盖确定被覆盖的覆盖代码占比,该覆盖代码占比为代码覆盖率。
73.进而实现同一个类在不同进程中运行,探针的插入虽然是分开进行的,但最终均能够指向正确的类的目标指令,且结果能够合并。进而提高执行效率,降低内存峰值。克服内存溢出的问题。
74.参见图5进一步地对本方案进行详细说明:
75.每个子进程跑一部分的单元测试任务,这样即便存在内存泄漏等问题,那么当子进程执行结束,整个jvm(子进程)被kill(结束),它的内存泄漏也不会影响到后续单测的执行。并且并行执行单元测试,一方面,由于这是cpu密集型任务,多进程分给不同cpu去跑能够在并发上提升性能;另一方面,由于内存泄漏问题得到缓解,堆中的无用对象减少,每个进程在执行单测时,性能也会变强。
76.接下来,同个类在不同进程中被插入探针,不会导致最终覆盖率采集结果发生错误。
77.每个线程记录覆盖情况的数据结构:
[0078][0079]
long为探针id,不同进程同一个类同一个位置的探针id虽然不同,但是映射过去的代码block,即blocklocation一定是一样的。主进程的主线程在统计覆盖率时,数据结构如下
[0080][0081]
只要更新时,加上同步锁,就可以保证最后代码指令的覆盖情况被正确维护。
[0082]
从上述描述可知,本发明能够正确执行完成变异测试,减小变异测试运行过程的内存占用,提升整体执行效率,提升变异测试测试质量,缩减内存占用能够并行执行更多的不同项目的变异测试任务,整体批量执行效率提高。
[0083]
本发明实施例提供一种能够实现所述基于并行变异测试的代码覆盖率检测方法中全部内容的基于并行变异测试的代码覆盖率检测装置的具体实施方式,参见图6,所述基于并行变异测试的代码覆盖率检测装置具体包括如下内容:
[0084]
划分模块10,用于将所有的单元测试任务进行划分处理得到多个任务子集;
[0085]
采集模块20,对每个所述任务子集分配一个子线程,控制所述子线程采集其对应的任务子集的代码覆盖信息;
[0086]
处理模块30,用于接收每个所述子线程发送的其自身采集的代码覆盖信息并将接收的所述代码覆盖信息进行转换处理得到代码覆盖率。
[0087]
其中,所述划分模块10包括:
[0088]
任务单元,用于确定所述单元测试任务的数量和每个子线程的任务处理数量;
[0089]
线程单元,用于根据所述单元测试任务的数量和每个子线程的任务处理数量确定
子线程的数量;
[0090]
划分单元,用于按照所述子线程的数量对所述单元测试任务进行划分处理。
[0091]
其中,所述采集模块20包括:
[0092]
执行单元,用于控制所述子线程开启子进程,通过所述子进程执行所述任务子集中的单元测试任务得到所述任务子集的代码覆盖信息;
[0093]
传输单元,用于通过套接字的通信方式接收所述子进程得到所述任务子集的代码覆盖信息。
[0094]
其中,所述处理模块30包括:
[0095]
标记单元,用于根据所述代码覆盖信息确定代码位置并对所述代码位置处的代码标记为被覆盖;
[0096]
处理单元,用于基于标记为被覆盖的代码确定所述代码覆盖率。
[0097]
本发明提供的基于并行变异测试的代码覆盖率检测装置的实施例具体可以用于执行上述实施例中的基于并行变异测试的代码覆盖率检测方法的实施例的处理流程,其功能在此不再赘述,可以参照上述方法实施例的详细描述。
[0098]
从上述描述可知,本发明实施例提供的基于并行变异测试的代码覆盖率检测装置,将所有的单元测试任务进行划分处理得到多个任务子集;对每个所述任务子集分配一个子线程,控制所述子线程采集其对应的任务子集的代码覆盖信息;接收每个所述子线程发送的其自身采集的代码覆盖信息并将接收的所述代码覆盖信息进行转换处理得到代码覆盖率。能够有效提升变异测试批量执行效率以及变异测试的准确性。
[0099]
本技术提供一种用于实现所述基于并行变异测试的代码覆盖率检测方法中的全部或部分内容的电子设备的实施例所述电子设备具体包含有如下内容:
[0100]
处理器(processor)、存储器(memory)、通信接口(communications interface)和总线;其中,所述处理器、存储器、通信接口通过所述总线完成相互间的通信;所述通信接口用于实现相关设备之间的信息传输;该电子设备可以是台式计算机、平板电脑及移动终端等,本实施例不限于此。在本实施例中,该电子设备可以参照实施例用于实现所述基于并行变异测试的代码覆盖率检测方法的实施例及用于实现所述基于并行变异测试的代码覆盖率检测装置的实施例进行实施,其内容被合并于此,重复之处不再赘述。
[0101]
图7为本技术实施例的电子设备9600的系统构成的示意框图。如图7所示,该电子设备9600可以包括中央处理器9100和存储器9140;存储器9140耦合到中央处理器9100。值得注意的是,该图7是示例性的;还可以使用其他类型的结构,来补充或代替该结构,以实现电信功能或其他功能。
[0102]
一实施例中,基于并行变异测试的代码覆盖率检测功能可以被集成到中央处理器9100中。其中,中央处理器9100可以被配置为进行如下控制:
[0103]
将所有的单元测试任务进行划分处理得到多个任务子集;对每个所述任务子集分配一个子线程,控制所述子线程采集其对应的任务子集的代码覆盖信息;接收每个所述子线程发送的其自身采集的代码覆盖信息并将接收的所述代码覆盖信息进行转换处理得到代码覆盖率。
[0104]
从上述描述可知,本技术的实施例提供的电子设备,将所有的单元测试任务进行划分处理得到多个任务子集;对每个所述任务子集分配一个子线程,控制所述子线程采集
其对应的任务子集的代码覆盖信息;接收每个所述子线程发送的其自身采集的代码覆盖信息并将接收的所述代码覆盖信息进行转换处理得到代码覆盖率。能够有效提升变异测试批量执行效率以及变异测试的准确性。
[0105]
在另一个实施方式中,基于并行变异测试的代码覆盖率检测装置可以与中央处理器9100分开配置,例如可以将基于并行变异测试的代码覆盖率检测配置为与中央处理器9100连接的芯片,通过中央处理器的控制来实现基于并行变异测试的代码覆盖率检测功能。
[0106]
如图7所示,该电子设备9600还可以包括:通信模块9110、输入单元9120、音频处理器9130、显示器9160、电源9170。值得注意的是,电子设备9600也并不是必须要包括图7中所示的所有部件;此外,电子设备9600还可以包括图7中没有示出的部件,可以参考现有技术。
[0107]
如图7所示,中央处理器9100有时也称为控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该中央处理器9100接收输入并控制电子设备9600的各个部件的操作。
[0108]
其中,存储器9140,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。可储存上述与失败有关的信息,此外还可存储执行有关信息的程序。并且中央处理器9100可执行该存储器9140存储的该程序,以实现信息存储或处理等。
[0109]
输入单元9120向中央处理器9100提供输入。该输入单元9120例如为按键或触摸输入装置。电源9170用于向电子设备9600提供电力。显示器9160用于进行图像和文字等显示对象的显示。该显示器例如可为lcd显示器,但并不限于此。
[0110]
该存储器9140可以是固态存储器,例如,只读存储器(rom)、随机存取存储器(ram)、sim卡等。还可以是这样的存储器,其即使在断电时也保存信息,可被选择性地擦除且设有更多数据,该存储器的示例有时被称为eprom等。存储器9140还可以是某种其它类型的装置。存储器9140包括缓冲存储器9141(有时被称为缓冲器)。存储器9140可以包括应用/功能存储部9142,该应用/功能存储部9142用于存储应用程序和功能程序或用于通过中央处理器9100执行电子设备9600的操作的流程。
[0111]
存储器9140还可以包括数据存储部9143,该数据存储部9143用于存储数据,例如联系人、数字数据、图片、声音和/或任何其他由电子设备使用的数据。存储器9140的驱动程序存储部9144可以包括电子设备的用于通信功能和/或用于执行电子设备的其他功能(如消息传送应用、通讯录应用等)的各种驱动程序。
[0112]
通信模块9110即为经由天线9111发送和接收信号的发送机/接收机9110。通信模块(发送机/接收机)9110耦合到中央处理器9100,以提供输入信号和接收输出信号,这可以和常规移动通信终端的情况相同。
[0113]
基于不同的通信技术,在同一电子设备中,可以设置有多个通信模块9110,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块(发送机/接收机)9110还经由音频处理器9130耦合到扬声器9131和麦克风9132,以经由扬声器9131提供音频输出,并接收来自麦克风9132的音频输入,从而实现通常的电信功能。音频处理器9130可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理器9130还耦合到中央处理器9100,从而使得可以通过麦克风9132能够在本机上录音,且使得可以通过扬声器9131来播放本机上存储的声
音。
[0114]
本发明的实施例还提供能够实现上述实施例中的基于并行变异测试的代码覆盖率检测方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的基于并行变异测试的代码覆盖率检测方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
[0115]
将所有的单元测试任务进行划分处理得到多个任务子集;对每个所述任务子集分配一个子线程,控制所述子线程采集其对应的任务子集的代码覆盖信息;接收每个所述子线程发送的其自身采集的代码覆盖信息并将接收的所述代码覆盖信息进行转换处理得到代码覆盖率。
[0116]
从上述描述可知,本发明实施例提供的计算机可读存储介质,将所有的单元测试任务进行划分处理得到多个任务子集;对每个所述任务子集分配一个子线程,控制所述子线程采集其对应的任务子集的代码覆盖信息;接收每个所述子线程发送的其自身采集的代码覆盖信息并将接收的所述代码覆盖信息进行转换处理得到代码覆盖率。能够有效提升变异测试批量执行效率以及变异测试的准确性。
[0117]
虽然本发明提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
[0118]
本领域技术人员应明白,本说明书的实施例可提供为方法、装置(系统)或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd

rom、光学存储器等)上实施的计算机程序产品的形式。
[0119]
本发明是参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0120]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0121]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0122]
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部
分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。本发明并不局限于任何单一的方面,也不局限于任何单一的实施例,也不局限于这些方面和/或实施例的任意组合和/或置换。而且,可以单独使用本发明的每个方面和/或实施例或者与一个或更多其他方面和/或其实施例结合使用。
[0123]
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1