There is a software testing life cycle, or software testing process, that is followed in many organisations and many IT departments when it comes to releasing software. Learn more about it in this article.
The Purpose of Testing
Testing is an important part of the software development life cycle (SDLC), as it helps to ensure that a quality product is built, and improve user satisfaction in the software once it is released. Nobody likes to use software that is buggy or doesn’t work, and this is the aim of software testing – to reduce and remove these bugs.
There are many different types of testing, and they are usually run in a certain order. Your organisation may have different names for them, or run them in a slightly different order, but in this article I highlight the general order that the test phases are run.
Unit Testing Comes First
To start with, the developers run their own tests called unit tests. These tests are run on a small scope, against an individual function or module. They check that the code works as expected, and provide all kinds of inputs to the function or module to test what happens in different situations.
Back when I started development, most of the unit testing was done manually. We had to write our own test functions – separate functions to test our main function. These days, there are all kinds of integrated tools for unit testing, such as JUnit for Java and NUnit for .Net code, which allow you to write unit tests much easier.
Integration and Functional Testing
Both integration and functional testing are usually done around the same time. Integration testing is where several modules are combined and tested to see that they talk to each other correctly, and functional testing is where modules are tested to see if they meet the requirements.
Often these two are combined, but sometimes they are done separately and around the same time.
This part of the software testing life cycle can be performed as the software is built, which means you don’t need the development fully complete for all modules for this part to start. Sure, there might be certain bits of code that don’t yet work, or parts that you need to complete functional testing, but in many cases the testing can begin.
Sometimes they are done by different teams. Integration testing is often done by the developer, and functional testing can be done by other team members, such as the tester.
System Testing Uses The Full Solution
The system testing phase is the first phase that needs the entire solution built and ready before the testing can begin. It involves testing the entire system to make sure it works, to make sure it doesn’t break, and make sure that it can be used as designed.
Tests are written for all kinds of functionality, but as it is a kind of black box testing, the code isn’t looked at to develop the tests. The tests are designed based on requirements and then performed.
Many teams have system testing as a deadline or phase in the project, as it involves many people and needs all the code to be built before it can commence.
You can read more about the different types of software testing in a recent article I wrote here.
Regression testing is similar to system testing, but it involves more systems. This phase of the software testing life cycle is where the system testing has been completed, and the system that is being developed is tested against other systems that it interacts with, to ensure that all of those interactions are working as designed.
A lot of the time, software is designed to integrate with other software (usually where an architect is involved), and when this is done, it needs to be tested. This is especially true in larger companies, as there are many more interfaces and systems.
The system might work fine on its own, as tested in the system testing phase, but once it gets to regression testing, it needs to talk to the other systems. The other systems will need to have an environment set up, along with the system you’re developing, so that they can talk to each other without impacting live users or customers.
User Testing Comes At The End Of The Software Testing Life Cycle
The final stage of testing involves user testing. This is where all of the functionality works as designed and there are (hopefully) minimal bugs, and the solution is provided to the users for their testing.
The users are usually non-technical people. They are the people that the solution was designed for, or business representatives, who represent these users and know the subject area.
The reason the user testing is done at the end here is because the system needs to work before the users get to it. The users or business representatives don’t care about integration testing and unit testing, they just want it to work and need to test it based on their needs and requirements.
There shouldn’t be any surprises or unknowns at this stage, as the users would have been consulted along the way, but it’s good to have them test the solution before it is implemented anyway. They often pick up on things that developers don’t notice.
Well, there’s a general overview of the software testing life cycle. If you have any further questions on the life cycle, use the comments section below.