Detailed Description
The present disclosure is described in further detail below with reference to the drawings and examples. It is to be understood that the specific embodiments described herein are merely illustrative of the invention and are not limiting of the invention. It should be noted that, for convenience of description, only the portions related to the present invention are shown in the drawings.
It should be noted that, without conflict, the embodiments of the present disclosure and features of the embodiments may be combined with each other. The present disclosure will be described in detail below with reference to the accompanying drawings in conjunction with embodiments.
Fig. 1 illustrates an exemplary system architecture 100 for a method for testing or an apparatus for testing to which embodiments of the present disclosure may be applied.
As shown in fig. 1, a system architecture 100 may include terminal devices 101, 102, 103, a network 104, and a server 105. The network 104 is used as a medium to provide communication links between the terminal devices 101, 102, 103 and the server 105. The network 104 may include various connection types, such as wired, wireless communication links, or fiber optic cables, among others.
Through the network 104, a user may perform data interaction between each terminal device 101, 102, 103 and the server 105, e.g. each terminal device may obtain a code of an object to be tested from the server to execute one or more test nodes in a test task; the operation instruction (for example, the operation test node is repeated) sent by the test flow page for the test node can also be received from other terminals, and the test information of the test node is sent.
The terminal devices 101, 102, 103 may be hardware or software. When the terminal devices 101, 102, 103 are hardware, they may be electronic devices with communication functions, including but not limited to smartphones, tablets, electronic book readers, laptop and desktop computers, etc. When the terminal devices 101, 102, 103 are software, they can be installed in the above-listed electronic devices. It may be implemented as a plurality of software or software modules, for example, for providing distributed services, or as a single software or software module. The present invention is not particularly limited herein.
The server 105 may be a server providing a data service, for example a background data server providing a code storage service for the terminal devices 101, 102, 103, so that each terminal device may obtain the code of the object to be tested from the server according to the code base address.
It should be noted that, the method for testing provided by the embodiment of the present disclosure may be performed by the terminal devices 101, 102, 103, or may be performed by the server 105. Accordingly, the means for testing may be provided in the terminal device 101, 102, 103 or in the server 105. The present invention is not particularly limited herein.
It should be noted that, the server may be hardware, or may be software. When the server is hardware, the server may be implemented as a distributed server cluster formed by a plurality of servers, or may be implemented as a single server. When the server is software, it may be implemented as a plurality of software or software modules, for example, for providing distributed services, or as a single software or software module. The present invention is not particularly limited herein.
With continued reference to fig. 2, a flow 200 of one embodiment of a method for testing according to the present disclosure is shown. The method for testing comprises the following steps:
In step 201, in response to receiving an instruction for requesting to create a test task, a test task creation page is presented, where the test task creation page is used to receive a code base address and a test policy of an object to be tested.
When an execution subject (for example, the terminal in fig. 1) receives an instruction of a user for requesting to create a test task, a test task creation page is presented so that a user can input a code base address and a test strategy of an object to be tested, wherein an execution module of each test node in a test task constructed later can acquire codes of the object to be tested according to the code base address of the object to be tested; the test policy is then used to determine a test flow of the test task, which may include, for example, a regression verification test or a functional test, and the test flow of the test task determined based on the test policy may include: and creating test nodes for extraction, application construction, scanning codes, smoking test, test acceptance and the like.
As an example, the execution body may present a code base address input box and a test policy input box in the test task construction page, and the user may input the code base address of the object to be tested described in natural language in the code base address input box by clicking a browsing path or manually inputting, for example, may select the object to be tested (such as a code base address and a branch corresponding to a JAVA application) in a pre-stored code base path, and then may select a test policy by manually inputting or in a drop-down list.
Step 202, in response to receiving an instruction for confirming creation of the test task, constructing the test task based on the code base address and the test strategy of the object to be tested, and determining an execution module of each test node in the test task.
In this embodiment, the execution body may determine the test nodes and their ranks included in the test task according to the test policy, and determine the execution modules of each test node, where each execution module may obtain the code to be tested from a code library (for example, a code library stored in the server in fig. 1) according to the code library address of the object to be tested.
Typically, the test tasks include the following test nodes in sequence: creating a test, constructing an application, scanning a code, performing a smoke test and performing test acceptance, wherein an execution main body can determine a corresponding execution module according to a test environment and a system condition required by a test node, for example, a maven module can be determined as the execution module of the application construction node so as to package codes of an object to be tested into a war package; the sonar module may be determined as an execution module of the code scanning node to perform the coverage task of the code of the object to be tested and to count the results of the code scanning.
It is understood that the execution module may be installed in the execution body itself, or may be installed in another terminal device having a function of interacting with the execution body data, which is not limited in the present application.
Step 203, based on the ordering of each test node in the test task, a test flow page is generated, and the test flow page is used for presenting the test information and the flow operation instruction of each test node.
In this embodiment, the test information is used to characterize the execution status of the test node, and may include, for example: test time, executive personnel, test records, execution rate of test cases and the like, so that a user can conveniently and intuitively acquire the execution status of each test node. The flow operation instruction is used for transmitting the instruction of the user to the execution module of the test node, so that the user can adjust the test flow according to the actual requirement.
As an example, the flow operation instruction corresponding to the smoke test node may include an associated test case instruction, and after the user clicks the associated test case instruction, the execution body may present a storage path of the test case in a preset area of the test flow page, so as to receive the test case required by the smoke test node selected by the user. For another example, the execution body may present a mail sending instruction at a preset position of the test flow page, and if the user clicks the mail sending instruction, the execution body may present a mail editing window on the test flow page, so as to receive mail content edited by the user.
In some optional implementations of this embodiment, the test flow page includes test node identifiers, where the test node identifiers are in one-to-one correspondence with each test node; and presenting the test information of the test node and a flow operation instruction matched with the test node in a preset area corresponding to the test node identifier.
In this implementation, the flow operation instruction matched with the test node refers to an operation instruction that can be executed by the execution module of the test node, for example, a manual scanning instruction can be presented at the code scanning node, and an instruction of an associated test case cannot be presented; for another example, at the smoke test node, instructions for the associated test case may be presented, without the manual scan instructions. In this way, presentation of non-executable flow operation instructions on the test flow page can be avoided.
As an example, the execution body may present the test node identifier in the form of an icon, and arrange the test nodes according to the order of the test nodes in the test task, and then present the test information of the test node corresponding to the icon and the flow operation instruction matched with the test node in the form of a waterfall flow under the icon, so that the test flow, the test information and the operation instruction of each test node in the test flow may be presented more intuitively.
Preferably, the test information in the implementation manner may include a test progress and a test result of the test node corresponding to the test node identifier, where the test progress is used to characterize an execution progress of a test subtask undertaken by the test node, for example, the test progress may be classified into three types of completion, test and test to be tested according to the execution progress. The test result is used for representing the result output after the test subtask born by the test node is completed.
As an example, the test node identifier may represent the test progress through color, for example, the test node identifier corresponding to the test node that is run is displayed as a bright color, the test node identifier corresponding to the test node in running is displayed in a blinking manner, and the test node identifier corresponding to the test node to be run is displayed as a gray color.
Further, the implementation manner may determine the flow operation instruction matched with the test node in the following manner: determining an executable flow operation instruction of the test node based on the test information of the test node; and determining the executable flow operation instruction as a flow operation instruction matched with the test node.
In a specific example of this implementation manner, the execution body may determine, according to a test progress of a test node, an executable flow operation instruction of the test node, for example, all flow operation instructions of the test node to be executed are non-executable operation instructions, and a completed repeated test instruction, a query test detail instruction, and the like of the test node are executable operation instructions; and determining executable operation instructions of the test node according to the test result, for example, for a smoke test node with a failed test result, manually triggering the test instruction, ignoring the smoke test instruction and the like, which are executable flow operation instructions, and for a code scanning node with too low code coverage rate, manually rejecting the instruction and repeatedly scanning the instruction, which are executable flow operation instructions. Therefore, the non-executable flow operation instructions can be filtered from the test flow page, and the accuracy of the flow operation instructions presented in the test flow page can be improved.
The implementation may further include: and sending a test result of the current test node in response to determining that the test progress of the current test node is complete. For example, the execution body may store in advance the mailbox address of the technician involved in each test node, and after the test node completes the test progress, the execution body may send the test result to a preset mailbox, so that the relevant personnel can know the progress of the test task in time.
Step 204, associating the test flow page with the execution module of each test node, so that the test flow page: receiving test information sent by an execution module of each test node and presenting the test information on a test flow page; and responding to the triggered flow operation instruction, and sending the flow operation instruction to an execution module of the corresponding test node so as to enable the execution module to execute the flow operation instruction.
In this embodiment, associating the test flow page with the execution module of each test node refers to implementing data interaction between the test flow page and the execution module of each test node.
As an example, the execution body may associate the test flow page with the execution module of each test node in the form of WEB service, where the test flow page is disposed at the front end of the execution body, and the execution module corresponding to each test node is disposed at the rear end or other terminals of the execution body, where the rear end exposes the interface to the front end service. Thus, the data interaction between the test flow page and the execution module corresponding to each test node can be realized.
Step 205, a test flow page is presented.
In this embodiment, the execution body presents the test flow of the test task to the user by presenting the test flow page, and receives an operation instruction of the user for the test task.
In general, a test task requires cooperation of multiple departments, and an execution main body can directly present a test flow page after being successfully associated with an execution module of each test node on a display device of the execution main body, can send the test flow page to other terminals, and can send the test flow page to a server for presentation to related personnel.
With continued reference to fig. 3, fig. 3 is a schematic illustration of one scenario of the method shown in fig. 2. In fig. 3, an execution body 301 may be a server or a terminal device, and when receiving an instruction that a user requests to create a test task, the execution body presents a test task creation page to receive relevant information of a test task to be created by the user, including a code base address and a test policy of an object to be tested; then, based on the received code base address and test strategy of the object to be tested, constructing a test task and determining an execution module of each test node in the test task, for example, the terminal devices 302 and 303 in fig. 3; then, the execution main body generates a test flow page based on the constructed test task, and associates the test flow page with the execution module of each test node: terminal devices 302 and 303; and finally, presenting the associated test flow page on display equipment or other terminal equipment or a server of the execution main body so that a user can intuitively acquire the test information of each test node of the test task, and sending an operation instruction to an execution module of each test node through the test flow page.
According to the method and the device for testing, the code base address and the testing strategy of the object to be tested are received through the presentation of the test task creation page, then the test task is constructed based on the code base address and the testing strategy of the object to be tested, the test flow page corresponding to the test task is generated, and the test information and the flow operation instructions of all the test nodes can be presented on the test flow page through the association of the test flow page and the execution modules of all the test nodes. The user can realize visual management and operation of the test flow only through the test flow page, thereby being beneficial to simplifying test flow management and improving test efficiency.
With further reference to fig. 4, which shows yet another embodiment of a method for testing, in which embodiment the method for testing may further comprise a flow 400, the flow 400 specifically comprising the steps of:
step 401, determining the test task type.
In this embodiment, the execution body receives a test policy by extracting a task creation page, where the test policy includes a test task type to be built. As an example, the execution body may present a test task type selection box on the test task creation page to facilitate the user in determining the type of test task.
And step 402, if the test task type is automatic test, presenting a test node parameter setting control and a test case association control on a test flow page, wherein the test node parameter setting control is used for receiving a passing threshold value of each test node, and the test case association control is used for receiving a storage address of a test case associated with the test node.
Typically, the automatic test task is adapted for the regression verification test phase. If the execution subject determines that the test task type is automatic test, the test tasks constructed by the execution subject can automatically execute all the test nodes according to the sequence, and the intermediate link after the test flow is started does not need manual operation, but the passing threshold of each test node is preset before the test flow is started, and the test cases are associated. The pass threshold is used for representing whether the test result of the test node meets the test requirement, if the test result is higher than the pass threshold, the test result meets the test requirement, and the next test node can be started; otherwise, if the test result is lower than the pass threshold, the test result is indicated to not meet the test requirement, and the test task is terminated. The test cases may include smoking test cases and automation under test cases corresponding to the smoking test node and the node under test, respectively.
As an example, the execution body may present a pass node parameter setting control in an area corresponding to each test node identifier in the test flow page, so that a user may intuitively set a pass threshold of each test node. For example, the pass threshold of the code scanning node may be set to: the unit test coverage rate is more than 30%, bug (defect) quantity is less than 10, code peculiar smell is less than 200, and after a test flow is started, if the test results of the code scanning nodes can not fully meet the above conditions, the test task is terminated; if all the test results meet the conditions, starting the next test node, and continuing the test task.
Step 403, sending the passing threshold value of each test node to the execution module of each test node.
In this embodiment, the execution body may send the passing threshold value to the execution modules of each test node, and each execution module compares the test result with the passing threshold value by itself, so as to determine whether the test result of the test node meets the test requirement. If the test result does not meet the passing threshold, the execution module sends a signal that the test fails to the execution main body, and the execution main body sends an instruction for stopping running to the next test node so as to terminate the test task; if the test result meets the passing threshold, the execution module sends a signal of passing the test to the execution main body, and the execution main body sends an instruction for starting the test to the next test node so as to continue the test task.
Step 404, the storage addresses of the test cases are respectively sent to the execution modules of the test nodes associated with the test cases.
As an example, the execution body may further present a smoke test case selection control in an area corresponding to the smoke test flow node identifier, so as to receive a storage address of the smoke test case selected by the user, and send the storage address to an execution module corresponding to the smoke test. The method can also be used to determine automation use cases in a test.
Step 405, if the test task type is manual test, the flow operation instruction includes a flow modification instruction, where the flow modification instruction includes an instruction to skip the current test node and an instruction to repeatedly execute the history test node; and in response to the flow change instruction being triggered, sending the flow change instruction to an execution module of the test node to which the flow change instruction is directed, so that the execution module executes the flow change instruction.
Typically, manual testing tasks are applied in the functional testing phase. The instruction for skipping the current node is used for indicating the execution module corresponding to the current test node to stop running and starting the next test node of the current test node; the history test node is a test node which has run completely and has obtained a test result, and the instruction of repeatedly executing the history test node is used for indicating the execution module of the current test node to stop running and starting the appointed history test node. Thus, the test node can be repeatedly executed according to the actual demand,
In response to determining that the test task is terminated, a test report is sent 406, the test report including test information for each test node.
In this embodiment, the execution body may pre-store the mailbox address, and when the execution body determines that the test task is terminated, for example, the termination condition may be that a certain test node or all test nodes in the automatic test task have not been completely run; for example, the termination condition may be that the test task is manually terminated or all the test nodes are completed in the manual test task, then the execution body generates a test report based on the test information of the completed test nodes, and sends the test report to a pre-stored mailbox.
As can be seen from fig. 4, the flow 400 of the method for testing in this embodiment may present different information and flow operation instructions on the test flow page according to different test task types, so as to satisfy the test conditions of the automatic test task and the manual test task. In this way, the flexibility of the method for testing of the present disclosure may be improved.
It should be noted that, the step 406 is equally applicable to the embodiment shown in fig. 2.
In some optional implementation manners of the above embodiments, the test task creation page may receive the code base addresses and the corresponding test policies of the multiple objects to be tested at the same time, and accordingly, the execution body may create multiple test tasks and generate the corresponding test flow page based on the received code base addresses and the corresponding test policies of the multiple objects to be tested, so that the test efficiency may be improved.
With further reference to fig. 5, as an implementation of the method shown in the above figures, the present disclosure provides an embodiment of an apparatus for testing, which corresponds to the method embodiment shown in fig. 2, and which is particularly applicable to various electronic devices.
As shown in fig. 5, the apparatus 500 for testing of the present embodiment includes: a task receiving unit 501 configured to respond to receiving an instruction for requesting to create a test task, and present a test task creation page, where the test task creation page is used to receive a code base address and a test policy of an object to be tested; the task construction unit 502 is configured to respond to the received instruction for confirming the creation of the test task, construct the test task based on the code base address of the object to be tested and the test strategy, and determine the execution module of each test node in the test task; a page generating unit 503 configured to generate a test flow page based on the ordering of the test nodes in the test task, where the test flow page is used to present the test information and the flow operation instruction of each test node; the page association unit 504 is configured to associate the test flow page with the execution module of each test node, so that the test flow page: receiving test information sent by an execution module of each test node and presenting the test information on a test flow page; and responding to the triggered flow operation instruction, and sending the flow operation instruction to an execution module of the corresponding test node so as to enable the execution module to execute the flow operation instruction; the page presenting unit 505 is configured to present a test flow page.
In this embodiment, the test flow page includes test node identifiers, where the test node identifiers are in one-to-one correspondence with each test node; and, the page generating unit 503 is further configured to: and presenting the test information of the test node and a flow operation instruction matched with the test node in a preset area corresponding to the test node identifier.
In this embodiment, the test information includes a test progress and a test result of the test node corresponding to the test node identifier.
In this embodiment, the apparatus further includes a test result transmitting unit configured to: and sending a test result of the current test node in response to determining that the test progress of the current test node is complete.
In the present embodiment, the page generating unit 503 is further configured to: determining an executable flow operation instruction of the test node based on the test information of the test node; the executable flow operation instructions are determined to be flow operation instructions that match the test node.
In this embodiment, the test policy includes a test task type; and, the page generating unit 503 further includes a manual testing module configured to: if the test task type is manual test, the flow operation instruction comprises a flow change instruction, and the flow change instruction comprises skipping the current test node and repeatedly executing the historical test node; and in response to the flow change instruction being triggered, sending the flow change instruction to an execution module of the test node to which the flow change instruction is directed, so that the execution module executes the flow change instruction.
In this embodiment, the page generating unit 503 further includes an automatic test module configured to: if the test task type is automatic test, presenting a test node parameter setting control and a test case association control on a test flow page, wherein the test node parameter setting control is used for receiving a passing threshold value of each test node, and the test case association control is used for receiving a storage address of a test case associated with the test node; the execution module is used for respectively sending the passing threshold value of each test node to each test node; and respectively sending the storage addresses of the test cases to the execution modules of the test nodes associated with the test cases.
In this embodiment, the apparatus further includes a report transmitting unit configured to: in response to determining that the test task is aborted or completed, a test report is sent, the test report including test information for each test node.
Referring now to fig. 6, a schematic diagram of an electronic device (e.g., server or terminal device of fig. 1) 600 suitable for use in implementing embodiments of the present disclosure is shown. The terminal device in the embodiments of the present disclosure may include, but is not limited to, a mobile terminal such as a mobile phone, a notebook computer, a digital broadcast receiver, a PDA (personal digital assistant), a PAD (tablet computer), etc., and a fixed terminal such as a digital TV, a desktop computer, etc. The terminal device shown in fig. 6 is only one example, and should not impose any limitation on the functions and scope of use of the embodiments of the present disclosure.
As shown in fig. 6, the electronic device 600 may include a processing means (e.g., a central processing unit, a graphics processor, etc.) 601, which may perform various appropriate actions and processes according to a program stored in a Read Only Memory (ROM) 602 or a program loaded from a storage means 608 into a Random Access Memory (RAM) 603. In the RAM 603, various programs and data required for the operation of the electronic apparatus 600 are also stored. The processing device 601, the ROM 602, and the RAM 603 are connected to each other through a bus 604. An input/output (I/O) interface 605 is also connected to bus 604.
In general, the following devices may be connected to the I/O interface 605: input devices 606 including, for example, a touch screen, touchpad, keyboard, mouse, camera, microphone, accelerometer, gyroscope, and the like; an output device 607 including, for example, a Liquid Crystal Display (LCD), a speaker, a vibrator, and the like; storage 608 including, for example, magnetic tape, hard disk, etc.; and a communication device 609. The communication means 609 may allow the electronic device 600 to communicate with other devices wirelessly or by wire to exchange data. While fig. 6 shows an electronic device 600 having various means, it is to be understood that not all of the illustrated means are required to be implemented or provided. More or fewer devices may be implemented or provided instead. Each block shown in fig. 6 may represent one device or a plurality of devices as needed.
In particular, according to embodiments of the present disclosure, the processes described above with reference to 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 shown in the flowcharts. In such an embodiment, the computer program may be downloaded and installed from a network via communication means 609, or from storage means 608, or from ROM 602. The above-described functions defined in the methods of the embodiments of the present disclosure are performed when the computer program is executed by the processing means 601. It should be noted that, the computer readable medium according to the embodiments of the present disclosure may be a computer readable signal medium or a computer readable storage medium, or any combination of the two. The computer readable storage medium can be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or a combination of any 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 an embodiment of the present disclosure, 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. Whereas in embodiments of the present disclosure, the computer-readable signal medium may comprise a data signal propagated in baseband or as part of a carrier wave, with computer-readable program code embodied therein. Such a propagated data signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination of the foregoing. 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: electrical wires, fiber optic cables, RF (radio frequency), and the like, or any suitable combination of the foregoing.
The computer readable medium may be contained in the electronic device; or may exist alone without being incorporated into the electronic device. The computer readable medium carries one or more programs which, when executed by the electronic device, cause the electronic device to: responding to the received instruction for requesting to create the test task, presenting a test task creation page, wherein the test task creation page is used for receiving the code base address and the test strategy of the object to be tested; responding to the received instruction for establishing the test task, constructing the test task based on the code base address and the test strategy of the object to be tested, and determining an execution module of each test node in the test task; generating a test flow page based on the ordering of each test node in the test task, wherein the test flow page is used for presenting test information and flow operation instructions of each test node; associating the test flow page with the execution module of each test node to enable the test flow page to: receiving test information sent by an execution module of each test node and presenting the test information on a test flow page; and responding to the triggered flow operation instruction, and sending the flow operation instruction to an execution module of the corresponding test node so as to enable the execution module to execute the operation pointed by the flow operation instruction; and presenting a test flow page.
Computer program code for carrying out operations of embodiments of the present disclosure may be written in one or more programming languages, including an object oriented programming language such as Java, smalltalk, C ++ and conventional procedural programming languages, such as the "C" programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the case of a remote computer, the remote computer may be connected to the user's computer through any kind of network, including a Local Area Network (LAN) or a Wide Area Network (WAN), or may be connected to an external computer (for example, through the Internet using an Internet service provider).
The flowcharts 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 disclosure. 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 and/or flowchart illustration, and combinations of blocks in the block diagrams and/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 units involved in the embodiments described in the present disclosure may be implemented by means of software, or may be implemented by means of hardware. The described units may also be provided in a processor, for example, described as: a processor includes a task receiving unit, a task building unit, a page generating unit, a page associating unit, and a page presenting unit. Where the names of these units do not constitute a limitation on the unit itself in some cases, for example, the page rendering unit may also be described as "a unit rendering a test flow page".
The foregoing description is only of the preferred embodiments of the present disclosure and description of the principles of the technology being employed. It will be appreciated by those skilled in the art that the scope of the invention in the embodiments of the present disclosure is not limited to the specific combination of the above technical features, but encompasses other technical features formed by any combination of the above technical features or their equivalents without departing from the spirit of the invention. Such as the above-described features, are mutually substituted with (but not limited to) the features having similar functions disclosed in the embodiments of the present disclosure.