技术领域technical field
本发明涉及软件测试领域,尤指是一种基于二维码的测试方法及系统。The invention relates to the field of software testing, in particular to a testing method and system based on two-dimensional codes.
背景技术Background technique
对于不方便直接在设备上编程的测试来说,例如手机、路由器、各种智能产品等,若需要要更改的测试代码,必须重新编译一个新的包,并使用数据线的方式安装到设备上。对于测试人员来说:1.需要重新编译测试程序,2.需要重新安装,3.安装时需要数据线或存储卡;操作比较复杂。目前技术中没有发现更加方便的测试方法。For tests that are not convenient to program directly on the device, such as mobile phones, routers, various smart products, etc., if you need to change the test code, you must recompile a new package and install it on the device using a data cable . For testers: 1. The test program needs to be recompiled, 2. It needs to be reinstalled, 3. A data cable or memory card is required for installation; the operation is more complicated. No more convenient test method has been found in the current technology.
发明内容Contents of the invention
本发明的目的是提供一种基于二维码的测试方法及系统,避免了更改测试文件时编译和安装这两个过程,可以在应用(即待测试程序)正常运行的情况下,更改测试代码。The purpose of the present invention is to provide a test method and system based on a two-dimensional code, which avoids the two processes of compiling and installing when changing the test file, and can change the test code when the application (that is, the program to be tested) is running normally .
本发明提供的一种基于二维码的测试方法,包括:A kind of testing method based on two-dimensional code provided by the present invention comprises:
待测试程序中包含二维码扫描模块;The program to be tested contains a QR code scanning module;
采用某种语言编写测试程序并生成测试文件;Write a test program in a certain language and generate a test file;
将至少一部分所述测试文件按照文本转化为二维码;converting at least a part of the test file into a two-dimensional code according to the text;
所述待测试程序利用所述二维码扫描模块扫描所述二维码并转化为所述测试文件;The program to be tested uses the two-dimensional code scanning module to scan the two-dimensional code and convert it into the test file;
将所述转化后的测试文件存储,之后运行整个测试文件,执行其中的测试代码。The converted test file is stored, and then the entire test file is run to execute the test code therein.
本方案利用二维码技术,将需要更改的测试文件按照文本转换为二维码,采用扫描二维码的方式传输测试文件中的代码,省去了过去改变测试文件时需要编译,需要连接数据线或拆装存储卡的缺点。并且由于二维码扫描速度快,大大提高更新测试代码的速度。This solution uses two-dimensional code technology to convert the test file that needs to be changed into a two-dimensional code according to the text, and transmits the code in the test file by scanning the two-dimensional code, which saves the need to compile and connect data when changing the test file in the past Disadvantages of disconnecting wires or removing memory cards. And because the scanning speed of the QR code is fast, the speed of updating the test code is greatly improved.
优选地,所述测试文件进一步包括用脚本语言写成的逻辑和配置部分和相应的脚本解释器;Preferably, the test file further includes a logic and configuration part written in a scripting language and a corresponding script interpreter;
所述脚本解释器为预先存储于待测试程序中,或者按照文本转化为二维码,并利用所述二维码扫描模块扫描所述二维码并转化为所述脚本解释器;。The script interpreter is pre-stored in the program to be tested, or converted into a two-dimensional code according to the text, and the two-dimensional code is scanned by the two-dimensional code scanning module and converted into the script interpreter;
所述脚本解释器用于解释执行所述逻辑和配置部分。The script interpreter is used to interpret and execute the logic and configuration parts.
本优选方案利用脚本语言的动态性,把测试的逻辑和配置部分用脚本写成;在测试程序里加入一个脚本解释器,当需要更新测试逻辑(即测试文件)时,测试程序用二维码扫描包含脚本信息的二维码,并用脚本解释器解释执行,这样就完成了测试逻辑的更改。脚本解释器由于通常不需要更改,因此可以直接预存于待测试程序中。当然,脚本解释器需要更改或者首次安装的时候同样也可以利用扫描二维码存入测试程序。This preferred scheme utilizes the dynamics of the scripting language to write the logic and configuration part of the test in a script; a script interpreter is added in the test program, and when the test logic (i.e. the test file) needs to be updated, the test program scans with a two-dimensional code The QR code containing the script information is interpreted and executed by the script interpreter, thus completing the change of the test logic. Since the script interpreter usually does not need to be changed, it can be directly pre-stored in the program to be tested. Of course, when the script interpreter needs to be changed or installed for the first time, it can also be stored in the test program by scanning the QR code.
所述至少一部分测试文件按照文本转化为一个或多个二维码;The at least a part of the test file is converted into one or more two-dimensional codes according to the text;
当至少一部分测试文件按照文本转化为多个二维码时,首先按照特定规则将至少一部分测试文件分割为若干子文件,每个所述子文件的正文转化为一个二维码;When at least a part of the test file is converted into a plurality of two-dimensional codes according to the text, first at least a part of the test file is divided into several sub-files according to specific rules, and the text of each sub-file is converted into a two-dimensional code;
当所述二维码扫描模块将上述每个子文件正文转化的二维码转化回子文件正文后;按照特定规则将所述若干子文件的正文合并为所述至少一部分测试文件。After the two-dimensional code scanning module converts the two-dimensional code converted from the text of each sub-file back to the text of the sub-file; according to specific rules, the text of the several sub-files is combined into the at least a part of the test file.
进一步优选地,所述至少一部分测试文件按照文本转化为多个二维码,以及后续步骤中将所述多个二维码转化为所述至少一部分测试文件的具体方法为:Further preferably, the at least a part of the test file is converted into a plurality of two-dimensional codes according to the text, and the specific method for converting the plurality of two-dimensional codes into the at least a part of the test files in the subsequent steps is:
生成一头文件,定义所述至少一部分测试文件的某行到某行作为子文件之一,将至少一部分测试文件按照头文件设定的行数进行分割,并且将头文件和所有子文件分别转化为二维码;Generate a header file, define a certain line to a certain line of the at least a part of the test file as one of the sub-files, divide at least a part of the test file according to the number of lines set in the header file, and convert the header file and all sub-files into QR code;
首先扫描头文件对应的二维码,读取其内容,之后扫描各个子文件对应的二维码,并根据头文件中的定义,拼接文本,生成所述至少一部分测试文件。First scan the two-dimensional code corresponding to the header file, read its content, then scan the two-dimensional code corresponding to each sub-file, and splicing text according to the definition in the header file to generate at least a part of the test file.
由于每个二维码能够承载的信息量有限,如果需要采用二维码传递的测试文件较长,那么无法用一个二维码包含,需要分为多个二维码。本优选方案中提供了一种测试文件分割和合并以适应二维码的具体方式,该种方式要求必须定义一个头文件,必须依赖头文件来进行合并。Due to the limited amount of information that each QR code can carry, if the test file that needs to be transmitted using the QR code is long, it cannot be contained in one QR code and needs to be divided into multiple QR codes. This preferred solution provides a specific method for splitting and merging test files to adapt to the two-dimensional code. This method requires that a header file must be defined, and the header file must be relied on for merging.
进一步优选地,所述至少一部分测试文件按照文本转化为多个二维码,以及后续步骤中将所述多个二维码转化为所述至少一部分测试文件的具体方法为:Further preferably, the at least a part of the test file is converted into a plurality of two-dimensional codes according to the text, and the specific method for converting the plurality of two-dimensional codes into the at least a part of the test files in the subsequent steps is:
将所述至少一部分测试文件分割为若干子文件,每个所述子文件具有具体正文;dividing the at least a part of the test file into several sub-files, each of which has a specific text;
计算每个子文件正文的替代值;Calculate the substitution value for each subfile body;
将所述子文件正文内容处理为依次排列的前一正文替代值、本文件正文替代值、本文件正文、后一正文替代值,该四部分之间用标识符断开,并将所述处理后的子文件正文分别生成二维码;The content of the sub-file text is processed into the previous text replacement value, this file text replacement value, this file text, and the next text replacement value arranged in sequence, and the four parts are separated by identifiers, and the processing The body of the sub-file after that generates a two-dimensional code respectively;
任意顺序读取二维码并还原为子文件正文;Read the QR code in any order and restore it to the sub-file text;
从任意的子文件正文开始,根据其中的前一正文替代值找到前一正文并置于该子文件正文之前,之后继续向前查找直到不存在更前文本为止,然后根据后一正文替代值向后查找到不存在更后文本为止,此时完成合并;或者从所述任意子文件正文开始先向后查找合并,再向前查找直至完成合并;Start from any sub-file text, find the previous text according to the previous text substitution value and place it before the sub-file text, then continue to search forward until there is no more previous text, and then use the latter text substitution value to After searching until there is no later text, the merging is completed at this time; or from the text of any sub-file, the merging is first searched backwards, and then forwards are searched until the merging is completed;
最后将合并后的文本去掉替代值及标识符则最终恢复为所述至少一部分测试文件。Finally, the merged text is removed from the substitute value and the identifier, and finally the at least a part of the test file is restored.
本优选方案中提供了另一种测试文件分割和合并以适应二维码的具体方式,该种方式无需定义头文件,但需要通过前一正文和后一正文的替代值来寻找和合并各个子文件正文。这个替代值可以用任何常见算法计算出与子文件正文内容相关的值。例如各种常见的对称或非对称加密算法都可以做到,例如哈希算法、椭圆曲线算法、SM3算法等。本发明使用这些算法并非为了加密,只是为了对文本进行标识。Another specific method for splitting and merging test files to adapt to the two-dimensional code is provided in this preferred solution. This method does not need to define a header file, but needs to find and merge each sub-text through the substitution value of the previous text and the next text. The text of the document. This surrogate value can be calculated using any common algorithm relative to the subfile's body content. For example, various common symmetric or asymmetric encryption algorithms can be implemented, such as hash algorithm, elliptic curve algorithm, SM3 algorithm, etc. The present invention uses these algorithms not for encryption, but for marking text.
进一步优选地,所述替代值为根据文本正文计算出的哈希值,采用全部哈希值或者只取其中的若干位。Further preferably, the replacement value is a hash value calculated according to the text body, and all hash values or only some of them are used.
进一步优选地,将所述子文件正文内容处理为依次排列的前一正文替代值、本文件正文替代值、本文件正文、后一正文替代值时,若不存在前一正文替代值或者不存在后一正文替代值时,用特定字符标识;Further preferably, when processing the content of the text of the sub-file into the previous text substitution value, the text substitution value of this document, the text of this document, and the substitution value of the next text in sequence, if there is no substitution value for the previous text or there is no When the latter text replaces the value, it is identified with specific characters;
后续在去掉替代值及标识符时,同时去掉所述特定字符。Subsequently, when removing the substitute value and the identifier, the specific character is removed at the same time.
上述优选方案进一步优化了测试文件分割和合并的方案,将哈希值的长度做有效限制,并且定义了不存在前一正文哈希值或者不存在后一正文哈希值时的标识。The above preferred solution further optimizes the test file segmentation and merging scheme, effectively limits the length of the hash value, and defines the identifier when there is no previous text hash value or no subsequent text hash value.
本发明还提供一种基于二维码的测试系统,包括:The present invention also provides a test system based on two-dimensional codes, including:
二维码生成模块,将编写好的测试文件中至少一部分按照文本转化为二维码;A two-dimensional code generation module, which converts at least a part of the written test file into a two-dimensional code according to the text;
二维码扫描模块,设置于待测试程序中,扫描所述二维码并转化为所述至少一部分测试文件;A two-dimensional code scanning module, arranged in the program to be tested, scans the two-dimensional code and converts it into at least a part of the test file;
存储模块,存储所述测试文件;a storage module for storing the test file;
运行模块,运行所述至少一部分的测试文件,执行其中的测试代码。Run the module, run the at least a part of the test files, and execute the test codes therein.
优选地,该系统还包括:测试文件分割模块,按照特定规则将至少一部分测试文件分割为若干子文件;每个所述子文件的正文转化为一个二维码;Preferably, the system also includes: a test file segmentation module, which divides at least a part of the test file into several sub-files according to specific rules; the text of each sub-file is converted into a two-dimensional code;
以及测试文件合并模块,当所述二维码扫描模块将上述每个子文件正文转化的二维码转化回子文件正文后;按照特定规则将所述若干子文件的正文合并为所述至少一部分的测试文件。And the test file merging module, when the two-dimensional code scanning module converts the two-dimensional code converted from the text of each sub-file back to the text of the sub-file; according to specific rules, the text of the several sub-files is merged into the at least part of the text test file.
本发明有益效果至少包括以下之一:The beneficial effects of the present invention include at least one of the following:
1、本发明使测试人员能根据实际需要很快地更新测试逻辑,省去了编译和安装这两个过程,不依赖数据线、存储卡等硬件。1. The present invention enables testers to quickly update the test logic according to actual needs, saves the two processes of compiling and installing, and does not rely on hardware such as data lines and memory cards.
2、利用二维码可以跨地域扫描的特点,采用本发明在研发和测试在不同区域时也能很快地更新测试程序。2. Utilizing the feature that the two-dimensional code can be scanned across regions, the test program can be quickly updated when R&D and testing are carried out in different regions by using the present invention.
3、本发明经测试,证明效果可靠、运行稳定。3. The present invention has been tested and proved to be reliable in effect and stable in operation.
附图说明Description of drawings
下面结合附图和具体实施方式对本发明作进一步详细说明:Below in conjunction with accompanying drawing and specific embodiment the present invention is described in further detail:
图1为本发明提出的一种基于二维码的测试系统的第一实施例示意图;Fig. 1 is a schematic diagram of the first embodiment of a test system based on a two-dimensional code proposed by the present invention;
图2为本发明提出的一种基于二维码的测试系统的第二实施例示意图;图3为本发明提出的一种基于二维码的测试方法的的流程示意图;Fig. 2 is a schematic diagram of the second embodiment of a test system based on a two-dimensional code proposed by the present invention; Fig. 3 is a schematic flow chart of a test method based on a two-dimensional code proposed by the present invention;
图中:In the picture:
1二维码生成模块2二维码扫描模块3存储模块1 QR code generation module 2 QR code scanning module 3 Storage module
4运行模块5测试文件分割模块6测试文件合并模块4 run module 5 test file split module 6 test file merge module
100基于二维码的测试系统100 QR code-based test system
具体实施方式detailed description
为了更清楚地说明本发明实施例,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,以下说明和附图对于本发明是示例性的,并且不应被理解为限制本发明。以下说明描述了众多具体细节以方便对本发明理解。然而,在实施例中,熟知的或常规的细节并未说明,以满足说明书简洁的要求。In order to illustrate the embodiments of the present invention more clearly, the accompanying drawings that need to be used in the description of the embodiments will be briefly introduced below. Obviously, the following descriptions and accompanying drawings are exemplary of the present invention and should not be interpreted as limit the invention. The following description describes numerous specific details to facilitate an understanding of the present invention. However, in the examples, well-known or conventional details are not described in order to satisfy the requirement of conciseness of the description.
本发明中的术语解释:Explanation of terms in the present invention:
(1)脚本语言:一种可以动态执行的语言,即可以在运行时改变状态及代码结构。脚本语言用来控制软件应用程序,脚本通常以文本(如ASCII)保存,只在被调用时进行解释或编译。如shell,python,ruby,lua,lisp等。(1) Scripting language: A language that can be executed dynamically, that is, the state and code structure can be changed at runtime. Scripting languages are used to control software applications. Scripts are usually stored in text (such as ASCII) and interpreted or compiled only when called. Such as shell, python, ruby, lua, lisp, etc.
(2)脚本解释器:把脚本解释成为一种另一种语言执行,也可以是同一种语言,现在主流脚本语言都有各种语言写成的解释器,比如用java写成的python,rupy,lisp等。(2) Script interpreter: Interpret the script into another language for execution, or the same language. Now mainstream scripting languages have interpreters written in various languages, such as python, rupy, lisp written in java Wait.
(3)java语言:Java是由SunMicrosystems公司推出的Java面向对象程序设计语言,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时android系统上的主要开发语言。(3) Java language: Java is a Java object-oriented programming language launched by Sun Microsystems. It is widely used in PCs, data centers, game consoles, scientific supercomputers, mobile phones and the Internet. At the same time, it is the main development language on the android system.
(4)二维码:二维码(2-dimensionalbarcode)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的;在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理。它具有条码技术的一些共性:每种码制有其特定的字符集;每个字符占有一定的宽度;具有一定的校验功能等。同时还具有对不同行的信息自动识别功能、及处理图形旋转变化点。二维码可以作为图像信息和文字信息相互转换的一种手段,现已大量使用。扫描二维码一般是指通过摄像头等识别设备把图像信息转成文本信息。(4) Two-dimensional code: Two-dimensional code (2-dimensional barcode) is a black and white graphic that is distributed on a plane (two-dimensional direction) with a specific geometric figure according to certain rules to record data symbol information; Cleverly use the concept of "0" and "1" bit streams that constitute the internal logic basis of the computer, use several geometric shapes corresponding to binary to represent text and numerical information, and automatically read and read through image input equipment or photoelectric scanning equipment. Realize automatic processing of information. It has some common features of barcode technology: each code system has its specific character set; each character occupies a certain width; it has certain verification functions, etc. At the same time, it also has the function of automatic identification of information in different rows, and the processing of graphic rotation and change points. Two-dimensional codes can be used as a means of mutual conversion between image information and text information, and have been widely used. Scanning a QR code generally refers to converting image information into text information through a recognition device such as a camera.
本发明还包括处理器,含单核处理器或多核处理器。处理器也可称为一个或多个微处理器、中央处理单元(CPU)等等。更具体地,处理器可为复杂的指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现其他指令集的处理器,或实现指令集组合的处理器。处理器还可为一个或多个专用处理器,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器、图形处理器、网络处理器、通信处理器、密码处理器、协处理器、嵌入式处理器、或能够处理指令的任何其他类型的逻辑部件。处理器用于执行本发明所讨论的操作和步骤的指令。The invention also includes processors, including single-core processors or multi-core processors. A processor may also be referred to as one or more microprocessors, a central processing unit (CPU), and so on. More specifically, the processor may be a complex instruction set computing (CISC) microprocessor, a reduced instruction set computing (RISC) microprocessor, a very long instruction word (VLIW) microprocessor, or a processor implementing other instruction sets, Or a processor that implements instruction set combination. The processor can also be one or more special-purpose processors, such as application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), digital signal processors (DSPs), network processors, graphics processors, network processors, A communications processor, cryptographic processor, coprocessor, embedded processor, or any other type of logic capable of processing instructions. The processor is used to execute the instructions for the operations and steps discussed in the present invention.
第一实施例first embodiment
图1为本发明提出的一种基于二维码的测试系统的示意图。如图1,一种基于二维码的测试系统,包括:FIG. 1 is a schematic diagram of a test system based on a two-dimensional code proposed by the present invention. As shown in Figure 1, a test system based on two-dimensional codes includes:
二维码生成模块1,将编写好的测试文件中至少一部分按照文本转化为二维码。将文本转化为二维码时目前已经存在的技术,此处不再赘述。测试文件可以全部转化为二维码,也可以只转化一部分。因为在实际测试时测试文件的许多内容不需要修改,一次储存到需要测试的设备即可,经常需要替换的通常只是一部分。The two-dimensional code generation module 1 converts at least a part of the written test file into a two-dimensional code according to the text. The existing technologies for converting text into QR codes will not be repeated here. All test files can be converted into QR codes, or only part of them can be converted. Because many contents of the test file do not need to be modified during the actual test, they can be stored in the device to be tested at one time, and usually only a part needs to be replaced.
二维码扫描模块2,设置于待测试程序中,扫描二维码并转化为中至少一部分测试文件。待测试程序需要包括该二维码扫描模块2,相应的,待测试程序所在的设备也应自带或外接摄像头等设备能够扫描二维码。The two-dimensional code scanning module 2 is set in the program to be tested, scans the two-dimensional code and converts it into at least a part of test files. The program to be tested needs to include the QR code scanning module 2. Correspondingly, the device where the program to be tested is located should also have its own or an external camera and other equipment capable of scanning the QR code.
存储模块3,存储测试文件。存储模块可由存储器实现,可包括一个或多个易失性存储设备,如随机存取存储器(RAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)或其他类型的存储设备。存储器可存储包括由处理器或任何其他设备执行的指令序列的信息。例如,多种操作系统、设备驱动程序、固件(例如,输入输出基本系统或BIOS)和/或应用程序的可执行代码和/或数据可被加载在存储器中并且由处理器执行。The storage module 3 stores test files. A memory module can be implemented by memory, which can include one or more volatile memory devices, such as random access memory (RAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), static RAM (SRAM), or other types of memory devices . Memory may store information including sequences of instructions for execution by a processor or any other device. For example, executable code and/or data for various operating systems, device drivers, firmware (eg, Basic Input Output System or BIOS), and/or application programs may be loaded in memory and executed by the processor.
以及运行模块4,运行测试文件,执行测试文件中的测试代码。运行模块4可以通过上述处理器以及相关指令实现。And run module 4, run the test file, and execute the test code in the test file. The running module 4 can be realized by the above-mentioned processor and related instructions.
第二实施例second embodiment
如图2为本发明提出的一种基于二维码的测试系统的第二实施例示意图,与上述第一实施例相同,该系统包括,二维码生成模块1,二维码扫描模块2、存储模块3和运行模块4。该系统还包括:测试文件分割模块5,按照特定规则将至少一部分测试文件分割为若干子文件;每个子文件的正文转化为一个二维码。以及测试文件合并模块6,当二维码扫描模块将上述每个子文件正文转化的二维码转化回子文件正文后;按照特定规则将若干子文件的正文合并为测试文件。Figure 2 is a schematic diagram of a second embodiment of a test system based on a two-dimensional code proposed by the present invention, which is the same as the first embodiment above, the system includes a two-dimensional code generation module 1, a two-dimensional code scanning module 2, Storage module 3 and running module 4. The system also includes: a test file segmentation module 5, which divides at least a part of the test file into several sub-files according to specific rules; the text of each sub-file is converted into a two-dimensional code. And the test file merging module 6, after the two-dimensional code scanning module converts the two-dimensional code of each sub-file text into the sub-file text; according to specific rules, the text of several sub-files is merged into a test file.
图3为本发明提出的一种基于二维码的测试方法的流程图。如图3所示,一种基于二维码的测试方法,包括:Fig. 3 is a flowchart of a testing method based on a two-dimensional code proposed by the present invention. As shown in Figure 3, a test method based on a two-dimensional code includes:
S0待测试程序中包含二维码扫描模块;S0 The program to be tested contains a QR code scanning module;
S1采用某种语言编写测试程序并生成测试文件;S1 Use a certain language to write test programs and generate test files;
S2将至少一部分测试文件按照文本转化为二维码;S2 converts at least a part of the test file into a two-dimensional code according to the text;
S3待测试程序利用二维码扫描模块扫描二维码并转化为测试文件;S3 The program to be tested uses the QR code scanning module to scan the QR code and convert it into a test file;
S4将转化后的测试文件存储并运行,之后运行整个测试文件,执行其中的测试代码。S4 stores and runs the converted test file, and then runs the entire test file and executes the test code therein.
对上述测试方法改进得到优选的实施方法:测试文件进一步包括用脚本语言写成的逻辑和配置部分和相应的脚本解释器。A preferred implementation method is obtained by improving the above test method: the test file further includes a logic and configuration part written in a script language and a corresponding script interpreter.
脚本解释器为预先存储于待测试程序中,或者按照文本转化为二维码,并利用二维码扫描模块扫描二维码并转化为脚本解释器。The script interpreter is pre-stored in the program to be tested, or converted into a two-dimensional code according to the text, and the two-dimensional code is scanned by the two-dimensional code scanning module and converted into a script interpreter.
对上述测试方法改进得到优选的实施方法:至少一部分测试文件按照文本转化为一个或多个二维码。A preferred implementation method is obtained by improving the above test method: at least a part of the test file is converted into one or more two-dimensional codes according to the text.
当至少一部分测试文件按照文本转化为多个二维码时,首先按照特定规则将至少一部分测试文件分割为若干子文件,每个子文件的正文转化为一个二维码。When at least a part of the test file is converted into multiple two-dimensional codes according to the text, at least one part of the test file is first divided into several sub-files according to specific rules, and the text of each sub-file is converted into a two-dimensional code.
当二维码扫描模块将上述每个子文件正文转化的二维码转化回子文件正文后;按照特定规则将若干子文件的正文合并为至少一部分测试文件。After the two-dimensional code scanning module converts the two-dimensional code converted from the text of each sub-file back to the text of the sub-file; according to specific rules, the text of several sub-files is combined into at least a part of the test file.
以一个具体例子说明上述方法:To illustrate the above method with a concrete example:
例如测试对象为安卓(Android)系统手机上的计算器这个应用程序。测试内容为计算器计算567/3,看结果是否为189。测试文件为CalculatorHitSomeButtons.java,其文本内容如下:For example, the test object is the application program of the calculator on the Android (Android) system mobile phone. The test content is to calculate 567/3 with the calculator to see if the result is 189. The test file is CalculatorHitSomeButtons.java, and its text content is as follows:
上述测试文件用到了安卓系统中的testTapSomeButtons函数,步骤是依次点击(del=567/3=)按钮,再取出显示框的结果与189比较。见上述测试文件的文本中被注释的testTapSomeButtons函数。The above test file uses the testTapSomeButtons function in the Android system. The steps are to click the (del=567/3=) buttons one by one, and then take out the result of the display box and compare it with 189. See the commented testTapSomeButtons function in the text of the test file above.
该脚本的解释器为jscheme.jar,这是一个开源的scheme(scheme是一种lisp方言)解释器,用java写成,可以被Android程序引用,过程如下:The interpreter of the script is jscheme.jar, which is an open source scheme (scheme is a lisp dialect) interpreter written in java and can be referenced by Android programs. The process is as follows:
1.导入jscheme.jar中的类1. Import the classes in jscheme.jar
importjscheme.JS;import jscheme.JS;
importjsint.InputPort;import jsint.InputPort;
2.定义一个静态变量,用于记录当前所在对象本身,见上述测试文件的文本中的mThis,并给它赋值。2. Define a static variable for recording the current object itself, see mThis in the text of the above test file, and assign a value to it.
3.用scheme脚本写测试逻辑,即testTapSomeButtons函数,见下述s.scm。s.scm的具体代码内容为:3. Use the scheme script to write the test logic, that is, the testTapSomeButtons function, see s.scm below. The specific code content of s.scm is:
(import"android.view.KeyEvent")(import "android. view. KeyEvent")
(import"com.android.calculator2.CalculatorHitSomeButtons")(import "com.android.calculator2.CalculatorHitSomeButtons")
(definethisObjCalculatorHitSomeButtons.mThis$)(definethisObjCalculatorHitSomeButtons.mThis$)
(definetestTapSomeButtons(definetestTapSomeButtons
(begin(begin
(.tapthisObjcom.android.calculator2.R$id.equal$)(.tapthisObjcom.android.calculator2.R$id.equal$)
(.tapthisObjcom.android.calculator2.R$id.del$)(.tapthisObjcom.android.calculator2.R$id.del$)
(.tapthisObjcom.android.calculator2.R$id.digit5$)(.tapthisObjcom.android.calculator2.R$id.digit5$)
(.tapthisObjcom.android.calculator2.R$id.digit6$)(.tapthisObjcom.android.calculator2.R$id.digit6$)
(.tapthisObjcom.android.calculator2.R$id.digit7$)(.tapthisObjcom.android.calculator2.R$id.digit7$)
(.tapthisObjcom.android.calculator2.R$id.div$)(.tapthisObjcom.android.calculator2.R$id.div$)
(.tapthisObjcom.android.calculator2.R$id.digit3$)(.tapthisObjcom.android.calculator2.R$id.digit3$)
(.tapthisObjcom.android.calculator2.R$id.equal$)(.tapthisObjcom.android.calculator2.R$id.equal$)
(.assertEqualsthisObj(displayValthisObj)"189")))(.assertEqualsthisObj(displayValthisObj) "189")))
(testTapSomeButtons)(testTapSomeButtons)
4.在java代码中调用s.scm,即把原来testTapSomeButtons中的java代码换成执行s.scm,见上述测试文件的文本中的没被注释的testTapSomeButtons。4. Call s.scm in the java code, that is, replace the original java code in testTapSomeButtons with s.scm, see the uncommented testTapSomeButtons in the text of the above test file.
在手机里执行测试程序即可运行s.scm,要改变测试的具体逻辑,如要改成567/3=41,只要对s.scm中的代码进行改变,再重新执行即可,改变后的代码见s1.scm:Execute the test program in the mobile phone to run s.scm. If you want to change the specific logic of the test, if you want to change it to 567/3=41, just change the code in s.scm and execute it again. After the change See s1.scm for the code:
(import"android.view.KeyEvent")(import "android. view. KeyEvent")
(import"com.android.calculator2.CalculatorHitSomeButtons")(import "com.android.calculator2.CalculatorHitSomeButtons")
(definethisObjCalculatorHitSomeButtons.mThis$)(definethisObjCalculatorHitSomeButtons.mThis$)
(definetestTapSomeButtons(definetestTapSomeButtons
(begin(begin
(.tapthisObjcom.android.calculator2.R$id.equal$)(.tapthisObjcom.android.calculator2.R$id.equal$)
(.tapthisObjcom.android.calculator2.R$id.del$)(.tapthisObjcom.android.calculator2.R$id.del$)
(.tapthisObjcom.android.calculator2.R$id.digit1$)(.tapthisObjcom.android.calculator2.R$id.digit1$)
(.tapthisObjcom.android.calculator2.R$id.digit2$)(.tapthisObjcom.android.calculator2.R$id.digit2$)
(.tapthisObjcom.android.calculator2.R$id.digit3$)(.tapthisObjcom.android.calculator2.R$id.digit3$)
(.tapthisObjcom.android.calculator2.R$id.div$)(.tapthisObjcom.android.calculator2.R$id.div$)
(.tapthisObjcom.android.calculator2.R$id.digit3$)(.tapthisObjcom.android.calculator2.R$id.digit3$)
(.tapthisObjcom.android.calculator2.R$id.equal$)(.tapthisObjcom.android.calculator2.R$id.equal$)
(.assertEqualsthisObj(displayValthisObj)"41")))(.assertEqualsthisObj(displayValthisObj) "41")))
(testTapSomeButtons)(testTapSomeButtons)
这个具体例子中,将s.scm替换成s1.scm即可实现测试主要逻辑和设置部分的替换,而s.scm、s1.scm这些代码的文本即可利用本发明方法转化为二维码进行传输。In this specific example, replacing s.scm with s1.scm can realize the replacement of the main logic of the test and the setting part, and the texts of codes such as s.scm and s1.scm can be converted into two-dimensional codes by using the method of the present invention. transmission.
上述方法中,至少一部分测试文件按照文本转化为多个二维码,以及后续步骤中将多个二维码转化为至少一部分测试文件的一个具体方法为:In the above method, at least part of the test files are converted into multiple two-dimensional codes according to the text, and a specific method for converting multiple two-dimensional codes into at least part of the test files in subsequent steps is as follows:
假设需要转换的测试文件的文本为:Suppose the text of the test file to be converted is:
11111111111111111111
22222222222222222222
33333333333333333333
44444444444444444444
55555555555555555555
66666666666666666666
77777777777777777777
88888888888888888888
99999999999999999999
00000000000000000000
生成一头文件,定义测试文件的某行到某行作为子文件之一。例如定义头文件head内容为:1,5,body1,6,10,body2,即定义上述正文中1-5行为body1,6-10行为body2。将整个测试文件按照头文件设定的行数进行分割,则分割成的body1的正文为:Generate a header file, defining a certain line to a certain line of the test file as one of the sub-files. For example, define the content of the header file head as: 1,5,body1,6,10,body2, that is, define 1-5 in the above text as body1,6-10 as body2. Divide the entire test file according to the number of lines set in the header file, then the text of the divided body1 is:
11111111111111111111
22222222222222222222
33333333333333333333
44444444444444444444
55555555555555555555
body2的正文为:The text of body2 is:
66666666666666666666
77777777777777777777
88888888888888888888
99999999999999999999
00000000000000000000
并且将头文件head和所有子文件body1、body2分别转化为二维码。And convert the header file head and all sub-files body1 and body2 into QR codes respectively.
首先扫描头文件head对应的二维码,读取其内容,之后扫描各个子文件body1、body2对应的二维码。并根据头文件中的定义1-5行为body1,6-10行为body2,拼接正文文本,生成转换前的测试文件。First scan the QR code corresponding to the header file head, read its content, and then scan the QR code corresponding to each sub-file body1, body2. And according to the definition in the header file, line 1-5 is body1, line 6-10 is body2, splicing the body text, and generating a test file before conversion.
由于每个二维码能够承载的信息量有限,如果需要转换的测试文件较长,那么无法用一个二维码包含,需要分为多个二维码。本优选方案中提供了一种测试文件分割和合并以适应二维码的具体方式,该种方式要求必须定义一个头文件,必须依赖头文件来进行合并。并且头文件中要确定的定义第几行到第几行是哪一部分,分割如果定义稍有问题可能拼接错乱。因此该方法适合比较短的测试文件,下面还提供了另一种方法,避免拼接错乱,可以适用于较长的测试文件。Due to the limited amount of information that each QR code can carry, if the test file to be converted is long, it cannot be contained in one QR code and needs to be divided into multiple QR codes. This preferred solution provides a specific method for splitting and merging test files to adapt to the two-dimensional code. This method requires that a header file must be defined, and the header file must be relied on for merging. And in the header file, it is necessary to determine which part is the definition from the first line to the first line. If there is a slight problem with the definition of the segmentation, the splicing may be disordered. Therefore, this method is suitable for relatively short test files. Another method is provided below to avoid splicing confusion and can be applied to longer test files.
需要转换的至少一部分测试文件按照文本转化为多个二维码,以及后续步骤中将多个二维码转化回测试文件的另一个具体实施方法为:At least a part of the test files that need to be converted are converted into multiple two-dimensional codes according to the text, and another specific implementation method for converting multiple two-dimensional codes back to the test file in the subsequent steps is as follows:
将需要转换的测试文件A分割为4个子文件A1,A2,A3,A4,每个子文件具有对应的具体正文T1,T2,T3,T4。分割文件可以手工分,也可以使用一些命令行工具,也可以集成到测试程序里。使用编程的方式实现分割为已有的技术。Divide the test file A to be converted into four sub-files A1, A2, A3, A4, and each sub-file has a corresponding specific text T1, T2, T3, T4. The split files can be divided manually, some command line tools can also be used, and they can also be integrated into the test program. Use programmatic methods to achieve segmentation into existing technologies.
计算每个子文件正文T1,T2,T3,T4的哈希(hash)值,取前6位,记为H1,H2,H3,H4。当然,可以取全部hash值或者只取其中的某几位。若取全部太长,占用大量文本,不方便。求一个字串或文本的hash值也是很通用的技术,也可以集成在测试程序里。本发明的所有步骤完全可以采用程序自动实现。Calculate the hash (hash) value of each sub-file text T1, T2, T3, T4, take the first 6 bits, and record it as H1, H2, H3, H4. Of course, you can take all the hash values or only some of them. If it is too long to take all, it will take up a lot of text, which is inconvenient. Finding the hash value of a string or text is also a very common technique, and can also be integrated in the test program. All the steps of the present invention can be realized automatically by using programs.
将每个子文件正文内容处理为依次排列的前一正文hash值、本文件正文hash值、本文件正文、后一正文hash值,该四部分之间用标识符断开。处理的子文件表示如下:The text content of each sub-file is processed into the hash value of the previous text, the hash value of the text of this file, the text of this file, and the hash value of the next text arranged in sequence, and the four parts are separated by identifiers. The processed subfiles are represented as follows:
A1:NULL-H1-T1-H2A1:NULL-H1-T1-H2
A2:H1-H2-T2-H3A2:H1-H2-T2-H3
A3:H2-H3-T3-H4A3:H2-H3-T3-H4
A4:H3-H4-T4-NULLA4:H3-H4-T4-NULL
NULL表示没有前段或后一正文。NULL indicates no preceding or following body.
将处理后的子文件正文分别生成二维码B1,B2,B3,B4。之后任意顺序读取二维码并还原为子文件正文。例如手机扫描生成的二维码B1,B2,B3,B4,读到到字符串S1,S2,S3,S4。其实字符串的本身内容即A1,A2,A3,A4的内容,但扫描读到的未必与A1,A2,A3,A4顺序相同,因此先记为S1,S2,S3,S4。例如S1为H1-H2-T2-H3,S2为H3-H4-T4-NULL,S3为NULL-H1-T1-H2,S4为H2-H3-T3-H4。Generate two-dimensional codes B1, B2, B3, and B4 from the processed sub-file text respectively. Then read the QR codes in any order and restore them to the sub-file text. For example, the two-dimensional codes B1, B2, B3, and B4 generated by scanning the mobile phone read the strings S1, S2, S3, and S4. In fact, the content of the string itself is the content of A1, A2, A3, and A4, but the sequence read by the scan may not be the same as A1, A2, A3, and A4, so it is first recorded as S1, S2, S3, and S4. For example, S1 is H1-H2-T2-H3, S2 is H3-H4-T4-NULL, S3 is NULL-H1-T1-H2, and S4 is H2-H3-T3-H4.
从任意的字符串如S1开始,根据其中的前一正文hash值H1,查找S2,S3,S4中本文件正文hash值为H1的,即S3。此时找到前一正文S3并置于S1之前,合并保存为S。之后继续向前查找直到不存在更前文本为止。例如发现S3没有前一正文,然后根据后一正文hash值H3向后查找到S4,合并保存到S。直到不存在更后文本为止,此时完成合并。然后用正则表达式去掉NULL及中划线“-”以及hash值,最终生成的S就是合并后的脚本(即原文本A)。Starting from any character string such as S1, according to the hash value H1 of the previous text, search for the hash value of the text of this document among S2, S3, and S4, that is, S3. At this time, the previous text S3 is found and placed before S1, and merged and saved as S. Then continue to search forward until there is no more previous text. For example, it is found that S3 does not have the previous text, and then finds S4 backwards according to the hash value H3 of the latter text, and merges and saves it to S. Until no later text exists, the merging is completed at this time. Then use regular expressions to remove NULL, the dash "-" and the hash value, and the final generated S is the merged script (that is, the original text A).
本发明特别适合对不方便直接编程的设备进行测试,例如手机、路由器、各种智能产品等。可以测试这些设备中的各种软硬件,应用程序(APP)等。The present invention is particularly suitable for testing devices that are inconvenient to program directly, such as mobile phones, routers, various intelligent products, and the like. Various hardware and software, application programs (APP), etc. in these devices can be tested.
为了突出本发明的创新部分,本发明上述各设备实施例并没有将与解决本发明所提出的技术问题关系不太密切的模块引入,这并不表明上述设备实施例并不存在其它的模块。In order to highlight the innovative part of the present invention, the above-mentioned device embodiments of the present invention do not introduce modules that are not closely related to solving the technical problems proposed by the present invention, which does not mean that there are no other modules in the above-mentioned device embodiments.
需要说明的是,在本专利的权利要求和说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。It should be noted that in the claims and description of this patent, relative terms such as first and second are only used to distinguish one entity or operation from another entity or operation, and do not necessarily require or Any such actual relationship or order between such entities or operations is implied. Furthermore, the term "comprises", "comprises" or any other variation thereof is intended to cover a non-exclusive inclusion such that a process, method, article, or apparatus comprising a set of elements includes not only those elements, but also includes elements not expressly listed. other elements of or also include elements inherent in such a process, method, article, or apparatus. Without further limitations, an element defined by the statement "comprising a" does not exclude the presence of additional identical elements in the process, method, article or apparatus comprising said element.
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。The above is only a preferred embodiment of the present invention, it should be pointed out that, for those of ordinary skill in the art, without departing from the principle of the present invention, some improvements and modifications can also be made, and these improvements and modifications can also be made. It should be regarded as the protection scope of the present invention.
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201510504013.7ACN105159824B (en) | 2015-08-17 | 2015-08-17 | test method and system based on two-dimensional code |
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201510504013.7ACN105159824B (en) | 2015-08-17 | 2015-08-17 | test method and system based on two-dimensional code |
| Publication Number | Publication Date |
|---|---|
| CN105159824Atrue CN105159824A (en) | 2015-12-16 |
| CN105159824B CN105159824B (en) | 2017-10-13 |
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201510504013.7AActiveCN105159824B (en) | 2015-08-17 | 2015-08-17 | test method and system based on two-dimensional code |
| Country | Link |
|---|---|
| CN (1) | CN105159824B (en) |
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN108153543A (en)* | 2017-12-29 | 2018-06-12 | 北京酷我科技有限公司 | A kind of method of server address switching |
| CN108173963A (en)* | 2018-01-19 | 2018-06-15 | 大唐终端技术有限公司 | A kind of method of the Quick Response Code transmission file of efficient schedulable |
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN1710929A (en)* | 2005-07-11 | 2005-12-21 | 北京中星微电子有限公司 | Data communication system and method for handheld device |
| US20130032634A1 (en)* | 2011-08-05 | 2013-02-07 | Mckirdy Sean | Barcode generation and implementation method and system for processing information |
| CN103744784A (en)* | 2014-01-06 | 2014-04-23 | 中国移动(深圳)有限公司 | Method and system for automatically testing mobile phone applications |
| CN104268611A (en)* | 2014-09-18 | 2015-01-07 | 小米科技有限责任公司 | Webpage synchronizing method and device |
| CN104408031A (en)* | 2014-12-09 | 2015-03-11 | 天津江湾科技有限公司 | Audio book device which uses two dimension code information |
| CN104679644A (en)* | 2013-11-28 | 2015-06-03 | 比亚迪股份有限公司 | Testing method and system for application program in mobile terminal |
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN1710929A (en)* | 2005-07-11 | 2005-12-21 | 北京中星微电子有限公司 | Data communication system and method for handheld device |
| US20130032634A1 (en)* | 2011-08-05 | 2013-02-07 | Mckirdy Sean | Barcode generation and implementation method and system for processing information |
| CN104679644A (en)* | 2013-11-28 | 2015-06-03 | 比亚迪股份有限公司 | Testing method and system for application program in mobile terminal |
| CN103744784A (en)* | 2014-01-06 | 2014-04-23 | 中国移动(深圳)有限公司 | Method and system for automatically testing mobile phone applications |
| CN104268611A (en)* | 2014-09-18 | 2015-01-07 | 小米科技有限责任公司 | Webpage synchronizing method and device |
| CN104408031A (en)* | 2014-12-09 | 2015-03-11 | 天津江湾科技有限公司 | Audio book device which uses two dimension code information |
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN108153543A (en)* | 2017-12-29 | 2018-06-12 | 北京酷我科技有限公司 | A kind of method of server address switching |
| CN108153543B (en)* | 2017-12-29 | 2021-03-02 | 北京酷我科技有限公司 | Server address switching method |
| CN108173963A (en)* | 2018-01-19 | 2018-06-15 | 大唐终端技术有限公司 | A kind of method of the Quick Response Code transmission file of efficient schedulable |
| Publication number | Publication date |
|---|---|
| CN105159824B (en) | 2017-10-13 |
| Publication | Publication Date | Title |
|---|---|---|
| CN111752571B (en) | Program upgrading method, device, equipment and storage medium | |
| KR102332209B1 (en) | System and method for execution of application code compiled according to two instruction set architectures | |
| US9607160B2 (en) | Method and apparatus for providing string encryption and decryption in program files | |
| CN106970820B (en) | Code storage method and code storage device | |
| CN108491207B (en) | Expression processing method, device, equipment and computer readable storage medium | |
| CN110688122B (en) | Method and device for compiling and executing intelligent contract | |
| US9753705B2 (en) | Conditional compilation of bytecode | |
| US20200089477A1 (en) | Program optimization by converting code portions to directly reference internal data representations | |
| CN108984210A (en) | For using control dependency graph that control flow sequence is converted into the technology of data flow program | |
| CN106598828B (en) | A kind of invalid class in source code determines method and device | |
| WO2020259417A1 (en) | Data analysis method and device for block chain | |
| US10990073B2 (en) | Program editing device, program editing method, and computer readable medium | |
| WO2017148057A1 (en) | Software version generation method and apparatus | |
| US9684497B1 (en) | Optimized compiling of a template function | |
| CN117234507A (en) | Code processing method, device, equipment and readable storage medium | |
| CN115544490A (en) | Method and system for detecting password constant in binary file | |
| CN105159824A (en) | Test method and system based on two-dimensional code | |
| CN114398912A (en) | Language processing method, device, equipment and storage medium | |
| CN117591087B (en) | Efficient formalized code construction method aiming at complex data processing requirements | |
| CN108153530A (en) | Optimization method, device, storage medium, processor and the terminal of bytecode | |
| US9836305B1 (en) | Systems and methods for task parallelization | |
| CN113031952B (en) | Method, device and storage medium for determining execution code of deep learning model | |
| CN112306502B (en) | Code generation method and device | |
| CN114091111A (en) | Method and device for storing intelligent contracts of block chains | |
| US20140351799A1 (en) | Binary interface instrumentation |
| Date | Code | Title | Description |
|---|---|---|---|
| C06 | Publication | ||
| PB01 | Publication | ||
| C10 | Entry into substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| GR01 | Patent grant | ||
| GR01 | Patent grant | ||
| TR01 | Transfer of patent right | Effective date of registration:20201119 Address after:Room 10242, No. 260, Jiangshu Road, Xixing street, Binjiang District, Hangzhou City, Zhejiang Province Patentee after:Hangzhou Jiji Intellectual Property Operation Co., Ltd Address before:201616 Shanghai city Songjiang District Sixian Road No. 3666 Patentee before:Phicomm (Shanghai) Co.,Ltd. | |
| TR01 | Transfer of patent right | ||
| TR01 | Transfer of patent right | ||
| TR01 | Transfer of patent right | Effective date of registration:20201221 Address after:8319 Yanshan Road, Bengbu City, Anhui Province Patentee after:Bengbu Lichao Information Technology Co.,Ltd. Address before:Room 10242, No. 260, Jiangshu Road, Xixing street, Binjiang District, Hangzhou City, Zhejiang Province Patentee before:Hangzhou Jiji Intellectual Property Operation Co., Ltd | |
| TR01 | Transfer of patent right | ||
| TR01 | Transfer of patent right | Effective date of registration:20210311 Address after:313000 room 1019, Xintiandi commercial office, Yishan street, Wuxing District, Huzhou, Zhejiang, China Patentee after:Huzhou YingLie Intellectual Property Operation Co.,Ltd. Address before:8319 Yanshan Road, Bengbu City, Anhui Province Patentee before:Bengbu Lichao Information Technology Co.,Ltd. | |
| TR01 | Transfer of patent right | ||
| TR01 | Transfer of patent right | Effective date of registration:20220509 Address after:523000 Room 301, building 5, No. 15, Zhongqian Road, Qingxi Town, Dongguan City, Guangdong Province Patentee after:DONGGUAN VANCODE ELECTRONICS TECHNOLOGY CO.,LTD. Address before:313000 room 1019, Xintiandi commercial office, Yishan street, Wuxing District, Huzhou, Zhejiang, China Patentee before:Huzhou YingLie Intellectual Property Operation Co.,Ltd. |