2. • Testing?
• Why software testing?
• Software testing life cycle
• Levels of testing
• Test types
• How to deal with developers
• Characteristics of a great tester
9. • Honest and responsive
• Open and available
• Use bug tracker
10. • Be Skeptical
• Ensure End User Satisfaction
• Prioritize Tests
• Be Open to Suggestions
• Focus on Negative Side as Well
• Learn to Negotiate
• Stop the Blame Game
Top 10 historical software bugs with extreme consequences.
http://royal.pingdom.com/2009/03/19/10-historical-software-bugs-with-extreme-consequences/
FLIGHT CRASHES: In 1994 in Scotland, a Chinook helicopter crashed and killed all 29 passengers. While initially the pilot was blamed for the crash, that decision was later overturned since there was evidence that a systems error had been the actual cause.
ROCKET LAUNCH ERRORS
In 1996, a European Ariane 5 rocket was set to deliver a payload of satellites into Earth orbit, but problems with the software caused the launch rocket to veer off its path a mere 37 seconds after launch. As it started disintegrating, it self-destructed (a security measure). The problem was the result of code reuse from the launch system’s predecessor, Ariane 4, which had very different flight conditions from Ariane 5. More than $370 million were lost due to this error.
LOST IN SPACE
One of the subcontractors NASA used when building its Mars climate orbiter had used English units instead of the intended metric system, which caused the orbiter’s thrusters to work incorrectly. Due to this bug, the orbiter crashed almost immediately when it arrived at Mars in 1999. The cost of the project was $327 million, not to mention the lost time (it took almost a year for the orbiter to reach Mars).
Requirement Analysis: review the software requirements/ design (Well, if they exist.)--‘Review Defect’ Report
Test Planning: Once you have gathered a general idea of what needs to be tested, you ‘plan’ for the tests. --Test Plan, Test Estimation, Test Schedule
Test Case Development: You design/ detail your tests on the basis of detailed requirements/design of the software (sometimes, on the basis of your imagination).
Test Execution: You execute your Test Cases/ Scripts in the Test Environment to see whether they pass. --Test Results (Incremental), Defect Reports
Test Closure: You prepare various reports for various stakeholders. Test Results (Final), Test/ Defect Metrics, Test Closure Report
Functional test based on: functions and features. Functions are WHAT the system does: smoke testing, sanity testing, regression testing, usability testing.
Non-Functional test: performance testing, load testing, stress testing, usability testing, maintainability testing, reliability testing,… Non-Functional is the testing HOW the system work.
honest and responsive: Tell developers about your plans to test the application.open and available: If developer asks you to have a look at the application before releasing to QA team, then politely give feedback on it and discuss extra efforts needed if any. Don’t log defects at this stage.
Use bug tracker: Do not target developers by making public comments about issues in theirwork. Use defect tracker to log all defects
Be Skeptical Don’t believe that the build given by developers is bug free or quality outcome. Question everything.
Ensure End User Satisfaction: Always think what can make end user happy. How they can usethe product with ease. Don’t stop by testing the standard requirements. End user can behappy only when you provide an error free product.Prioritize Tests: First identify important tests and then prioritize execution based on testimportance. Never ever execute test cases sequentially without deciding priority.
Be Open to Suggestions: Listen to everyone even though you are an authority on the projecthaving in depth project knowledge. There is always scope for improvements and gettingsuggestions from fellow software testers is a good idea.
Identify and Manage Risks: Risks are associated with every project. Risk management is athree step process. Risk identification, analysis and mitigation. Incorporate risk driven testingprocess. Priorities software testing based on risk evaluation.Focus on Negative Side as Well: Testers should have test to break attitude. Concentrating ononly positive side will almost certainly create many security issues in your application. Youshould be hacker of your project to keep other hackers away from it. Negative testing isequally important. Learn to Negotiate: Testers have to negotiate with everyone in all stages of project life cycle.Especially negotiation with developers is more important. Developers can do anything to prove that their code is correct and the defect logged by testers is not valid. It requires great skills to convince developers about the defect and get it resolved.
Stop the Blame Game: It’s common to blame others for any defects which are not caught in testing. This is even more common when the tester’s responsibilities are not defined concretely. But in any situation never blame anyone. If an error occurs, first try to resolve it rather than finding someone to blame. As a human everybody makes mistake, so try to avoid blaming others. Work as a team to build team spirit.