Method and system for verifying control and data coupling analysis in software code - Patents.com

Through static and dynamic analysis, the control association and data connection in the software code are identified and the coverage report is generated, which solves the problem of difficulty in detecting structural coverage failure in the prior art, and effectively verify and test coverage of the software code.

JP7653577B2Active Publication Date: 2025-03-28LDRA TECH
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
JP2024519488
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2021-06-04
Filing Date
2022-05-02
Publication Date
2025-03-28
Estimated Expiration
2042-05-02

AI Technical Summary

Technical Problem

The prior art is difficult to effectively detect and verify control and data binding analysis in software code, resulting in structural coverage failures that cannot be accurately detected.

Method used

Through static and dynamic analysis methods, we identify control associations and data connections in the source file, define test execution operations, conduct dynamic analysis, and generate control associations and data connection coverage reports.

Benefits of technology

It realizes effective verification of control and data binding analysis in software code, ensures comprehensive testing coverage, and improves the reliability of software testing.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007653577000004
    Figure 0007653577000004
  • Figure 0007653577000005
    Figure 0007653577000005
  • Figure 0007653577000006
    Figure 0007653577000006
Patent Text Reader

Abstract

A method and system for verifying control coupling and data coupling analysis during testing of software code includes the steps of selecting a source file to be tested, the source file having source code; identifying one or more control couplings in the source file by performing static analysis on the source code of the source file; defining one or more test execution operations of the software code, the one or more test execution operations including one or more of the identified control couplings, the one or more test execution operations using dynamic analysis; executing the one or more defined test execution operations; identifying control coupling coverage for the source file based on the dynamic analysis; and generating a control coupling report based on the control coupling coverage for the identified source file.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] Field The present invention relates to verifying control and data coupling analysis in software code, and more particularly, to verifying control and data coupling analysis in software code using static and dynamic analysis during software testing. [Background technology]

[0002] background In industries that utilize or otherwise depend on software, many of these industries have standards and / or policies that prescribe one or more requirements for that software to ensure that the software operates in accordance with best practices for those industries. For example, industry software standards or government regulations may recommend the use of software testing, such as, but not limited to, requirements-based testing procedures or requirements-based traceability. The above standards also identify the need to verify the completeness of such software testing processes, for example, through the use of structural coverage. The purpose of such testing is to identify any structural coverage failures in the source code of the software under test. Two such structural coverage failures may occur in control and data coupling in the software code and cannot be adequately detected using known coverage techniques such as Statement, Decision, or Modified Condition / Decision Coverage (MC / DC). Thus, a need exists for techniques to verify that software testing properly checks control and data coupling analysis in the software code. [Prior art documents] [Patent documents]

[0003] [Patent Document 1] U.S. Patent No. 8,949,770 [Non-patent literature]

[0004] [Non-Patent Document 1] “LDRA Tool Qualification Packs” Summary of the Invention [Means for solving the problem]

[0005] A method for verifying control coupling analysis during testing of software code is disclosed, the method including the steps of selecting a source file to be tested, the source file having source code; identifying one or more control couplings in the source file by performing static analysis on the source code of the source file; defining one or more test execution operations of the software code, the one or more test execution operations including one or more of the identified control couplings, the one or more test execution operations using dynamic analysis; executing the one or more defined test execution operations; identifying control coupling coverage for the source file based on the dynamic analysis; and generating a control coupling report based on the identified control coupling coverage for the source file.

[0006] A method for verifying data binding analysis during testing of software code is disclosed, the method including the steps of selecting a source file to be tested, the source file having one or more components, identifying one or more data bindings in the source file by performing static analysis on source code of the source file, the data bindings being variables and parameters of the one or more components, defining one or more tests for each of the one or more components that include one or more of the identified data bindings, the one or more tests using dynamic analysis, running the one or more tests on the source file, identifying data binding variable usage coverage for the source file based on the dynamic analysis, and generating a data binding report based on the identified data binding coverage.

[0007] A method for verifying control and data coupling analysis during testing of software code is disclosed. The method includes the steps of selecting a source file to be tested, the source file having source code, the source code implementing one or more components; identifying one or more control couplings in the source file by performing static analysis on the source code of the source file; defining one or more control coupling test execution operations including one or more of the identified control couplings, the one or more control coupling test execution operations using dynamic analysis; identifying control coupling coverage for the source file based on the dynamic analysis; identifying one or more data couplings in the source file by performing static analysis on the source code of the source file, the data couplings being variables and parameters of the one or more components; defining one or more data coupling tests for each of the one or more components including one or more of the identified data couplings, the one or more data coupling tests using dynamic analysis; running the one or more data coupling tests on the source file; identifying data binding variable use coverage for the source file based on the dynamic analysis; and generating a report based on the identified control coupling coverage and the data binding variable use coverage for the identified source file.

[0008] A system for verifying control coupling analysis during testing of software code is disclosed, the system including one or more processors, one or more computer readable memories, one or more computer readable tangible storage devices, and instructions stored in at least one of the one or more storage devices and executed by at least one of the one or more processors via at least one of the one or more memories, the instructions including: selecting a source file to test, the source file having source code; identifying one or more control couplings in the source file by performing static analysis on the source code of the source file; defining one or more test execution operations of the software code, the one or more test execution operations including one or more of the identified control couplings, the one or more test execution operations using dynamic analysis; performing the one or more test execution operations; identifying control coupling coverage of the source file based on the dynamic analysis; and generating a control coupling report based on the identified control coupling coverage of the source file.

[0009] A system for verifying data binding analysis during testing of software code is disclosed, the system including one or more processors, one or more computer readable memories, one or more computer readable tangible storage devices, and instructions stored in at least one of the one or more storage devices and executed by at least one of the one or more processors via at least one of the one or more memories, the instructions including: selecting a source file to test, the source file having one or more components; identifying one or more data bindings in the source file by performing static analysis on source code of the source file, the data bindings being variables and parameters of the one or more components; defining one or more tests for each of the one or more components that include one or more of the identified data bindings, the one or more tests using dynamic analysis; executing the one or more tests on the source file; identifying data binding variable usage coverage for the source file based on the dynamic analysis; and generating a data binding report based on the identified data binding variable usage coverage.

[0010] A system for verifying control coupling and data coupling analysis during testing of software code is disclosed, the system including one or more processors, one or more computer readable memories, one or more computer readable tangible storage devices, and instructions stored in at least one of the one or more storage devices and executed by at least one of the one or more processors via at least one of the one or more memories, the instructions including: instructions for selecting a source file to test, the source file having source code, the source code implementing one or more components; instructions for identifying one or more control couplings in the source file by performing a static analysis on the source code of the source file; instructions for defining one or more control coupling test execution operations, the one or more control coupling test execution operations including one or more of the identified control couplings, the one or more control coupling test execution operations using dynamic analysis; instructions for performing the one or more defined control coupling test execution operations; instructions for identifying control coupling coverage of the source file based on the dynamic analysis; instructions for selecting a source file to test, the source file having source code, the source code implementing one or more components; instructions for identifying one or more control couplings in the source file by performing a static analysis on the source code of the source file; instructions for defining one or more control coupling test execution operations, the one or more control coupling test execution operations using dynamic analysis; instructions for performing the one or more defined control coupling test execution operations; instructions for identifying control coupling coverage of the source file based on the dynamic analysis; instructions for determining ... instructions for identifying one or more data bindings in a source file by performing a static analysis on the one or more components, the data bindings being variables and parameters of the one or more components; instructions for defining one or more data binding tests for each of the one or more components that have one or more of the identified data bindings, the one or more data binding tests using dynamic analysis; instructions for running the one or more data binding tests on the source file; instructions for identifying data binding variable use coverage for the source file based on the dynamic analysis; and instructions for generating a report based on the identified control binding coverage and the identified data binding variable use coverage for the source file.

[0011] The scope of the present invention is best understood from the following detailed description of the preferred embodiments when read in conjunction with the accompanying drawings, in which: [Brief description of the drawings]

[0012] [Figure 1] FIG. 1a is a block diagram illustrating an example of control binding according to a preferred embodiment, and FIG. 1b is a block diagram illustrating an example of data binding according to a preferred embodiment. [Diagram 2] FIG. 2a is a block diagram illustrating a high level system architecture for verifying control coupling and data coupling analysis during testing of software code according to a preferred embodiment, and FIG. 2b is a block diagram illustrating an example of a module of software code requirements verification of FIG. 2a according to a preferred embodiment. [Diagram 3] 1 is a flow chart illustrating a preferred method for verifying control coupling analysis during testing of software code, in accordance with a preferred embodiment. [Figure 4] 4a-4b are block diagrams illustrating an example of control coupling reporting according to a preferred embodiment, and FIG. 4c is a block diagram illustrating a call graph according to a preferred embodiment. [Diagram 5] 1 is a flow chart illustrating a preferred method for verifying data binding analysis during testing of software code, in accordance with a preferred embodiment. [Figure 6] FIG. 2 is a block diagram illustrating an example of a requirements traceability matrix, in accordance with a preferred embodiment; [Figure 7] 7a-7c are block diagrams illustrating an example of data combination reporting according to a preferred embodiment. [Figure 8] 8a-8b are a flow chart illustrating a preferred method for verifying control and data coupling coverage during testing of software code, according to a preferred embodiment. [Figure 9] FIG. 1 is a block diagram illustrating a computer system architecture in accordance with a preferred embodiment. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0013] Detailed Description Glossary Control Coupling - The manner or degree to which one software component affects the execution of another software component.

[0014] Data Coupling - The dependency of a software component on data that is not solely under the control of that software component. Data coupling depends on the structure of the control flow graph of either the complete system or, alternatively, its subsystems.

[0015] Component - a self-contained part, combination of parts, subassembly, or unit that performs a distinct function of a system. In general, this term can include procedures, functions, subroutines, modules, Units of Conformance (UoC), and other similar programming constructs.

[0016] Figure 1a shows an example of control binding according to a preferred embodiment. Three files 102, 104, and 106 each contain at least one call 108 to function foo. File 102 contains a definition 110 of function foo, and file 104 contains a definition 112 of function foo. Definitions 110, 112 are identical or possibly similar (e.g., the same instance). The linker can choose to resolve all calls to definition 110 in file 102 (case 1), or the linker can resolve calls to definition 110 in file 102, calls to definition 112 in file 104, and calls in file 106 (e.g., case 2). This is a flaw in control binding, since the user may not be aware of the ambiguity (i.e., which definition is the call to function 108 to be resolved). The system design should be able to resolve which of these two linking cases (e.g., case 1 vs. case 2) is required.

[0017] Another example is when a control binding is a parametric control binding: function foo has procedural parameters (i.e. you can pass the names of other functions through foo's parameter list). A parametric control binding can be illustrated as follows: Int var; int glob void foo ( void (*pfunc) (void) ) { if ( var == 1 ) { pfunc(); / * case 1 * / } else { pfunc(); / * case 2 * / } } int main ( void ) { loop: get ( var ); get ( glob ); if(glob == 1) { foo( &func1 ); } else { foo( &func2 ); goto loop; } In this example, the two data sets shown below will ensure that all statements are executed, plus all branches (or control flow decisions) are executed.

[0018] [Table 1]

[0019] However, in the above example, there could be two functions being called at the points labeled case 1 and case 2. In the two data sets provided above, only one function is called at each point, function func2 is called at the point in case 1, and function func1 is called at the point in case 2. Control coupling requires that all possible calls are executed at each point. Therefore, the requirements-based test data must contain two additional data sets to ensure that all control flow calls are executed. Obviously, this concept can be applied to all cases of use of pointers to functions. Where a function is called by dereferencing a pointer, all possible functions that may be called must be executed. Similarly, in C++, all virtual functions that may be called at a particular point must be exercised by the requirements-based test data. In order to establish control coupling, firstly, it is essential that the set of functions that may be called is known, and secondly, it must be known which members of this set are actually called. Such information is usually found by static analysis of the code under test.

[0020] An example of data binding detection according to a preferred embodiment is shown in Figure 1b. The data binding in Figure 1b includes a function 120 and a function 122, both of which are called from the same main program 124 and share the same variable 126. Function 122 calculates the value of variable 126 (i.e., a set operation), while function 120 outputs the value of variable 126 to a display device (i.e., a use operation). The main program 124 can be illustrated as follows: int main() { int speed, order; loop: get( order ) { case 1: calculate_airspeed(speed); (Calculate airspeed) case 2: display_airspeed(speed); (display airspeed) } goto loop } A first test case for main program 124 can be constructed that executes function 120, and then another test case that executes function 122. In this case, control binding is tested as needed (i.e., all statements are executed, all branches / decisions are taken, there is no MC / DC requirement in this case), but the call sequence is flawed because function 122 does not have a valid variable to display. Similarly, if a test case calls function 120 and there is no subsequent call to function 122, another flaw is likely to exist. Thus, the example of FIG. 1b shows a need to demonstrate that all inputs to a given function at the point of invocation have valid values, and that all values ​​assigned to global variables are used. In this context, a global variable is a variable that is declared externally and set externally to the function that uses the global variable. As another example, data binding may include code in which function foo uses a parametric variable "x" three times in the code: int foo ( int x ) { if ( x == 1 ) / / 1 use of x { return x;} / / One use of x else ( return x; ) This function can be called from a main program: int main() { int i, y, z; for ( i-1 ; i<=2 ; i++ ) { y = I; / / Set y. foo ( y ); / / y is relative to x. } scanf ( "%d", &z ); / / Set z. foo ( z ); / / z is an alias for x. return (); } In the above example, the first call to foo with argument y causes all statements in foo to be executed, plus all branches / decisions, since the loop generates both possibilities for y. This also causes all three uses of y to be executed. The second call to foo with argument z does not cover any statements or branches / decisions in foo that are not already covered, but it does introduce three other uses (of z), one of which is not executed. Test-based data binding requires two test cases, one with z having the identity value and a second with a different value, which covers all three uses of z in foo (via the alias x).

[0021] System Overview FIG. 2a illustrates a system 200 for verifying control coupling and data coupling analysis during testing of software code, according to a preferred embodiment.

[0022] The requirements information source 202 may be a computing device such as, but not limited to, a desktop computer, a notebook computer, a laptop computer, a tablet computer, a handheld device, a smart phone, a thin client, or any electronic device or computing system capable of storing, editing, and organizing audio, image, or text data (e.g., requirements information 214) and receiving and transmitting data (e.g., requirements information 214) between the device 204 and other computing devices such as the user device 230. In such an embodiment, the requirements information 214 may be an electronic file such as, but not limited to, a Microsoft Word document, a PDF file, a web page, or any other suitable electronic file format, etc. In one embodiment, the requirements information source 202 may be a physical source such as, but not limited to, a book, a paper, a pamphlet, or any other suitable physical source, etc. In a preferred embodiment, the requirements information file 214 may be software specifications or requirements, including but not limited to control coupling and data coupling analysis specifications / requirements in addition to any number of other software specifications / requirements for the operation of the software. The requirements information file 214 may be for software in any industry, such as but not limited to transportation, shipping, manufacturing, communications, finance, information services, consumer goods, retail, healthcare, real estate, utilities, energy, raw materials, and construction, etc. Although only a single requirements source 202 is shown, it can be understood that any number of requirements sources 202 may be part of the system 200.

[0023] The device 204 includes, for example, a processor 206, a memory 208, a display 210, a storage device 212, and a software code requirements verification program 220. The device 204 may be a desktop computer, a notebook computer, a laptop computer, a tablet computer, a handheld device, a smart phone, a thin client, or any other electronic device or computer system capable of storing, editing, and organizing audio, image, or text data, and receiving and transmitting such data to and from other computing devices, such as the requirements information source 202 and the user device 230. Although only a single device 204 is shown, it can be understood that any number of devices 204 may be part of the system 200.

[0024] The processor 206 may be a dedicated or general purpose processor specially configured to perform the functions described herein. The processor 206 units or devices described herein may be a single processor, multiple processors, or a combination thereof. A processor device may be one or more processor "cores." In a preferred embodiment, the processor 206 is configured to perform functions associated with modules of the software code requirements verification program 220 described below with reference to Figures 3-8b.

[0025] The memory 208 may be a random access memory, a read only memory, or any other known memory configuration. Additionally, in some embodiments, the memory 208 may include one or more additional memories, including storage device 212. The memory 208 and the one or more additional memories may be read and / or written in a known manner. In one embodiment, the memory and the one or more additional memories may be non-transitory computer readable recording media. Memory semiconductors (e.g., dynamic random access memory (DRAM), etc.) may be a means for providing software, such as the software code requirements verification program 220, to a computer device. Computer programs, such as computer control logic, may be stored in the memory 208.

[0026] Display 210 may be any device capable of receiving display signals from a computing device, such as device 204 and / or user device 230, and outputting those display signals to a display unit, such as, but not limited to, a Liquid Crystal Display (LCD) screen, a Plasma screen, a Light Emitting Diode (LED) screen, a Digital Light Processing (DLP) screen, a Cathode Ray Tube (CRT) screen, etc. Although display 210 is illustrated as part of device 204, it may be understood that display 210 may be a separate, stand-alone display device or may be part of another computing device, such as, but not limited to, user device 230.

[0027] Storage device 212 may include requirements information file 214, source files 216, and test files 218. Although only a single requirements information file 214, a single source file 216, and a single test file 218 are illustrated, it can be understood that any number of requirements information files 214, source files 216, and / or test files 218 can be stored in storage device 212. Storage device 212 may be deployed on one or more nodes, such as a storage or memory node, or a more processing capable node, such as a server computer, a desktop computer, a notebook computer, a laptop computer, a tablet computer, a handheld device, a smart phone, a thin client, or any other electronic device or computer system that can store, edit, and / or process data and computer instructions, such as requirements information 214, source files 216, and test files 218, and receive and transmit data to and from other computing devices, such as user device 230 and / or requirements information source 202. For example, storage device 212 may be a collection of one or more requirements information files 214 received from one or more requirements information sources 202, one or more source files 216, and one or more test files that may be accessed and utilized by software code requirements verification program 220. Storage device 212 may be any suitable storage structure, such as, but not limited to, a relational database, a Structured Query Language (SQL) database, a distributed database, or an object database, etc. Suitable configurations and types of storage devices will be apparent to those skilled in the relevant art.

[0028] The requirements information file described above can be received by the device 204 and stored in the storage device 212 for use by the software code requirements verification program 220. The source file 216 can be any source file that includes source code for a software program. In a preferred embodiment, the source file 216 has a corresponding requirements information file 214. For example, the source file 216 can be a lighting program for a tunnel system, and the requirements information file 214 can be a software specification for such a tunnel lighting system. Furthermore, the source file 216 can be a single source file 216 or a system set of source files 216. The source file 216 can be received directly by the device 204 (e.g., written onto the device 204 or received through a drive of the device 204, etc.) and stored in the storage device 212 for use by the software code requirements verification program 220, or the software code requirements verification program 220 can receive the source file 216 as user input via a graphical user interface. Test file 218 may be one or more test execution operations designed to test source file 216. For example, test file 218 may be a control binding test or a data binding test. Control binding test file 218 may be a test that defines variables, integers, or decisions that occur during test execution of source file 216 designed to exercise one or more control bindings in the source code. Data binding test file 218 may be a test that defines variables, integers, or decisions that occur during test execution of source file 216 designed to exercise one or more data bindings contained within one or more components of source file 216. Source file 216 and test file 218 are described below with reference to Figures 3, 5, and 8a-8b.Although only a single requirements information file 214, a single source file 216, and a single test file 218 are illustrated, it can be understood that any number of requirements information files 214, single source files 216, and single test files 218 can be stored in storage device 212.

[0029] User device 230 includes graphical user interface 232 and user storage device 236. A user device can be a desktop computer, a notebook computer, a laptop computer, a handheld device, a smart phone, a thin client, or any other electronic device or computer system capable of storing, editing, and organizing audio, image, or text data (e.g., requirements information files 214, source files 216, and / or reports 234, etc.), and receiving and transmitting data to and from other computing devices, such as requirements information source 202 and device 204b.

[0030] The graphical user interface 232 may include components used to receive input from the user device 230 and send the input to the software code requirements verification program 220, or conversely, receive information from the software code requirements verification program 220 and display the information on the user device 230. In one embodiment, the graphical user interface 232 may provide a platform that allows a user of the user device 230 and / or device 204 to interact with the software code requirements verification program 220 using a combination of technologies and devices, such as device drivers. In one embodiment, the graphical user interface 232 may be a web interface. In this embodiment, the graphical user interface 232 receives input from physical input devices, such as a keyboard, mouse, touchpad, touchscreen, camera, microphone, etc. In a preferred embodiment, the graphical user interface 232 may display a report 234. The display 234 may be a control binding report, a data binding report, a combination of control binding and data binding reports, a file call relationship diagram, and / or a system call relationship diagram. The report 234 may be generated for a single source file 216 or for a system set of source files 216. The report 234 may be generated in any suitable format, such as HyperText Markup Language (HTML), American National Standard Code for Information Interchange (ASCII) text, XLSX, etc. The software code requirements verification program 220 may receive the requirements information 214, source files 216, and / or test files 218 via a graphical user interface 235.Although the graphical user interface 232 is illustrated as part of the user device 230 , the graphical user interface 232 is part of the software code requirements verification program 220 and may be part of the device 204 and / or the requirements information source 202 .

[0031] As discussed above, the user storage 236 may include the source files 216. The user storage 236 may be deployed on one or more nodes, such as a storage or memory node, or a more processing capable node, such as a server computer, a desktop computer, a notebook computer, a laptop computer, a tablet computer, a handheld device, a smart phone, a thin client, or any other electronic device or computer system that can store, edit, and / or process data and computer instructions (e.g., the source files 216) and receive and transmit data to other computing devices, such as the device 204. For example, the user storage 236 may be a collection of one or more source programs 216 that may be accessed by or output to the software code requirements verification program 220 via the graphical user interface 232. The user storage 236 may be any suitable storage structure, such as, but not limited to, a relational database, a structured query language (SQL) database, a distributed database, or an object database, etc. Suitable configurations and types of storage devices will be apparent to those skilled in the relevant art. Although user storage 236 is shown as storing only source files 216, it can be understood that user storage can also store requirements information 214 and / or test files 218. Additionally, although only a single user device 230 is shown, it can be understood that any number of user devices 230 can be part of system 200 and / or that user device 230 and device 204 can be the same device.

[0032] The network 240 may be any network suitable for performing the functions disclosed herein, including a local area network (LAN), a wide area network (WAN), a wireless network (e.g., WiFi), a mobile communications network, a satellite network, the Internet, fiber optics, coaxial cable, infrared, radio frequency (RF), or any combination thereof. Other suitable network types and configurations will be apparent to those skilled in the relevant art. In general, the network 240 may be any combination of connections and protocols that support communication between the requirements source 202, the device 204, and the user device 230. In some embodiments, the network 240 may be optional based on the configuration of the requirements source 202, the device 204, and the user device 230.

[0033] FIG. 2b illustrates example modules of the software code requirements validator 220 of FIG. 2a, according to a preferred embodiment.

[0034] The software code requirements verification program 220 may include a source file selection module 250, a static analysis module 252, a dynamic analysis module 254, a report generation module 256, a call relationship diagram generation module 258, and a traceability matrix generation module 260. The software code requirements verification program 220 is a computer program specifically programmed to implement the methods and functions disclosed herein for verifying control coupling and data coupling analysis during testing of software code. The software code requirements verification program 220 and modules 250-260 are described in more detail below with reference to Figures 3-8b. The software code requirements verification program 220 may also include additional modules for verifying software requirements, such as those described in U.S. Patent No. 8,949,770, entitled "Automated Management of Software Requirements Verification," which is incorporated herein by reference in its entirety.

[0035] A preferred method for verifying control coupling analysis during software code testing. FIG. 3 is a flow chart illustrating a preferred method 300 for verifying control coupling analysis during testing of software code, in accordance with a preferred embodiment.

[0036] The method 300 may include a block 302 of selecting a source file 216 to be tested, the source file having source code. The source file 216 may be selected from the storage device 212 or may be selected from the user storage device 236 via the graphical user interface 232. The source file 216 may be a single source file or may be a system set including multiple source files 216 from one or more nodes in the system. For example, the source file 216 may be a computer program including one or more “.c” files or any other suitable type of source code file. The source file 216 may also be a human readable test case file, a text editable file that includes information related to a particular file or set to be analyzed by the software requirements verification program 220. The source file 216 may be selected within the software requirements verification program 220 through the use of one or more drop down menus and / or file folders. In a preferred embodiment, the source file selection module 250 may be configured to perform the method of block 302.

[0037] The method 300 may include a block 304 of identifying one or more control connections in the source files 216. The control connections may be identified by performing static analysis on the source code of the source files 216. Static analysis may be implemented to analyze the source files 216 written by a software developer to identify components in the source code and to evaluate the source code's compliance with the requirements information file 214. As referred to herein, a "component," in addition to the definitions provided above, may be a portion of source code written to implement a requirement in the requirements information file 214. For example, a component may include a function in the C programming language, and a class and member function in the C++ programming language. The static analysis may be performed using any known static analysis testing software or technique, such as, but not limited to, Testbed® by LDRA Corporation. Additionally, the static analysis may include, but is not limited to, main static analysis, complexity analysis, static data flow analysis, cross reference analysis, information flow analysis, data object analysis, MC / DC test code planner, and instrumentation programs, and / or any other suitable type of static analysis, and the like. The software requirements verification program 220 may initiate a static analysis of the selected source file 216. For example, but not limited to, a user may click on an icon or make a selection from a menu to initiate a static analysis of the selected source file 216. In a preferred embodiment, the static analysis module 252 may be configured to perform the method of block 304.

[0038] The method 300 may include a block 306 that defines one or more test run operations for the software code. The one or more test run operations for the source file 216 may include, but are not limited to, requirements-based testing, accessibility testing, acceptance testing, block-and-box testing, end-to-end testing, functional testing, interactive testing, integration testing, performance testing, security testing, stress testing, load testing, or any other software testing. The one or more test run operations may include one or more of the identified control couplings. For example, a user may test run the source file 216 by inputting one or more integers, variables, or decision step responses requested by the source file 216. For example, the source file 216 may be a cash register software program, and the user may define characters such as, but not limited to, "s" to launch the source file 216, "r" to run a random shop and add multiple items to a basket (i.e., a test run operation), and "q" to exit the source file 216. These three options use different portions of the software code in the source files 216 to implement calls to some functions in the software code under test. The one or more test execution operations may use dynamic analysis to test control-binding coverage in the source programs 216. As referred to herein, dynamic analysis refers to the integration of static analysis and code coverage described above. In a preferred embodiment, the dynamic analysis module 254 may be configured to perform the method of block 306. The one or more test execution operations may not include all of the control bindings identified in the source files.

[0039] The method 300 may include performing one or more defined test execution operations at block 308. In a preferred embodiment, the dynamic analysis module 254 may be configured to perform the method of block 308.

[0040] The method 300 may include a block 310 of identifying control binding coverage of the source file 216 based on the dynamic analysis. In a preferred embodiment, the dynamic analysis module 254 may be configured to perform the method of block 310.

[0041] The method 300 may include block 312 of generating a control coupling report (e.g., report 234) based on the control coupling coverage identified in the source file 216. The control coupling report may be transmitted to the display 210 and / or the user device 230 for display to a user via the display 210 and / or via the graphical user interface 232 on the user device 230. In a preferred embodiment, the report generation module 256 may be configured to perform the method of block 312.

[0042] 4a-4b, a block diagram illustrates an example of a control binding report (e.g., report 234) according to a preferred embodiment. The control binding report includes section 1 402, section 2 404, section 3 406, and section 4 407. Section 1 402 is a high level summary of the control binding information for source file 216. Section 1 402 indicates the control binding coverage and the total number of control bindings identified within source file 216. Control binding coverage may be displayed as a percentage, for example, but not limited to, 0% to 100%. Section 2 404 provides an overview of the binding destinations of control bindings originating from source file 216. Section 2 404 may include identifiers of one or more control couplings in source file 216, locations to which the one or more identified control couplings from source file 216 are coupled (e.g., components in source file 216, other source files 216 in the system set of source files 216, and / or system subroutines, etc.), and control coupling coverage based on dynamic analysis for each of the one or more identified control couplings. Section 3 406 provides a summary of the control coupling coverage for the one or more identified control couplings for each of the one or more procedures or components in source file 216. Each component line in section 3 may be clickable or otherwise selectable by software requirements verification program 220 (e.g., via a graphical user interface). If the user selects one of the component lines in section 3 406, the software requirements verification program may display section 4. Section 4 407 includes a first table 408 and a second table 420. The first table 408 identifies those of the one or more identified control couplings that originate from each of the one or more components of the source file 216. The second table 420 identifies those of the one or more identified control couplings that are coupled to one of the one or more components of the source file 216. The fourth section 407 may also include a source code section 432 that provides source code from the source file 216 that is related to the first table 408 and the second table 420.The first table 408 and the second table 420 include a first column 410, 422, a second column 412, 424, a third column 414, 426, a fourth column 416, 428, and a fifth column 418, 430, where the first column identifies a caller point between the one or more identified control couplings, the second column identifies a callee point between the one or more identified control couplings, the third column indicates a source file 216 to which the callee or caller is bound, the fourth column indicates a software code line in the source file 216 in which each of the identified one or more control couplings resides, and the fifth column indicates a control coupling coverage of the identified one or more control couplings based on the dynamic analysis. The control coupling report includes a fourth section 407 for each of the one or more defined test execution actions.

[0043] Referring again to FIG. 3, the method 300 may include block 314 of generating a file call relationship diagram 440 for the source file 216. FIG. 4c illustrates an example of a call relationship diagram in accordance with a preferred embodiment. The call relationship diagram 440 may be part of the report 234 or may be a stand-alone diagram. The call relationship diagram 440 illustrates local calls between one or more components 444a-444c of the source file 216. In a preferred embodiment, the components 444a-444c of the call relationship diagram 440 may include, but are not limited to, source code line locations 446a-446c of the components 444a-444c, and test result indications 448a-448c. The test result indications 448a-448c may include, but are not limited to, static analysis test results and dynamic test results of the components 444a-444c, etc. The call relationship diagram 440 may include lines and arrows 450a-450c to represent calls between one component of the source file 216, e.g., component 444a, and another component of the source file 216, e.g., component 444b. The call relationship diagram 440 may include calls within a single source file 216 or calls between multiple source files 216 (e.g., a system set of source files). The call relationship diagram 440 may show each node 442a-442b, which may be a computing device 204, a user device 230, or any other device of the system 200 where a particular call is made to or from the node. The software requirements verification program 220 may allow a user to zoom in and out on each node 442a-442b of the call relationship diagram 440.For example, the user may scroll the wheel of a mouse or a trackpad of a laptop to zoom in or out on a particular portion on which the cursor is placed; activate a context menu on a node of interest and select "Fit to Screen"; select a "Zoom" button displayed on the graphical user interface 232; and / or use the cursor to select and enlarge or minimize the portion of the call relationship diagram 440. The call relationship diagram 440 may show different types of graphs, such as, but not limited to, a "static" type of graph, or a static type of graph overlaid with dynamic analysis results. The type of graph may be changed by the graphical user interface 232. In a preferred embodiment, the call relationship diagram generation module 258 may be configured to perform the method of block 314.

[0044] The method 300 may include block 316 of generating a system call relationship diagram for a plurality of source files (e.g., a system set of source files). The system call relationship diagram shows local calls between one or more components in the plurality of source files and source file-to-component calls between source files of the plurality of source files of the system set, each of the plurality of source files of the system set having a control connection to the source file. Additionally, a user may select a single component of the one or more components in the plurality of source files to generate a call relationship diagram that displays nodes of the system, one or more nodes, that are involved in a control connection for the selected component. In a preferred embodiment, the call relationship diagram generation module 258 may be configured to perform the method of block 316.

[0045] A preferred method for verifying control coupling analysis during software code inspection. FIG. 5 is a flow chart illustrating a preferred method for verifying data binding analysis during testing of software code, in accordance with a preferred embodiment.

[0046] The method 500 may include a block 502 of selecting a source file 216 to be tested. The selected source file 216 may include one or more components. The source file 216 may be selected from the storage device 212 or may be selected from the user storage device 236 via the graphical user interface 232. The source file 216 may be a single source file or may be a system set including multiple source files 216 from one or more nodes in the system. For example, the source file 216 may be a computer program including one or more “.c” files or any other suitable type of source code file. The source file 216 may also be a human readable test case file, a text editable file that includes information related to a particular file or set to be analyzed by the software requirements verification program 220. The source file 216 may be selected within the software requirements verification program 220 through the use of one or more drop down menus and / or file folders. In a preferred embodiment, the source file selection module 250 may be configured to perform the method of block 502.

[0047] The method 500 may include block 504 of identifying one or more data bindings in the source files 216. The data bindings may be identified by performing static analysis on the source code of the source files 216. Static analysis may be implemented to analyze the source files 216 written by the software developer to identify components in the source code and to evaluate the source code's compliance with the requirements information file 214. As referred to herein, a "component," in addition to the definitions provided above, may be a portion of source code written to implement a requirement in the requirements information file 214. For example, a component may include a function in the C programming language, and a class and member function in the C++ programming language. The static analysis may be performed using any known static analysis testing software or technique, such as, but not limited to, Testbed® by LDRA Corporation. Additionally, the static analysis may include, but is not limited to, main static analysis, complexity analysis, static data flow analysis, cross reference analysis, information flow analysis, data object analysis, MC / DC test code planner, and instrumentation programs, and / or any other suitable type of static analysis, and the like. The one or more data bindings may be variables and parameters of one or more components of the source file 216. The variables may also have a variable type and / or variable attributes. The variable types include, but are not limited to, constant variables, local variables, global variables, parameter variables, and / or local-global variables, etc. The variable attributes include, but are not limited to, declaration, definition, reference, input, output, indirect use, unused parameters, the "this" parameter used in C++, etc. The one or more data bindings may also include data bindings resulting from parameter bindings associated with "called by other components" and "calling other components" components of the source file 216. In a preferred embodiment, the static analysis module 502 may be configured to perform the method of block 504.

[0048] The method 500 may include block 506 of defining one or more tests for each of the one or more components that include one or more of the identified data bindings. The one or more tests may identify data binding variable usage coverage in the source files 216 using dynamic analysis. As referred to herein, dynamic analysis refers to the integration of static analysis and code coverage described above. For example, the requirements information file 214 may include the following requirements shown in Table 1 for a "run speed command (RSC)" module in the source files 216:

[0049] [Table 2]

[0050] The user can define three tests for the requirements of the RSC module, as shown in Table 2 below.

[0051] [Table 3]

[0052] In a preferred embodiment, the dynamic analysis module 254 may be configured to perform the method of block 506. The traceability of each of the defined tests to the requirements in the requirements information file 214 may be visualized by generating a traceability matrix as shown in FIG. 6. The traceability matrix 600 is generated based on the requirements and tests in Tables 1 and 2. The traceability matrix 600 indicates which of the one or more tests is used for each of the one or more requirements. In a preferred embodiment, the traceability matrix generation module 260 may be configured to generate the traceability matrix 600.

[0053] The method 500 may include block 508 of performing one or more of the tests described above on the source file 216. Each of the one or more tests may be performed individually. In a preferred embodiment, the dynamic analysis module 254 may be configured to perform the method of block 508.

[0054] The method 500 may include a block 510 of identifying data binding variable usage coverage for the source files 216 based on the dynamic analysis. In a preferred embodiment, the dynamic analysis module 254 may be configured to perform the method of block 510.

[0055] The method 500 may include block 512 of generating a data binding report (e.g., report 234) based on the identified data binding variable usage coverage. The data binding report may be transmitted to the display 210 and / or the user device 230 for display to a user via the display 210 and / or via the graphical user interface 232 on the user device 230. In a preferred embodiment, the report generation module 256 may be configured to perform the method of block 512.

[0056] 7a-7c, a data binding report (e.g., report 234) includes sections 1 702, 2 704, 3 706, 4 707, 5 754, and 6 756. Section 1 702 indicates the data binding coverage and the total number of data bindings identified in source file 216. Data binding coverage may be displayed as a data binding variable usage percentage between 0% and 100%. Section 2 704 lists the components in source file 216 that are linked by one or more of the identified data bindings, and the number of data bindings in the linked components. Section 3 706 lists the data binding variable usage coverage for the identified data bindings for each of the one or more components, and the number of global variables used in source file 216. In a preferred embodiment, the data binding variable usage coverage is based on dynamic analysis. Section 4 includes a first table 708 and a second table 724, where the first table 708 identifies one or more of the identified data bindings that originate from one or more components of the source file 216, and the second table 724 identifies one or more of the identified data bindings that are linked to one of the one or more components of the source file 216. The data binding report may include section 4 707 for each of the one or more components. The first table 708 includes a first column 710, a second column 712, a third column 714, a fourth column 716, a fifth column 718, a sixth column 720, and a seventh column 722. The first column 710 identifies a variable of one of the identified data bindings. The second column 712 identifies the software code line of the source file 216 in which the variable exists. The third column 714 identifies the variable type of the variable. Fourth column 716 identifies one or more component parameters that are bound to the variable, fifth column 718 identifies the component that contains the identified parameter, and sixth column 720 identifies the source code line containing the location of the parameter that is bound to the variable.Seventh column 722 identifies the component of source file 216 that contains the component. Second table 724 includes first column 726, second column 728, third column 730, fourth column 732, fifth column 734, sixth column 736, and seventh column 738. First column 726 identifies a variable of one of the identified data bindings. Second column 728 identifies the component to which the variable is bound. Third column 730 identifies the source code line of source file 216 where the variable is called. Fourth column 732 identifies the component of source file 216 that contains the component that calls the variable. Fifth column 734 identifies the variable type of the variable. Sixth column 736 identifies the parameter of one or more components that is bound to the variable. Seventh column 738 identifies the source code line in which the parameter resides. Section 4 707 may also include a data binding variable usage coverage section 740 that indicates data in source file 216 that is shared between components of source file 216 of interest and coverage for the identified data. Data binding variable usage coverage section 740 includes a first column 742 that identifies a variable in source file 216, a second column 744 that identifies a source file 216 that contains the variable, a third column 746 that identifies components in source file 216 that contain the variable, a fourth column 748 that identifies a variable type for the variable, a fifth column 750 that identifies attributes of the variable, and a sixth column 752 that identifies source code lines in source file 216 that use the variable. Data binding report 234 may also include a fifth section that provides a high level overview of data binding coverage for source file 216. The data binding report 234 may also include a sixth section that provides the source code in the source file 216 that is associated with the first table 708 and the second table 724 .

[0057] Preferred method for verifying control coupling and data coupling analysis during testing of software code - Patents.com 8a-8b show a method 800 for verifying control coupling and data coupling analysis during testing of software code, according to a preferred embodiment. Method 800 generates report 324, which combines the control coupling report of method 300 and the data coupling report of method 500. Thus, block 802 corresponds to blocks 302 and 502 of methods 300 and 500, respectively; blocks 804-814 correspond to blocks 304-310 of method 300, blocks 812-818 correspond to blocks 504-510 of method 500; and block 820 corresponds to blocks 312 and 512 of methods 300 and 500, respectively.

[0058] Referring to block 820, the reports generated by method 800 include all of the sections of the control combined reports of method 300 and the data combined reports of method 500 described with reference to Figures 4b-4c and 7a-7c.

[0059] The method and system provided herein provides a qualification tool, i.e., software requirements verifier 220, for use during software testing. In particular, preferred embodiments of the method and system provided herein provide a qualification tool for use in verifying control coupling and data coupling analysis in software code. The reports generated by the software requirements verifier 220, e.g., control coupling and data coupling report 234, provide a user with verifiable, deterministic, and predictable software testing results. Thus, the method and system provided herein ensures confidence in software testing at least equivalent to more resource-heavy and time-consuming methods such as manual verification. The control coupling and data coupling reports of the method and system of the present invention prove the ability of the software requirements verifier 220 to properly perform its task once, thereby eliminating the need to verify subsequent runs. The method and system provided herein may implement the qualification software requirements verifier 220 using the methods and systems disclosed in U.S. Pat. No. 6,393,313 and “LDRA Tool Qualification Packs” (Non-Patent Document 1), both of which are incorporated herein by reference in their entirety.

[0060] Computer Systems Architecture Figure 9 illustrates a computer system 900 in which an embodiment of the present invention, or one or more parts thereof, may be implemented as computer readable code. For example, the requirements source 202, the device 204, and the user device 230 of Figure 2a may be implemented in the form of the computer system 900 using hardware, a non-transitory computer readable medium storing instructions, or a combination thereof, and may be implemented in the form of one or more computer systems or other processing systems. The hardware may embody modules and components used to implement the methods of Figures 3, 5, and 8a-8b.

[0061] When programmable logic is used, such logic may be executed on commercially available processing platforms configured with executable software code to become special purpose computers or special purpose devices (e.g., programmable logic arrays, application specific integrated circuits, etc.). One of ordinary skill in the art will appreciate that embodiments of the disclosed subject matter may be implemented in a variety of computer system configurations, including multi-core multiprocessor systems, microcomputers, mainframe computers, computers linked or clustered with distributed functions, and pervasive or small computers that may be incorporated within virtually any device. For example, the above-described embodiments may be implemented using at least one processor device and memory.

[0062] A processor unit or device as described herein may be a single processor, multiple processors, or a combination thereof. A processor device may have one or more processor "cores." As described herein, "computer program medium," "non-transitory computer readable medium," and "computer usable medium" generally refer to tangible media such as removable storage device 918, removable storage device 922, and a hard disk installed on hard disk drive 912.

[0063] Various embodiments of the present invention are described with respect to the example computer system 900. After reading this description, it will be apparent to one of ordinary skill in the relevant art how to implement the present invention using other computer systems and / or computer architectures. Although operations may be described as sequential processes, some operations may in fact be performed in parallel, concurrent, and / or distributed environments, and may be performed in program code stored locally or remotely (remotely) for access by a single machine or a multi-processor machine. Additionally, in some embodiments, the order of operations may be rearranged without departing from the spirit of the disclosed subject matter.

[0064] The processor device 904 can be a special purpose or general purpose processor specifically configured to perform the functions described herein. The processor device 904 can be connected to a communications infrastructure such as a bus, a message queue, a network, a multi-core message passing scheme, and the like. The network can be any network suitable for performing the functions described herein, and can include a local area network (LAN), a wide area network (WAN), a wireless network (e.g., WiFi), a mobile communications network, a satellite network, the Internet, fiber optics, coaxial cable, infrared, radio frequency (RF), or any combination thereof. Other suitable network types and configurations will be apparent to those skilled in the relevant art. The computer system 900 can include a main memory (e.g., random access memory, read only memory, etc.) and can include a secondary memory 910. The secondary memory 910 can include a hard disk drive 912 and a removable storage drive 914, such as a floppy disk, a magnetic tape drive, an optical disk drive, a flash memory, and the like.

[0065] The removable storage drive 914 can read from and / or write to the removable storage device 918 in a well-known manner. The removable storage device 918 can include a removable storage medium that can be read by and written to by the removable storage drive 914. For example, if the removable storage drive 914 is a floppy disk drive or a universal serial bus port, the removable storage device 918 can be a floppy disk or a portable flash drive, respectively. In one embodiment, the removable storage device 918 can be a non-transitory computer-readable storage medium.

[0066] In some embodiments, secondary memory 910 may include alternative means for allowing computer programs or other instructions to be loaded into computer system 500, such as removable storage devices 922 and interfaces 920. Examples of such means may include program cartridges and cartridge interfaces (e.g., found in video game systems), removable memory chips (e.g., EEPROMs (Electrically Erasable Programmable Read-Only Memory), PROMs (Programmable ROMs), etc.) and associated sockets, and other removable storage devices 922 and interfaces 920 that will be apparent to those skilled in the relevant art.

[0067] The data stored in computer system 900 (e.g., in main memory 908 and / or secondary memory 910) may be stored on any type of suitable computer storage medium, such as optical storage devices (e.g., compact discs, digital versatile discs, Blu-ray discs, etc.) or magnetic tape storage devices (e.g., hard disk drives). The data may be organized in any type of suitable database configuration, such as a relational database, a Structured Query Language (SQL) database, a distributed database, an object database, etc. Suitable configurations and storage types will be apparent to those skilled in the relevant art.

[0068] Computer system 900 may also include a communications interface 924. Communications interface 924 may be configured to allow software and data to be transferred between computer system 900 and external devices. Suitable communications interfaces 924 may include a modem, a network interface (e.g., an Ethernet card), a communications port, a PCMCIA (Personal Computer Memory Card International Association) slot card, or the like. The software and data transferred through the communications interface may be in the form of signals, which may be electronic, electromagnetic, optical, or other signals apparent to those skilled in the relevant art. These signals may travel through communications path 926, which may be configured to carry the signals and may be implemented using wire, cable, optical fiber, telephone line, cellular phone link, radio frequency link, or the like.

[0069] The computer system 900 may further include a display interface 902. The display interface 902 may be configured to allow data to be transferred between the computer system 900 and an external display 930. Suitable display interfaces 902 may include a High-Definition Multimedia Interface (HDMI), a Digital Visual Interface (DVI), a Video Graphics Array (VGA), etc. The display 930 may be any suitable type of display for displaying data transmitted through the display interface 902 of the computer system 900, including a cathode ray tube (CRT) display, a liquid crystal display (LCD), a light emitting diode (LED) display, a capacitive touch display, a thin-film transistor (TFT) display, etc.

[0070] Computer program medium and computer usable medium may refer to memory such as main memory 908 and secondary memory 910, which may be memory semiconductors (e.g., DRAM, etc.). These computer program products may be a means for providing software to the computer system 900. Computer programs (e.g., computer control logic) may be stored in the main memory 908 and / or secondary memory 910. Computer programs may also be received through the communication interface 924. Such computer programs, when executed, enable the computer system 900 to implement the inventive methods described herein. In particular, these computer programs, when executed, may enable the processor device 904 to implement the methods shown in Figures 3, 5, and 8a-8b, as described herein. Thus, such computer programs may represent the controller of the computer system 900. When software is used to implement the inventive method, the software may be stored in the computer program product and loaded into the computer system 900 using the removable storage device 914, the interface 920, and the hard disk 912, or the communication interface 924.

[0071] The processor device 904 may include one or more modules or engines configured to perform the functions of the computer system 900. Each of the modules or engines may be implemented using hardware, or in some cases may utilize software equivalents such as program code and / or programs stored in the main memory 908 or secondary memory 910. In such examples, the program code may be compiled by the processor device 904 (e.g., by a compilation module or engine) prior to execution by the hardware of the computer system 900. For example, the program code may be source code written in a programming language, which is translated into a lower level language, such as assembly language or machine code, for execution by the processor device 904 and / or any additional hardware components of the computer system 900. The compiling process may include lexical analysis, processing, syntax analysis, semantic analysis, syntax-driven translation, code generation, code optimization, and any other techniques that may be suitable for translating the program code into a lower level language suitable for controlling the computer system 900 to perform the functions disclosed herein. It will be apparent to one skilled in the relevant art that such processes result in computer system 900 being a specially configured computer system 900 specifically programmed to perform the functions described above.

[0072] Among other features, technology consistent with the present disclosure provides systems and methods for verifying control binding and / or data binding analysis during testing of software code. While various preferred embodiments of the disclosed systems and methods have been described above, it should be understood that these embodiments have been presented by way of example only and not limitation. They are not exhaustive and are not intended to limit the invention to the precise forms disclosed. Modifications and variations are possible in light of the above teachings, or modifications and variations may be acquired by practicing the invention, without departing from the breadth or scope of the invention.

Claims

1. 1. A method for verifying control coupling analysis during testing of software code, comprising: selecting, by a computing device, a source file to be tested, the source file having source code; identifying, by the computing device, one or more control bindings in the source file by performing a static analysis on the source code of the source file; defining, by the computing device, one or more test execution operations of the source code, the one or more test execution operations including one or more of the identified control bindings, the one or more test execution operations using dynamic analysis; executing, by the computing device, the one or more test executive operations; identifying, by the computing device, control binding coverage for the source files based on the dynamic analysis; generating, by the computer device, a control binding report based on the control binding coverage of the identified source files; The method includes:

2. The method of claim 1, comprising: generating, by the computer device, a file call relationship diagram for the source file, the file call relationship diagram showing local calls between one or more components of the source file.

3. the source files are a system set including a plurality of source files from one or more nodes in a system; 2. The method of claim 1, further comprising generating, by the computer device, a system call relationship diagram for the plurality of source files, the system call relationship diagram indicating local calls between one or more components within the plurality of source files and source file-to-component calls between source files of the plurality of source files of the system set, each of the plurality of source files of the system set having a control connection to that source file.

4. selecting, by the computer device, a component of the one or more components in the plurality of source files; generating, by the computer device, a call relationship diagram that displays nodes of the one or more nodes of the system that are involved in control connections for the selected component; The method of claim 3 , comprising:

5. 1. A method for validating data binding analysis during testing of software code, comprising: selecting, by a computing device, a source file to be tested, the source file having one or more components; identifying, by the computing device, one or more data bindings in the source file by performing a static analysis on source code of the source file, the data bindings being variables and parameters of the one or more components; defining, by the computing device, one or more tests for each of the one or more components that include the identified one or more data bindings, the one or more tests using dynamic analysis; running, by the computing device, the one or more tests on the source file; identifying, by the computing device, data binding variable usage coverage for the source files based on the dynamic analysis; generating, by the computing device, a data binding report based on the identified data binding variable usage coverage; The method includes:

6. The method of claim 5, including a step of generating, by the computer device, a traceability matrix, the traceability matrix indicating for each of one or more requirements which of the one or more tests is to be used.

7. 1. A method for verifying control coupling and data coupling analysis during testing of software code, comprising: selecting, by a computing device, a source file to be tested, the source file having source code, the source code implementing one or more components; identifying, by the computing device, one or more control bindings in the source file by performing a static analysis on the source code of the source file; defining, by the computing device, one or more control coupling test execution operations of the software code, the one or more control coupling test execution operations including one or more of the identified control couplings, the one or more control coupling test execution operations using dynamic analysis; executing, by said computing device, one or more of said defined control coupling test execution operations; identifying, by the computing device, control binding coverage for the source files based on the dynamic analysis; identifying, by the computing device, one or more data bindings in the source file by performing a static analysis on the source code of the source file, the data bindings being variables and parameters of a component of the one or more components; defining, by the computing device, one or more data binding tests for each of the one or more components that include one or more of the identified data bindings, the one or more data binding tests using dynamic analysis; running, by the computing device, the one or more data binding tests on the source files; identifying, by the computing device, data binding variable usage coverage for the source files based on the dynamic analysis; generating, by the computer device, a report based on the identified control coupling coverage and the identified data coupling variable usage coverage; The method includes:

8. The method of claim 7 , wherein the data bindings include data bindings resulting from parameter bindings associated with called and calling components in the source files.

9. The method of claim 7 , further comprising performing each of the one or more data binding tests individually.

10. the report comprises a first section and a second section; the first section indicating the control tie coverage of the source file as a percentage between 0% and 100% and indicating a total number of the identified control tie coverages; the second section indicating the data binding variable usage coverage of the source file as a percentage between 0% and 100% and indicating a total number of the identified data bindings; The method of claim 7.

11. the report includes sections 3 and 4; the third section lists the one or more identified control couplings, coupling locations from the source file to which the one or more identified control couplings are coupled, and a control coupling coverage based on the dynamic analysis for each of the one or more identified control couplings; the fourth section lists the components of the source file that are linked by one or more of the identified one or more data bindings, and the number of data bindings in the linked components; The method of claim 7.

12. the report includes sections 4 and 5; The fourth section lists the control coupling coverage for the identified one or more control couplings for each of the one or more components in the source file, the control coupling coverage being based on the dynamic analysis; the fifth section lists, for each of the one or more components in the source file, a data binding variable usage coverage for the one or more identified data bindings and a number of global variables used, the data binding variable usage coverage being based on the dynamic analysis; The method of claim 7.

13. 8. The method of claim 7, wherein the report includes a sixth section, the sixth section having a first table and a second table, the first table indicating which of the one or more identified control connections originate from each of the one or more components of the source file, and the second table indicating which of the one or more identified control connections are connected to one of the one or more components of the source file.

14. 14. The method of claim 13, wherein the first table and the second table include a first column identifying a caller point between the one or more identified control couplings, a second column identifying a callee point between the one or more identified control couplings, a third column indicating a source file to which the caller or callee is bound, a fourth column indicating a software code line in the source file in which each of the one or more identified control couplings resides, and a fifth column indicating control coupling coverage of the one or more identified control couplings based on the dynamic analysis.

15. the report includes a fourth section, the fourth section listing the control coupling coverage for the identified one or more control couplings for each of the one or more components in the source file, the control coupling coverage being based on the dynamic analysis:

15. The method of claim 14, wherein the fourth section includes source code for the source files associated with the first table and the second table.

16. 8. The method of claim 7, wherein the report includes a seventh section having a third table and a fourth table, the third table indicating data bindings of the one or more identified data bindings resulting from each of the one or more components of the source file, the fourth table indicating data bindings of the one or more identified data bindings whose destination is a component of the one or more components of the source file, and the third table and the fourth table being results of one of the one or more data binding tests.

17. 17. The method of claim 16, wherein said section 7 is repeated for each of said one or more executed data binding tests.

18. 17. The method of claim 16, wherein the third table includes a first column identifying a variable of one of the identified one or more data bindings, a second column indicating a software code line in which the variable resides among the software code lines of the source file, a third column identifying a variable type of the variable, a fourth column identifying a parameter of the one or more components bound to the variable, a fifth column identifying the component that contains the identified parameter, a sixth column identifying a source code line in which the parameter invokes the variable, and a seventh column identifying a component of the source file that includes the component.

19. 17. The method of claim 16, wherein the fourth table includes a first column identifying a variable of one of the one or more identified data bindings, a second column identifying a component to which the variable is bound, a third column identifying a source code line of the source file where the variable is called, a fourth column identifying a component of the source file that includes a component that calls the variable, a fifth column identifying a variable type of the variable, a sixth column identifying a parameter of the one or more components bound to the variable, and a seventh column identifying a source code line in which the parameter resides.

20. 17. The method of claim 16, wherein the seventh section includes a fourth table including a first column identifying a variable of the source file, a second column identifying the source file that contains the variable, a third column identifying a component in the source file that contains the variable, a fourth column identifying a variable type of the variable, a fifth column identifying attributes of the variable, and a sixth column identifying source code lines of the source file that use the variable.

21. The report includes a sixth section, the sixth section having a first table and a second table, the first table indicating which of the one or more identified control couplings arise from each of the one or more components of the source file, and the second table indicating which of the one or more identified control couplings have a destination that is one of the one or more components of the source file; 17. The method of claim 16, wherein the report includes sections 8 and 9, the 8th section providing a high level overview of the data binding variable usage coverage of the source files, and the 9th section providing the source code of the source files that is associated with the first table and the second table.

22. 1. A system for identifying control coupling analysis during testing of software code, comprising:

1. A system including one or more processors, one or more computer readable memories, one or more computer readable tangible storage devices, and instructions stored in at least one of the one or more storage devices and executed by at least one of the one or more processors via at least one of the one or more memories, The instruction: instructions for selecting a source file to test, the source file having source code; instructions for identifying one or more control bindings within the source file by performing a static analysis on the source code of the source file; instructions defining one or more test enforcement operations of the software code, the one or more test enforcement operations including one or more of the identified control bindings, the one or more test enforcement operations using dynamic analysis; instructions for performing one or more of said defined test execution operations; instructions for identifying control binding coverage for the source file based on the dynamic analysis; instructions for generating a control binding report based on the identified control binding coverage of the source files; A system including:

23. 23. The system of claim 22, further comprising instructions for generating a file call relationship graph for the source file, the file call relationship graph indicating local calls between one or more components of the source file.

24. the source files are a system set including a plurality of source files from one or more nodes in a system; 23. The system of claim 22, wherein the instructions include instructions for generating a system call relationship diagram for the plurality of source files, the system call relationship diagram showing local calls between one or more components within the plurality of source files and source file-to-component calls between source files of the plurality of source files of the system set, each of the plurality of source files of the system set having a control connection to that source file.

25. The instruction: instructions for selecting a component of the one or more components in the plurality of source files; instructions for generating a call relationship diagram that displays nodes of the one or more nodes of the system that are involved in control connections for the selected component; 25. The system of claim 24, comprising:

26. 1. A system for verifying data binding analysis during testing of software code, comprising:

1. A system including one or more processors, one or more computer readable memories, one or more computer readable tangible storage devices, and instructions stored in at least one of the one or more storage devices and executed by at least one of the one or more processors via at least one of the one or more memories, The instruction: instructions for selecting a source file to test, the source file having one or more components; instructions for identifying one or more data bindings in the source file by performing a static analysis on source code of the source file, the data bindings being variables and parameters of the one or more components; instructions for defining one or more tests for each of the one or more components that include the identified one or more data bindings, the one or more tests using dynamic analysis; instructions for running the one or more tests on the source file; instructions for identifying data binding variable usage coverage for the source files based on the dynamic analysis; instructions for generating a data binding report based on the identified data binding variable usage coverage; A system including:

27. 27. The system of claim 26, wherein the instructions include instructions for generating a traceability matrix, the traceability matrix indicating for each of one or more requirements which of the one or more tests to use.

28. 1. A system for identifying control coupling and data coupling analysis during testing of software code, comprising:

1. A system including one or more processors, one or more computer readable memories, one or more computer readable tangible storage devices, and instructions stored in at least one of the one or more storage devices and executed by at least one of the one or more processors via at least one of the one or more memories, The instruction: instructions for selecting a source file to test, the source file having source code, the source code implementing one or more components; instructions for identifying one or more control bindings within the source file by performing a static analysis on the source code of the source file; instructions defining one or more control coupling test execution operations of the software code, the one or more control coupling test execution operations including one or more of the identified control couplings, the one or more control coupling test execution operations using dynamic analysis; instructions for performing one or more of the control coupling test execution operations defined above; instructions for identifying control binding coverage for the source file based on the dynamic analysis; instructions for identifying one or more data bindings in the source file by performing a static analysis on the source code of the source file, the data bindings being variables and parameters of a component of the one or more components; instructions for defining one or more data binding tests for each of the one or more components that include one or more of the identified data bindings, the one or more data binding tests using dynamic analysis; instructions for performing the one or more data binding tests on the source files; instructions for identifying data binding variable usage coverage for the source files based on the dynamic analysis; instructions for generating a report based on the identified control coupling coverage and the identified data coupling variable use coverage; A system including:

29. 30. The system of claim 28, wherein the data bindings include data bindings resulting from parameter bindings associated with called and calling components in the source files.

30. 30. The system of claim 28, further comprising: executing each of the one or more data binding tests individually.

31. the report comprises a first section and a second section; the first section indicating the control tie coverage of the source file as a percentage between 0% and 100% and indicating a total number of the identified control tie coverages; the second section indicating the data binding variable usage coverage of the source file as a percentage between 0% and 100% and indicating a total number of the identified data bindings; 30. The system of claim 28.

32. the report includes sections 3 and 4; the third section lists the one or more identified control couplings, coupling locations from the source file to which the one or more identified control couplings are coupled, and a control coupling coverage based on the dynamic analysis for each of the one or more identified control couplings; the fourth section lists the components of the source file that are linked by one or more of the identified one or more data bindings, and the number of data bindings in the linked components; 30. The system of claim 28.

33. the report includes sections 4 and 5; The fourth section lists the control coupling coverage for the identified one or more control couplings for each of the one or more components in the source file, the control coupling coverage being based on the dynamic analysis; the fifth section lists, for each of the one or more components in the source file, a data binding variable usage coverage for the one or more identified data bindings and a number of global variables used, the data binding variable usage coverage being based on the dynamic analysis; 30. The system of claim 28.

34. 29. The system of claim 28, wherein the report includes a sixth section, the sixth section having a first table and a second table, the first table indicating which of the one or more identified control associations originate from each of the one or more components of the source file, and the second table indicating which of the one or more identified control associations are associated with one of the one or more components of the source file.

35. 35. The system of claim 34, wherein the first table and the second table include a first column identifying a caller point between the one or more identified control couplings, a second column identifying a callee point between the one or more identified control couplings, a third column indicating a source file to which the caller or callee is bound, a fourth column indicating a software code line in the source file in which each of the one or more identified control couplings resides, and a fifth column indicating control coupling coverage of the one or more identified control couplings based on the dynamic analysis.

36. The report includes a fourth section, the fourth section listing the control coupling coverage for the identified one or more control couplings for each of the one or more components in the source file, the control coupling coverage being based on the dynamic analysis:

36. The system of claim 35, wherein the fourth section includes source code for the source files associated with the first table and the second table.

37. 37. The system of claim 36, wherein the report includes a seventh section having a third table and a fourth table, the third table indicating data bindings of the one or more identified data bindings resulting from each of the one or more components of the source file, the fourth table indicating data bindings of the one or more identified data bindings whose destination is a component of the one or more components of the source file, and the third table and the fourth table being results of one of the one or more data binding tests.

38. 38. The system of claim 37, wherein the seventh section is repeated for each of the one or more executed data binding tests.

39. 38. The system of claim 37, wherein the third table includes a first column identifying a variable of one of the identified one or more data bindings, a second column indicating a software code line in which the variable resides among the software code lines of the source file, a third column identifying a variable type of the variable, a fourth column identifying a parameter of the one or more components bound to the variable, a fifth column identifying the component that contains the identified parameter, a sixth column identifying a source code line in which the parameter invokes the variable, and a seventh column identifying a component of the source file that includes the component.

40. 38. The system of claim 37, wherein the fourth table includes a first column identifying a variable of one of the one or more identified data bindings, a second column identifying a component to which the variable is bound, a third column identifying a source code line of the source file where the variable is called, a fourth column identifying components of the source file that include a component that calls the variable, a fifth column identifying a variable type of the variable, a sixth column identifying a parameter of the one or more components bound to the variable, and a seventh column identifying a source code line in which the parameter resides.

41. 38. The system of claim 37, wherein the seventh section includes a fourth table including a first column identifying a variable of the source file, a second column identifying the source file that contains the variable, a third column identifying a component in the source file that contains the variable, a fourth column identifying a variable type of the variable, a fifth column identifying attributes of the variable, and a sixth column identifying source code lines of the source file that use the variable.

42. 38. The system of claim 37, wherein the report includes an eighth section and a ninth section, the eighth section providing a high level overview of the data binding variable usage coverage of the source file, and the ninth section providing the source code of the source file that is associated with the first table and the second table.

Citation Information

Patent Citations

  • Automatic data coupling and control coupling analysis method

    CN107703923A

  • Program inspection device, program inspection method, and program inspection program

    JP2008071075A

  • Detection and correction of coding errors in software development

    US20200183818A1

  • Automated management of software requirements verification

    US8949770B2