Sunday, October 17, 2010

Task 9.1

A recent CIO magazine podcast featured a discussion by Meredith Levinson discussing her top 20 tips for software testing. Follow the link on the week 9 panel for the unit and listen to the podcast. Make a critical summary of Meredith Levinson's top 20 tips on software testing (3 value points, 5 individual points, 5 implementation points). Post the summary on your blog.

Through the podcast Meridith Levinson gives an in-depth insight into the best practices for software testing. The podcast begins by telling that testing is the most overlooked, underfunded and most critical aspect of software development lifecycle. Testing is vital to developing high quality software to ensure smooth business operations. Businesses put themselves under extreme risk of substantial losses when they fail to effectively and adequately fail to test software for bugs and performance issues or determine whether software meets business requirements.

There are 20 tips proposed by Meridith Levinson on the best ways to go about doing quality software testing and will go through this in some detail.

Firstly, Meridith mentioned the importance of recruiting highly qualified testers who know about the code in detail will help earn the respect of software developers. Similarly, it is important to highlight the tester’s work and their impact on the company to increase their morale and make them more diligent in their work. Another tip is to merge the developers and testers to have some sort of personal interaction on a regular basis so they can remove any communication gaps between them.

Cross Training is another concept that helps to establish firm understanding between testers and developers. Levinson emphasizes that developers need to be given assurances that despite them making a few mistakes they would not get negative performance reviews as long as they are diligent in their work and are willing to learn from their mistakes. This helps to ease frustrations of developers who take pride in their work to understand that the tester’s role is to find faults in their work to make it better.

The sixth tip is to let testers report to a group who is independent of the developers group so problems are revealed and fixed instantly. It is also essential to centralize testers into one group rather than a particular application area to ensure testers share best practices and lessons learned after completing a project. Next, testers need some on-the-job training and strong focus towards more specific systems to deepen their understanding of the system which helps identify problems that were not shown before in the test documentation. Moreover, involving network operations experts in the testing phase allows actual implementation to be done smoothly.

Furthermore, Levinson mentions in her tips that its necessary to have your own test labs to mimic the same business environment and testing must be done in locked environment, to ensure minimal interference from developers. Likewise it is essential to have old and new systems running simultaneously in the testing phase to integrate good features and eliminate the bad ones. The podcast also introduces a new concept “Code Coverage”. Code coverage basically keeps track of the number of modified or new lines of code tested to check the effectiveness of the testing as modified code often leads to bugs. Other alternative ways to search for defects in code such as scanning the source code thoroughly for any potential problems and using pareto tools to identify root causes of defects in software. Besides detecting defects it is vital at the same time to establish checkpoints and milestones to foster a culture of quality among its development and testing groups.

The Last two tips Meridith metioned about were: Apply equivalence class partitioning and Develop Plan B. Equivalence Class partitioning is basically a mathematical technique testers can use to identify additional functional requirements that users and business analaysts might have overlooked whereas Develop Plan B refers to a contingency plan to be in place in event system does not work the way it supposed to be in spite of the best efforts of testing group.

All the above mentioned 20 tips lead to this conclusion that testing is a rigorous and critical phase of the software development lifecycle. Thus it is important that all people involved in the testing phase must collaborate, communicate effectively and be considerate to the needs of each group to forge a healthy relationship that will result in successful software being developed in future.

No comments:

Post a Comment