Software Development Life Cycle and Testing

thinking-development-lifecycleIn the Software Development Life Cycle (SDLC) there is a time for thinking, a time for doing and a time for validating. Developing a creative, useful application takes a lot of all three.  The first half of SDLC is comprised of Requirements and Analysis, Design, and Coding. This is the time for real thinking.  A time for figuring out what you want the application to do and making it do it. Simple code tests are all that are needed here to test your software modules in stand-alone mode to ensure that they do what you intended.

Testing, Deployment and Maintenance

The second half of SDLC is comprised of Testing, Deployment, and Maintenance. This is the time for doing and validating; the time to have the tools and plans in place to function, load and stress test your application.

During the testing phase, your code needs full functionality testing to ensure that your new application does what you want it to from start to finish.  At the same time, your new code can’t be allowed to adversely affect your existing code, so having a test tool preloaded with a full set of regression tests is a key requirement. If that same tool is also easy enough to modify that you can include test sets designed to exercise your new code, then you stand the best chance of finding the bugs lurking deep inside your software. The application must be subjected to stress and load. It must be tested, measured, broken, rewritten, and retested until it can’t be broken in the lab anymore. The multiple testing cycles, done properly and with tools that are up to the job, put your application in the best position to succeed with your users.

Once the software has passed through the internal testing phase, it’s time to deploy. Deployment is where more sophisticated testing is called for. You’re putting your application into the real world where your users will interact with it. That means any bugs left in your code or any undiscovered flaw in your design will be seen and felt by your users.  You need to be running side-by-side beta test and production environments so you can use your test equipment in a real-world environment and slowly introduce your users into the beta test deployment to keep the impact on them to a minimum. You should be running canary tests looking for problems and you need to be load and stress testing your beta environment to ensure that your users will experience the joy of your new application and not the disappointment of code that doesn’t deliver on its promise.

deployment-lifecycleMaintenance is the ultimate goal in the deployment of a new application or software upgrades. The software is stable, bugs are worked around or patched and yet there is still ongoing testing that has to be done. Continued load testing and targeted testing of underperforming regions will help to uncover deeply-embedded problems or design issues that could not be uncovered in the lab.