Keywords

1 Introduction

A software system or a web application had to go through into a development life cycle and testing is an important phase of this software/application development life cycle. Software testing can be done by manually or automatically. In manual testing, the testing requires doing all the process by manually includes input, 2 analysis, and writing and managing the test cases. Manual testing deals with human interaction with all the process from beginning to end of the process and it is a time-consuming process. A human can get tired of doing all the process continuously. On the other hand, in automated testing most of the testing processes are automated. Generating test cases, executing the test cases and producing the test result are done by automatically. Though, one of the software testing fundamental is hundred percent automation is not possible in the field of software testing. Some task still need the intervention of human. Based on software testing approaches there are mainly three type of testing techniques have been using in software testing, those are 8 Specification-based testing, Code-based testing, and Model-Based testing. In Specification-based testing techniques test cases are made by directly from the software specification or some other kind of document that may have a different type of flow or direction. Therefore, in Code-based testing techniques, all the statement or module of the code have to execute at least once during the testing process and that process are followed by test cases that have written based on the code [1]. Lastly, in Model-Based testing approaches, model are developed from requirements and that model is the main resource to generate the test cases by manually or automatically. Writing or generating good quality test cases is very important for the test execution process.

2 Literature Review

This section describes test case, test case generation techniques, different types of software testing approaches and comparison of testing tool. A test case is a set of conditions, test inputs or variables under which a tester will determine whether a system test satisfies requirements or works properly. Test cases usually writing at the beginning of testing process from the set of software requirements. Test case needs to be ready before starting the test execution. Testers are followed by the step as mentioned in a test case using test data and compare the output after the test execution. Test cases are created by using two different approaches. One is manually written test cases and another is automatically generated test cases. Manually written test cases are a very lengthy process and need to give a lot of effort to make good quality test cases. On the other hand, automatically generated test cases are generated by automatically using some software tools and it saves a lot of time and effort. Based on software testing approaches there are mainly three type of testing techniques have been using in software testing, those are 8 Specification-based testing, Code-based testing, and Model-Based testing. In Specification-based testing techniques test cases are made by directly from the software specification or some other kind of document that may have a different type of flow or direction. Therefore, in Code-based testing techniques, all the statement or module of the code have to execute at least once during the testing process and that process are followed by test cases that have written based on the code [1]. Lastly, in Model-Based testing approaches, model are developed from requirements and that model is the main resource to generate the test cases by manually or automatically. Writing or generating good quality test cases is very important for the test execution process.

2.1 Model-Based Testing

“Model-based Testing is a testing technique where the runtime behavior of an implementation under test is checked against predictions made by a formal specification or model” [2]. Jupudy et al. [3] presented in their paper, Model-based testing comes under the black-box testing approach in which the internal design of the system is not taken into account during the test case generation. The process for MBT starts with generating functional test models based on the software requirements then this model is used for generating the test cases. The final test execution can be done either by manual or automated test execution. For test case generation it is based on the information provided by the test models so that the models should need to include the system behavior that the tester wishes to test. Model-Based Testing is a very suitable way to represent any system. Models can be as simple as a graph, flowchart, or diagram. A model of a software or system is a portrait of its behavior where the behavior can be described in terms of the input sequences that accepted by the system, set of actions, conditions and the flow of data through the system’s module as shown in Fig. 1. These models can be created using any modelling tools. There were several Model-Based Testing tool available in the market that can generate test cases using different types of input format. The list is shown in Table 1.

Fig. 1
figure 1

A typical model-based testing (MBT) process Swain et al. [4]

Table 1 Different types of MBT tool for test case generation

2.2 Automated Test Case Generation

Rushby [5] elaborates in his paper, most of the process of software test execution and monitoring is now automated in modern software development life cycle. But for the test case generation has remained the existing labor-intensive manual task in some of the software development practice. But technology is changing by its own way, so this existing technique is also changed and now many methods or approach now become available to automate this process. If a tool can be able to generate the test cases automatically by using any appropriate input and any method then it can be called automated test case generation process. Then, Automated Model-Based test case generation is a technique that a visual model is used for generating the test cases based on some method or algorithm into that tool.

2.3 Related Works

Sumalatha and Raju [6] described in their paper, there are a lot of models and each describes different aspects of software or system behavior. Like, control flow, data flow and program dependency graph manifest how the implementation behaves by representing its source code structure. Decision table and state machines are used to describe external behavior. There are many models have been using in software testing those 14 are finite state machines, state charts, Unified Modeling Language (UML), Markov chains and grammars. Model-Based Testing (MBT) is the next step in the evolution of software testing. Model-Based testing has been proven to allow more effective work and increase attention on the substance of testing. Priya and Sheba [7] conducted a survey about test cases generation from different types of UML model and presented all the survey report in their paper. They choose five UML model that combination of UML structural and behavioral diagram those are, (i) Activity diagram, (ii) Sequence diagram, (iii) Class diagram, (iv) State-chart diagram and, (v) Collaboration diagram. They also described some test case generation techniques using those above UML diagram, some of the technique was based on single UML diagram and some of the technique was based on combination of two UML diagram. [8] presented a review study about different test case generation techniques, test case selection method, test case minimization techniques, test case prioritization techniques and some test case evaluation techniques. The principal techniques were critical path method, code based test generation, GUI based test case generation, and Dynamic path testing and evolutionary testing. And they also provided some algorithm for generating test case such as, Graph traversal algorithm, and Genetic algorithm. An Executable Test Generation from UML Activity Diagram Using Genetic Algorithm approach was proposed [9]. They described an automated test case generation techniques from UML activity diagram using Genetic algorithm. They used UML to XMI as a modelling interchange and also used an API named Robotium, based on Genetic Algorithm (Table 2).

Table 2 Summary table of some related works

3 Conclusion

This paper presented the background of different kind of test case generation techniques, methods, approaches, and tools were discussed. A summary table was provided based on existing similar research study. If the software testing stage can be finished early in software development life cycle then the total development process will be shortened and the software product is possible to deliver early. Manual test case writing approach is lengthy of time period and need more effort to accomplish the process. Manually have to write all test cases from the requirement and then execute the test cases are also done by manually. Writing test cases from the requirement is a very long process, boring and error-prone. Hence, automated test case generation is the way to solve this issue. Therefore, this paper contains an overview of test case generation and testing technique, Model-Based Testing, automated test case generation, comparison of different existing Model-Based Testing tools, related works that include a table of summary of some related previous works.