Software development follows a specific life cycle that starts with designing a solution to a problem and implementing it. Software testing is part of this software life cycle that involves verifying if each unit implemented meets the specifications of the design. Even with careful testing of hundreds or thousands of variables and code statements, users of software find bugs. “Software testing is arguably the least understood part of the development process” and is also a “time-consuming process that requires technical sophistication and proper planning” (Whittaker 71) It is important to comprehend this concept by understanding the different characteristics and aspects of software testing, and then to examine the techniques, procedures and tools used to apply this concept. This will enable the user to realize the problems faced by software testers and the importance of software testing.
Software testing is the “process of executing a software system to determine whether it matches its specification and executes in its intended environment” (Whittaker 71). It is often associated with locating bugs, program defects, faults in the source code, which cause failures during execution that need to be removed from the program. Locating and removing these defects is called debugging, which is different from the testing that establishes the existence of these defects. Specifications are crucial to testing because they identify correct behavior so that software failures corresponding to incorrect behavior can be identified. Failures can vary in their nature ranging from wrong output, system crash to systems using too much memory or executing too slowly. These Bugs in software can be due to untested code executed, untested order in which code was executed, untested combination of input values or untested operating environment. The manager of the development team is responsible for the testing of the software system and has to decide how and when the software testing should be performed in order to allocate the time and resources needed. Testing is a process that must be planned. The manager of the development team also needs to identify the quality attributes of the software to be tested, recognize the testing techniques that will be used to test each one of those attributes and check how these techniques worked in other similar projects. The quality attributes cover safety, performance, usability, accuracy, correctness and reliability that need to be tested at the tactical, historical and operational level (Vegas 663). Anything that may go wrong in the system must be tested. Many aspects of the systems should be considered including response time, response to boundary data, response to no input and heavy volumes of input. Testing must also include illegal and out of boundaries data, the system should be able to handle any possibility (Hoffer 579).
Several test cases must be executed with different “scenarios of transactions,...