Finite State Testing and Syntax Testing
DOI:
https://doi.org/10.24297/ijct.v3i1a.2725Keywords:
Mealy Machines, State Transition Diagrams, Backus Naur Forms, Syntax Testing, State SpaceAbstract
This paper is concerned with the testing of the software which is being developed in a structured way. The advantages which accrue from a well-structured or modular organization of software depend upon an ability to independently test a module well before the full development of all the modules with which it communicates. This paper describes techniques (Finite State Testing & Syntax Testing) which effectively test various applications. With advanced computer technology, systems are getting larger to fulfill more complicated tasks, however, they are also becoming less reliable. Consequently, testing is an indispensable part of system design and implementation; yet it has proved to be a formidable task for complex systems. This motivates the study of testing finite state machines to ensure the correct functioning of systems and to discover aspects of their behavior. Finite state machines are widely used to model systems in diverse areas, including sequential circuits, certain types of programs, and, more recently, communication protocols. In a testing problem we have a machine about which we lack some information; we would like to deduce this information by providing a sequence of inputs to the machine and observing the outputs produced. Because of its practical importance and theoretical interest, the problem of testing finite state machines have been studied in different areas and at various times. Some old problems which had been open for decades were resolved recently, new concepts and more intriguing problems from new applications emerge. This paper reviews the fundamental problems in testing finite state machines and techniques for solving these problems, tracing progress in the area from its inception to the present and the state of the art. In addition, this paper covers syntax testing which is also called grammar based testing technique for testing various applications where the input data can be described formally.