Testing is very important in the Software Development Life cycle (SDLC). Compromise on testing means compromise on the quality of software, which results in a faulty product and loss of business and money. Over time, experts have understood the importance of testing and have improvised the SDLC models to include more emphasis on testing. Along with the right amount of testing, the time of testing matters too. The start of the Testing Process should be introduced in the early phases of SDLC. This topic here discusses the importance of testing in the early phases.
Let’s try to understand the need for early testing in non-software terms. Suppose, there are 3 car manufacturing companies, with each having a contract to manufacture cars from their respective clients.
Company A completed the product on time and delivered it to the client. But the client was not satisfied as he was expecting the door handle to be chrome and not body-colored.
Company B started the manufacturing process but realized later that design is not feasible for equalized mileage and power and they will have to change the engine specifications.
Company C strictly followed the timelines and had a complete product before the testing phase. During testing, the volume of the defect was so high that they had to push back the timeline. Their estimation of defect volume was wrong.
So, what went wrong? Let’s analyze
Company A did not have a clear picture of customer requirements. They wrongfully assumed the color of the door handle.
Company B agreed on a design without checking its feasibility.
Company C estimated the wrong volume of defects. The no. of areas they predicted will be most problematic turned out to be more.
On analysis, we can list the problems and the results followed as follows:
Company | Problem | Result | Equivalent Phase of improvement in SDLC |
A | 1. Lack of clarity during the discussion. 2. Ambiguous and/or missing requirements. | Since there was no documented requirement; both sides came to a mutual agreement of dividing the loss in the process of rectifying the mistake. It was a loss of time and money for both firms and potential loss of customers too. | Requirement Gathering & Analysis Phase |
B | Proposal for unfeasible designs. | They had to incur the losses since they already agreed on the design. It was a loss of money and time for the manufacturing company. | Design Phase |
C | Incorrect estimation of time and defect volume. | They had to increase the manpower and had to work extra time to cover all the defects, which was unplanned and cost money to them. | Implementation Phase |
Such problems are encountered while developing software too. They not only result in wastage of resources such as money and time but sometimes the loss of clients too. These situations can be avoided by implementing early testing. As pointed out in the last column of the table, the problems could have been identified during the early phases of SDLC, start the testing process as early as possible.
Early phase testing requires proactive behavior and collaborative action from different teams in all the phases of SDLC.
Requirement Gathering & Analysis Phase:
The intention of this phase is to frame the requirements for the project. Altering or adding new requirements in a later phase may be proven very costly and sometimes not possible at all, for ex: SDLC models like the V Model does not allow the flexibility to move between phases.
Such issues can be avoided by involving Experts from the Testing team and development team in this phase. With technical soundness in their respective fields, they can review the requirements and help identify any ambiguous or missing requirements. This will help to frame the robust requirements which reduce the risk factor to SDLC.
If we see the problem mentioned for Company A, we can comprehend that, if early testing had been performed on the requirements by experts, then there was a high probability that the missing requirement was identified and fixed in Requirement Gathering & Analysis phase.
Design Phase:
During this phase, the system architecture is designed based on the final requirements. The feasibility of design is very important. As we saw in the problem with Company B, a non-measured plan can cause a huge setback. It may sometime cause you to start the entire testing process from scratch.
The feasibility of the plan should be tested before putting it in practice. This can be achieved by involving the development team and testing the feasibility of the design. They can help identify the bottlenecks and complexity in the design so that client can be notified in advance and a workaround can be planned.
Implementation Phase:
In this phase, the software is built based on the design and requirements. It is one of the longest phases and has a big scope of solidifying the quality of the software. The software design is generally divided into modules, which are coded separately.
A different approach can be used to ensure the quality of software such as:
- The modules can be tested separately. With a smaller target code, spotting the defects will be easier.
- Testing team can be involved during to run some of their high priority test case on the code before the actual testing starts. Some of the critical defects can be eliminated right away rather than carrying forward.
As we saw in the problem faced by Company C, if some testing had been performed during the implementation phase, it could have helped in giving some insight into the quality of the software which would have helped in estimating the time and volume of defects.
Testing Phase:
This phase is responsible for the formal testing of the software. It starts with the unit testing process which is performed by the Development team. Later on, system testing, Integration testing, sanity testing are performed by the Testing team.
The development team can collaborate with the testing team during the planning of unit testing. Experts from the Testing team can review the Test cases and help to make the testing more effective by giving advice in areas like the addition of more test cases, adding validations, etc. This will help to build trust in software quality.
Deployment:
It is less likely to find any defects during User Acceptance Testing if most of the defects are identified in earlier phases. It helps in building trust with the client.
We can conclude from the discussion that the efforts and resources required to fix a defect increases as we advance through different phases of SDLC. So, practicing early testing not only helps in avoiding unnecessary obstacles but also helps saving time and resources.
Also, all the solutions we discussed for Start Testing Process early required collaboration from different teams. Involving different teams in SDLC in early phases also helps the team members to have a better understanding of the software which in turn helps in providing satisfactory and reliable deliverables.
⇓ Subscribe Us ⇓
If you are not regular reader of this website then highly recommends you to Sign up for our free email newsletter!! Sign up just providing your email address below:
Happy Testing!!!