Software Testing Methodology with the Control Flow Analysis

Software quality is primarily determined by the quality of the software development process. The goals of software testing are to assess and improve the quality of software. Software testing has proven to be difficult in the absence of design information. Without an adequate understanding of a program’s structure, it is difficult to test it properly. Program recognition is a technology that can help testers to recover a program’s design and, consequently, make software testing effective. Syntactically, a program is a sequence of statements. If the flow of the program can be recovered and used to analyze the testing paths automatically, then generating test data based on adequate testing criteria will help testers to understand the program structure and efficiently improve the software quality. This paper provides a method for analyzing the control-flow of a program and obtaining to the original program structure. An approach to analyzing the testing paths automatically to test every branch of a program is provided. The proposed method defines a number of command types and test data generating rules. An algorithm to scan program and analysis testing paths is also provided. This will allow testers to recover a program’s design and understand the software structure to assist software maintenance.

[1]  Christopher W. Pidgeon,et al.  TMM: Software Maintenance by Transformation , 1986, IEEE Software.

[2]  Refik Soyer,et al.  Optimal stopping in software testing , 2003 .

[3]  Ira D. Baxter,et al.  Reverse engineering is reverse forward engineering , 1997, Proceedings of the Fourth Working Conference on Reverse Engineering.

[4]  Edward Kit,et al.  Software testing in the real world - improving the process , 1995 .

[5]  Andreas Zeller,et al.  Simplifying and Isolating Failure-Inducing Input , 2002, IEEE Trans. Software Eng..

[6]  Shaoying Liu,et al.  Generating test data from state‐based specifications , 2003, Softw. Test. Verification Reliab..

[7]  Glenford J. Myers,et al.  Art of Software Testing , 1979 .

[8]  Gilbert Thomas Laycock,et al.  Formal specification and testing: A case study , 1992, Softw. Test. Verification Reliab..

[9]  Rainer Koschke,et al.  Journal of Software Maintenance and Evolution: Research and Practice Software Visualization in Software Maintenance, Reverse Engineering, and Re-engineering: a Research Survey , 2022 .

[10]  Robin W. Whitty An exercise in weakest preconditions , 1990, Bull. EATCS.

[11]  David A. Carrington,et al.  A Framework for Specification-Based Testing , 1996, IEEE Trans. Software Eng..

[12]  Elliot Soloway,et al.  Delocalized Plans and Program Comprehension , 1986, IEEE Software.

[13]  Yuan-Shun Dai,et al.  Optimal testing-resource allocation with genetic algorithm for modular software systems , 2003, J. Syst. Softw..

[14]  David A. Watt,et al.  Programming language concepts and paradigms , 1990, Prentice Hall International Series in Computer Science.

[15]  Wojtek Kozaczynski,et al.  Program Concept Recognition and Transformation , 1992, IEEE Trans. Software Eng..

[16]  Cai Kaiyuan,et al.  Optimal stopping of multi-project software testing in the context of software cybernetics , 2003 .

[17]  Elaine J. Weyuker,et al.  Automatically Generating Test Data from a Boolean Specification , 1994, IEEE Trans. Software Eng..

[18]  Stuart H. Zweben,et al.  Systematic Testing of Data Abstractions Based on Software Specifications , 1992, Softw. Test. Verification Reliab..

[19]  James M. Bieman,et al.  Software reliability growth with test coverage , 2002, IEEE Trans. Reliab..

[20]  Stephen H. Edwards Black-box testing using flowgraphs: an experimental assessment of effectiveness and automation potential , 2000, Softw. Test. Verification Reliab..

[21]  Stephen S. Yau,et al.  A Model for Representing Programs Using Hierarchical Graphs , 1981, IEEE Transactions on Software Engineering.

[22]  Kai-Yuan Cai Optimal stopping of multi-project software testing in the context of software cybernetics , 2007, Science in China Series F: Information Sciences.

[23]  Ted J. Biggerstaff,et al.  Design recovery for maintenance and reuse , 1989, Computer.

[24]  Jim Q. Ning,et al.  Knowledge-based program analysis , 1990, IEEE Software.

[25]  Ira D. Baxter,et al.  Design maintenance systems , 1991, CACM.

[26]  Linda M. Wills,et al.  Recognizing a program's design: a graph-parsing approach , 1990, IEEE Software.