Disclosure of Invention
In view of this, embodiments of the present invention provide a method and an apparatus for determining a test range, which can accurately determine the test range.
In a first aspect, an embodiment of the present invention provides a method for determining a test range, including:
receiving a range determination instruction, and determining a change method in response to the range determination instruction;
determining at least one target transaction code corresponding to the change method according to the transaction code method relation; wherein the transaction code method relationship comprises: at least one calling method and calling sequence corresponding to the transaction code;
for each of the target transaction codes: determining a call chain of the target transaction code corresponding to the change method, wherein the call chain comprises: at least one calling method having a calling relationship with the change method;
and determining a test range corresponding to the change method according to each call method included in the call chain.
Optionally, before determining at least one target transaction code corresponding to the change method according to the transaction code method relationship, the method further includes:
acquiring a target code included in a target system;
scanning the target code, and determining a calling method and a transaction code related to the target code;
generating calling method information according to the calling method related to the target code;
for each transaction code to which the object code relates: determining at least one calling method and a calling sequence corresponding to the transaction code; and generating a transaction code method relation corresponding to the transaction code according to the at least one calling method and the calling sequence.
Optionally, before determining at least one target transaction code corresponding to the change method according to the transaction code method relationship, the method further includes:
determining whether the calling method information comprises method information corresponding to the change method;
and under the condition that the calling method information comprises method information corresponding to the change method, executing the step of determining at least one target transaction code corresponding to the change method according to the transaction code method relation.
Optionally, the determining that the change method corresponds to the call chain of the target transaction code includes:
determining a target order in which the change method corresponds to the target transaction code;
determining at least one upper method of the changed methods according to the target sequence, wherein the calling sequence of the upper method corresponding to the target transaction code is positioned before the target sequence;
and combining the at least one upper layer method into the calling chain according to the calling sequence corresponding to each upper layer method.
Optionally, the determining, according to each calling method included in the calling chain, a test range corresponding to the change method includes:
determining a target call chain from the at least one call chain;
determining at least one calling method included in the target calling chain;
and taking a code corresponding to a file and/or a module corresponding to at least one calling method included in the target calling chain as the test range.
Optionally, after determining the test range corresponding to the change method according to each calling method included in the calling chain, the method further includes:
determining a test case corresponding to the call chain;
determining a top-level calling method in the calling chain;
and taking the top-level calling method as a test entrance, and testing the codes in the test range by using the test case.
Optionally, the determining a change method includes:
determining a target version number and a reference version number corresponding to the range determination instruction;
and determining the changing method according to the target version number and the reference version number.
Optionally, the determining the change method according to the target version number and the reference version number includes:
acquiring a code file to be tested of the target system corresponding to the target version number;
acquiring a reference code file of the target system corresponding to the reference version number;
comparing the code file to be tested with the reference code file to determine a change code;
and determining the method containing the change code in the target system as the change method.
In a second aspect, an embodiment of the present invention provides an apparatus for determining a test range, including:
the method determination module is used for receiving a range determination instruction and determining a change method in response to the range determination instruction;
the transaction code determining module is used for determining at least one target transaction code corresponding to the change method according to the transaction code method relation; wherein the transaction code method relationship comprises: at least one calling method and calling sequence corresponding to the transaction code;
a call chain determination module to, for each of the target transaction codes: determining a call chain of the target transaction code corresponding to the change method, wherein the call chain comprises: at least one calling method having a calling relationship with the change method;
and the range determining module is used for determining the test range corresponding to the change method according to each calling method in the calling chain.
Optionally, the apparatus further comprises:
the generating module is used for acquiring a target code included in a target system;
scanning the object code, and determining a calling method and a transaction code related to the object code;
generating calling method information according to the calling method related to the target code;
for each transaction code to which the object code relates: determining at least one calling method and a calling sequence corresponding to the transaction code; and generating the transaction code method relationship according to the at least one calling method and the calling sequence.
Optionally, the apparatus further comprises:
a determining module, configured to determine whether the calling method information includes method information corresponding to the change method;
and under the condition that the calling method information comprises method information corresponding to the change method, executing the step of determining at least one target transaction code corresponding to the change method according to the transaction code method relation.
Optionally, the call chain determining module is specifically configured to:
determining a target order in which the change method corresponds to the target transaction code;
determining at least one upper method of the changed methods according to the target sequence, wherein the calling sequence of the upper method corresponding to the target transaction code is positioned before the target sequence;
and combining the at least one upper layer method into the calling chain according to the calling sequence corresponding to each upper layer method.
In a third aspect, an embodiment of the present invention provides an electronic device, including:
one or more processors;
a storage device for storing one or more programs,
when executed by the one or more processors, cause the one or more processors to implement the method of any of the embodiments described above.
In a fourth aspect, an embodiment of the present invention provides a computer-readable medium, on which a computer program is stored, where the computer program, when executed by a processor, implements the method of any one of the above embodiments.
In a fifth aspect, an embodiment of the present invention provides a computer program product, which includes a computer program, and when the computer program is executed by a processor, the computer program implements the method described in any of the above embodiments.
One embodiment of the above invention has the following advantages or benefits: the transaction code method relationship comprises: at least one calling method and calling sequence corresponding to the transaction code. And determining a calling chain corresponding to the change method according to the transaction code method relationship, wherein the calling chain comprises a calling method having a calling relationship with the change method. The code in the change method is changed, only the calling method which has a direct or indirect calling relationship with the change method is influenced, and other methods are not influenced. Therefore, the test range corresponding to the change method can be accurately determined according to each calling method included in the calling chain.
In addition, compared with a mode that the whole target system is used as a test range, the method can carry out test with stronger pertinence, has better test effect and can also improve test efficiency.
Further effects of the above-mentioned non-conventional alternatives will be described below in connection with the embodiments.
Detailed Description
Exemplary embodiments of the present invention are described below with reference to the accompanying drawings, in which various details of embodiments of the invention are included to assist understanding, and which are to be considered as merely exemplary. Accordingly, those of ordinary skill in the art will recognize that various changes and modifications of the embodiments described herein can be made without departing from the scope and spirit of the invention. Also, descriptions of well-known functions and constructions are omitted in the following description for clarity and conciseness.
According to the technical scheme, the data acquisition, storage, use, processing and the like meet the relevant regulations of national laws and regulations.
Fig. 1 is a schematic flowchart of a method for determining a test range according to a first embodiment of the present invention, as shown in fig. 1, the method includes:
step 101: receiving a range determination instruction, and determining a change method in response to the range determination instruction.
The system comprises a plurality of calling methods, and all calling methods are mutually called to realize various service scenes. Compared with the reference version, the changing method is a calling method of newly adding, modifying or deleting codes. The change method may be specified by a relevant person, for example, the relevant person directly inputs a method name or a method identifier of the change method.
The alteration method may also be determined by: receiving a test instruction or a range determination instruction for a target system; determining a target version number and a reference version number corresponding to the test instruction or the range determination instruction; and determining a change method according to the target version number and the reference version number.
Specifically, a code file to be tested of a target version number corresponding to a target system is obtained; acquiring a reference code file of a reference version number corresponding to a target system; comparing the code file to be tested with the reference code file to determine a change code; and determining the method of the change code in the target system as the change method.
And determining a change method based on the target version number and the reference version number by using a test tool. Or directly comparing the test code file with the reference code file to determine the changing method.
It should be noted that: in the case where there are a plurality of modification methods, the method according to the embodiment of the present invention may be used for each modification method, and the test range corresponding to each modification method may be determined. And finally, combining the test ranges corresponding to the change methods to obtain a final test range.
Step 102: and determining at least one target transaction code corresponding to the change method according to the transaction code method relation.
Step 103: for each target transaction code: and determining a call chain of the change method corresponding to the target transaction code.
The transaction code method relationship comprises: at least one calling method and calling sequence corresponding to the transaction code; the calling chain comprises: at least one calling method having a calling relationship with the change method.
The transaction codes correspond to different business scenarios. And each transaction code realizes corresponding processing logic through mutual calling among different methods. For example, the transaction code method relationship may be represented in the form:
transaction code A, a- > b- > c- > d
Transaction code B, f- > e- > c- > d
The transaction code method relationship of the transaction code A represents that: the method a calls the method b, the method b calls the method c, and the method c calls the method d to realize the processing logic of the transaction A.
The transaction code method relationship of the transaction code B represents that: the method f calls the method e, the method e calls the method c, and the method c calls the method d to realize the processing logic of the transaction B.
The calling chain comprises: at least one calling method having a calling relationship with the change method. The calling method having a calling relationship with the change method may directly or indirectly call the change method, or may be directly or indirectly called by the change method. The call chain characterizes different execution paths for the change method.
The change method only affects the calling method which has a direct or indirect calling relationship with the change method, and has no influence on other methods. Therefore, before determining the test range corresponding to the changed method, the call chain corresponding to the changed method needs to be determined.
For example, if the change method is c, it is determined that c corresponds to two call chains according to the transaction code method relationship of the transaction code a:
a->b->c
f->e->c
the two call chains respectively represent two call paths for method c. Route 1: method a calls method b, and method b calls method c again. Route 2: method f calls method e, which calls method c again. When the method c is changed, the two call paths need to be tested respectively to determine the influence of the changed method c on the whole target system.
Step 104: and determining a test range corresponding to the change method according to each call method included in the call chain.
Determining a target call chain from the at least one call chain; determining at least one calling method included in a target calling chain; and taking the code corresponding to the file and/or the module corresponding to at least one calling method in the target calling chain as a test range.
It should be noted that: under the condition that the change method corresponds to a plurality of call chains, the test range corresponding to each call chain can be respectively determined. And finally, combining the test ranges corresponding to the calling chains to obtain the test range of the calling method.
In an embodiment of the present invention, the transaction code method relationship includes: at least one calling method and calling sequence corresponding to the transaction code. And determining a calling chain corresponding to the change method according to the transaction code method relationship, wherein the calling chain comprises a calling method having a calling relationship with the change method. The code in the change method is changed, only the calling method which has a direct or indirect calling relationship with the change method is influenced, and other methods are not influenced. Therefore, the test range corresponding to the change method can be accurately determined according to each calling method included in the calling chain.
In addition, compared with a mode that the whole target system is used as a test range, the method can carry out test with stronger pertinence, has better test effect and can also improve test efficiency.
Fig. 2 is a flowchart illustrating a method for determining a test range according to a second embodiment of the present invention, as shown in fig. 2, the method includes:
step 201: acquiring a target code included in a target system; and scanning the target code, and determining a calling method and a transaction code related to the target code.
And the different development languages correspond to different keywords, so that the target language adopted by the target system can be determined, then the method keywords corresponding to the target language are determined, and the calling method related to the target code is matched from the target code through the method keywords.
The transaction codes correspond to different business scenarios. The transaction code to which the object code relates may be matched from the object code based on the constituent fields of the transaction code. The transaction codes related to the target system can also be directly obtained from project documents such as development documents and requirement documents.
Step 202: and generating calling method information according to the calling method related to the object code.
The calling method information is used for storing the related information of the calling method. The calling method information may include: method identification, method name, method function, etc.
Table 1 calling method information example
Table 1 is a content example of the calling method information. As shown in Table 1, the target system has a total of 6 calling methods, a, b, c, d, e, f, etc. The calling method information can be stored in a database, a table or a text and the like, so that the subsequent rapid and accurate determination of the test range is facilitated.
Step 203: for each transaction code to which the object code relates: determining at least one calling method and a calling sequence corresponding to the transaction code; and generating a transaction code method relation corresponding to the transaction code according to at least one calling method and calling sequence.
The calling order is used to characterize the order in which calling methods are called in the transaction code. The calling sequence of the calling method corresponding to the transaction code can be directly written in the transaction code method relationship, and the calling sequence of the calling method corresponding to the transaction code can also be determined through the position of the calling method in the transaction code method relationship in the record corresponding to the transaction code.
Table 2 transaction code method example 1
| Transaction code | Name of method | Order of invocation |
| A | a | 1 |
| A | b | 2 |
| A | c | 3 |
| A | d | 4 |
| B | f | 1 |
| B | e | 2 |
| B | c | 3 |
| B | d | 4 |
Table 3 transaction code method example 2
As shown in tables 2 and 3 above, tables 2 and 3 represent the same transaction code method relationship information. Table 2 the call order of the call method corresponding to the transaction code is written directly in the transaction code method relationship. Table 3 determines the calling order of the calling method corresponding to the transaction code by the position of the calling method in the record corresponding to the transaction code in the relationship of the transaction code method.
As can be seen from table 2 or table 3, the target system involves two transaction codes: transaction code a and transaction B. The transaction code method relationship of transaction code a and transaction B may be represented in the form:
transaction code A, a- > b- > c- > d
Transaction code B, f- > e- > c- > d
The method a calls the method b, the method b calls the method c, and the method c calls the method d to realize the processing logic of the transaction A. The method f calls the method e, the method e calls the method c, and the method c calls the method d to realize the processing logic of the transaction B.
The transaction code method relationship can be stored in a database, a table or a text and the like, so that the subsequent rapid and accurate determination of the test range is facilitated.
Step 204: and determining a change method, and determining whether the calling method information comprises method information corresponding to the change method.
If the calling method information includes method information corresponding to the changed method,step 205 is executed. Under the condition that the calling method information does not include the method information corresponding to the change method, it indicates that the currently stored transaction code method relationship and calling method information are expired, and step 201 is executed again to update the transaction code method relationship and calling method information.
Steps 201-203 may also be performed periodically or after an item upgrade is updated, and transaction code method relationships and calling method information are updated in time.
Step 205: and determining at least one calling chain corresponding to the change method according to the transaction code method relation.
The transaction code method relationship comprises the following steps: at least one calling method and calling sequence corresponding to the transaction code; the calling chain comprises: at least one calling method having a calling relationship with the change method.
At least one call chain corresponding to the change method can be determined in the following way, including: searching a transaction code method relation, and determining at least one target transaction code corresponding to the change method; for each target transaction code: determining a target sequence of the change method corresponding to the target transaction code; determining at least one upper method for changing the method according to the target sequence, wherein the calling sequence of the upper method corresponding to the target transaction code is positioned before the target sequence; and combining at least one upper layer method into a calling chain according to the calling sequence corresponding to each upper layer method.
For example, if the transaction code method relationship for transaction code A is of the form: a- > b- > c- > d. If the method is changed to c, it can be determined that c is an upper-layer method of c corresponding to the transaction code a with the target sequence of 3, a is a call sequence of 1 corresponding to the transaction code a, b is a call sequence of 2 corresponding to the call code a. According to the calling sequence of a and b, combining a and b to obtain a calling chain corresponding to the changed method c as a- > b- > c.
Step 206: and determining the test range corresponding to the change method according to each call method included in the call chain.
In the embodiment of the invention, firstly, the target code included in the target system is scanned, and the relation between the calling method information and the transaction code method is generated and stored. So as to conveniently and subsequently utilize the relation between the calling method information and the transaction code method and quickly and accurately determine the test range.
Fig. 3 is a schematic flow chart of a testing method according to a third embodiment of the present invention, as shown in fig. 3, the method includes:
step 301: a method of alteration is determined.
Step 302: and determining at least one calling chain corresponding to the change method according to the transaction code method relation.
The transaction code method relationship comprises the following steps: at least one calling method and calling sequence corresponding to the transaction code; the calling chain comprises: at least one calling method having a calling relationship with the change method.
Step 303: for each call chain: determining a test range corresponding to the change method according to each call method included in the call chain; and determining a test case and a top-level calling method corresponding to the calling chain.
The call chain characterizes the execution path for the change method. And setting different test cases according to different execution paths to test whether the execution path causes adverse effect on the change method.
The top-level calling method is the method called first in the calling chain. The top-level calling method can directly call the change method or indirectly call the change method.
Step 304: and taking the top-level calling method as a test entrance, and testing the codes in the test range by using the test case.
In the embodiment of the invention, at least one calling chain corresponding to the change method is determined according to the transaction code method relation. The call chain characterizes the execution path for the change method. And determining a test case and a top-level calling method corresponding to the calling chain, taking the top-level calling method as a test inlet, and testing the codes in the test range by using the test case. Therefore, the execution path in the system possibly influenced by the change method can be accurately determined aiming at the change method, and the test case corresponding to the execution path is set for testing.
Fig. 4 is a schematic structural diagram of a device for determining a test range according to an embodiment of the present invention, as shown in fig. 4, the device includes:
amethod determination module 401, configured to receive a range determination instruction, and determine a change method in response to the range determination instruction;
a transactioncode determining module 402, configured to determine, according to a transaction code method relationship, at least one target transaction code corresponding to the change method; wherein the transaction code method relationship comprises: at least one calling method and calling sequence corresponding to the transaction code;
a callchain determination module 403 for, for each of the target transaction codes: determining a call chain of the target transaction code corresponding to the change method, wherein the call chain comprises: at least one calling method having a calling relationship with the change method;
arange determining module 404, configured to determine, according to each calling method included in the calling chain, a test range corresponding to the change method.
Optionally, the apparatus further comprises:
a generating module 405, configured to obtain a target code included in a target system;
scanning the target code, and determining a calling method and a transaction code related to the target code;
generating calling method information according to the calling method related to the target code;
for each transaction code to which the object code relates: determining at least one calling method and a calling sequence corresponding to the transaction code; and generating the transaction code method relationship according to the at least one calling method and the calling sequence.
Optionally, the apparatus further comprises:
a determining module 406, configured to determine whether the calling method information includes method information corresponding to the changed method;
and under the condition that the calling method information comprises method information corresponding to the change method, executing the step of determining at least one target transaction code corresponding to the change method according to the transaction code method relation.
Optionally, the callchain determining module 403 is specifically configured to:
determining a target order in which the change method corresponds to the target transaction code;
determining at least one upper method of the changed methods according to the target sequence, wherein the calling sequence of the upper method corresponding to the target transaction code is positioned before the target sequence;
and combining the at least one upper layer method into the calling chain according to the calling sequence corresponding to each upper layer method.
Optionally, therange determining module 404 is specifically configured to:
determining a target call chain from the at least one call chain;
determining at least one calling method included in the target calling chain;
and taking a code corresponding to a file and/or a module corresponding to at least one calling method included in the target calling chain as the test range.
Optionally, the apparatus further comprises:
the test module 407 is configured to determine a test case corresponding to the call chain;
determining a top-level calling method in the calling chain;
and taking the top-level calling method as a test entrance, and testing the codes in the test range by using the test case.
Optionally, themethod determining module 401 is specifically configured to:
receiving a test instruction aiming at a target system;
determining a target version number and a reference version number corresponding to the test instruction;
and determining the changing method according to the target version number and the reference version number.
Optionally, themethod determining module 401 is specifically configured to:
acquiring a code file to be tested of the target system corresponding to the target version number;
acquiring a reference code file of the target system corresponding to the reference version number;
comparing the code file to be tested with the reference code file to determine a change code;
and determining the method containing the change code in the target system as the change method.
An embodiment of the present invention provides an electronic device, including:
one or more processors;
a storage device for storing one or more programs,
when the one or more programs are executed by the one or more processors, the one or more processors are caused to implement the method of any of the embodiments described above.
Embodiments of the present invention provide a computer program product, which includes a computer program, and when the computer program is executed by a processor, the computer program implements the enterprise risk assessment method in the embodiments of the present invention.
Referring now to FIG. 5, shown is a block diagram of acomputer system 500 suitable for use with a terminal device implementing an embodiment of the present invention. The terminal device shown in fig. 5 is only an example, and should not bring any limitation to the functions and the use range of the embodiment of the present invention.
As shown in fig. 5, thecomputer system 500 includes a Central Processing Unit (CPU)501 that can perform various appropriate actions and processes according to a program stored in a Read Only Memory (ROM)502 or a program loaded from astorage section 508 into a Random Access Memory (RAM) 503. In theRAM 503, various programs and data necessary for the operation of thesystem 500 are also stored. TheCPU 501,ROM 502, andRAM 503 are connected to each other via abus 504. An input/output (I/O)interface 505 is also connected tobus 504.
The following components are connected to the I/O interface 505: aninput portion 506 including a keyboard, a mouse, and the like; anoutput portion 507 including a display such as a Cathode Ray Tube (CRT), a Liquid Crystal Display (LCD), and the like, and a speaker; astorage portion 508 including a hard disk and the like; and acommunication section 509 including a network interface card such as a LAN card, a modem, or the like. Thecommunication section 509 performs communication processing via a network such as the internet. Adrive 510 is also connected to the I/O interface 505 as needed. Aremovable medium 511 such as a magnetic disk, an optical disk, a magneto-optical disk, a semiconductor memory, or the like is mounted on thedrive 510 as necessary, so that a computer program read out therefrom is mounted into thestorage section 508 as necessary.
In particular, according to the embodiments of the present disclosure, the processes described above with reference to the flowcharts may be implemented as computer software programs. For example, embodiments of the present disclosure include a computer program product comprising a computer program embodied on a computer readable medium, the computer program comprising program code for performing the method illustrated by the flow chart. In such an embodiment, the computer program may be downloaded and installed from a network through thecommunication section 509, and/or installed from theremovable medium 511. The computer program performs the above-described functions defined in the system of the present invention when executed by the Central Processing Unit (CPU) 501.
It should be noted that the computer readable medium shown in the present invention can be a computer readable signal medium or a computer readable storage medium or any combination of the two. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any combination of the foregoing. More specific examples of the computer readable storage medium may include, but are not limited to: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a Random Access Memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the present invention, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device. In the present invention, however, a computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated data signal may take many forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may also be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device. Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to: wireless, wire, fiber optic cable, RF, etc., or any suitable combination of the foregoing.
The flowchart and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams or flowchart illustration, and combinations of blocks in the block diagrams or flowchart illustration, can be implemented by special purpose hardware-based systems which perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
The modules described in the embodiments of the present invention may be implemented by software or hardware. The described modules may also be provided in a processor, which may be described as: the system comprises a method determining module, a transaction code determining module, a calling chain determining module and a range determining module. The names of these modules do not in some cases constitute a limitation to the module itself, and for example, the method determination module may also be described as a "module that determines a change method".
As another aspect, the present invention also provides a computer-readable medium, which may be included in the apparatus described in the above embodiments; or may be separate and not incorporated into the device. The computer readable medium carries one or more programs which, when executed by a device, cause the device to comprise:
determining a change method;
determining at least one target transaction code corresponding to the change method according to the transaction code method relation; wherein the transaction code method relationship comprises: at least one calling method and calling sequence corresponding to the transaction code;
for each of the target transaction codes: determining a call chain of the change method corresponding to the target transaction code, wherein the call chain comprises: at least one calling method having a calling relationship with the change method;
and determining a test range corresponding to the change method according to each call method included in the call chain.
According to the technical scheme of the embodiment of the invention, the transaction code method relationship comprises the following steps: at least one calling method and calling sequence corresponding to the transaction code. And determining a calling chain corresponding to the change method according to the transaction code method relationship, wherein the calling chain comprises a calling method having a calling relationship with the change method. The code in the change method is changed, only the calling method which has a direct or indirect calling relationship with the change method is influenced, and other methods are not influenced. Therefore, the test range corresponding to the change method can be accurately determined according to each calling method included in the calling chain.
In addition, compared with a mode that the whole target system is used as a test range, the method can carry out a test with stronger pertinence, has a better test effect, and can improve the test efficiency.
The above-described embodiments should not be construed as limiting the scope of the invention. Those skilled in the art will appreciate that various modifications, combinations, sub-combinations, and substitutions can occur, depending on design requirements and other factors. Any modification, equivalent replacement, and improvement made within the spirit and principle of the present invention should be included in the protection scope of the present invention.