Rationale and Context
The concepts of software engineering and artificial intelligence have been enhanced and developed separately through the ages. The ideas and improvement of software development techniques has allowed and assisted the engineers for reducing the software development process. On the other hand, the advancement of artificial intelligence has allowed improving the capabilities of the machined to act, reason and perceive. Chou and Bui (2014) showed that the effective development of a software required complex methods in several phases. Often developed software is associated with various issues in the coding, development of logical and functional component of the software. In this project, the concept and theories of AI will be utilized for developing an application that will automate the testing process during the software development phase. With the application of AI concepts, will allow in automatically developing the test cases and conduct automated testing of the software based on the functional and logical requirement of the software.
The significant aim of the study is to develop an AI system for automating the testing procedure of software development with the application of machine learning techniques. Based on the aims, various objectives of the project have been developed that are illustrated in the section below:
- To implement an application exhibiting the characteristics of human intelligence for automating the testing process for software development;
- To automate, and improve the reliability, quality and speed of implementation of the software testing process;
- To apply appropriate algorithm for developing appropriate process for developing test cases and conducing the automated search;
The developed questions for developing the project are described in the section below:
- How the integration of AI helps in improving and enhancing the software development process?
- How the concept of Artificial Intelligence can be implemented in the software development process?
- What are the effective Artificial Intelligence algorithms that can be utilized for automating the software testing process in software development?
Proposed Research Methods
In this project, a software application will be developed with the application of theories and concept of Artificial Intelligence. Before initiating the development of the required software, a detailed review and analysis of the past literature, articles, papers and researches have been evaluated for identifying the needs, requirements and application of Artificial Intelligence. Further, the literature review approach helps in revealing the required concepts, algorithms and techniques that can be implemented in the development of the software for developing automated test procedure using Artificial Intelligence. The information gathered from the literature review, will provide theoretical background to developing the required software application. After gaining detailed information from the past studies and researches, a detailed plan for developing a system for software testing using Artificial Intelligence has been identified. Karaboga et al. (2014) showed the process and methodology used for the development of the software application varies significantly with respect to the time provided, characteristics and requirement of the undertaken project. For the maintenance and development of the system, Agile SDLC (Software Development Life Cycle) method will be implemented. The process and practice for software development requires continuous implementation of various procedure and following a particular methods while developing the entire software. For the development of the automated testing software using Artificial Intelligence, Agile SDLC methodology has been selected to the most appropriate for implementation.
Boullart, Krijgsman and Vingerhoeds (2013) illustrated that the application of the agile methodology allows in developing the software in incremental and iterative process. Toro et al. (2013) argued that the agile methods focuses on the changes and process adaptability with ensuring rapid development of the software. With the assistance of the agile methodology, the project for automated testing using AI will be break down into smaller incremental blocks. The application of agile methods would allow the researcher the flexibility in the work for checking the errors within the code and modify the software within minimum time. Briceño et al. (2014) showed that the Agile Methodology includes several iteration for developing the complete software while implementing the logic and concept of AI for software testing.
Figure 1: Phases followed in each iteration in the Agile Software Development Process
(Source: Chou and Bui 2014, p.547)
The entire process of the software development has been broken down in various sprint that will allow in visible results after the completion of one sprint. The issues identified or modification required in previous sprint will be included in the next sprint. For the development of the automated testing software using AI, each sprint will be considered for two weeks. Each iteration module followed in developing the software for the automated testing using Artificial Intelligence will include the following stages:
Planning Phase: In the planning phase, the concept and theories of AI and software development process will be evaluated. In the planning phase, the various algorithms and relation between software development and AI will be evaluated. Based on the obtained information obtained, a detailed plan has been developed based on the time allocated for developing the AI based software.
Requirement Analysis Phase: In the requirement analysis phase, the technical, software, functional and non-functional requirement for the development of the AI based testing software will be evaluated. Further the additional module or requirement in the agile methodology will be analyzed in this section.
Design Phase: In the design phase of development, the designed has been proposed for the development of AI based software. Furthermore, in the design phase, the detailed plan has been proposed for defining the modularity, design, algorithm, and robustness of the proposed AI based software.
Implementation Phase: The implementation phase in the AI based software is considered as the significant module for developing the software. In this phase, the actual coding for the system implementation are made for providing the planned and required automated testing procedure. The logic for machine language and algorithm for developing the test cases and conducting the automated testing procedure are implemented in the software using coding language.
Testing Phase: In the testing phase, the developed code are analyzed and evaluated for determining the functional efficiency and operations for automatically understanding the software requirement, developing the test cases and conducting the software test on the developed code.
Evaluation Phase: In this particular testing, the developed module of the software will be analyzed for meeting the objectives and aim of the project. Based on the evaluation process, the researcher determined whether to repeat the sprint in the development process or to release the AI based software.
Ethical and Access Issues
In terms of obtaining the detailed information regarding the AI and software development process, a detailed review of the literature has been conducted. The data gathered from the secondary sources has provided validity and reliability to the used concepts and ideas that are used in the project. For obtaining the information from various secondary sources, several articles, journals and past researches have been evaluated. In order to ensure the validity and reliability of the information and data, the literature have been evaluated from peered reviewed journals and articles not less than five years. There remains various debates about the applicator of the artificial intelligence and overpowering the intellectual superiority of the humans. Therefore, the information used in this study, will be used only for the academic purposes only.
Potential Value of Research
The required process or procedure for the development of software integration requires complex process that needs to be developed in several phases. The effective completion of the entire software development process required multidimensional knowledge and skills. The applicator and integration of the Artificial Intelligence techniques and theories with the help of machine learning language allows easy and automatic understanding of the natural language disambiguation and understanding the requirement of the any software that are being tested through the proposed software. The application of the Artificial Intelligence in the software, would allow in improving the reliability, quality and speed of implementation. Furthermore, the software would eliminate the needs of human resource, reduce the errors in testing process while eliminating the errors in the software development process. Therefore, the application of AI would results in optimizing the software development process with detailed information and less time.
The entire project has been divided into various modules for the effective development and timely completion of the project. Perkusich et al. (2015) showed that the application of Gantt Chart helps in efficiently monitoring the activities for evaluating the concept of AI and developing the proposed software for conducting automated testing of software. A time line has been developed suing Gantt Chart for developing the software and monitoring the progress. The detailed of the Gantt Chart has been provided in the section below:
Initial Research Review
Software Development and Artificial Intelligence
The process of software development includes various modules including designing, conceptual specifying, testing the functionality and reliability of the developed software. Ko?akowska et al. (2013) claimed that the traditional process utilized for the software development integrated requirement specification and ends with the testing phase of the developed software. Patwardhan (2016) have supported the process by stating knowledge of the programming domain is essential for successful completion of each stage. Erturk and Sezer (2015) cited that the development of the software is associated with the error detection and correction for ensuing the proper and efficient functionality of the developed software. According to Bello et al. (2015), the error correction and modification process in the software testing phase is often associated with the long delay and requirement change before the release of the software. The change in the requirement of the software required modification and entire change in the developed code for the software.
John McCarthy had defined the concept of Artificial Intelligence as the engineering knowledge and science of making the machines and computer intelligent Sánchez-Gordón and Moreno (2014). According to Furmankiewicz, So?tysik-Piorunkiewicz and Ziuzia?ski (2014), AI includes the science and concepts of Engineer, mathematics, Linguistics, Psychology, Biology and Computer science for integrating the various computer functions resembling the human intelligence including problem solving, learning and reasoning.
Zamir, Stern and Kalech (2014) showed that there exists various approaches and techniques that overlaps in the concept of Software Engineering and Artificial Intelligence. Dilsizian and Siegel (2014) have providing example by stating that distinction between the prediction and probabilistic reasoning are often considered to be arbitrary and blurred in the concept of Software Engineering. Whereas, the prediction system is often considered as probabilistic reasoned and Bayesian model as the optimizer and classifiers. According to Citron and Pasquale (2014), the optimization goals ore often considered as constrains and measurable objectives for providing required solutions to the computational searches. The application of Artificial Intelligence techniques allows the machines responding more efficiently and rapidly for making decisions. The testing phase of the software development compares the output and efficiency of the software with the identified functional requirements. Azar and Vaidyanathan (2014) cited that the application of the knowledge based techniques and procedure in AI would assist in improving the traditional testing procedure used in software development. The application of AI would allow in automatically analyze and handling the issues and problems in software code and regenerate the code based on new requirement and identified issues.
Application of AI in Software Testing
Yeow, Mahmudand Raj (2014) stated that the utilization of Artificial Intelligence in the developing the test cases and conducting the software test is often considered as a progressive area based on the cross-section of both the concept of software engineering and artificial intelligence. The concepts and technology AI can be utilized for generating test data, test cases, optimization, analyzing and stabilizing the efficiency and functionality of the developed software. According to Wu, Dandy and Maier (2014), various automation systems, for instance, test data generation can be utilized for the problem solving area in the software system. Jones (2015) illustrated that the relevance and application of search based algorithms in the theories of AI provided better alternative for the generations of data and test cases for the software development process. Yu et al. (2015) have provided example by showing swarm intelligence, simulated annealing and genetic algorithm having better efficiency in determining the rapid and efficient search results.
PSO or particle swarm optimization includes the partition testing and genetic algorithm that supports the structural testing, data mining using fuzzy logic and context evolutionary using artificial neural network (ANN) for test cases pruning and data generation. Erturk and Sezer (2015) described that ABC (Artificial Bee colony optimization), ant colony optimization and ANN are the few artificial intelligence techniques that can are efficient in developing the test cases, test data for conducting the software testing in the development procedure. The software testing as identified in the software engineering are conducted in four basic stages including the test environment modelling, test scenario selection, evaluating the test scenario and process measurement. The application of the various methods and procedure that can be followed in the testing process are illustrated in the section below.
Test Environment Modelling
Bello et al. (2015) showed that the simulation of the interaction and relationship between the environment and software are essential for conducting the detailed test for ensuring the operations and functionality. Sánchez-Gordón and Moreno (2014) exclaimed test cases developed for previous software testing cannot be reused in another software due to the unique requirement and operations of each software applications. According to Furmankiewicz, So?tysik-Piorunkiewicz and Ziuzia?ski (2014), often the regression tester are developed and utilized for determination of the affected test cases that has been used in previous software testing process. The regression tester inputs the modified ad original test data for evaluation. Zamir, Stern and Kalech (2014) have further showed that the test case selector used in AI helps in partitioning the test cases on the basis of incorrect states, illegal events, obsolete tasks and unaffected test cases.
Test Scenario Selection
The development of effective test cases can identify the majority of issues and faults in the software. Rich and Waters (2014) showed that the determination of the required input and output of the software can be identified by the significant attributes and functional requirement of the software. Aziz et al. (2017) claimed that the analysis of the I/O significantly reduces the number of test cases required for testing a particular software. Khorasani and Yazdi (2015) illustrated that ANN can be utilized for automating the analysis and assessing the I/O of the software. ANN provides a mathematical modeling of the neural network resembling the human neural network. According to Glymour, Scheinesand Spirtes (2014), application of ANN allows the machines in learning from the past experience. Further, the training phase included in the ANN allows in generating the new outputs based on the past data. Chou and Bui (2014) illustrated that the pruning of layers in ANN allows in reducing the test cases and generating the important and vital test cases for software testing.
Evaluating the Test Scenario
Karaboga et al. (2014) claimed that automatic conduction of the test cases required generation of test data that needs to be inputted in the system for conducting the software testing process. During the evaluation of the test cases, the output generated from the automated testing are compared with the expected output for determining the efficiency and functionality. According to Boullart, Krijgsman and Vingerhoeds (2013), the application of ANN allows in automating the test data generation for test cases. The deterministic functions implemented through ANN provided significant accuracy in generating the correct output and modelling without ambiguity. Toro et al. (2013) argued by showing that the use of IF (Info Fuzzy Network) in data mining and data discovery allow in representing the interrelation and theoretic connectionist between the various test data.
The qualities of the software testing process are determined based on the existence existing relation between the Case based reasoning and ANN used for the deriving the input and output pattern for testing. Briceño et al. (2014) illustrated that the CBR system utilizes the computational intelligence for providing solutions to a particular issue based on information gained from past experience. ANN can be utilized in the testing procedure for determining the number of faults and automatically adjusting the parameter of network for predicting possible faults within the system.
Various AI Approach
The theories and concepts of Artificial Intelligence can be included within a machine with the application and integration of various algorithms. Some of the most common algorithms that are suitable for introducing automatic testing process for software development includes the following.
Perkusich et al. (2015) cited that genetic algorithm in AI is mostly utilized for searching and optimization problems. Genetic algorithm takes the advantages of historical information for evaluating the search space in order to provide enhanced results. Ko?akowska et al. (2013) showed that Genetic algorithm uses the concept of chromosome behavior for searching when inadequate knowledge and information is available. In the field of software testing, genetic algorithm can be utilized in developing CFG (control flow graph) and generation of test data.
The behavior of bees has been forged in the bee colony algorithm. It uses the concept of continuous and combinatorial optimization for performing both global and neighborhood search. Patwardhan (2016) claimed bee colony can be advantageous in developing structural test in the automatic generation of test cases.
Ant Colony Optimization (ACO)
Rich and Waters (2014) illustrated that ACO simulates the behaviors of ants in real life. The application of ACO is useful in detraining the shortest path between the location and the location of the food. Aziz et al. (2017) cited that in the concept of AI, ACO is utilized consisting of pheromone trails in order to communicate information between to nodes. Optimization problems like test data generation, telecommunication network, knapsack problems can be solved using ACO algorithm.
According to Khorasani and Yazdi (2015), Tabu Search provide optimization of solution with metaheuristic solutions. The concept uses rule sets, and memory structure for storing the information about past solutions. Glymour, Scheinesand Spirtes (2014) claimed that in the software testing process, tabu search can be utilized for automatically generation of codes with minimum cost.
Azar, A.T. and Vaidyanathan, S. eds., 2014. Computational intelligence applications in modeling and control (Vol. 575). Springer.
Aziz, K., Haque, M.M., Rahman, A., Shamseldin, A.Y. and Shoaib, M., 2017. Flood estimation in ungauged catchments: application of artificial intelligence based methods for Eastern Australia. Stochastic Environmental Research and Risk Assessment, 31(6), pp.1499-1514.
Bello, O., Holzmann, J., Yaqoob, T. and Teodoriu, C., 2015. Application of artificial intelligence methods in drilling system design and operations: a review of the state of the art. Journal of Artificial Intelligence and Soft Computing Research, 5(2), pp.121-139.
Boullart, L., Krijgsman, A. and Vingerhoeds, R.A. eds., 2013. Application of artificial intelligence in process control: lecture notes Erasmus intensive course. Elsevier.
Briceño, J., Cruz-Ramírez, M., Prieto, M., Navasa, M., de Urbina, J.O., Orti, R., Gómez-Bravo, M.Á., Otero, A., Varo, E., Tomé, S. and Clemente, G., 2014. Use of artificial intelligence as an innovative donor-recipient matching model for liver transplantation: Results from a multicenter Spanish study. Journal of hepatology, 61(5), pp.1020-1028.
Chou, J.S. and Bui, D.K., 2014. Modeling heating and cooling loads by artificial intelligence for energy-efficient building design. Energy and Buildings, 82, pp.437-446.
Citron, D.K. and Pasquale, F.A., 2014. The scored society: due process for automated predictions.
Dilsizian, S.E. and Siegel, E.L., 2014. Artificial intelligence in medicine and cardiac imaging: harnessing big data and advanced computing to provide personalized medical diagnosis and treatment. Current cardiology reports, 16(1), p.441.
Erturk, E. and Sezer, E.A., 2015. A comparison of some soft computing methods for software fault prediction. Expert Systems with Applications, 42(4), pp.1872-1879.
Furmankiewicz, M., So?tysik-Piorunkiewicz, A. and Ziuzia?ski, P., 2014. Artificial intelligence systems for knowledge management in e-health: the study of intelligent software agents. Latest Trends on Systems, 2, pp.551-556.
Glymour, C., Scheines, R. and Spirtes, P., 2014. Discovering causal structure: Artificial intelligence, philosophy of science, and statistical modeling. Academic Press.
Jones, M.T., 2015. Artificial Intelligence: A Systems Approach: A Systems Approach. Jones & Bartlett Learning.
Karaboga, D., Gorkemli, B., Ozturk, C. and Karaboga, N., 2014. A comprehensive survey: artificial bee colony (ABC) algorithm and applications. Artificial Intelligence Review, 42(1), pp.21-57.
Khorasani, A. and Yazdi, M.R.S., 2015. Development of a dynamic surface roughness monitoring system based on artificial neural networks (ANN) in milling operation. The International Journal of Advanced Manufacturing Technology, pp.1-11.
Ko?akowska, A., Landowska, A., Szwoch, M., Szwoch, W. and Wróbel, M.R., 2013, June. Emotion recognition and its application in software engineering. In Human System Interaction (HSI), 2013 The 6th International Conference on (pp. 532-539). IEEE.
Patwardhan, A., 2016. Analysis of Software Delivery Process Shortcomings and Architectural Pitfalls. arXiv preprint arXiv:1607.03748.
Perkusich, M., Soares, G., Almeida, H. and Perkusich, A., 2015. A procedure to detect problems of processes in software development projects using Bayesian networks. Expert Systems with Applications, 42(1), pp.437-450.
Rich, C. and Waters, R.C. eds., 2014. Readings in artificial intelligence and software engineering. Morgan Kaufmann.
Sánchez-Gordón, M.L. and Moreno, L., 2014. Toward an integration of web accessibility into testing processes. Procedia Computer Science, 27, pp.281-291.
Toro, C.H.F., Meire, S.G., Gálvez, J.F. and Fdez-Riverola, F., 2013. A hybrid artificial intelligence model for river flow forecasting. Applied Soft Computing, 13(8), pp.3449-3458.
Wu, W., Dandy, G.C. and Maier, H.R., 2014. Protocol for developing ANN models and its application to the assessment of the quality of the ANN model development process in drinking water quality modelling. Environmental Modelling & Software, 54, pp.108-127.
Yeow, W.L., Mahmud, R. and Raj, R.G., 2014. An application of case-based reasoning with machine learning for forensic autopsy. Expert Systems with Applications, 41(7), pp.3497-3505.
Yu, W., Li, B., Jia, H., Zhang, M. and Wang, D., 2015. Application of multi-objective genetic algorithm to optimize energy efficiency and thermal comfort in building design. Energy and Buildings, 88, pp.135-143.
Zamir, T., Stern, R.T. and Kalech, M., 2014, July. Using Model-Based Diagnosis to Improve Software Testing. In AAAI (pp. 1135-1141).