International Journal of Computer Applications (0975 8887) Volume 107 No 11, December 2014 14 Software Testing Process Model from Requirement Analysis to Maintenance Sukanta Basak Department of ECE North South University Md. Shazzad Hosain Department of ECE North South University ABSTRACT It is infeasible to develop quality software without software testing. Software testing typically consumes 40-50% of development efforts, even more efforts for systems that require higher levels of reliability. It is a significant part of the software development process. If a software defect is found in latter stages of development process it costs more than if it is found in earlier stages of development. Thus the earlier we introduce testing, the less the defects found, which in turn reduces the development time and cost. Risk minimization is another approach for efficient software development. Traditionally risk management and test management are addressed separately, but if the two approaches were integrated it would further reduce time and cost of software development. There are a number of testing approaches and models for software development but no testing process model addresses defect prevention and risk minimization simultaneously. In this paper we propose a methodical or formal approach of software testing that introduces testing from the very beginning of software development life cycle as well as integrates risk management with test management. The proposed model has been evaluated in a number of software and it outperforms the existing models. General Terms Software engineering, software development life cycle and process model, software quality assurance. Keywords Software testing, validation, software risk management, software life cycle, unit testing, integration testing, system testing, regression testing. 1. INTRODUCTION In order to build software not only bugs free but also to conform requirements it needs to be tested at several stages of its development life cycle. Due to thorough understanding of software engineering, tests become more and more important for software development. A study conducted by NIST in 2002 reports that software bugs cost the U.S. economy $59.5 billion annually. More than a third of this cost could be avoided if better software testing was performed [1]. Table 1 shows the cost of fixing defects depending on the stages it was found [2]. For example, if a problem in the requirements is found only at post-release phase, then it would cost 10100 times more to fix than if it had already been identified by requirements review. Thus it is strongly recommended to identify requirement anomalies or to find faults at early stages of software development process. Table 1. Average cost of fixing defects Cost to fix a defect Time detected R A C System Test Post- release Time introduced R 5-10× 10× 10-100× A - 10× 15× 25-100× C - - 10× 10-25× R - Requirements, A Architecture, C Construction Software process is a set of activities that are required to develop a software system. Typically the set consists of specification, design, testing and evolution. A good software process must have to address the following two issues: a) Bug prevention so that fixing bugs at later phases does not increase the cost of development [3]. b) Risk minimization so that unwanted situations do not increase the delivery time [4]. A software process model describes the software process in some particular perspective. For example, in waterfall model the four steps of software process are done one after another. On the other hand in iterative models such as rational unified process (RUP), SCRUM [5] etc. the whole development phase is divided into different iterations or sprint in case of SCRUM, and in each iterations waterfall model is applied. In different software process models testing is introduced in different times of the development phase. For example iterative models introduce testing much earlier than waterfall model. The earlier we can introduce testing in software process the better the software. This encourages bug prevention [3]. Thus one of our goals is to introduce testing at the very beginning of software process. Software risk management is concerned with identifying risks and drawing up plans to mitigate their impacts. Usually risk management and test management are viewed as two separate management issues though many risks prop up from improper test management. If we could integrate risk management and test management together then many risks would not appear, as a result software testing and development would be faster. The integration of risk and test management has been studied very recently in [4]. Thus another goal of our research is to integrate risk management and test management. In the literature many different software testing approaches or models are found. Most of these models focus at one of more steps of software process. For example, specification-based testing focuses on functional testing, design-based testing focuses on data and process paths within the software structures, acceptance testing focuses on customer satisfaction and so on. All these testing approaches are described and used in isolation, but there is no methodical or formal way to use different testing approaches to build robust systems with least