How to Find Defects Even Before Coding Starts
How to Find Defects Even Before Coding Starts
How DevOps bridges the gap between agile testing and continuous testing methodologies.
Join the DZone community and get the full member experience.Join For Free
Easily enforce open source policies in real time and reduce MTTRs from six weeks to six seconds with the Sonatype Nexus Platform. See for yourself - Free Vulnerability Scanner.
A popularly used idiom states, ‘Being an early bird is better than being a night owl’. This might not be literally true, but the idea is that in today’s competent software development scenario it is considered beneficial to plan testing along with the process of development. ‘Start testing early’ is one of the principles in the software development life cycle. In this article we intend to evaluate the advantages and logic behind starting the testing process way ahead in SDLC. The underlying motive is to help identify defects and issues before the production/coding starts.
Testing domain experts address testing as a skill, which should be honed time and again. It evolves as per the requirements and challenges in a concerned project. The new school of thought suggests that testing starts early in the development stage, which can help identify defects in the initial stages. One of the key reasons being that it is an expensive affair to resolve issues that get spotted later in SDLC.
The Standard Process
A standard software development life cycle plan based on the Waterfall model usually entails the following:
- Planning, where requirements are captured and requirements are assessed.
- Freezing the requirements and analyzing them.anal
- Actual implementation (coding) starts in this phase.
- Testing – the stage where testing of a product practically starts.
This being a standard process, it may differ from project to project. If the project does not go as planned; overall Planning, Analysis, Design, and Coding takes more than the estimated time, causing hurdles for the overall project planning. This would happen in situations where the project has to be delivered under stringent timelines.
In such situations when the release date is frozen and there is no scope of flexibility, it results in immediate and massive impact on the testing and quality of the application. At the same time, customers are being promised a robust application, which determines the success of entire project and ultimately commercial success for the customer.
What’s the Solution?
So, the only logical way out is to align the testing alongside and start it way in advance of the development process.
In this scenario, organizations are witnessing a cultural shift with Agile Development methodology and DevOps. While DevOps bridges the gap between IT operations and Development, the Agile approach encourages progressive planning and development for constant enhancement. Moreover, it emphasises on keeping a swift and flexible approach towards change.
With this approach, testing gets embedded into the system, which helps in managing defects much in advance. It also offers a holistic approach towards the overall software development process. Additionally, the ‘Start Early Testing’ strategy works wonders as it soaks in feedback from inception and emphasizes on keeping quality high.
How Can This Be Planned?
- Analyze your test result: If you do not ignore the test results, it ultimately helps you to understand the root cause of any ‘failed’ result and provide solution at an early stage.
- Expand the test coverage: While testing an application, it is advisable to maximum the testing process across the application.
- Segment the AUT: With a view to derive maximum mileage out of the testing process, the Application Under Test (AUT) can be broken down into segments. For instance, breaking down a desktop application for segmented testing purpose.
- Writing test cases for better functionality: By putting down the test cases for valid and invalid conditions, it becomes possible to understand and cover the various behavioural aspects of the AUT.
- Start off on the right foot: A tester should ideally approach the project with an attitude to find defects, which will leave no scope for error and the application gets tested in a fool proof manner.
- Constantly share test cases with developers: It is important to share the test cases with developers before the coding starts, instead of keeping it with you till the final application release for testing purposes. The test cases will enable the coders in the development process and reduce duplicity in work at a later stage. Sometime the developers are not equipped with the right test cases, so, this approach of sharing enables the developers.
- Performance testing for critical applications: It is suggested that the applications requiring critical response should be tested from the beginning. Performance testing comes to rescue for such instances as against Manual testing.
Rewards of Starting Early Testing
- It enables the teams to understand the scope of work / testing needs. For instance, few items can skip the testing process considering they won’t get impacted.
- Testing at requirement stage makes the process cost effective and rational.
- Writing test cases way ahead in the development cycle helps solve them in time.
- It helps quantify the scope of the problem.
- It further helps prepare the test environment and prevents further delays and gives sufficient time to handle any unknown risks.
- It provides more time for the testing team, which doesn’t compromise the quality of the software / application.
‘Quality is built in, not added on’.
This implies that aligning the testing activities with the development process helps address bugs and gives utmost importance to the quality aspect.
Early Testing for Identifying Defects
- The Early testing concept ensures that testing becomes an integral part of the overall development process.
- Planning the testing phases and schedule from the initiation of the project is a key step
- It is important to estimate the requirements for System testing / UAT and at the same time test cases should be prepared.
- Test preparations must begin before the actual testing process starts.
- A tester should start identifying defects from the requirement collection stage. This should be executed through the analysis and design stage as well.
- Proceeding from the Design stage, integration test cases and unit test cases should be completed.
What Can We Infer?
When the testing process starts early, it is easier and cost effective to identify and address the bugs as it is cheaper to fix bugs at an earlier stage as against at a later stage. For instance, if an issue or conflict is found in the requirement stage, it will be lot easier and feasible to handle it at that point. On the contrary, if the defect is found at the maintenance stage when the product has already gone live, it is bound to incur higher costs.
An Agile approach helps you to get the feedback cycles rolling early on by involving the customers much in advance. Though there is a thin line separating Agile and DevOps, those considering the Agile approach might be much more acquainted with DevOps. Agile principles can be implemented effectively on the development and QA process, however, it is a challenge to incorporate it on the operations side. This is where DevOps comes into play to bridge the gap.
Published at DZone with permission of Subhendu Pattnaik , DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.