Article Preview
TopIntroduction
Testing has an important part of the software development process. However, the manual process of testing is extremely costly and error-prone. This leads to Model Based Testing (MBT), where the behavior of the System Under Test (SUT) is tested based on the functional aspect of the model. (Barnett, Grieskamp et al., 2003; Farchi, Hartman & Pinter, 2002; Holt, Briand & Torkar, 2014; Utting, Pretschner & Legeard, 2012). These MBT models are state-based. With the help of MBT tools, these models are either translated to Finite State Machine (FSM) or in the Input Output Transition System (IOTS). In synchronous communication, a single input output system is maintained. Synchronous testing is done using FSM models, and FSM (Holt, Briand & Torkar 2014; Utting, Pretschner & Legeard, 2012, Pradhan, Ray & Patnaik, 2019) has a finite number of states with transition between them. FSM can handle single input & output queues. However, IOTS handles multiple input and output queues. IOTS models are commonly used when next input can arrive even before current outputs are produced. IOTS usually models concurrent input/output behavior with transition systems. Like FSM, an IOTS (Hierons, 2012; Aho & Dahbura, 1991; Lynch & Tuttle, 1988) is also defined as a simple type of state machine with states and transitions between them. A single input represents FSM and single output queue whereas, multiple input and multiple outputs represent IOTS. FSM represents each single input output queue. Some examples of IOTS models are shown in Figure 3 & 4.
In the asynchronous process, the number of input and output messages are not in a sequential manner. Due to delay in output, the receiver receives more than one input messages. So, observed sequence of input and output may not be the trace of the system under test. It is difficult for the tester to know which output is for which input and it is very tedious to generate test cases synchronously. So, multiple IOTSs are maintained in asynchronous communication, which makes tedious and time-consuming to test. In synchronous processing, the observed sequence is the correct sequence of input and output of the system under test which is not the same in the case of asynchronous testing. The asynchronous channels also work with message passing system to communicate with the system under test. A widespread example is taken as a web service. Due to delay in the asynchronous channel, the system sometimes affects the testing, which is also cannot be observed by the tester. In the asynchronous channel, the capacity of the buffer is non-zero, messages may wait in the buffer before the receiver retrieves them. In asynchronous testing, two types of channels are tested- (i) First-in-First-out (FIFO) and (ii) non-FIFO channels through IOTS. In FIFO, it is a pair of <send, receive> messages. When there are two input messages are send the FIFO property violated. To introduce a model of the communications channel, the asynchronous nature of communications is taken into account to generate test cases. In the asynchronous channel, the tester observes that the output is delayed from the SUT and the input supplied by the tester is received later by the SUT (Hierons, 2012; Aho & Dahbura, 1991). Thus, a trace in which the sequence of inputs and outputs observed by the tester might not be the correct sequence of a trace of the SUT. Taking an example, where the trace has the sequences , by sending input twice and then observes the output , it is quite possible that output !o was produced by the SUT before any input was received and another possibility may be the output is the response of the first input.