It is so important that half of the development of any software must be dedicated to it, as a rule of thumb. Some people believe that software testing must be done at the end of software development, as a final stage. However, it is important to note that testing must be done at all stages of development. It must be integrated into it and must be a continual process throughout. For example, once requirements have been gathered, design must be created and implemented. Once each module is developed, it should be tested immediately for any bugs or defects. Or if prototypes are to be delivered to the customer, after each delivery, the software must be tested.
Software testing should not be left to end; after all the modules of a project have been developed. How and when testing is carried out also depends on customer requirements and desired results, the Project Manger’s way of working, and the Project Lifecycle model.
Software testing is still considered to be an art because there is still limited understanding of it. The reason for this complexity of software testing is that there are so many testing principles, techniques and tools available that can be used to carry out this critical activity. One must know which ones are most suitable in accordance with the software being developed.
Software testing tools include source, embedded, functional, performance, java, link and HTML, API, requirements management, security and many other test tools (Applied Testing and Technology, 2009). Software testing techniques vary as the software travels through its stages of development lifecycle. However, software testing techniques can be roughly divided into unit testing, integration testing, system testing and user acceptance testing (Luo, 2009). The general goal of all these testing tools and techniques is to produce a high quality software that meets customer requirements, by developing it in controlled circumstances (Luo, 2009).