Testing quite simply is the backbone of every project, it’s not hard to state that testing has a place in each part of the System Development Life Cycle (SDLC). Employing a poor testing methodology will lead to the production of an unstable product and most likely one that will cost you more money and time.
Whether you decide to go Waterfall, Agile or DevOps it is essential to have a plan, especially a test plan, in place to ensure that the product is delivered in a robust and stable state in a predictable timeline.
Every project has a start, middle and end and it doesn’t matter which method you use to develop, a set of general testing techniques must be incorporated if you want any chance of success. These start from testing very small pieces of code to testing the whole application functionality from end to end.
There are many different types of testing and for this article we will stick to the core five components of testing:
1) Requirements Testing
Testing your requirements, whether Business, Functional or Technical, and validating that not only can you write test cases against each requirement, but the definitions are clear and without ambiguity will get you some way to delivering first class code, and a defect free production environment. Get it wrong and you’ll face large costs in rework, possible system outages and damage to your company’s reputation.
Benefits - So now you’ll need to spend a little bit more upfront at the start of the project, but trust us, it’s well worth it, starting off on the right foot and having everyone aligned and delivering against the same requirements will save you on costs, time and credibility.
2) Unit Testing
In this phase, a unit can refer to a function, individual program or even a procedure. One of the biggest benefits of this testing phase is that it can be run every time a piece of code is changed, allowing issues to be resolved as quickly as possible. It’s quite common for software developers to perform unit tests before delivering software to testers for formal testing. Unit testing can be done manually but is often automated in Agile and DevOps projects.
Benefits - Unit testing verifies the accuracy of each unit. Afterward, the units are integrated into an application.
3) System/System Integration Testing
System and System Integration testing is the part of software testing in which individual software modules are combined and tested as a group. This is particularly beneficial because it determines how efficiently the units and systems are working together. No matter how efficiently each unit is running, if they aren’t properly integrated, it will affect the functionality of the software program.
In order to run these types of tests, both manual and automated tests can be executed, but the specific method that will be used to get the job done will depend greatly on the way in which the units are defined and delivered.
Benefits - It verifies the proper execution of software components and proper interfacing between components within the solution.
4) Regression Testing
Regression testing verifies that software which was previously developed in previous releases still performs correctly after it was changed; changes may include software enhancements, compliance, bug fixes etc. By re-running test scenarios that were originally scripted and passed when all known problems were first fixed, you can make sure that any new changes to an application haven’t resulted in any regression issues or caused components that originally worked to now fail.
Such tests can be performed manually, but in most cases repeating a suite of tests each time an update is made is too time-consuming and complicated to consider, so automated testing will be required.
Benefits - Regression testing increases the chances of detecting bugs caused by changes to a software or application, either by enhancements or bug fixes. Automated testing is best suited to regression testing.
5) Acceptance Tests/User Acceptance Testing
Acceptance testing (or User Acceptance Testing - UAT), is conducted to determine whether the system is ready for release. UAT will verify business requirements and Standard Operating Procedure as part of the validation. During the Software Development Life Cycle requirement changes can sometimes be misinterpreted in a fashion that does not meet the intended needs of the users.
During this final phase, the end user will test the system to confirm that the application meets their business’ needs.
Once this process has been completed and the software has passed, the program will then be delivered to production subject to other readiness criteria being met (i.e. end user appropriately trained).
Benefits – UAT is the final stage of the implementation process which is conducted to ensure that system requirements meet business needs. The UAT process allows for any issues to be fixed before the system goes live.