Software automation test method and system, terminal and storage medium
By allocating data storage paths to test modules in the software automation testing framework and converting them into JSON data, the problem of repeated reading of Excel data every time the script is executed in the prior art is solved, which improves the testing efficiency and convenience of viewing results. .
Patent Information
- Application Number
- CN202411361556.3
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2024-09-27
- Publication Date
- 2024-12-27
AI Technical Summary
Existing software automated testing methods require reading Excel data every time the script is executed, resulting in increased execution time, affecting efficiency, and inconvenient maintenance and viewing of test results in later stages.
In the pre-built automated testing framework, a unique data storage path is assigned to the test module, Excel data is stored, and converted into JSON data. The JSON data is read during the execution of the script, and the test results are backfilled into Excel after execution.
It avoids repeated reading of Excel data every time the script is executed, improves the execution efficiency of the test script, reduces maintenance and viewing costs, and facilitates viewing of test results.
Smart Images

Figure CN119201737A_ABST
Abstract
Description
Technical Field
[0001] The present invention belongs to the technical field of software testing, and in particular relates to a software automated testing method, system, terminal and storage medium. Background Art
[0002] With the continuous development of software technology, software automation testing is increasingly used in testing. In the process of automated script execution, reading test data is an important part. Writing test data directly into the script will result in high maintenance costs when the data needs to be modified. Therefore, consider separating the script from the data, storing the test data separately, and reading it when the script is executed.
[0003] However, reading Excel data again during each script execution increases the execution time of a single script, thus affecting the overall execution efficiency; this method also increases the cost of reading the test script. And it is not convenient to view the test results after execution. Summary of the invention
[0004] In view of the above-mentioned deficiencies in the prior art, the present invention provides a software automated testing method, system, terminal and storage medium to solve the above-mentioned technical problems.
[0005] In a first aspect, the present invention provides a software automation testing method, comprising: In a pre-built automated testing framework, a unique corresponding data storage path is allocated to the test module, and the Excel data of the test module is stored in the data storage path; Save the test modules and the corresponding data storage paths to a list; Traverse all data storage paths in the list, convert the Excel data in the data storage path into JSON data, and save the JSON data to the data storage path where the Excel data is located; When executing the test, the test cases in the test module read the JSON data from the corresponding data storage path; Use pre-compiled auxiliary scripts to backfill the test results of each test case in the test module into Excel under the corresponding data storage path.
[0006] In an optional implementation, in a pre-built automated testing framework, a unique corresponding data storage path is allocated to a test module, and Excel data of the test module is stored in the data storage path, including: Decompose the software to be tested into multiple functional modules in advance, and compile a corresponding test module for each functional module, wherein the test module includes multiple test cases; Save the input parameters of the test case as Excel data; Assign a unique data storage path to each test module, and save the Excel data corresponding to the test module to the assigned data storage path.
[0007] In an optional implementation, traversing all data storage paths in the list, converting the Excel data in the data storage path into JSON data, and saving the JSON data to the data storage path where the Excel data is located, includes: Define a function for traversing the data storage path, the function traverses the specified root directory and searches for all Excel data in .xls format; Define an Excel to JSON conversion function, which converts the read Excel data into a DataFrame, and converts the DataFrame into JSON data, and saves the JSON data to the same path as the Excel data.
[0008] In an optional implementation, the test results of each test case in the test module are backfilled into Excel in the corresponding data storage path using a pre-compiled auxiliary script, including: Install the unittest library and openpyxl library; Execute the auxiliary script so that the auxiliary script loads the test module based on the storage address of the test module, creates a result saving item in the Excel data corresponding to the test module, traverses the test results to obtain the test case name and the parameter value of the result item, and writes the test case name and the parameter value of the result item into the result saving item in the Excel data.
[0009] In a second aspect, the present invention provides a software automation testing system, comprising: A path allocation module is used to allocate a unique corresponding data storage path to a test module in a pre-built automated test framework, and store the Excel data of the test module under the data storage path; A path saving module is used to save the test module and the corresponding data storage path to a list; A data conversion module, used for traversing all data storage paths in the list, converting the Excel data in the data storage path into JSON data, and saving the JSON data to the data storage path where the Excel data is located; The test execution module is used to read JSON data from the corresponding data storage path when executing the test. The result backfill module is used to backfill the test results of each test case in the test module into Excel under the corresponding data storage path using a pre-compiled auxiliary script.
[0010] In an optional implementation, the path allocation module includes: A test division unit is used to decompose the software to be tested into multiple functional modules in advance, and compile a corresponding test module for each functional module, wherein the test module includes multiple test cases; Parameter separation unit, used to save the input parameters of the test case as Excel data; The data storage unit is used to allocate a unique corresponding data storage path to each test module and save the Excel data corresponding to the test module to the allocated data storage path.
[0011] In an optional implementation, the data conversion module includes: A first function definition unit is used to define a function for traversing a data storage path, wherein the function traverses a specified root directory and searches for all Excel data in .xls format; The second function definition unit is used to define a conversion function from Excel to JSON, wherein the conversion function converts the read Excel data into a DataFrame, and converts the DataFrame into JSON data, and saves the JSON data in the same path as the Excel data.
[0012] In an optional implementation, the result backfill module includes: Tool installation unit, used to install unittest library and openpyxl library; A script execution unit is used to execute an auxiliary script so that the auxiliary script loads the test module based on the storage address of the test module, creates a result saving item in the Excel data corresponding to the test module, traverses the test results to obtain the test case name and the parameter value of the result item, and writes the test case name and the parameter value of the result item into the result saving item in the Excel data.
[0013] In a third aspect, a terminal is provided, including: processor, memory, wherein: The memory is used to store computer programs. The processor is used to call and run the computer program from the memory, so that the terminal executes the above-mentioned terminal method.
[0014] According to a fourth aspect, a computer storage medium is provided, wherein the computer-readable storage medium stores instructions, and when the instructions are executed on a computer, the computer executes the methods described in the above aspects.
[0015] The beneficial effect of the present invention is that the software automated testing method, system, terminal and storage medium provided by the present invention convert the test data from Excel to JSON data as needed, and fill the execution result back into Excel after the script execution is completed. This avoids the repeated reading of Excel data by each script, improves the execution efficiency of the test script, reduces the cost of human and machine reading the test script, and makes it more convenient to view the test execution results.
[0016] In addition, the invention has a reliable design principle, a simple structure and a very broad application prospect. BRIEF DESCRIPTION OF THE DRAWINGS
[0017] In order to more clearly illustrate the embodiments of the present invention or the technical solutions in the prior art, the drawings required for use in the embodiments or the description of the prior art will be briefly introduced below. Obviously, for ordinary technicians in this field, other drawings can be obtained based on these drawings without paying any creative work.
[0018] Figure 1 is a schematic flow chart of a method according to an embodiment of the present invention.
[0019] Figure 2 is a schematic block diagram of a system according to an embodiment of the present invention.
[0020] Figure 3 A schematic diagram of the structure of a terminal provided by an embodiment of the present invention. DETAILED DESCRIPTION
[0021] In order to enable those skilled in the art to better understand the technical solutions in the present invention, the technical solutions in the embodiments of the present invention will be clearly and completely described below in conjunction with the drawings in the embodiments of the present invention. Obviously, the described embodiments are only part of the embodiments of the present invention, not all of the embodiments. Based on the embodiments of the present invention, all other embodiments obtained by ordinary technicians in this field without creative work should fall within the scope of protection of the present invention.
[0022] Unless otherwise defined, all technical and scientific terms used herein have the same meaning as those commonly understood by those skilled in the art of the present invention. The terms used in the specification of the present invention herein are only for the purpose of describing specific embodiments and are not intended to limit the present invention.
[0023] The software automation testing method provided by the embodiment of the present invention is executed by a computer device, and accordingly, the software automation testing system runs in the computer device.
[0024] Figure 1 is a schematic flow chart of a method according to an embodiment of the present invention. Figure 1 The execution subject can be a software automated testing system. According to different requirements, the order of the steps in the flow chart can be changed, and some can be omitted.
[0025] like Figure 1 As shown, the method includes: Step 110, in the pre-built automated test framework, assign a unique corresponding data storage path to the test module, and store the Excel data of the test module in the data storage path; Step 120, saving the test module and the corresponding data storage path to a list; Step 130, traverse all data storage paths in the list, convert the Excel data in the data storage path into JSON data, and save the JSON data to the data storage path where the Excel data is located; Step 140, when executing the test, the test case in the test module reads the JSON data from the corresponding data storage path; Step 150, using a pre-compiled auxiliary script to fill back the test results of each test case in the test module into Excel under the corresponding data storage path.
[0026] To facilitate understanding of the present invention, the software automation testing method provided by the present invention is further described below based on the principle of the software automation testing method of the present invention and in combination with the process of performing automated testing on software in the embodiments.
[0027] Specifically, software automation testing methods include: S1. In a pre-built automated testing framework, a unique corresponding data storage path is allocated to a test module, and the Excel data of the test module is stored under the data storage path.
[0028] The software to be tested is decomposed into multiple functional modules in advance, and a corresponding test module is compiled for each functional module, wherein the test module includes multiple test cases; the input parameters of the test cases are saved as Excel data; a unique corresponding data storage path is allocated to each test module, and the Excel data corresponding to the test module is saved to the allocated data storage path.
[0029] An automated testing framework is built based on Python language. The script and data are separated in the framework. The script module stores the test scripts, and the data module uses Excel to store the test data. All test data is stored in different Excel files according to different modules and different test scenarios, and there is only one sheet page, which is stored in the allocated data storage path.
[0030] Specifically, they include: (1) Requirements analysis and software modularization: First, deeply understand the functional requirements, business logic and user scenarios of the software to be tested. Based on the requirements, pre-decompose the software into multiple functional modules with clear functions and low coupling. Each module should focus on one or more closely related functional points. Write a detailed module specification for each functional module, clarifying the module's input and output, dependencies and key performance indicators.
[0031] (2) Test planning and design: For each functional module, a detailed test plan is developed, including test scope, test strategy, resource allocation, time arrangement, etc. Corresponding test modules are designed, and each test module contains multiple test cases to cover various usage scenarios, boundary conditions, abnormal situations, etc. of the module. Each test case must clearly describe the test objectives, test steps, expected results, and possible failure scenarios.
[0032] (3) Test case data management: Save key data such as test case input parameters and expected output as Excel files for easy management and maintenance. Design the format of the Excel file to ensure that the data is clear, easy to read and update, including but not limited to columns such as test case number, name, description, input parameters, expected output, etc. Perform version control on the Excel file to ensure the accuracy and consistency of the test data.
[0033] (4) Data storage and path allocation: Assign a unique data storage path to each test module to organize and manage test data. Under the storage path, create a folder or directory structure corresponding to the test module for easy search and reference. Save the Excel data file corresponding to the test module to the assigned data storage path to ensure the clarity and uniqueness of the file path.
[0034] (5) Automated test script development: Develop automated test scripts based on test cases and data files. The script should be able to automatically read the test data in the Excel file, execute the test steps, and verify the test results. Use appropriate automated test frameworks and tools, such as Selenium, Appium (for mobile applications), JUnit, Pytest, etc., and select the appropriate tool according to the test requirements. When writing test scripts, pay attention to the reusability, maintainability, and readability of the code.
[0035] (6) Execution of test and result analysis: Execute automated test scripts to conduct comprehensive testing of the software. Monitor the testing process, record test logs and test results. Analyze the test results, identify defects and problems in the software, and write detailed defect reports. Adjust the test plan, test cases or data based on the test results to ensure the adequacy and effectiveness of the test.
[0036] S2. Save the test module and the corresponding data storage path to a list.
[0037] The test module names and their corresponding data storage paths are saved in a list. In other implementations, the test module names and their corresponding data storage paths can also be saved in a dictionary.
[0038] S3. Traverse all data storage paths in the list, convert the Excel data in the data storage path into JSON data, and save the JSON data to the data storage path where the Excel data is located.
[0039] Write a function to traverse all data storage paths, convert Excel data into JSON format, and save it to the same path.
[0040] Specifically, a function for traversing the data storage path is defined, and the function traverses the specified root directory to search for all Excel data in .xls format.
[0041] Define an Excel to JSON conversion function, which converts the read Excel data into a DataFrame, converts the DataFrame into JSON data, and saves the JSON data to the same path as the Excel data. Specifically, read the Excel file. If the output path is not specified, use the directory where the Excel file is located, modify the file extension to .json, convert the DataFrame into JSON and save it. In the df.to_json method, the orient='records' option makes each JSON object represent a row in the DataFrame, and the lines=True option makes each JSON object occupy a row.
[0042] S4. When executing the test, the test cases in the test module read the JSON data from the corresponding data storage path.
[0043] In the test module, the test case needs to read the JSON data file from the corresponding data storage path. This is usually achieved through file I / O operations, and Python's json library can be used to parse the JSON file.
[0044] S5. Use the pre-compiled auxiliary script to fill back the test results of each test case in the test module into the Excel file under the corresponding data storage path.
[0045] Read the specific script execution results, and fill PASS and FAIL as the execution results back into the corresponding Excel execution result column. Write the test script in the script module, parameterize the input parameters in the script, read the data in the corresponding JSON in the data module; call the auxiliary script to fill in the test results after each script is executed.
[0046] Specifically, install the unittest library (part of the Python standard library) and the openpyxl library (for reading and writing Excel files).
[0047] Execute the auxiliary script. Specifically, the execution process of the auxiliary script is as follows: The auxiliary script loads the test module based on the storage address of the test module, creates a result saving item in the Excel data corresponding to the test module, traverses the test results to obtain the test case name and the parameter value of the result item, and writes the test case name and the parameter value of the result item to the result saving item in the Excel data.
[0048] In some embodiments, the software automation testing system may include multiple functional modules composed of computer program segments. The computer programs of each program segment in the software automation testing system may be stored in a memory of a computer device and executed by at least one processor to perform (see Figure 1 Description) Functionality of software automation testing.
[0049] In this embodiment, the software automation testing system can be divided into multiple functional modules according to the functions it performs, such as Figure 2As shown. The functional modules of the system 200 may include: a path allocation module 210, a path storage module 220, a data conversion module 230, a test execution module 240 and a result backfill module 250. The module referred to in the present invention refers to a series of computer program segments that can be executed by at least one processor and can complete fixed functions, which are stored in a memory. In this embodiment, the functions of each module will be described in detail in subsequent embodiments.
[0050] A path allocation module is used to allocate a unique corresponding data storage path to a test module in a pre-built automated test framework, and store the Excel data of the test module under the data storage path; A path saving module is used to save the test module and the corresponding data storage path to a list; A data conversion module, used for traversing all data storage paths in the list, converting the Excel data in the data storage path into JSON data, and saving the JSON data to the data storage path where the Excel data is located; The test execution module is used to read JSON data from the corresponding data storage path when executing the test. The result backfill module is used to backfill the test results of each test case in the test module into Excel under the corresponding data storage path using a pre-compiled auxiliary script.
[0051] Optionally, as an embodiment of the present invention, the path allocation module includes: A test division unit is used to decompose the software to be tested into multiple functional modules in advance, and compile a corresponding test module for each functional module, wherein the test module includes multiple test cases; Parameter separation unit, used to save the input parameters of the test case as Excel data; The data storage unit is used to allocate a unique corresponding data storage path to each test module and save the Excel data corresponding to the test module to the allocated data storage path.
[0052] Optionally, as an embodiment of the present invention, the data conversion module includes: A first function definition unit is used to define a function for traversing a data storage path, wherein the function traverses a specified root directory and searches for all Excel data in .xls format; The second function definition unit is used to define a conversion function from Excel to JSON, wherein the conversion function converts the read Excel data into a DataFrame, and converts the DataFrame into JSON data, and saves the JSON data in the same path as the Excel data.
[0053] Optionally, as an embodiment of the present invention, the result backfill module includes: Tool installation unit, used to install unittest library and openpyxl library; A script execution unit is used to execute an auxiliary script so that the auxiliary script loads the test module based on the storage address of the test module, creates a result saving item in the Excel data corresponding to the test module, traverses the test results to obtain the test case name and the parameter value of the result item, and writes the test case name and the parameter value of the result item into the result saving item in the Excel data.
[0054] Figure 3 The present invention provides a schematic diagram of the structure of a terminal 300 provided in an embodiment of the present invention. The terminal 300 can be used to execute the software automation testing method provided in an embodiment of the present invention.
[0055] The terminal 300 may include: a processor 310, a memory 320 and a communication unit 330. These components communicate via one or more buses. Those skilled in the art will appreciate that the server structure shown in the figure does not limit the present invention, and it may be a bus structure or a star structure, and may include more or fewer components than shown in the figure, or combine certain components, or arrange the components differently.
[0056] The memory 320 can be used to store the execution instructions of the processor 310, and the memory 320 can be implemented by any type of volatile or non-volatile storage terminal or a combination thereof, such as static random access memory (SRAM), electrically erasable programmable read-only memory (EEPROM), erasable programmable read-only memory (EPROM), programmable read-only memory (PROM), read-only memory (ROM), magnetic memory, flash memory, magnetic disk or optical disk. When the execution instructions in the memory 320 are executed by the processor 310, the terminal 300 can perform some or all of the steps in the following method embodiments.
[0057] The processor 310 is the control center of the storage terminal, and uses various interfaces and lines to connect various parts of the entire electronic terminal. It runs or executes software programs and / or modules stored in the memory 320, and calls data stored in the memory to perform various functions of the electronic terminal and / or process data. The processor can be composed of an integrated circuit (IC), for example, it can be composed of a single packaged IC, or it can be composed of multiple packaged ICs with the same or different functions. For example, the processor 310 can only include a central processing unit (CPU). In the embodiment of the present invention, the CPU can be a single computing core or multiple computing cores.
[0058] The communication unit 330 is used to establish a communication channel so that the storage terminal can communicate with other terminals, receive user data sent by other terminals or send user data to other terminals.
[0059] The present invention also provides a computer storage medium, wherein the computer storage medium may store a program, and when the program is executed, the program may include some or all of the steps in each embodiment provided by the present invention. The storage medium may be a magnetic disk, an optical disk, a read-only memory (ROM) or a random access memory (RAM).
[0060] Therefore, the present invention converts the test data from Excel to json data as needed, and fills the execution results back into Excel after the script execution is completed. This avoids the repeated reading of Excel data by each script, improves the execution efficiency of the test script, reduces the cost of human and machine reading of the test script, and makes it more convenient to view the test execution results. The technical effects that can be achieved by this embodiment can be found in the description above, and will not be repeated here.
[0061] Those skilled in the art can clearly understand that the technology in the embodiments of the present invention can be implemented by means of software plus a necessary general hardware platform. Based on this understanding, the technical solution in the embodiments of the present invention, in essence or in other words, the part that contributes to the prior art, can be embodied in the form of a software product, which is stored in a storage medium such as a USB flash drive, a mobile hard disk, a read-only memory (ROM), a random access memory (RAM), a disk or an optical disk, and other media that can store program codes, including several instructions for enabling a computer terminal (which can be a personal computer, a server, or a second terminal, a network terminal, etc.) to execute all or part of the steps of the methods described in each embodiment of the present invention.
[0062] In this specification, the same or similar parts between the various embodiments can be referred to each other. In particular, for the terminal embodiment, since it is basically similar to the method embodiment, the description is relatively simple, and the relevant parts can be referred to the description in the method embodiment.
[0063] In the several embodiments provided by the present invention, it should be understood that the disclosed systems and methods can be implemented in other ways. For example, the system embodiments described above are only schematic. For example, the division of the modules is only a logical function division. There may be other division methods in actual implementation, such as multiple modules or components can be combined or integrated into another system, or some features can be ignored or not executed. Another point is that the mutual coupling or direct coupling or communication connection shown or discussed can be through some interfaces, indirect coupling or communication connection of systems or modules, which can be electrical, mechanical or other forms.
[0064] The modules described as separate components may or may not be physically separated, and the components shown as modules may or may not be physical modules, that is, they may be located in one place or distributed on multiple network modules. Some or all of the modules may be selected according to actual needs to achieve the purpose of the solution of this embodiment.
[0065] In addition, each functional module in each embodiment of the present invention may be integrated into one processing module, or each module may exist physically separately, or two or more modules may be integrated into one module.
[0066] Although the present invention has been described in detail with reference to the accompanying drawings and in combination with the preferred embodiments, the present invention is not limited thereto. Without departing from the spirit and essence of the present invention, a person of ordinary skill in the art may make various equivalent modifications or substitutions to the embodiments of the present invention, and these modifications or substitutions shall be within the scope of the present invention. Any person of ordinary skill in the art may easily think of changes or substitutions within the technical scope disclosed by the present invention, and these shall be within the scope of protection of the present invention.
Claims
1. A software automated testing method, characterized in that: include: In a pre-built automated testing framework, a unique corresponding data storage path is allocated to the test module, and the Excel data of the test module is stored in the data storage path; Save the test modules and the corresponding data storage paths to a list; Traverse all data storage paths in the list, convert the Excel data in the data storage path into JSON data, and save the JSON data to the data storage path where the Excel data is located; When executing the test, the test cases in the test module read the JSON data from the corresponding data storage path; Use pre-compiled auxiliary scripts to backfill the test results of each test case in the test module into Excel under the corresponding data storage path.
2. The method according to claim 1, characterized in that In the pre-built automated test framework, a unique corresponding data storage path is allocated to the test module, and the Excel data of the test module is stored in the data storage path, including: Decompose the software to be tested into multiple functional modules in advance, and compile a corresponding test module for each functional module, wherein the test module includes multiple test cases; Save the input parameters of the test case as Excel data; Assign a unique data storage path to each test module, and save the Excel data corresponding to the test module to the assigned data storage path.
3. The method according to claim 1, characterized in that Traversing all data storage paths in the list, converting the Excel data in the data storage path into JSON data, and saving the JSON data to the data storage path where the Excel data is located, including: Define a function for traversing the data storage path, the function traverses the specified root directory and searches for all Excel data in .xls format; Define an Excel to JSON conversion function, which converts the read Excel data into a DataFrame, and converts the DataFrame into JSON data, and saves the JSON data to the same path as the Excel data.
4. The method according to claim 1, characterized in that Use pre-compiled auxiliary scripts to fill the test results of each test case in the test module back into the Excel file under the corresponding data storage path, including: Install the unittest library and openpyxl library; Execute the auxiliary script so that the auxiliary script loads the test module based on the storage address of the test module, creates a result saving item in the Excel data corresponding to the test module, traverses the test results to obtain the test case name and the parameter value of the result item, and writes the test case name and the parameter value of the result item into the result saving item in the Excel data.
5. A software automated testing system, characterized in that: include: A path allocation module is used to allocate a unique corresponding data storage path to a test module in a pre-built automated test framework, and store the Excel data of the test module under the data storage path; A path saving module is used to save the test module and the corresponding data storage path to a list; A data conversion module, used for traversing all data storage paths in the list, converting the Excel data in the data storage path into JSON data, and saving the JSON data to the data storage path where the Excel data is located; The test execution module is used to read JSON data from the corresponding data storage path when executing the test. The result backfill module is used to backfill the test results of each test case in the test module into Excel under the corresponding data storage path using a pre-compiled auxiliary script.
6. The system according to claim 5, characterized in that The path allocation module comprises: A test division unit is used to decompose the software to be tested into multiple functional modules in advance, and compile a corresponding test module for each functional module, wherein the test module includes multiple test cases; Parameter separation unit, used to save the input parameters of the test case as Excel data; The data storage unit is used to allocate a unique corresponding data storage path to each test module and save the Excel data corresponding to the test module to the allocated data storage path.
7. The system according to claim 5, characterized in that The data conversion module comprises: A first function definition unit is used to define a function for traversing a data storage path, wherein the function traverses a specified root directory and searches for all Excel data in .xls format; The second function definition unit is used to define a conversion function from Excel to JSON, wherein the conversion function converts the read Excel data into a DataFrame, and converts the DataFrame into JSON data, and saves the JSON data in the same path as the Excel data.
8. The system according to claim 5, characterized in that The result backfill module includes: Tool installation unit, used to install unittest library and openpyxl library; A script execution unit is used to execute an auxiliary script so that the auxiliary script loads the test module based on the storage address of the test module, creates a result saving item in the Excel data corresponding to the test module, traverses the test results to obtain the test case name and the parameter value of the result item, and writes the test case name and the parameter value of the result item into the result saving item in the Excel data.
9. A terminal, characterized in that: include: A memory, used for storing software automated testing programs; A processor is used to implement the steps of the software automation testing method as described in any one of claims 1 to 4 when executing the software automation testing program.
10. A computer-readable storage medium storing a computer program, characterized in that: The readable storage medium stores a software automation testing program, and when the software automation testing program is executed by the processor, the steps of the software automation testing method according to any one of claims 1 to 4 are implemented.