Saturday, October 16, 2010

Task 9.1

Meredith Levinson, a senior writer for CIO magazine published a podcast with a purpose of revieing best practices of software testing. She believes that the testing phase of software development is the most overlooked yet a critical success factor of a system development.
  1. Respect to your testers: Recruit testers that are experts in coding and system development. This ensures that the system developer would respect the skills of the testers and testers may test with precision and well mannered.
  2. Raise testers awareness of their value: Highlight the deficiencies early on and let the tester knows the value of the system to increase their dilligence and performance.
  3. Co-Locate testers and developers: Putting them together improves the communications which ensures that the system requirements are well known by both of them. This will avoid conflicting ideas and maximising testing results.
  4. Cross-train testers and developers: Cross training testers and developers with both developing and testing skills enables both groups to understand what it feels like to be in each other's shoes. This will make both groups to approach the system with broader understanding and improving the test results.
  5. Tell programmers to relax: There are always conflict between developers and testers. Programmers tend to have their ego get the best of them when testers come to find faults and bugs in their systems. Managers must give understanding to developers that it's the tester's job to find faults in the system and it's not in the developer's fault.
  6. Set up independent report structure: Do not let the testers report to other groups other than the project manager. This includes the developers.
  7. Centralised Test Groups: Centralising test groups ensure that testers learn the testing together with a standardised method.
  8. Dedicate testers to specific systems: Focusing one tester to a function ensures deep understanding to that specific function.
  9. Give testers business training: Testers could learn better on how the business works and gain better understanding on how the system should support the business.
  10. Involve business users in testing: Involving business users in testing phase will ensure that the system meets the specific business requirements. It also helps them to let the developer know about their learning curve of using the system.
  11. Involve network operations: This enables the IT department to plan the system implementation to enable the implementation phase to proceed smoothly.
  12. Build a lab to replicate the business environment: This ensures that any risks that may occur during the development can be easily rectified within the lab so that the actual business process is unaffected.
  13. Test in a lockdown environment: This to ensure that developers do not modify the codngs when Quality Assurance people are testing the system. This will ease on keeping track of the code changes when testing are conducted in an isolated condition.
  14. Test the old and the new: This to ensure that previous systems are compatible with the new one.
  15. Code Coverage: It is used to test all the code changes done by the developers to ensure that the system is running well to specifications before and after code modifications.
  16. Scan source codes for problems: Ensure that all the codings are bug-free.
  17. Identify Patterns: Use a tool to identify patterns that may lead to defects.
  18. Establish Quality Checkpoints: Milestones can be used to easily identified quality flaws at different points of the project to ensure that all problems are identified early and cost-effective to the project.
  19. Apply equivalent class partitioning: Mathematical technique used by testers to identify additional functionalities of the systems that business analysts often overlooked.
  20. Develop a contingency plan: Murphy's law states that anything that can go wrong, will go wrong. Having a contingency plan ensures that the project have a mitigated risks that may occur to identify project problems and easily solve them if occur. This ensures cost-efficiency within the project.
For more detail, go to www.cio.com