Software Testing

Software testing is the process of examining a software application for shortcomings and defects in order to provide users with a functioning software system that can achieve their goals.

Apart from unit tests which are written by the developer, it is desirable that software teams choose testers who can scrutinize the software with no a priori knowledge of the internal mechanics of the system. This strategy will allow examination of the software from a fresh perspective that can be absent from a developer that is familiar with the internal details, ultimately leading to the discovery of defects that would have been difficult to uncover otherwise. Ideally, there should at least be one dedicated software tester for every two developers, although in practice this number may depend on the scope and resources of the project.

In order to attain a measurable, reproducible and verifiable testing result, software development teams should test software against a known version controlled tag of the application.(Again, this plan of action, does not apply to unit testing. Programmers should write unit tests in parallel to the code they are currently developing and continuously run the unit tests during development.)

Software testing can assist developers deliver a correct, maintainable, and reliable product on time and within budget. It is therefore highly advisable that software development teams have a concrete testing strategy. It is risky to leave testing to the late stages of the project or as an afterthought, and may lead to significant and unpredictable project delays, cost overruns, and ultimately the delivery of a poor product.

How do you test software?

Software testing can seem like a daunting task for development teams. Fortunately, there is a large repertoire of strategies and tools to assist developers achieve their testing ambitions and goals.

Common to all flavors of software testing is the desire to achieve an intended outcome. This expectation can range from an anticipated method result in the case of unit testing, to attaining a use case requirement that were defined early in the project cycle.
This document also attempts to recognize that time and resources are limited. As a result, we provide suggestions for making a targeted, focused, and efficient approach to testing software systems.

How to achieve a testing strategy and what specific techniques developers choose to implement will depend on the size and scope of the project. There are several categories of software testing that we have listed below along with a detailed description of each strategy to assist you in attaining your software testing ambitions.

It is a best practice to construct your software testing strategy initially from a low level by focusing on unit testing, and moving upward to integration testing, regression testing, user interface testing and finally unit testing. Following this plan early in the software development cycle will ensure that defects are caught early thereby increasing the probability of a successful outcome for the project.

Categories of software testing.

Unit Testing
Integration Testing
User Interface Testing
Regression Testing
System Testing