Software Testing


Published on

1. To understand software testing and its importance.
2. To understand the concepts of software quality.
3. To see the different classes/ levels/ types of testing.
4. To see the different test case design techniques.
5. To understand the software processes related to testing in a typical software organisation.

Published in: Technology
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Software Testing

  1. 1. SOFTWARE TESTING Software Testing 1 Benoy R Nair 12-Oct-2009
  2. 2. Objectives To understand software testing and its importance. To understand the concepts of software quality. To see the different classes/ levels/ types of testing. To see the different test case design techniques. To understand the software processes related to testing in a typical software organisation. Software Testing 2 Benoy R Nair 12-Oct-2009
  3. 3. FUNDAMENTALS SOFTWARE TESTING Software Testing 3 Benoy R Nair 12-Oct-2009
  4. 4. What is ‘Testing’? Testing – A process of evaluating a particular product to determine whether the product contains any defects. Software Testing – A process of evaluating a system by manual or automatic means and verify that it satisfies specified requirements or identify differences between expected and actual results. Software Testing 4 Benoy R Nair 12-Oct-2009
  5. 5. What is ‘Testing’? “Testing is the process of executing a program with the intent of finding errors.” Testing is obviously concerned with errors, faults, failures and incidents. A test is the act of exercising software with test cases with an objective of – Finding failure – Demonstrate correct execution Software Testing 5 Benoy R Nair 12-Oct-2009
  6. 6. Terminology Errors Faults – Faults of commission – Faults of omission Failures Incidents Test Cases Software Testing 6 Benoy R Nair 12-Oct-2009
  7. 7. Why do we do ‘Testing’? Provide confidence in the system Identify areas of weakness Establish degree of quality Establish the extent that the requirements have been met To provide an understanding of the whole system To prove that it is both usable and operable To provide sufficient information to allow an objective decision on application to deploy Software Testing 7 Benoy R Nair 12-Oct-2009
  8. 8. Basic Questions How much? What sort? By whom? When & by when? Software Testing 8 Benoy R Nair 12-Oct-2009
  9. 9. PRINCIPLES SOFTWARE QUALITY Software Testing 9 Benoy R Nair 12-Oct-2009
  10. 10. Quality Meeting the Customer’s requirements in the First time and Every time Much more that absence of defects Allows us to meet customer expectations Software Testing 10 Benoy R Nair 12-Oct-2009
  11. 11. Perspectives of Quality Transcendent Product based User based Development based Value based Software Testing 11 Benoy R Nair 12-Oct-2009
  12. 12. Cost of Quality Cost of Prevention Cost of Appraisal Cost of Failure Software Testing 12 Benoy R Nair 12-Oct-2009
  13. 13. Quality Assurance & Quality Control Quality Assurance – Process oriented (software development) – Defect prevention Quality Control – Product oriented (quality of entire product is tested) – Defect detention Software Testing 13 Benoy R Nair 12-Oct-2009
  14. 14. CLASSIFICATIONS SOFTWARE TESTING Software Testing 14 Benoy R Nair 12-Oct-2009
  15. 15. Levels of Classification Based on Granularity – Unit Level – Integration Level – System Level Based on Methodology – Black Box (Functional) Testing – White Box (Structural) Testing Software Testing 15 Benoy R Nair 12-Oct-2009
  16. 16. Types of Testing (contd…) Regression Testing Acceptance Testing Sanity Testing Smoke Testing Stress Testing Software Testing 16 Benoy R Nair 12-Oct-2009
  17. 17. Unit Testing Primary Goal – To take the smallest piece of testable software in the application, isolate it from the remainder of the code, and determine whether it behaves exactly as you expect. Each unit is tested separately before integrating them into modules to test the interfaces between modules. Unit testing has proven its value in that a large percentage of defects are identified during its use. Software Testing 17 Benoy R Nair 12-Oct-2009
  18. 18. Integration Testing A logical extension of unit testing. In its simplest form, two units that have already been tested are combined into a component and the interface between them is tested. Approaches: – Big Bang – Bottom Up – Top Down – Sandwich Software Testing 18 Benoy R Nair 12-Oct-2009
  19. 19. System Testing Conducted on a complete, integrated system to evaluate the system's compliance with its specified requirements. Validate the software product against the requirements specification. To find defects that can be exposed only by testing the entire system. Software Testing 19 Benoy R Nair 12-Oct-2009
  20. 20. Functional (Black Box) Testing Inspects specified behavior Selects valid and invalid inputs and determines the correct output. There is no knowledge of the test object's internal structure Software Testing 20 Benoy R Nair 12-Oct-2009
  21. 21. Structural (White Box) Testing Inspects programmed behavior Chooses test case inputs to exercise paths through the code and determines the appropriate outputs Requires programming skills to identify all paths through the software Software Testing 21 Benoy R Nair 12-Oct-2009
  22. 22. Regression Testing Any type of software testing that seeks to uncover software regressions. – Test fixed bugs promptly. – Watch for side effects of fixes. – Write a regression test for each bug fixed. – Identify tests that the program consistently passes and archive them. – Focus on functional issues, not those related to design. – Make changes (small and large) to data and find any resulting corruption. – Trace the effects of the changes on program memory. Software Testing 22 Benoy R Nair 12-Oct-2009
  23. 23. Acceptance Testing Objective – To provide confidence that the delivered system meets the business requirements of both sponsors and users By System Provider By Customer (UAT/ End User Testing) Software Testing 23 Benoy R Nair 12-Oct-2009
  24. 24. Types of Testing (contd…) Sanity Testing Smoke Testing Stress Testing Software Testing 24 Benoy R Nair 12-Oct-2009
  25. 25. TECHNIQUES TEST CASES & DESIGN TECHNIQUES Software Testing 25 Benoy R Nair 12-Oct-2009
  26. 26. What is a “Test Case”? Triplet [I, S, O] where – I is the Input data – S is the state of the system at which the data will be input – O is the expected output Not randomly selected, but need to be carefully designed. Test Suite – Set of all test cases Software Testing 26 Benoy R Nair 12-Oct-2009
  27. 27. Need for designing test cases Extremely large input data domain making exhaustive testing impractical Randomly selected test cases do not ensure completeness and may also bring in redundancy Number of test cases do not determine effectiveness Each test case should detect different errors Software Testing 27 Benoy R Nair 12-Oct-2009
  28. 28. Test Case Design Techniques White Box Testing – Control flow testing – Data flow testing – Branch testing Black Box Testing – Equivalence class partitioning – Boundary value analysis – Comparison testing – Orthogonal array testing – Decision table based testing & Cause effect graph Software Testing 28 Benoy R Nair 12-Oct-2009
  29. 29. Summary Testing: Integral part of software development function – Starts with the requirements not code. – Prevention is better than cure. – The sooner you find the fault the cheaper it is to fix it. – Create re-usable ‘testware’. – Process first then tools. – Not everyone can test well; use professional testers. – Planned testing in a controlled environment provides objective metrics. – To gain Return on Investment you must invest first. Software Testing 29 Benoy R Nair 12-Oct-2009