software quality

Software Quality Engineering - PDF document


  1. ๏ฟฝ โ˜Ž โœ• โœ– โœ– โœ‚ โœ— โœš โœž โœ˜ โœ› โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ˜ โœšโœœ โœš โœ  โœž โœš โœโœ’ โœ โœ” โœ— โ˜ž โ˜› โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ“ โœ  โœก โ˜Ž โœ† โœž โœ โœ  โœโœ’ โœŽ โœ‘ โœ โœŽ โœ โœŒ โ˜ž Value-based view โ€ข helps to decide trade-offs during development โ€“ cost vs. reliability โ€“ cost vs. functionality โ€ข cost to consumer is affected by scale โ€“ high volume products have a higher perceived value โ€ข value is defined by โ€“ potential savings/productivity enhancements โ€“ profit opportunities โœ–โœฃโœข โœ—โœ™โœ˜

  2. ๏ฟฝ โœ โœ† โœก โœ โœ โœ‘ โœŽ โœ โœŽ โ˜Ž โœ โœŒ โœ  โ˜Ž โœ” โœ„ โœ โœŽ โœ โœ โœ“โœ” โœ โœ’ โ˜Ž โœ„ โœ‘ โ˜Ž โœ โœ‚ โœŽ โœ† โœก โœŽ โœ โ˜› โœ” โœ“ โœ โœ  โœ” โœ  โœ‘ โœ‘ โœ โœŽ โœ โœŽ โ˜Ž โœŒ โœ โœ  โ˜Ž โœ โœก โœ โœ• โœ„ โœ’ โœ โœ โœ” โœ“ โœ โ˜Ž ๏ฟฝ โœ โ˜Ž โœŒ โœ– โœ– โœ• โœ” โ˜ž โ˜ž โœ“ โœ โœโœ’ โœŽ โœ‘ โœ โœŽ โœ โ˜ž โœ โœ  โœž โ˜› โ˜Ž โœก โœ  โœ† โœŸ โœž โœ โ˜Žโœ† โ˜Ž โœ„ โœ‚ โœ— โœ— โœš โœ  โœ  โœก โœ  โœŸ โ˜Ž โœ‚โœ„ โœ โœ โœโœ’ โœš โœž โœŒ โœš โ˜Žโœ† โœž โœ˜ โœ› โœ„ โ˜Ž โœž โœ˜ โœ„ โœšโœœ Problems with Qualities โ€ข qualities are at odds with one another โ€“ always a compromise โœ†โœžโœ โœ†โ˜žโ˜› โœ†โ˜žโ˜› โœ†โ˜žโ˜› โ€ข difficulty in trying to measure qualities e.g., accuracy, usability โ€ข what does quality really mean? โœ–โœฃโœข โœ—โœ™โœ˜

  3. ๏ฟฝ โ˜Ž โœ– โœ— โœ โœ˜ โœ˜ โœ› โœž โœ™ โœœ โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ• โœ— โ˜ž โ˜› โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ” โœ  โœก โ˜Ž โœ† โœž โœ โœ’ โœ  โœŽโœ’ โœ‘ โœ“ โœŽ โœ โœŒ โ˜ž Proposed solution 1: Focus on Product โ€ข most dimensions of quality are measured after the fact โ€ข need to identify actions that can embed needed qualities in the products, up front โ€ข implementation quality model: identify what the programmer can do to ensure quality โ€“ link these actions to high level qualities โœ—โœคโœฃ โœ˜โœšโœ™

  4. โœ“ ๏ฟฝ โ˜Žโœ† โœ‚ โœ— โœ˜ โœ˜ โœ› โœž โœ™ โœœ โœ„ โ˜Ž โœž โœ• โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ– โœ— โ˜ž โœž โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โœ  โœก โ˜ž โ˜› โ˜Ž โœ  โœ‘ โœ” โœ’ โœ“ โ˜ž โœŽโœ’ โœ โœŽ โœ โœŒ Proposed Solution 1 (contโ€™d) โ€ข requirements quality model: all requirement statements must be measurable โ€ข design quality model: define qualities for design, identify characteristics of design that would embed those qualities โœ—โœคโœฃ โœ˜โœšโœ™

  5. โœ“ โ˜Ž โœ– โœ— ๏ฟฝ โœ˜ โœ˜ โœ› โœž โœ™ โœœ โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ• โœ— โ˜ž โ˜› โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โœ” โœก โ˜Ž โœ  โœž โœ โœ’ โœ“ โœ  โœ‘ โœŽโœ’ โœŽ โœ โœŒ โ˜ž Proposed solution 2: Focus on Process โ€ข integrate quality decisions into the design process, e.g.: โ€“ by using quality checklists during inspection, design โ€“ by determining testing criteria up front โ€“ by following a documented design process โœ—โœคโœฃ โœ˜โœšโœ™

  6. โœ“ โ˜Ž โœ– โœ“ โœ— โœ˜ โœ˜ โœ› โœž โœ™ โœœ โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ• โœ— โ˜ž โ˜› โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โœ” โœก โ˜Ž โœ  โœž โœ โœ’ โœ“ โœ  โœ‘ โœŽโœ’ โœŽ โœ โœŒ โ˜ž Qualities Discernable at Runtime โ€ข performance โ€ข security โ€ข availablity โ€ข functionality โ€ข usability โœ—โœคโœฃ โœ˜โœšโœ™

  7. โœ“ โ˜Ž โœ– โœ— โœ— โœ˜ โœ’ โœ› โœž โœ™ โœœ โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ• โœ˜ โ˜ž โ˜› โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ” โœ  โœก โ˜Ž โœ† โœž โœ โœ’ โœ  โœŽโœ’ โœ‘ โœ“ โœŽ โœ โœŒ โ˜ž Qualities Not Discernable at Runtime โ€ข modifiability โ€ข portability โ€ข reusability โ€ข testability โ€“ ease with which software can be made to demonstrate its faults through execution based testing โ€“ related to architectural documentation, separation of concern, information hiding, incremental development โœ—โœคโœฃ โœ˜โœšโœ™

  8. ๏ฟฝ โ˜Ž โœ• โœ โœ– โœ— โœ— โœš โœž โœ˜ โœ› โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ˜ โœšโœœ โœš โœ  โœž โœš โœ’ ๏ฟฝ โœ’ โœ” โœ– โ˜ž โ˜› โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โœ  โœ“ โ˜Ž โœก โœž โœ โœ’ ๏ฟฝ โœŽโœ’ โœ  โœ‘ โœŽ โœ โœŒ โ˜ž Business Qualities โ€ข time to market โ€ข cost โ€ข projected lifetime of system โ€ข targeted market โ€ข integration with existing legacy systems โœ–โœฃโœข โœ—โœ™โœ˜

  9. ๏ฟฝ โ˜Ž โœ• ๏ฟฝ โœ– โœ— โœ— โœš โœž โœ˜ โœ› โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ˜ โœšโœœ โœš โœ  โœž โœš โœ’ ๏ฟฝ โœ’ โœ” โœ– โ˜ž โ˜› โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โœ“ โœก โ˜Ž โœ  โœž โœ โœ’ ๏ฟฝ โœ  โœ‘ โœŽโœ’ โœŽ โœ โœŒ โ˜ž What's Ahead Remainder of material about quality focuses on two topics related to software quality: โ€“ Testing: finding defects by executing software and examining results (and then fixing the defects) โ€“ Inspection: a formal way of analyzing software and other documents โœ–โœฃโœข โœ—โœ™โœ˜

  10. ๏ฟฝ โ˜Žโœ† โœ– โœ– โœ‚ โœ— โœš โœž โœ˜ โœ› โœ„ โ˜Ž โœž โœ” โœ„ โœ˜ โœšโœœ โœš โœ  โœž โœš โœ’ ๏ฟฝ โœ’ โœ• โœ— โ˜ž โœž โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โ˜ž โœก โ˜Ž โ˜› โœ  โœ  โœ‘ โœ“ โ˜ž ๏ฟฝ โœŽโœ’ โœ’ โœ โœŽ โœ โœŒ What is Software Inspection? โ€ข Formal process to statically analyze a software product and record metrics related to that product. โ€ข Differs from informal "walk-throughs" or "reviews": โ€“ formal process โ€“ products inspected at greater level of detail โ€“ metrics โœ–โœฃโœข โœ—โœ™โœ˜

  11. ๏ฟฝ โœก โ˜Ž โœ‘ โœŒ โœกโœ โœ โœŽ โœŽ โ˜› โœ  โœ โœ‘ โœ  โœŸ โ˜Ž โœ„ โœ„ โœ‚โœ„ โœ โœ ๏ฟฝ โœ’ โœŒ โœ† โœ’ โœŸ โœ” โœŒ โœŸ โœ• โœ— โœก โœ“ โœ– โœ” โœ• โœ’ โœก โœ“ โœ“ โœŸ โœ• โœŸโœ” โœ„ โœ“ โœก โœ ๏ฟฝ โœ โœš โœ  โ˜ž โœ“ โœ’ ๏ฟฝ โœŽโœ’ โœ‘ โœ โœŽ โœ โœŒ โ˜ž โœž โœ” โ˜› โ˜Ž โœก โœ  โœ† โœŸ โœž โœ โ˜Žโœ† โ˜Ž โœ„ โœ‚ โ˜ž โœ• โœž โœ„ โœ  โœš โœšโœœ โœ˜ โœ„ โœ– โ˜Žโœ† โ˜Ž โœž โœ› โœ— โœ˜ โœž โœš โœ– โœ— IEEE Definition "...a formal evaluation technique in which software requirements, design, or code are examined in detail by a person or group other than the author to detect faults, violations of development standards, and other problems..." โ˜žโœโœŒ โ˜žโœโœŒ โœ†โœžโœ โœ–โœฃโœข โœ—โœ™โœ˜

  12. ๏ฟฝโœ โ˜Žโœ† โœ– โœ– โœ— โœ‚ โœš โœž โœ˜ โœ› โœ„ โ˜Ž โœž โœ” โœ„ โœ˜ โœšโœœ โœš โœ  โœž โœš โœ’ ๏ฟฝ โœ’ โœ• โœ— โ˜ž โœž โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โ˜ž โœ  โ˜Ž โ˜› โœก โœ  โœ‘ โœ“ โœ’ โ˜ž โœŽโœ’ ๏ฟฝ โœ โœŽ โœ โœŒ History โ€ข Traditional meaning of inspection: โ€“ Inspecting the product of a manufacturing process โ€“ Physical product, evaluate by looking, manipulating โ€“ Often put through rigorous tests, keep metrics โ€ข Michael Fagan at IBM: โ€“ used similar processes to inspect software (code) โ€“ landmark paper in 1976 โ€“ often called "Fagan Inspections" โ€“ Inspection process has been extended & refined since, ongoing research โœ–โœฃโœข โœ—โœ™โœ˜

  13. ๏ฟฝโœ โœฎ โœฐ โœน โœฆ โœช โœฎ โœด โœณ โœช โœฒ โœฆ โœฑ โœฎ โœฎ โœญ โœซ โœฐ โœฎโœฏ โœช โœซ โœช โœฅ โœฅโœฆ โœฑ โœฆ โœ’ โœฎ โœฒ โœฎ โœณ โœช โœง โœฅ โœฐ โœฅโœฆ โœฑ โœญ โœช โœฒ โœฐ โœณ โœช โœฅโœฆ โœง โœช โœฎ โœฒ โœณ โœช โœ‚ โœค ๏ฟฝ โ˜ž โ˜ž โ˜ž โœ“ โœ’ ๏ฟฝ โœŽโœ’ โœ‘ โœ โœŽ โœ โœŒ โœ  โœ– โœž โ˜› โ˜Ž โœก โœ  โœ† โœŸ โœž โœ โ˜Žโœ† โ˜Ž โœ„ โœ” โœ• โœ˜ โœš โœ  โœš โœ’ โœšโœœ โœ– โœ„ โœž โ˜Žโœ† โ˜Ž โœž โœ„ โœ› โœ˜ โœž โœš โœ— โœ— What Gets Inspected? โ€ข Inspection process initially used to inspect software (code) โ€ข Extended to include all documents: โœงโœฉโ˜… โœฌโœฉโœญ โœดโœธโœท โœซโœถโœต โœฒโœปโœบ โœนโœฝโœผ โ€ข Above includes diagrams, prose, pseudo-code, etc. โ€ข Some other industries have adopted Inspection for design documents, drawings, etc. โœ–โœฃโœข โœ—โœ™โœ˜

  14. ๏ฟฝโœ โ˜Ž โœ• โœ– โœ‚ โœ— โœ— โœš โœž โœ˜ โœ› โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ˜ โœšโœœ โœš โœ  โœž โœš ๏ฟฝโœ’ ๏ฟฝ โœ” โœ– โ˜ž โ˜› โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โœ“ โœก โ˜Ž โœ  โœž โœ ๏ฟฝ ๏ฟฝโœ’ โœ  โœ‘ โœŽ โœŽ โœ โœŒ โ˜ž Inspection Versus Testing (1) โ€ข AT&T classifies inspection as a form of testing โ€ข In CISC 323, we use the term "testing" to mean dynamic testing: executing software to find faults โ€ข inspection does not replace dynamic testing โ€ข software process should include both inspection and testing โœ–โœฃโœข โœ—โœ™โœ˜

  15. ๏ฟฝ โ˜Ž โœ โœ– โœ– โœ— โœ— โœš โœž โœ˜ โœ› โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ˜ โœšโœœ โœš โœ  โœž โœš ๏ฟฝโœ’ ๏ฟฝ โœ” โœ• โ˜ž โ˜› โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โœ  โœ“ โ˜Ž โœก โœž โœ ๏ฟฝ ๏ฟฝโœ’ โœŽ โœ  โœ‘ โœŽ โœ โœŒ โ˜ž Inspection Versus Testing (2) โ€ข difficult to inspect for qualities such as performance, timing, load โ€ข inspection can be applied earlier than testing โ€ข inspection can be applied to any software product, not just code โœ–โœฃโœข โœ—โœ™โœ˜

  16. ๏ฟฝโœ’ โ˜Ž โœ• โœ– โœ‚ โœ— โœ— โœš โœž โœ˜ โœ› โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ˜ โœšโœœ โœš โœ  โœž โœš ๏ฟฝโœ’ ๏ฟฝ โœ” โœ– โ˜ž โ˜› โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โœ“ โœก โ˜Ž โœ  โœž โœ ๏ฟฝ โœ  โœŽ โœ‘ ๏ฟฝโœ’ โœŽ โœ โœŒ โ˜ž Defects vs. Faults โ€ข Inspection finds defects: problems in software โ€ข Testing finds faults: incorrect behavior โ€ข When you find a fault by testing: โ€“ must debug to trace the fault to a defect in the code โ€ข Often more cost-effective to find defaults via Inspection โœ–โœฃโœข โœ—โœ™โœ˜

  17. ๏ฟฝ โœ โœ” โ˜Ž โœ„ โœก โœ— โœ„ โœ† โœ โœ‚ โœŽ โœ‚ โœ— โœ• โœ„ โœ† โœ โœŒโœ† โœ โœŽ โœ โœ† โœŸโœ  โ˜Ž โœŒ โ˜ž โœ โ˜Ž โœก โœ“ โœ„ โœ‘ โœ  โ˜Žโœ† โœ’ โœŒ โ˜ž โœ˜ โœ ๏ฟฝ โœŽ โœ— โœ„ โœ† โœ โœ โœ† โœ˜ โœโœ† โœ โœ  โ˜Ž โœ„ โœ„ โœก โœ„ โœŒ โ˜Ž โœก โ˜Ž โ˜Ž โœŒ โ˜ž โœ โœŽ โœŒ โœŒ โœ• โœ  โœŒ โœ  โ˜Ž โ˜› โœ™ โœก โœ„ โ˜› โœŽ โœ„ โœ† โœ• โœŽ ๏ฟฝโœ’ ๏ฟฝ โœ“ โ˜ž โ˜ž โœ” โœ– โœ โœ– โœ— โœ— โœš โœž โœ˜ โœ› โœ‘ โœŽ โœ โœ† โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ  โœ โœก โ˜Ž โ˜› โœž โœ  โ˜ž โœŒ โœ„ โ˜Ž โ˜Žโœ† โœโœก โœ„ โ˜Žโœ† โœ โœž โœ† โœŸโœ  โ˜Ž โ˜› โœ โ˜Ž โ˜ž โœ โœ‚ โœ โœŒ โ˜Ž โ˜› โœ‚ ๏ฟฝ โœž ๏ฟฝโœ’ โœ„ โœ˜ โœšโœœ โœš โœ  โœž โœš ๏ฟฝ Analysis Tools โ€ข static analysis tools can find some types of defects โ€“ compilers find undeclared variables, syntax errors โ€“ other static analysis tools may check for: โœ“โœ–โœ• โœŒโœ›โœš โ€ข should inspect for things tools canโ€™t find โœ–โœฃโœข โœ—โœ™โœ˜

  18. ๏ฟฝ โœด โœฉ โœฏ โœฉ โœฆ โ˜… โœฑ โœฉ โœฒ โœซ โœฒโœณ โœด โœง โœญ โœท โœฌ โœฏ โœญ โœบ โœป โœผ โœฝ โœง โœญ โœฌ โœด โœพ โœฐ โœฐ โœฉ โœฆ โœฐ โœฌ โœซ โœก โœ• โ˜Ž โœ โœ˜ โœ โœก โœ‚ โœค โœŒ โ˜Ž โœก โœ” โœ• โœ„ โ˜› โœญโœฎ โœ โœซโœฌ โœฆโœง โœค โ˜› โ˜Ž โœ˜ โ˜Ž โœ โœ• โœŒ โœ‚ โœŽ โœ˜ โœ โ˜… โ˜… โœ‚ โ€ โœฆ โœฌ โ€ โœน โ˜… โœฟ โœฆ โœฌ โ‚ โ‚ โœฉ โœฆ โœฐ โœฐ โœญ โœญ โœซ โœฟ โ˜… โœซ โœง โœน โœฐ โ˜… โœฝ โœฉ โœฏ โœธ โœฉ โ‚ โœฉ โ€ โœฝ โœฐ โœฉ โœฐ โœฉ โœฏ โœฉ โœฆ โ˜… โœป โœฟ โ€ โœซ โœซ โœฉ โœฟ โœธ โ‚ โœน โœธ โœง โœฏ โœป โœฟ โ˜… โœฉ โœด โœด โœฉ โ โœฌ โœญ โœพ โœŒ โœŽ โœŽ โœค โœ› โœ„ โ˜Ž โ˜Žโœ† โœž โœ„ โœ˜ โœšโœœ โœš โœ  โœž โœš ๏ฟฝโœ’ ๏ฟฝ โ˜› โœž โœ โœ„ โœ• โœ โœŽ โ˜› โœ‚ โœก โ˜Ž โœ” โœŒ โœ˜ โœ โ˜Ž โœ” โœ˜ โœš โ˜› โ˜ž โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โœ  โœก โ˜Ž โ˜› โœž โœ  โœŒ โœ— โ˜ž โœ— โœ– โœ– โœ• โœ” โ˜ž โœ“ โœ ๏ฟฝ ๏ฟฝโœ’ โœŽ โœ‘ โœ โœŽ โœก โœ‚ โœฐ โœ‚ โœ โœ โ˜› โœก โœ„ โœ• โœŽ โœค โ˜› โœ‚ โœ โœก โœ โœ˜ โœ˜ โœ˜ โ˜Ž โœก โœ„ โœก โœ” โœ„ โ˜Ž โœ• โœ˜ โœŽ โœ‚ โ˜Ž โœ’ โœ† โœ˜ โ˜Ž โœ โœ โœ” โœ” โœŽ โœ โœ˜ โœ โœ‚ โ˜› โ˜Ž โœ„ โœŽ โœ‚ โœŒ โœ• โ˜Ž โ˜Ž โœ˜ โœ โœ„ โœ‚ โ˜Ž โ˜Ž โœž โœค โœ™ โœก โ˜› โ€ข to be classified as โ€œinspectionโ€, metrics must be kept โœธโœถโœน Inspection Metrics โœธโœถโœน โœ–โœฃโœข โœธโœถโœน โ˜…โœชโœฉ โœตโœถโœฌ โœธโœถโœน โœ—โœ™โœ˜ โœธโœถโœน โ˜…โœชโœฉ โ˜…โœชโœฉ โ€ข may also record โ˜…โœชโœฉ โ˜…โœชโœฉ โ€ข record: โ˜…โœชโœพ โ˜…โœชโœฉ โœŽ โœฃโœฅ

  19. ๏ฟฝ โœซ โœน โœฉ โœด โ€ โœฆ โœฌ โœฐ โœณ โœฐ โœง โœฌ โœฆ โœณ โœน โœซ โœธ โœฟ โœฉ โ˜… โ˜… โœค โœฌ โ˜… โœฉ โœณ โœซ โ˜… โœฟ โœณ โœน โœธ โœธ โ˜… โœฆ โœฉ โœพ โœฟ โœณ โœน โœฌ โœฐ โœซ โœฒ โœฌ โœฉ โœพ โœฟ โœฉ โœด โœธ โ˜… โœฏ โœฉ โ˜… โœซ โœง โ˜… โœน โœฉ โœ โœญ โœฉ โœน โœฌ โœฟ โœง โœฉ โœธ โ˜… โœธ โ โœธ โ˜… โœฆ โ˜… โœน โœน โœฉ โœญ โœฉ โœฏ โœฏ โœธ โœฐ โœฆ โœป โœป โœฌ โœฉ โœฆ โœฌ โœญ โœน โœฉ โœด โœพ โ‚ โœฟ โœฉ โ โœฉ โœฐ โœฟ โ˜… โœน โœฉ โœฟ โœป โœฉ โœซ โœฟ โœฉ โœฆ โœฌ โœญ โœพ โœฟ โœฉ โœน โœฉ โœง โœฝ โœฆ โœง โ€ โ‚ โœง โ โœด โ โœต โœฉ โœฟ โœน โœธ โ˜… โœน โœฉ โœพ โœฟ โœด โœฉ โœธ โ˜… โœฎ โœฏ โœธ โ˜… โœฟ โ€ โœพ โœฆ โœฌ โœซ โœญ โœพ โœด โœธ โ˜… โœฟ โœฉ โœซ โ€ โ˜… โœฟ โœป โœซ โ˜… โœฟ โœฌ โœซ โœน โœธ โœพ โœฆ โœซ โœง โœฟ โ˜… โœฆ โœฉ โœฏ โœฉ โœฐ โ‚ โ˜… โœฉ โœฌ โ˜… โœป ๏ฟฝ ๏ฟฝโœ’ โœš โœž โœ  โœพ โœญ โœšโœœ โœฌ โ€ โœฉ โœธ โ˜… โœญ โœฉ โœพ โœญ โœฉ โ‚ โœฐ โœฌ โœฆ โœฏ โœฌ โœฉ โœน โœธ โœš โœ˜ โœธ โœก โœŽ โœ โœŒ โ˜ž โœ  โœž โ˜› โ˜Ž โœ  โœ‘ โœ† โœŸ โœž โœ โ˜Žโœ† โ˜Ž โœ„ โœ‚ โœ โœŽ โœ„ โœ— โœž โ˜Žโœ† โ˜Ž โœ„ โœ› โœ˜ โœž โœš โœ— ๏ฟฝโœ’ โœ– โœ– โœ• โœ” โ˜ž โ˜ž โœ“ ๏ฟฝ โœน โœด โ˜… โœฅโœฆ โœฆ โœฉ โœฏ โœฉ โœฐ โœฏ โœฌ โœง โœฒ โœฟ โœซ โœฒ โœฉ โœค โœฟ โœฉ โœซ โœป โœง โ˜… โœฏ โœฟ โœฌ โ˜… โœฟ โœฎ โ˜… โœง โœฆ โœช โœณ โœน โœธ โœฌ โ˜… โœฆ โœฉ โœพ โœฟ โœฎ โœฐ โ˜… โœน โ€ โ˜… โœฟ โ˜… โœฉ โ˜… โœน โœฉ โœฏ โœฉ โœฐ โœฏ โœฌ โœซ โœฏ โœง โ˜… โœน โœฉ โœฆ โœญ โœฉ โœพ โœฟ โœฆ โœฌ โœฐ โœฉ โœฏ โœฏ โœธ โœฉ โœญ โœง โ˜… โœฐ โœน โ€ โœธโœถโœน โ˜…โœชโœฉ โœธโœถโœน โ˜…โœชโœฉ โ˜…โœชโœพ โœธโœถโœน โœธโœถโœน โœฉ โœถโœน โœ–โœฃโœข โ˜…โœชโœฉ Use of Metrics โ€ข Data collected can tell you: โœธโœถโœน โœ—โœ™โœ˜ โ€ข Data can be used to: โœธโœถโœน โœธโœถโœน โ˜…โœชโœฉ

  20. ๏ฟฝ โ˜Ž โœ• โœ– โœ– โœ— โœ— โœš โœž โœ˜ โœ› โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ˜ โœšโœœ โœš โœ  โœž โœš ๏ฟฝโœ’ ๏ฟฝ โœ‚ โœ” โ˜ž โœ“ โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โœ  โœก โ˜Ž โ˜› โœž โœ  โ˜ž โœŒ โœ โœŽ โœ โœ‘ โœŽ ๏ฟฝโœ’ ๏ฟฝ Inspection Process from Software Inspection , Tom Gilb & Dorothy Graham โœ–โœฃโœข โœ—โœ™โœ˜

  21. ๏ฟฝ โœด โœธ โœน โœซ โ˜… โœฝ โœฉ โœพ โœญ โœฌ โœฐ โ€ โœฆ โ˜… โœป โœง โœฎ โœง โœฑ โœญ โœฌ โœฝ โ˜… โ€ โœฉ โœฎ โœฐ โ€ โ‚ โœฆ โœน โœธ โœ โ‚ โœบ โ˜… โœฟ โœป โœบ โœน โœฌ โœธ โœฆโœง โœฉ โœธ โœฏ โœธ โ˜… โœญ ๏ฟฝ โœพ โœน โœง โœฐ โœน โœง โœท โœซ โœน โœธ โœง โœฐ โœฉ โœญ โœฉ โœด โœธ โ˜… โœฟ โœณ โœณ โœฐ โœ โœป โœฆ โœฝ โœน โœธ โœฆโœง โ‚ โœž โœน โœฌ โœผ โ‚ โœฉ โœซ โœฉ โœฌ โœฆ โ€ โœฐ โœฌ โœญ โœพ โ˜… โœฉ โœซ โ˜… โœง โ‚ โœฉ โœญ โ˜… โœฝ โ‚ โœฝ โœง โœญ โ˜… โ˜… โœญ โœฌ โœฟ โœซ โœป โœญ โœฉ โœฐ โœง โœฉ โœซ โœ† โ˜… โœฟ โœน โœฌ โœ โœญ โœฌ โœฉ โœญ โœ„ โ€ โœฌ โœฆ โœฎ โœง โœฐ โœฆ โœฉ โœฉ ๏ฟฝ โœ˜ โœ› โœ„ โ˜Ž โ˜Žโœ† โœž โœ„ โœ˜ โœšโœœ โœš โœ  โœž โœš ๏ฟฝโœ’ โœป โœš โœฌ โœญ โœซ โœง โœน โœฉ โœฟ โœฌ โœด โœง โœน โœฟ โœซ โœฉ โœž โœ— โœฟ โ˜ž โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โœ  โœก โ˜Ž โ˜› โœž โœ  โœŒ โœ— โœ โœŽ โœ โœ‘ โœŽ ๏ฟฝโœ’ ๏ฟฝ โœ“ โ˜ž โ˜ž โœ” โœ• โœ– โœ– โœฟ โœง โœพ โ โœธ โœฆ โœฉ โœพ โœฟ โœฉ โœง โ‚ โœฝ โœฐ โ‚ โ€ โœฉ โœฝ โœง โ˜… โœป โœฐ โœญ โ€ โœฌ โœฆ โœฎ โœง โ˜… โœญ โ‚ โ€ โœด โœฑ โœซ โœง โœฟ โœฌ โœฟ โœฌ โœซ โœป โœฟ โœฟ โœฉ โœฆ โœญ โœฉ โœพ โœน โœฌ โœธ โ˜… โœฆ โœฐ โœดโœฌ โ˜… โœด โ˜… โœฉ โœฉ โœฟ โœง โœญ People Involved in Inspection โ€ข Inspection is a team process: ideally 2-6 people โœตโœถโœฌ โœธ โ˜Žโœ„ โœ–โœฃโœข โœธโœถโœน โœธโœถโœน โœ—โœ™โœ˜ โœธโœถโœน โœฉ โœถโœน โ€ข checkers (inspectors) โ€ข Inspection Leader: โœธโœถโœน โœธโœถโœน โœธโœถโœน โ˜…โœชโœฉ โœธ โœ‚โœ โ˜…โœชโœฉ

  22. ๏ฟฝ โœซ โœญ โœญ โœฌ โœญ โœฟ โœป โœฉ โœฒ โœฒโœณ โœซ โœฟ โœฌ โ€ โœญ โœฆ โœฉ โœฆ โœฌ โœฉ โœพ โœฉ โœซ โœ‚ โœพ โœธ โ‚ โœฉ โœป โœฉ โœฒ โœฒโœณ โœฎ โ˜… โœฌ โœฌ โœด โœง โœน โœฎ โ˜… โœฐ โœฐ โœฆ โœฉ โœน โœ โ˜… โœผ โœง โœฟ โœฟ โœพ โœฆ โœฐ โ˜… โœฌ โœญ โœฟ โ˜… โœธ โœด โœฉ โœฌ โœป โœฌ โœพ โœฉ โœฟ โœน โœฌ โ˜… โœฆ โœฌ โœด โœธ โœฎ โ‚ โœฉ โœฆ โ‚ โœฉ โœง โœน โ‚ โœฌ โœด โœญ โœ— โœ“ โ˜ž โ˜ž โœ” โœ• โœ– โœ– โœ— ๏ฟฝโœ’ โœš โœž โœ˜ โœ› โœ„ โ˜Ž โ˜Žโœ† โœž ๏ฟฝ โœŽ โœšโœœ โœก โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โœ  โ˜Ž โœ‘ โ˜› โœž โœ  โ˜ž โœŒ โœ โœŽ โœ โœ„ โœ˜ โœš โœฟ โœฏ โœญ โœฌ โœฉ โœญ โ˜… โœฉ โ˜… โœญ โœธ โœน โœซ โœญ โœฌ โœป โ˜… โœง โœฌ โœฏ โœฉ โœ  โœฏ โœž โœš ๏ฟฝโœ’ ๏ฟฝ โœฉ โœป โ˜… โœง โœฉ โœฏ โœฌ โœญ Entry โ€ข entry criteria set up for products to be inspected โ€ข a lot of controversy about when to inspect code โ˜…โœชโœฉ โ˜…โœชโœฉ โ€ข if entry criteria not met, product not inspected โœธโœถโœน โ€ข inspections are expensive โ˜…โœชโœฉ โœธโœถโœน โ€ข author offers up product for inspection โ€ข leaders decides if it's ready -- quick examination โœ–โœฃโœข โœ—โœ™โœ˜

  23. ๏ฟฝ โ˜Ž โœ• โœ– โœ– โœ‚ โœ— โœš โœž โœ˜ โœ› โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ˜ โœšโœœ โœš โœ  โœž โœš ๏ฟฝโœ’ ๏ฟฝ โœ” โœ— โ˜ž โ˜› โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ“ โœ  โœก โ˜Ž โœ† โœž โœ โœ  ๏ฟฝโœ’ โœŽ โœ‘ ๏ฟฝ โœŽ โœ โœŒ โ˜ž Kickoff โ€ข initial meeting for all participants โ€ข organized by leader โ€ข familiarize everyone involved with task at hand โ€ข define everyoneโ€™s roles โ€ข hand out materials needed โ€ข deal with general questions โ€ข set goals โ€ข discuss overall plan, timetable โ€ข long documents divided into "chunks": separate inspection & logging for each chunk โœ–โœฃโœข โœ—โœ™โœ˜

  24. ๏ฟฝ โœฆ โœฅ โœฌ โœฎ โœง โœฑ โœงโœฌ โœซ โœง โœช โœง โœฉ โœงโ˜… โœฆ โœฅ โœ โœ“ โœ’ โœ› โœž โœฑ โœฎ โœ› โœฉ โœฎ โœง โœญ โœงโœฌ โœซ โœง โœฆ โœช โœงโ˜… โœช โœฆ โœฅ โœง โœฑ โœดโœฐ โœฐ โœญ โœฌ โœฒ โœ  โœ’ โœฌ โœž โœ” โœ’ โœ“ โœŽโœ’ โœ‘ โœ โœŽ โœ โœŒ โ˜ž โœ  โ˜› โ˜ž โ˜Ž โœก โœ  โœ† โœŸ โœž โœ โ˜Žโœ† โ˜Ž โœ„ โœ‚ โœ›โœข โ˜ž โœ• โœž โœ„ โ˜Ž โ˜Žโœ† โœœ โœ™ โœž โœ› โœ˜ โœ˜ โœ— โœ— โœ„ โœ™ โœ– Individual Checking (1) โ€ข each checker works alone using documents handed out in kick-off meeting โ€ข aims to find maximum number of unique major potential defects โ€ข mainly by looking for discrepancies between source documents and products being inspected, i.e.: โœญโœฏโœฎ โœญโœฏโœฐ โœชโœณโœฒ โœถโœธโœท โœญโœฏโœฎ โœญโœฏโœฐ โœญโœฏโœต โœ—โœคโœฃ โœ˜โœšโœ™

  25. ๏ฟฝ โœ† โœฌ โ˜Ž โœต โœฐ โœฎ โœฎ โœช โœถ โœช โœ โœช โœซ โœต โœท โœด โœญ โœฅ โœฐ โœญ โœฐ โœช โœง โœฅ โœฑ โœง โœฎ โœด โœฆ โœต โœท โœญ โœช โœฐ โœฌ โ˜Ž โœถ โœฐ โœด โœต โœฎ โœ‚ โœฅ โœ โœช โœฌ โœญ โœงโœฌ โœญ โœž โœฎ โœฌ โœฉ โœฒ โœฒ โœง โœฎ โœญ โœช โœฐ โœฐ โœฐ โœฎ โœง โœช โœ† โœถ โœง โœฑ โœง โœ โœด โœช โœญ โœฅ โœž โ˜… โœฉ โœง โœฎ โœญ โœฒ โœท โœฌ โœ˜ โœ” โ˜ž โ˜ž โœ• โœ– โœ— โœ— โœ˜ โœ“ โœ› โœž โœ™ โœœ โœ„ โ˜Ž โ˜Žโœ† โœž โœ’ โœŽโœ’ โœ™ โœก โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โœ  โ˜Ž โœ‘ โ˜› โœž โœ  โ˜ž โœŒ โœ โœŽ โœ โœ„ โœ›โœข โœงโœฌ โœฉ โœญ โœง โœช โœฎ โœ‚ โœ„ โœฐ โœฆ โœถ โœต โœง โœฆ โœฑ โœฐ โœด โœฉ โœซ โœท โœฆ โœท โœ’ โœด โœช โœต โœ โœญ โœฅ โœ› โœ  โœž โœ› โœ’ โœ“ Individual Checking (2) โ€ข usually uses a checklist โ€ข kickoff meeting suggests amount of time to spend: โœญโœฏโœต โ€ข checker records actual time taken โ€ข keeps notes of issues found โ€ข "issue" = matter requiring attention โœ—โœคโœฃ โœ˜โœšโœ™

  26. ๏ฟฝ โ˜Ž โœ– โœ— โœ— โœ“ โœ˜ โœ› โœž โœ™ โœœ โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ• โœ˜ โ˜ž โ˜› โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ” โœ† โœก โ˜Ž โœ  โœž โœ โœ’ โœ“ โœ  โœ‘ โœŽโœ’ โœŽ โœ โœŒ โ˜ž Logging Meeting (1) โ€ข 3 purposes: โ€“ log issues identified by each checker โ€“ work as group to find more issues โ€“ suggestions for process improvement (inspection process and overall software process) โ€ข controlled by moderator (usually the leader) โ€“ must be very skilled in handling people and issues โ€“ maintain time discipline and issue discipline โ€ข no evaluation of issues โ€“ just log issues, like brainstorming โœ—โœคโœฃ โœ˜โœšโœ™

  27. ๏ฟฝ โœšโœœ โœ โœโœ’ โœš โœž โœ  โœš โœ˜ โœฅโœฆ โœ„ โœž โ˜Žโœ† โœ โœ„ โœ› โœค โœง โœž โœฅ โœฅโœฏ โœฉ โœง โœญ โœญ โœฎ โœฉ โ˜… โ˜… โœชโœญ โœช โœฌ โœชโœซ โœฉ โœ˜ โ˜Ž โœš โœž โ˜Ž โœŽ โœ โœŒ โ˜ž โœ  โ˜› โ˜Žโœ† โ˜Ž โœก โœ  โœ† โœŸ โœž โœ„ โœ โœ‚ โœ– โœ— โœ— โœ โœ‘ โœŽ โœโœ’ โœ โœ“ โ˜ž โ˜ž โœ” โœ• โœ– Logging Meeting (2) โ€ข must not last more than 2 hours โ€ข not for explaining, defending, suggesting fixes, or training โ€ข identify issues, then log them โ€ข issues can be questions to product author and suggestions for improvements โ€ข NOT an attack or evaluation of product author โ€ข management personnel should NOT be in attendance โœ–โœฃโœข โœ—โœ™โœ˜

  28. ๏ฟฝ โœ„ โœ• ๏ฟฝ โœ– โœ— โœ— โœš โœ โœ˜ โœ› โœ‚ โœ„โ˜Ž โ˜› โœ โœ‚ โœ˜ โœšโœœ โœš โœŸ โœ โœš โœ‘ โœ’ โœ‘ โœ” โœ– โ˜› โœก โœ โœ‚ โœ„ โœ„โ˜Ž โœ† โœ โœž โ˜Ž โœ“ โœ  โœ„ โœŸ โœ โœŽ โœ‘ โœ’ โœŸ โœ โœโœ‘ โœ โœŒ โ˜ž โ˜› Edit โ€ข log of issues given to author to resolve โ€ข author can โ€“ classify or reclassify issues (which are really defects) โ€“ voluntarily improve product as per issues raised โ€“ request rules or checklist be changed โœ–โœฃโœข โœ—โœ™โœ˜

  29. ๏ฟฝ โœ„โ˜Ž โœ– โœ โœ— โœ— โœš โœ โœ˜ โœ› โœ‚ โœ„ โœ โœ” โœ‚ โœ˜ โœšโœœ โœš โœŸ โœ โœš โœ‘ โœ’ โœ‘ โœ• โœ– โ˜› โœ โœ‚ โœ„ โœ„โ˜Ž โœ† โœ โœž โ˜Ž โœŸ โ˜› โœ„ โœก โœ  โœŸ โœ โœ“ โœ‘ โ˜› โœโœ‘ โœ’ โœŽ โœ โœŒ โ˜ž Follow-up โ€ข inspection leader makes sure satisfactory closure has taken place on all issues โ€“ actions to correct all defects (change or change request) โ€“ suggestions for process changes reported โ€ข if major changes, product may need to be inspected again โœ–โœฃโœข โœ—โœ™โœ˜

  30. ๏ฟฝ โœ„ โœ• ๏ฟฝ โœ– โœ— โœ— โœš โœ โœ˜ โœ› โœ‚ โœ„โ˜Ž โ˜› โœ โœ‚ โœ˜ โœšโœœ โœš โœŸ โœ โœš โœ‘ โœ’ โœ‘ โœ” โœ– โ˜› โœก โœ โœ‚ โœ„ โœ„โ˜Ž โœ† โœ โœž โ˜Ž โœ“ โœ  โœ„ โœŸ โœ โœŽ โœ‘ โœ’ โœŸ โœ โœโœ‘ โœ โœŒ โ˜ž โ˜› Exit โ€ข need exit criteria โ€ข need closure on all issues in writing โ€ข record metrics for inspection process (for process improvement) โ€ข product now considered โ€œsafeโ€ to pass on to next phase in software development โœ–โœฃโœข โœ—โœ™โœ˜

  31. ๏ฟฝโœ โ˜Ž โœ— โœ— โœ˜ โœ˜ โœ‚ โœ› โœž โœ™ โœœ โœ„ โ˜Žโœ† โœ• โœž โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ– โ˜ž โœ’ โ˜› โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โœ  โœก โ˜Ž โœž โ˜ž โœ  โ˜ž โœŒ โœ โœŽ โœ โœ‘ โœŽโœ’ โœ“ โœ’ โœ” The V-model Requirem ents System Test Inspection Architecture Integration Test Inspection Unit Test Design Inspection Inspection Code Cost of running inspections is about 10-15% of cost of development budget. โœ—โœคโœฃ โœ˜โœšโœ™

  32. ๏ฟฝ โ˜Ž โœ– ๏ฟฝ โœ— โœ˜ โœ˜ โœ› โœž โœ™ โœœ โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ• โœ— โ˜ž โ˜› โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โœ” โœก โ˜Ž โœ  โœž โœ โœ’ โœ“ โœ  โœ‘ โœŽโœ’ โœŽ โœ โœŒ โ˜ž Costs of Inspection โ€ข Inspection takes time โ€ข Typically 10-15% of development budget โ€ข Also start-up costs: โ€“ establishing procedures โ€“ training leaders, inspectors โ€ข Is it worth it? โœ—โœคโœฃ โœ˜โœšโœ™

  33. ๏ฟฝ โ˜Ž โœ– ๏ฟฝ โœ— โœ˜ โœ˜ โœ› โœž โœ™ โœœ โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ• โœ— โ˜ž โ˜› โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โœ” โœก โ˜Ž โœ  โœž โœ โœ’ โœ“ โœ  โœ‘ โœŽโœ’ โœŽ โœ โœŒ โ˜ž Benefits of Inspection (1) โ€ข Defects found early save time and money โ€ข many defects found before testing โ€“ testing is much quicker โ€ข total development time is reduced โ€“ even when counting time for inspection โ€ข inspections increase productivity โœ—โœคโœฃ โœ˜โœšโœ™

  34. ๏ฟฝ โ˜Ž โœ– โœ— โœ โœ˜ โœ˜ โœ› โœž โœ™ โœœ โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ• โœ— โ˜ž โ˜› โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ” โœ  โœก โ˜Ž โœ† โœž โœ โœ’ โœ  โœŽโœ’ โœ‘ โœ“ โœŽ โœ โœŒ โ˜ž Benefits of Inspection (2) โ€ข Defects found early result in better product โ€ข inspection results in โ€“ cleaner design โ€“ better documentation โ€“ better code โ€“ fewer defects โ€“ defects that remain will be easier to fix when found โœ—โœคโœฃ โœ˜โœšโœ™

  35. ๏ฟฝ โ˜Žโœ† โœ— โœ— โœ‚ โœ˜ โœ› โœž โœ™ โœœ โœ„ โ˜Ž โœž โœ• โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ– โœ˜ โ˜ž โœž โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โ˜ž โœก โ˜Ž โ˜› โœ  โœ  โœ‘ โœ” โ˜ž โœ“ โœŽโœ’ โœ’ โœ โœŽ โœ โœŒ Benefits of Inspection (3) โ€ข feedback for mangement about software process: โ€“ inspector's comments plus metrics โ€ข defects found earlier means fewer deadline surprises โ€ข inspection trains inspectors: โ€“ learn from good code and documentation of others โ€“ learn from mistakes of others โœ—โœคโœฃ โœ˜โœšโœ™

  36. ๏ฟฝ โœ“ โ˜Ž โœ„ โœ‚ โœ‚ โœ ๏ฟฝ โœ’ โœ’ โœ  โœ› โœž โœ  โœ› โœ“ โœ™ โœ„ โœ† โœ† โ˜Žโœ† โ˜Ž โœž โ˜Ž โœ† โœŽโœ โœŒโœ โœ โœ† โœ„ โœŒโœ โœ’ โœ‘โœ’ ๏ฟฝ โ˜› โœž โ˜Ž โœ† โœŽโœ โœž โœ›โœข โ˜Ž โ˜Ž โœ โœŽ โœ โœŒ โ˜ž โœ  โœž โ˜› โœก โœ„ โœ  โœ† โœŸ โœž โœ โ˜Žโœ† โ˜Ž โœ„ โœ‚ โœ‘ โœŽโœ’ โœ“ โœ’ โœœ โœ™ โœž โœ› โœ˜ โœ˜ โœ— โœ— โœ– โ˜ž โœ• โ˜ž โœ” โ˜› Success Stories (1) โ€ข IBM Federal Systems Division โ€“ kept metrics for similar projects before and after introducing Inspection into development process โ€“ delivered lines of code per work-month: โœโœŸโœž โœกโ˜žโ˜› โœกโ˜žโ˜› โœ—โœคโœฃ โœ˜โœšโœ™

  37. ๏ฟฝ โ˜Ž โœ• โœ– โœ โœ— โœ— โœš โœž โœ˜ โœ› โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ˜ โœšโœœ โœš โœ  โœž โœš โœโœ’ โœ โœ” โœ– โ˜ž โ˜› โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ“ โœ  โœก โ˜Ž โœ† โœž โœ โœ โœ  โœŽ โœ‘ โœโœ’ โœŽ โœ โœŒ โ˜ž Success Stories (2) โ€ข ICL (in U.K.): โ€“ 57.7% of defects found by Inspection โ€“ cost of finding defect by Inspection: 1.58 work hours โ€“ cost of finding without Inspection: 8.47 work hours โ€“ only 6% of development time devoted to Inspection โœ–โœฃโœข โœ—โœ™โœ˜

  38. ๏ฟฝ โ˜Ž โœ• โœ– โœ‚ โœ— โœ— โœš โœž โœ˜ โœ› โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ˜ โœšโœœ โœš โœ  โœž โœš โœโœ’ โœ โœ” โœ– โ˜ž โ˜› โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โœ“ โœก โ˜Ž โœ  โœž โœ โœ โœ  โœŽ โœ‘ โœโœ’ โœŽ โœ โœŒ โ˜ž Success Stories (3) โ€ข Large IBM project: โ€“ 500,000 lines of code (networked operating system) โ€“ based on past experience without inspection, expected to find about 800 bugs during tests at trial site โ€“ used inspection at 11 stages of devopment โ€“ found 8 bugs at trial site! โœ–โœฃโœข โœ—โœ™โœ˜

  39. ๏ฟฝ โœ„ ๏ฟฝ โœ– โœ– โœ— โœ— โœš โœ โœ˜ โœ› โœ‚ โœ„โ˜Ž โ˜› โœ โœ‚ โœ˜ โœšโœœ โœš โœŸ โœ โœš โœ‘ โœ’ โœ‘ โœ” โœ• โ˜› โœก โœ โœ‚ โœ„ โœ„โ˜Ž โœ† โœ โœž โ˜Ž โœŸ โœ“ โœ„ โœ  โœ โœŽ โœ‘ โœ’ โœโœ‘ โœŸ โœ โœ โœŒ โ˜ž โ˜› Software Inspection Research (1) โ€ข Research into inspection โ€“ inspection process โ€“ techniques for individual inspectors โœ–โœฃโœข โœ—โœ™โœ˜

  40. ๏ฟฝ โœ โ˜ž โœ  โ˜Ž โœ โœ› โœ โœ‘ โ˜ž โœ— โœŒ โœ– โœ  โœ  โœŽ โœŽ โ˜› โœ  โœŽ โœœ โœ  โœŸ โœŒ โ˜Ž โ˜› โœ‚ โœ’ โœ‘ โœ โ˜› โœก โ˜› โœ‚ โœ‚ โ˜› โ˜Ž โœŸ โœ• โ˜ž โœ’ โœ„ โœ† โœ โœ โœŸ โœ“ โœ• โœ˜ โ˜Ž โœ โœ” โœ โœ โœŽ โœš โœ โœŒโœ โœ‚โ˜ž โ˜› โœ” โœ‚ โœ โœก โœŸ โœ  โœก โœ” โœ โœ™ โ˜› โœ โœ ๏ฟฝ โœ โœ  โœ” โ˜ž โœŸ โœ  โœŽ โœŒโœ โœ“ โ˜ž โœ‚ โ˜› โœ โœ“ โœŽ โœŽ โœ โœ‘ โœ” โœŸ โœ  โœ• โœ— โœ‘ โœ„ โ˜› โ˜› โœœ โ˜› โœ” โœ‚ โ˜› โœŸ โœข โœ• โœ‚ โœ โœ โœ‚ โœ  โ˜› โœŽ โœ โœŒ โ˜Ž โœ‚โ˜ž โ˜› โœ‚ โ˜› โ˜ž โœŽ โœ  โœ โœ โœ  โœ“ โœŽ โœ’ โœ‚ โ˜› โœœ โœŸ โ˜ž โœŒ โ˜Ž โ˜› โ˜Ž โœ  โœŸ โœก โœ‚ โœ‘ โœŽ โœ‘ โœ› โœ‚ โœ„ โœ„โ˜Ž โœ โœ‚ โœ˜ โœšโœœ โœš โœŸ โœ โœš โœ‘ โœ’ โœ โœ โœŒโœ โœ โœ‚ โœŸ โœ  โœŽ โœ โœ‚โ˜ž โœ‚ โ˜› โœก โœ  โœŸ โ˜Ž โœ„ โœ˜ โœš โœ„ โ˜› โœ โœ‚ โœ„ โœ„โ˜Ž โœ† โœ โœž โ˜Ž โœŸ โœ  โœ„ โœก โœ โœŸ โ˜ž โœ— โ˜› โœ— โœ– โœ– โœ• โœ” โ˜› โœ“ โœŒ โœ‘ โœ’ โœโœ‘ โœ โœŽ โœ โœ‚ โ˜ž โ˜Ž โœ‚โœ’ โœ‘ โœŸ โœ‘ โœŒ โœ‚ โ˜› โ˜› โœ— โœ– โœŸ โœ  โœ• โ˜ž โ˜Ž โœ— โœ โœ โœ• โ˜› โœ‚โœ’ โ˜› โœ– โœŸ โœ  โ˜ž โœ— โ˜Ž โœ‘ โœ โœŽ โœ” โœ‚ โœ‘ โœ‘ โœŽ โœ โ˜ž โœŽ โœ โœŒโœ โ˜ž โœ‚ โ˜› โ˜Ž โœ‚โœ’ โœ‘ โœ โœŽ โœก โœ  โœŸ โ˜› โœ– โ˜ž โœ โœ โœŽ โœ” โœ  โœ“ โœ โœ‘ โ˜Ž โœ โ€ข research at Lucent Technologies (University Software Inspection โ€“ experiment where they varied โœ–โœฃโœข โœ†โœžโœ Research (2) โ€“ one of the conclusions โœ—โœ™โœ˜ of Maryland) โœ†โœžโœ โœ†โœžโœ

  41. ๏ฟฝโœ โ˜› โœœ โœ โœ‘ โ˜ž โœ โœŸ โœ โœ“ โ˜ž โœ  โœก โœฆ โœ„ โœ โœ‘ โœ โœŽ โœ  โœ“ โœ โœŸ โœ  โœ— โœ โœก โœŸ โœ‘ โœŽ โœ โ˜ž โœŽ โœ โ˜ž โ˜› โœ‚ โœข โœ• โ˜› โœŽ โœ“ โœ‘ โ˜ž โœ  โœŸ โœ„ โ˜› โœ‚ โ˜ž โœŒโœ โœ โœ– โœ  โœ  โœโœ โœ‚ โ˜ž โœ‘ โœ‚ โœ” โ˜ž โœ‚ โœ• โœ‘ โœŸ โ˜› โœ  โ˜ž โœŽ โœ  โœŽ โ˜› โœ‚ โ˜ž โœ‘ โœŽโœ’ โœ“ โœ’ โœ” โ˜ž โœ• โœŽ โœ– โœ— โœ— โœ˜ โœ˜ โœ› โœ โœ โœ™ โœ† โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ  โœŒ โœก โ˜Ž โ˜› โœž โœ  โ˜ž โœž โœœ โœก โœ„ โœ— โœ โ˜ž โœŸ โœ„ โœ  โœข โœŽ โœ„ โœŒ โœฅ โœ’ โœ โœ โœŽ โœ› โœ„ โ˜Ž โ˜Žโœ† โœ“ โœ’ โœ› โœž โœ  โœ’ โœž โœ›โœข โœ™ โ€ข new techniques to help guide inspectors in Software Inspection โœ—โœคโœฃ โ€“ scenario-based reading Research (3) โœ˜โœšโœ™ their work

  42. ๏ฟฝ โ˜Ž โœ– โœ— โœ— ๏ฟฝ โœ˜ โœ› โœž โœ™ โœœ โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ• โœ˜ โ˜ž โ˜› โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ” โœ† โœก โ˜Ž โœ  โœž โœ โœ’ โœ“ โœ  โœ‘ โœŽโœ’ โœŽ โœ โœŒ โ˜ž Checklists โ€ข common guidance used for inspections โ€ข good checklists are hard to make up โ€“ rely on past experience โ€“ can get too long and unwieldy โ€“ need to be updated as new situations arise โ€“ inspectors have a tendency to follow the checklist and do no more โ€“ can be misinterpreted โ€“ may not cover everything necessary to the right level of detail โœ—โœคโœฃ โœ˜โœšโœ™

  43. ๏ฟฝ โœฎ โœฐ โœญ โœฆโœด โœฎ โœณ โ˜… โœฌ โœช โœฏ โœฌ โœฌ โœญ โœน โœช โœช โœฆ โœฅ โœง โœง โœ โœ’ โœด โ˜… โœ’ โœท โœณ โœช โœง โœฌ โœบ โ˜… โœฌ โœฎ โœฆ โœญ โœต โœน โœช โ˜… โœญ โœญ โœญ โœฆโœฑ โœท โœถ โœช โœฎ โœ“ โœ› โœž โœ’ โœ“ โœŽโœ’ โœ‘ โœ โœŽ โœ โœŒ โ˜ž โœ  โ˜› โ˜ž โ˜Ž โœก โœ  โœ† โœŸ โœž โœ โ˜Žโœ† โ˜Ž โœ„ โœ‚ โœ” โ˜ž โœž โœ„ โœ  โœ› โœช โœ›โœข โœ™ โœ„ โœž โ˜Žโœ† โœ• โ˜Ž โœœ โœ™ โœž โœ› โœท โœ˜ โœ˜ โœ— โœ— โœ– โœฌ Approach for Checklists โ€ข (general approach for inspections as well) โ€ข determine what qualities are important for the software system โ€ข determine what software design/code characteristics contribute to those qualities โ€ข determine what you want the inspectors to look for โœงโœฉโ˜… โœซโœฉโœฌ โœฐโœฒโœฑ โœธโœฉโœฌ โœซโœฉโœฌ โ€ข checklist used for Assignment 4 is based on McCall's Quality Model โœ—โœคโœฃ โœ˜โœšโœ™

  44. McCall's Quality Model

  45. ๏ฟฝ โ˜Ž โœ– โœ— โœ— โœ โœ˜ โœ› โœž โœ™ โœœ โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ• โœ˜ โ˜ž โ˜› โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ” โœ  โœก โ˜Ž โœ† โœž โœ โœ’ โœ  โœŽโœ’ โœ‘ โœ“ โœŽ โœ โœŒ โ˜ž Testing โ€ข Now we move to the subject of testing โ€ข Recall that software process should include both testing and inspection โ€ข Inspecting documents & code before testing results in fewer defects for testing to find โ€“ speeds up testing โ€ข A bit of informal testing before code inspection might save time โ€“ get rid of obvious bugs quickly โœ—โœคโœฃ โœ˜โœšโœ™

  46. ๏ฟฝโœ โ˜Žโœ† โœ– โœ– โœ‚ โœ— โœš โœž โœ˜ โœ› โœ„ โ˜Ž โœž โœ” โœ„ โœ˜ โœšโœœ โœš โœ  โœž โœš โœ’ โœ โœ’ โœ• โœ— โ˜ž โœž โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โ˜ž โœก โ˜Ž โ˜› โœ  โœ  โœ‘ โœ“ โ˜ž โœ โœŽโœ’ โœ’ โœ โœŽ โœ โœŒ Testing is Hard! โ€ข hits budget and schedule limits โ€ข may include heavy debugging โ€“ may even include product (re-)development โ€ข bugs slip through to customers โ€“ user executes untested code โ€“ order in which statements are executed in actual use differ from that in testing โ€“ user applies combination of untested input values โ€“ userโ€™s operating environment is never tested โœ–โœฃโœข โœ—โœ™โœ˜

  47. ๏ฟฝ โœŸ โœก โœก โœ† โœ’ โ˜ž โœ’ โœ– ๏ฟฝ โ˜Ž โœ โœ โœž โœ— โœ โœ โœ โœž โœŸ โœŽ โœข โœ โ˜Ž โœž โœŸ โ˜ž โœ โœฆ โ˜ž โœ“ โœŸ โœ“ โœŸ โœ™ โœ“ โœŸ โœ โœž โœ โœก โœ™ โœ† โœ โœก โœค โœ โœ โœ† โœŸโœ“ โœ โœ† โœ โœ โœ† โœ’ โœŒ โœก โœ โœฅ โœ› โœ“ โœž โœ— โœก โœ โœ โœž โœ™ โœŸ โœ โœ โ˜ž โœ™ โœŸ โœ โœ™ โœ โœž โœฅ โ˜ž โœ’ โœ โœ† โœ โœ— โ˜ž โœŽ ๏ฟฝ โœ โœ— โœ โœ โœ โœ’ โ˜ž โœก โœž โœ† โœ โœŸ โœก โœ™ โœ โœŽ โœก โ˜ž โœ โœฅ โœ โœŸ โœ– โœœ โœก โœโœ โœ’ โœ† โœ’ โ˜ž โœ’ โœ“ โœ› โœ— โœŸ โœ† โœ’ โ˜ž โœ’ โœ– โœŸ ๏ฟฝ โœ† โœ โœŸ โœ™ โœœ โœก โœ โœ โœค โœก โœก โœ“ โœ โœก โœ’ โœ โœž โœ โœฅ โœง โ˜ž โœž โœŽ โœค โœก โœ› โœ† โœ— โœก โœ† โœ’ โœ† โ˜ž โœ โœ† โœโœ โœ† โœ‚ โ˜Ž ๏ฟฝ โœ’ โœ’ โœž โœš โœž โœ  โœš โœšโœœ โœ˜ โœ„ โœ โœ โ˜Žโœ† โœž โœŸ โ˜Ž โœก โœ† โœก โœ โœโœŽ โœŸ โœŸ โœก โœ โœŒ โ˜ž โœ โœž โœ† โœž โ˜Ž โœ โœ  โœŒ โ˜ž โœ  โœž โ˜› โ˜Ž โœก โœ† โœŽ โœŸ โœž โœ โ˜Žโœ† โ˜Ž โœ„ โœ‚ โœ โœ โœ„ โœ– โœ› โœ˜ โœž โœš โœ— โœ— โœ– โœ• โœ‘ โœ” โ˜ž โ˜ž โœ“ โœ’ โœ โœŽโœ’ โœŽ โœž โœ ๏ฟฝ โœก โœ† โœ’ โ˜ž โœ’ โœ– โœŸ โœ† โœ โœœ โœก โœ โœก โœž โœš โœ† โœ โ˜ž โœ โœ› โœ’ โœ– โœŸ ๏ฟฝ โœโœ โœ โœŸ โœ† โœ โœโœ โœ† โœ™ โœก โœก โ˜Ž โœ† โœ› โœž โœŸ โœž โœŒ โœ• โ˜Ž โœ† โœ โœ โœ† โœŸ โ˜Ž โœž โœ‘ โ˜ž โœ โœž โœ โœ โœ ๏ฟฝ โœ‚ โœ† โœ’ โœ™ โœ† โœโœ โœ™ โ˜Ž โœ โ˜›โœก โœ’โœ”โœ“ โ€ข testers who are developers must have Skills of a Tester (1) โœ–โœฃโœข โ€ข Not all testers are developers โœ’โœ”โœ› โœ—โœ™โœ˜ โœ โ˜›โœก โœ’โ˜›โœฆ โœ–โœ˜โœ— โœ’โœ”โœ“ โœ†โœฃโœข โœ†โœฃโœข โœ†โœฃโœข โœ†โœฃโœข โœ’โœ”โœ“ โœโœ„โœ‚ โœโœ„โœ‚

  48. ๏ฟฝ โœก โœ โœ โœž โ˜Ž โœฅ โœ› โœค โœ’ โœŽ โœ— โœ† โœ โœž โœŽ โœ“ โ˜Ž โœก โœก โœ โœ โœ โœก โœœ โœ โœœ โœ“ โœ† โœŒ โœŸ โœž โœ โœ โœž โ˜Ž โœž โœ“ โ˜ž โœ โœฅ โœ โ˜ž โœฆ โœก โœ โœŒ โ˜ž โœ โœ™ โ˜Ž โœ โœค โœ† โœž โœŽ โœŸ โœค โœค โ˜Ž โœฅ โœก โœ โœ โœž โœŸ โœ† โ˜Ž โœ โœข โœ— โ˜ž โœ โ˜Ž โœ› โœ โœ˜ โœ˜ โœ— โœ„ โœ— โœ– โœ• โ˜ž โ˜ž โœ” โœ’ โœ“ โœŽโœ’ โœ™ โ˜› โœž โœŸ โœ† โœ  โœก โ˜Ž โœž โœ‘ โœ  โ˜ž โœŒ โœ โœŽ โœ โœž โœœ โ˜Žโœ† โœ„ โœ† โ˜Ž โœ‚ โœ™ โœŸโœ“ โœ† โœ โœž โœ โœ™ โœ“ โœ— โœฅ โœ โœ’ โœ“ โ˜Ž โ˜Žโœ† โœž โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ’โœ”โœ“ Skills of a Tester (2) โ€ข More skills employers look for: โœ—โœคโœฃ โ€“ software engineering skills โ€“ hands-on experience โ€“ communication skills โœ’โœ”โœ“ โœ˜โœšโœ™ โ€“ organizational skills โœ’โœ”โœ“ โœ’โœ”โœ“

  49. ๏ฟฝ โ˜Ž โœ– โœ— โœ โœ˜ โœ˜ โœ› โœž โœ™ โœœ โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ• โœ— โ˜ž โ˜› โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ” โœ  โœก โ˜Ž โœ† โœž โœ โœ’ โœ  โœŽโœ’ โœ‘ โœ“ โœŽ โœ โœŒ โ˜ž Attitude For Testers โ€ข destructive creativity โ€ข detective skills โ€ข understanding the product as the sum of its parts โ€ข appreciating the customerโ€™s perspective โ€ข requirements change โ€ข skeptical but not hostile attitude โ€ข ability to be the bearer of bad news and remain objective โ€ข an eagerness to embrace new technologies โœ—โœคโœฃ โœ˜โœšโœ™

  50. ๏ฟฝ โ˜Ž โœ– โœ— โœ— ๏ฟฝ โœ˜ โœ› โœž โœ™ โœœ โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ• โœ˜ โ˜ž โ˜› โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ” โœ  โœก โ˜Ž โœ† โœž โœ โœ’ โœ  โœŽโœ’ โœ‘ โœ“ โœŽ โœ โœŒ โ˜ž Definitions of Testing (1) โ€ข Myers, Glenford J., The Art of Software Testing, Wiley, 1979 โ€“ โ€œThe Process of executing a program with the intent of finding errorsโ€ โ€ข Hetzel, Bill, A Complete Guide to Software Testing, QED Information Sciences Inc., 1988 โ€“ "Testing is any activity aimed at evaluating an attribute or capability of a program or system and determining that it meets its required results." โœ—โœคโœฃ โœ˜โœšโœ™

  51. ๏ฟฝ โ˜Ž โœ– โœ— โœ— ๏ฟฝ โœ˜ โœ› โœž โœ™ โœœ โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ• โœ˜ โ˜ž โ˜› โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ” โœ† โœก โ˜Ž โœ  โœž โœ โœ’ โœ“ โœ  โœ‘ โœŽโœ’ โœŽ โœ โœŒ โ˜ž Definitions of Testing (2) โ€ข IEEE Standard 610.12-1990 โ€“ โ€œThe process of operating a system or component under specified conditions, observing or recording the results, and making an evaluation of some aspect of the system or componentโ€ โ€ข IEEE Standard 829-1983 โ€“ โ€œThe process of analyzing a software item to detect the differences between existing and required conditions (that is , bugs) and to evaluate the features of the software itemsโ€ โœ—โœคโœฃ โœ˜โœšโœ™

  52. ๏ฟฝ โ˜Žโœ† โœ— โœ— โœ˜ โœ‚ โœ› โœž โœ™ โœœ โœ„ โ˜Ž โœž โœ• โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ– โœ˜ โ˜ž โœž โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โ˜ž โœ  โ˜Ž โ˜› โœก โœ  โœ‘ โœ” โœ’ โ˜ž โœŽโœ’ โœ“ โœ โœŽ โœ โœŒ Purposes of Testing โ€ข To find bugs - including bugs in the tests! โ€ข To estimate reliability in use by tracking the execution time interval between failures โ€ข To estimate defects remaining by tracking the defects found per person-hour of testing and debugging time โ€ข To decide on when to release: e.g. by deciding that the remaining known defects are acceptable in the target market โ€ข To learn where process problems are by classifying and counting defects found โœ—โœคโœฃ โœ˜โœšโœ™

  53. ๏ฟฝ โ˜Žโœ† โœ— โœ— โœ˜ โœ‚ โœ› โœž โœ™ โœœ โœ„ โ˜Ž โœž โœ• โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ– โœ˜ โ˜ž โœž โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โ˜ž โœ  โ˜Ž โ˜› โœก โœ  โœ‘ โœ” โœ’ โ˜ž โœŽโœ’ โœ“ โœ โœŽ โœ โœŒ What Testing Can't Do โ€ข Testing can't guarantee code is correct โ€ข You can't try every possible combination of inputs, every environment โ€ข Rigorous testing increases confidence that software runs correctly, or that few bugs remain โ€ข For some critical software, formal mathematical methods used to "prove" correctness โ€“ but that's another topic for other courses โœ—โœคโœฃ โœ˜โœšโœ™

  54. ๏ฟฝ โ˜Ž โœ– โœ— ๏ฟฝ โœ˜ โœ˜ โœ› โœž โœ™ โœœ โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ• โœ— โ˜ž โ˜› โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ” โœ  โœก โ˜Ž โœ† โœž โœ โœ’ โœ  โœŽโœ’ โœ‘ โœ“ โœŽ โœ โœŒ โ˜ž Stages of Testing (1) โ€ข Requirements and Design testing โ€“ when requirements and design are written in special languages which permit "execution" to simulate actual system โ€ข User Interface testing โ€“ Often done at prototyping stage โ€ข Unit/Module Testing โ€ข Component/subsystem Testing โœ—โœคโœฃ โœ˜โœšโœ™

  55. ๏ฟฝโœ โ˜Žโœ† โœ— โœ— โœ˜ โœ‚ โœ› โœž โœ™ โœœ โœ„ โ˜Ž โœž โœ• โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ– โœ˜ โ˜ž โœž โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โ˜ž โœ  โ˜Ž โ˜› โœก โœ  โœ‘ โœ” โœ’ โ˜ž โœŽโœ’ โœ“ โœ โœŽ โœ โœŒ Stages of Testing (2) โ€ข Integration Testing โ€“ Incremental Testing -the usual version of integration testing. โ€ข Daily builds and Sanity testing โ€ข System Testing โ€“ Performance and Load/Stress Testing โ€“ Usability Testing, but this is a late stage to be doing it! โœ—โœคโœฃ โœ˜โœšโœ™

  56. ๏ฟฝ โ˜Ž โœ– โœ“ โœ— โœ˜ โœ˜ โœ› โœž โœ™ โœœ โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ• โœ— โ˜ž โ˜› โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โœ” โœก โ˜Ž โœ  โœž โœ โœ’ โœ“ โœ  โœ‘ โœŽโœ’ โœŽ โœ โœŒ โ˜ž Stages of Testing (3) โ€ข Alpha and Beta Testing โ€“ alpha = testing full system in-house โ€“ beta = outside users โ€ข Acceptance Testing โ€ข Installation/Compatibility Testing โ€ข Platform/Configuration/Port testing โœ—โœคโœฃ โœ˜โœšโœ™

  57. ๏ฟฝ โœ  โœก โœ‘ โœž โœ โœ‚ โœ‚ โœž โ˜ž โ˜Ž โœŸ โœž โœ‘ โœž โœ“ โœ  โœ‚ โœ‘ โœŒ โœŒ โœโœž โ˜ž โœ  โœโœž โœ‚ โœ’ โœŸ โœŒ โ˜ž โœ“ โœ‚ โœ‘ โœก โœž โœŽ โœ‚ โœ  โœค โœฃ โœข โœœโœข โœŒ โœž โœก โœก โœ โ˜ž โœ  โœŒ โœž โœ’ โœโœž โœŸ โœ  โœ— โ˜ž โœ โœฅ โœž โœ‘ โœ† โ˜ž โœ  โœก โœ“ โœ‚ โœ  โœž โœ โ˜ž โœ“ โœ‘ โœ› โ˜… โœฌโœญ โœซ โœ™ โœฅ โœก โœ โœค โœ‘ โœฉ โœช โœฉ โ˜… โœ› โœง โœ โœ‚ โœž โœ  โœŒ โœž โœ  โ˜ž โœ† โœŒ โœŒ โœ  โœž โœ  โœ— โœ‚ โ˜Ž โœ‚ โœ› โœฆ โ˜Ž โœก โœ“ โœ‚ โœŸ โœ‚ โ˜ž โœ  โ˜Ž โœ‚ โ˜ž โœ“ โ˜ž โœ  โœ‘ โœž โ˜Ž โœŸ โœ โœ‚ โœ‘ โœก โœ โœŸ โœŒ โœก โœ  โœ“ โœž โ˜Ž โœŸ โœก โœ โœ‘ โœ‚ โœ’ โœ› โœž โœ› โœ’ โœ“ โœ’ โœ› โœž โœ  โœ›โœข โ˜Ž โœ™ โœ„ โœž โ˜Žโœ† โ˜Ž โœ„ ๏ฟฝ โœ† โœ™ โœŸโœŒ โœ โœ  โœž โœ  โœŒ โ˜ž โœ‚ โœโœž โ˜Ž โœŸ โœ‚ โ˜ž โœ  โœŸ โœœ โœž โœ  โœ† โœ  โœž โ˜› โ˜Ž โœก โœ  โœŸ โœŒ โœž โœ โ˜Žโœ† โ˜Ž โœ„ โœ‚ โ˜ž โœ โœ› โ˜ž โœ˜ โœ˜ โœ— โœ— โœ– โœ• โ˜ž โœŽ โœ” โœ’ โœ“ โœŽโœ’ โœ‘ โœ โ˜ž โœŸ โœž โœž โœ‘ โœ† โœŒ โœ‘ โœŒ โœ’ โ˜ž โœŸ โœž โœ  โœž โœŸ โœ‘ โœ‘ โœก โœŒ โ˜ž โœ‚ โœŸ โ˜ž โœŒ โœ โœŽ โœก โœ  โœ— โœก โ˜Ž โœ  โ˜ž โœ— โœ  โœž โœ‚ โœ โœ† โ˜Ž โœ  โœ’ โœโœž โœŒ โœ โ˜ž โœก โœŸ โœก โœ‚ โœ† โœ  โ˜Ž โ˜ž โœ โœ โœž โ˜ž โœ  โœž โœ“ โœŸ โ€ข Security/Fault Tolerance/Recovery testing โœ โ˜›โœก โœโœšโœ™โœ› Stages of Testing (4) โ€ข Reliability/Certification Testing โœ—โœ•โœ˜ โ€ข Integrity and Release testing โœŽโœ„โœ โœ—โœคโœฃ โ˜žโœ–โœŒ โœŽโœ•โœ” โœ˜โœšโœ™ โ€ข Regression Testing โœ—โœ„โœž โœ—โœ„โœ โœ โ˜›โœก โœโœ•โœ” โœโœ„โœž โœโœ„โœ‚

  58. ๏ฟฝโœ โ˜Žโœ† โœ‚ โœ— โœ˜ โœ˜ โœ› โœž โœ™ โœœ โœ„ โ˜Ž โœž โœ• โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ– โœ— โ˜ž โœž โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โœ  โœก โ˜ž โ˜› โ˜Ž โœ  โœ‘ โœ” โœ’ โœ“ โ˜ž โœŽโœ’ โœ โœŽ โœ โœŒ Black Box Testing โ€ข pick test cases based on requirements only โ€ข don't use knowledge of implementation โ€ข view code as a black box: insides not visible โ€ข can be used at any stage: โ€“ unit, subsystem, system testing โœ—โœคโœฃ โœ˜โœšโœ™

  59. ๏ฟฝโœ โ˜Žโœ† โœ— โœ— โœ‚ โœ˜ โœ› โœž โœ™ โœœ โœ„ โ˜Ž โœž โœ• โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ– โœ˜ โ˜ž โœž โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โ˜ž โœก โ˜Ž โ˜› โœ  โœ  โœ‘ โœ” โ˜ž โœ“ โœŽโœ’ โœ’ โœ โœŽ โœ โœŒ Black-Box Testing Strategies โ€ข look at specifications for inputs โ€ข test normal use: โ€“ sampling of "normal" inputs (random values) โ€ข test abnormal use: โ€“ different kinds of erroneous/illegal input โ€“ combinations of errors โ€ข test boundary conditions: โ€“ values close to boundary between normal and abnormal โœ—โœคโœฃ โœ˜โœšโœ™

  60. ๏ฟฝ โ˜Ž โœ– โœ— โœ— โœ˜ โœ˜ ๏ฟฝ โœž โœ™ โœœ โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ• โœ› โ˜ž โ˜› โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ โœ” โœŸ โœ† โœ  โœก โ˜Ž โœž โœž โœ’ โ˜ž โœŒ โœ โœ  โœŽ โœ โœ‘ โœŽโœ’ โœ“ Example /** * Raises a number to an integral power. * * @param base the number to be raised to a power * @param pow the power to which base is to be raised. * Must not be negative. * @return base raised to the pow-th power */ static double power(double base, int pow) { โ€ข error inputs: negative values for pow โ€ข boundary cases: pow = 0, pow = 1, pow = -1 โ€ข normal cases: โ€“ pow >= 2, range of values โ€“ base: negative, 0, positive โ€“ combinations of these โœ—โœคโœฃ โœ˜โœšโœ™

  61. ๏ฟฝ โ˜Ž โœ– โœ— ๏ฟฝ โœ˜ โœ˜ โœ› โœž โœ™ โœœ โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ• โœ— โ˜ž โ˜› โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โœ” โœก โ˜Ž โœ  โœž โœ โœ’ โœ“ โœ  โœ‘ โœŽโœ’ โœŽ โœ โœŒ โ˜ž Possibilities For Automation โ€ข Ideal: tool to generate set of test cases and expected results from specifications โ€ข Reality: needs very precise, mathematical specifications, usually not available โ€ข So usually generate test cases & expected results by hand โ€ข Automated execution is still possible โœ—โœคโœฃ โœ˜โœšโœ™

  62. ๏ฟฝ โ˜Ž โœ– โœ— โœ— ๏ฟฝ โœ˜ โœ› โœž โœ™ โœœ โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ• โœ˜ โ˜ž โ˜› โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ” โœ  โœก โ˜Ž โœ† โœž โœ โœ’ โœ  โœŽโœ’ โœ‘ โœ“ โœŽ โœ โœŒ โ˜ž Test Harness โ€ข Takes set of test inputs & expected results โ€ข Runs program on each test input, compares results with expected โ€ข Reports any discrepancies โ€ข Complicated to write for GUIs, embedded systems, but often possible โ€ข Takes lots of drudgery out of testing โ€ข Makes testers willing to run and re-run large test suites โœ—โœคโœฃ โœ˜โœšโœ™

  63. ๏ฟฝ โ˜Ž โœ– ๏ฟฝ โœ— โœ˜ โœ˜ โœ› โœž โœ™ โœœ โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ• โœ— โ˜ž โ˜› โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โœ  โœ” โ˜Ž โœก โœž โœ โœ’ โœ“ โœŽโœ’ โœ  โœ‘ โœŽ โœ โœŒ โ˜ž White Box Testing โ€ข Pick test cases based on the actual software โ€ข also called "clear box" or "structural" testing โ€ข key word is coverage : โ€“ do the test cases cover all of the code? โ€ข different measures of coverage โœ—โœคโœฃ โœ˜โœšโœ™

  64. ๏ฟฝโœ โ˜Žโœ† โœ— โœ‚ โœ˜ โœ˜ โœ› โœž โœ™ โœœ โœ„ โ˜Ž โœž โœ• โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ– โœ— โ˜ž โœž โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โœ  โ˜ž โ˜Ž โ˜› โœก โœ  โœ‘ โœ” โœ’ โ˜ž โœŽโœ’ โœ“ โœ โœŽ โœ โœŒ Statement Coverage โ€ข Every statement in the software must be executed at least once by the test cases โ€ข Quote from text (Murray): โ€“ "Testing less than this for new software is unconscionable and should be criminalized" โ€ข NASA story โœ—โœคโœฃ โœ˜โœšโœ™

  65. ๏ฟฝ โ˜Ž โœ– โœ— โœ โœ˜ โœ˜ โœ› โœž โœ™ โœœ โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ• โœ— โ˜ž โ˜› โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ” โœ  โœก โ˜Ž โœ† โœž โœ โœ’ โœ  โœŽโœ’ โœ‘ โœ“ โœŽ โœ โœŒ โ˜ž Branch Coverage โ€ข Every branch alternative must be covered by at least one test case โ€ข More demanding than statement coverage: if (x > 3) y = 14; // continue -- no else part โ€ข We need at least one test case where x > 3 is and at least one where x > 3 is false. โœ—โœคโœฃ โœ˜โœšโœ™

  66. ๏ฟฝ โœ“ โœ™ โœœ โœ„ โ˜Ž โ˜Žโœ† โœž โœ„ โœ“ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ’ โœ› ๏ฟฝ โ˜Ž โœ† โœ† ๏ฟฝ โœ โœž โœโœŸ ๏ฟฝ โœ  โœก โ˜› ๏ฟฝ โ˜ž โœž โœ™ โ˜› โœŒ โ˜› โœž โœ  โœ  โœ† โœŸ โœž โœ โ˜Žโœ† โ˜Ž โœ„ โœ˜ โœก โ˜ž โ˜Ž โœ โœ“ โœ˜ โœ— โœ— โœ– โœ• โ˜ž โ˜ž โœ” โœ’ โœ‚ โœŽ โœŽโœ’ โœ‘ โœ Path Coverage โ€ข Every possible path through the program must be covered by at least one test case void tst(int x) { if (x>0) pos = pos+1; if (x%2==0) even = even+1; return; โˆš โˆš โœโœ„โœ‚ } โ€ข Needs 4 test cases: โˆš โˆš โœโœ„โœ‚ โ€“ all combinations alternatives โœ—โœคโœฃ โœ˜โœšโœ™

  67. ๏ฟฝโœ โ˜Ž โœ• โœ– โœ– โœ‚ โœ— โœš โœž โœ˜ โœ› โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ˜ โœšโœœ โœš โœ  โœž โœš โœ โœ’ โœ โœ” โœ— โ˜ž โœž โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โœ“ โœ  โ˜Ž โ˜› โœก โœ  โœ‘ โœ โœ’ โ˜ž โœŽ โœ โœ โœŽ โœ โœŒ Example void tst(int x) { if (x>0) pos = pos+1; if (x%2==0) even = even+1; } โ€ข Statement Coverage: tst(2) โ€ข Branch Coverage: tst(-1),tst(2) โ€ข Path Coverage: tst(-2),tst(-1),tst(1),tst(2) โœ–โœฃโœข โœ—โœ™โœ˜

  68. ๏ฟฝ โ˜Ž โœ• ๏ฟฝ โœ– โœ— โœ— โœš โœž โœ˜ โœ› โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ˜ โœšโœœ โœš โœ  โœž โœš โœ โœ’ โœ โœ” โœ– โ˜ž โ˜› โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โœ“ โœก โ˜Ž โœ  โœž โœ โœ โœ’ โœ  โœŽ โœ‘ โœ โœŽ โœ โœŒ โ˜ž What About Loops? โ€ข May require test cases which make each loop execute 0 times, 1 time, many times โ€ข for (int i = 0; i < n; i++) {...} โ€“ Test cases should include: โ€ข n <= 0 (no times around the loop) โ€ข n = 1 (one time around the loop) โ€ข n > 1 (several times around the loop) โœ–โœฃโœข โœ—โœ™โœ˜

  69. ๏ฟฝ โ˜Ž โœ โœ— โœ— โœ˜ โœ˜ โœ› โœž โœ™ โœœ โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ• โœ– โ˜ž โ˜› โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โœ  โœ” โ˜Ž โœก โœž โœ โœ’ โœ“ โœŽโœ’ โœ  โœ‘ โœŽ โœ โœŒ โ˜ž More About Loops โ€ข real time software generally runs inside an infinite loop โ€“ need to carefully define what you mean by path or loop coverage โœ—โœคโœฃ โœ˜โœšโœ™

  70. ๏ฟฝ โ˜Žโœ† โœ— โœ— โœ˜ โœ‚ โœ› โœž โœ™ โœœ โœ„ โ˜Ž โœž โœ• โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ– โœ˜ โ˜ž โœž โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โ˜ž โœก โ˜Ž โ˜› โœ  โœ  โœ‘ โœ” โ˜ž โœ“ โœŽโœ’ โœ’ โœ โœŽ โœ โœŒ Path Coverage: Impossible Combinations โ€ข Not all combinations are possible: if (x > 2) ... else ... if (x > 4) ... else ... โ€ข impossible to have first loop false, second true โ€“ no test case for that combination โœ—โœคโœฃ โœ˜โœšโœ™

  71. ๏ฟฝ โ˜Ž โœ– โœ— โœ— โœ˜ ๏ฟฝ โœ› โœž โœ™ โœœ โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ• โœ˜ โ˜ž โ˜› โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ” โœ† โœก โ˜Ž โœ  โœž โœ โœ’ โœ“ โœ  โœ‘ โœŽโœ’ โœŽ โœ โœŒ โ˜ž Path Coverage: Combinatorial Explosion โ€ข Large method with many branches and loops: โ€“ many combinations, lots of test cases โ€“ difficult to manage โ€“ May catch sepcial inputs that trigger an error โ€ข Full path coverage only practical for unit testing โœ—โœคโœฃ โœ˜โœšโœ™

  72. ๏ฟฝ โ˜Ž โœ– โœ— โœ— โœ˜ โœ˜ โœ› ๏ฟฝ โœ™ โœœ โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ• โœž โ˜ž โ˜› โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ” โœž โœŸ โœ† โœ  โœก โ˜Ž โœ โœž โ˜ž โœŒ โœ โœ  โœŽ โœ โœ‘ โœŽโœ’ โœ“ โœ’ Example static double power(double base, int pow) { double answer = 1; while (pow > 0) { if (pow % 2 == 0) { // pow is even pow = pow / 2; base = base * base; } else { // pow is odd pow = pow - 1; answer = answer * base; } // end if } // end while return answer; } // end power White box checklist: pow = 0, 1, 2, bigger (so while loop executed 0, 1, many times) even and odd powers to exercise both parts of if statement โœ—โœคโœฃ โœ˜โœšโœ™

  73. ๏ฟฝ โ˜Žโœ† โœ— โœ— โœ‚ โœ˜ โœ› โœž โœ™ โœœ โœ„ โ˜Ž โœž โœ• โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ– โœ˜ โ˜ž โœž โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โ˜ž โœก โ˜Ž โ˜› โœ  โœ  โœ‘ โœ” โ˜ž โœ“ โœŽโœ’ โœ’ โœ โœŽ โœ โœŒ Data Flow Testing โ€ข Another kind of white box testing โ€ข exercise (in order of weakest to strongest testing) โ€“ all input and output variables โ€“ both truth values of all predicates โ€“ all definitions of variables (eg variables on LHS of assignments) โ€“ all uses of variables that are defined โ€“ all loops โœ—โœคโœฃ โœ˜โœšโœ™

  74. ๏ฟฝ โœ› โœ™ โœ• โœ” โœ— โœ“ โœ โœ— โœš โœ— โœ— โœ— โœซ โœ‘ โœœ โœข โœช โœŒ โœ โœŽ โœŽ โœฎ โœ• โœ” โœš โœ• โœ“ โœ“ โœ ๏ฟฝ โœ“ โœ— โœ” โ˜… โœฉ โœ“ โœ” โœ‘ โœ• โœ— โœŽ โœ“ โœช โœŒ โœ โœŽ โœŽ โœฃ โœš โœ• โœ™ โœ‘ โœŽ โœช โœ” โœš โœ‘ โœ• โœ™ โœฃ โœ— โœ โœ™ โœ” โœ— โœฏ โœ• โœฌ โœข โœ โœ™ โœ” โ˜… โœŽ โœ• โœš โœ™ โœ— โœ“ โœ— โ˜… โœŒ โœ โœ“ โœ” โœŽ โœ• โœš โœ™ โœ— โœ“ โœ“ โœ“ โœ” โœซ โœฃ โœซ โœœ โœ“ โœ— โœฉ โœœ โœซ โœฆ โ˜… โœš โœ• โœŽ โœ“ โœš โœž โœ— โœ— โœ˜ โœ˜ โœ› โœž โœ™ โœœ โœ„ โ˜Ž โ˜Žโœ† โœ„ โœ• โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โ˜… โœ‚ โœ– โ˜ž โ˜Ž โ˜› โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โœ  โœก โ˜Ž โœž โ˜ž โœ  โ˜ž โœŒ โœ โœŽ โœ โœ‘ โœŽโœ’ โœ“ โœ’ โœ” โœ„ โœ โœ“ โœ‘ โœ™ โœ” โœ“ โœ โœ— โœš โœ— โœ— โœ› โœ— โœœ โœ˜ โœข โœ” โœŽ โœ โœ“ โœ“ โœ” โœ‘ โœ• โœ“ โœ† โœ— โœ  โ˜ž โœŸ โœž โœ“ โœŽ โœŸ โœž โœŽ โœ โœŒ โœก โ˜› โœ โ€ข Ideal: tool to generate set of test cases satisfying โœ”โœ–โœ— Possibilities For Automation โœ—โœงโœฆ โ€ข Can't generate expected output from code! โœ”โœ–โœ— โ€ข Some help: tools to help verify coverage: โœ”โœ–โœ— โœฃโœฅโœค โœ”โœ–โœ— โœ—โœคโœฃ coverage requirements โœโœญโœฌ โœ˜โœšโœ™ โœ”โœ–โœ— โœ”โœ–โœ— โœ”โœ–โœ— โœ”โœ–โœ• โœโœ’โœ‘ โœโœ’โœ‘ โœโœ’โœ‘ โœ”โœ–โœ—

  75. ๏ฟฝ โ˜Ž โœ– โœ โœ— โœ˜ โœ˜ โœ› โœž โœ™ โœœ โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ• โœ— โ˜ž โ˜› โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โœ” โœก โ˜Ž โœ  โœž โœ โœ’ โœ“ โœ  โœ‘ โœŽโœ’ โœŽ โœ โœŒ โ˜ž White Box Alone โ€ข White box alone is not a good way to generate test cases. โ€“ may lead to focus on less important parts โ€“ intrinsically leads to incomplete testing โ€“ if coder overlooked possibilities, test cases will not detect them โœ—โœคโœฃ โœ˜โœšโœ™

  76. ๏ฟฝ โ˜Ž โœ– โœ— โœ“ โœ˜ โœ˜ โœ› โœž โœ™ โœœ โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ• โœ— โ˜ž โ˜› โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โœ” โœก โ˜Ž โœ  โœž โœ โœ’ โœ“ โœ  โœ‘ โœŽโœ’ โœŽ โœ โœŒ โ˜ž Black Box Alone โ€ข Black box alone may not cover the code adequately โ€“ some special cases are not obvious from specifications, depend on algorithms โ€ข Studies examined black box test suites developers considered extremely thorough โ€“ only exercised 1/3 to 1/2 of code! โœ—โœคโœฃ โœ˜โœšโœ™

  77. ๏ฟฝ โ˜ž โœโœŽ โœก โœก โ˜ž โœŒ โœ  โ˜Ž โœ  โœ  โœ„ โœ โœ โœ  โœŸ โœ’ โœ‚ โœ ๏ฟฝ โœ’ โœ“ โ˜ž โœ โœ› โœ„ โœ โ˜ž โœ  โœ โœ„ โœ โœ  โœŸ โœ• โœ โ˜ž โœก โ˜ž โœ† โœ” โœŸ โœŒ โ˜Ž โœ“ โœ โœก โœ’ โœ„โ˜Ž โœž โœ  โ˜ž โœ” โœ’ โœ“ โœŽโœ’ โœ‘ โœ  โœŽ โœ โœŒ โ˜ž โœž โœ• โ˜› โ˜Ž โœก โœ  โœ† โœŸ โœž โœ โ˜Žโœ† โ˜Ž โœ„ โœ‚ โ˜ž โœ โœ– โœœ โœ›โœข โœ› โœ™ โœ„ โœž โ˜Žโœ† โœ„ โ˜Ž โœ™ โœž โœ› โœ˜ โœ˜ โœ— โœ— Another Example: Background โ€ข Heron's formula for area of triangle: + + a b c โ€“ let s = 2 โˆ’ โˆ’ โˆ’ s s a s b s c ( )( )( ) โ€“ area = โ€ข Example program takes three sides of triangle as command-line arguments (string form) โ€ข checks to make sure it's an equilateral triangle โœ†โœžโœ โœ†โ˜›โœก โœ‚โœ’โœ‘ โœ†โ˜›โœก โœ—โœคโœฃ โœ˜โœšโœ™

  78. ๏ฟฝ โ˜Ž โœ– โœ— โœ— โœ˜ โœ˜ โœ โœž โœ™ โœœ โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ• โœ› โ˜ž โ˜› โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ” โœž โœŸ โœ† โœ  โœก โ˜Ž โœ โœž โ˜ž โœŒ โœ โœ  โœŽ โœ โœ‘ โœŽโœ’ โœ“ โœ’ Example Code with two Branches public class Triangle { public static void main(String args []) { int sideA = Integer.parseInt(args[0]); int sideB = Integer.parseInt(args[1]); int sideC = Integer.parseInt(args[1]); if ((sideA == sideB) && (sideA == sideC)) { double s = 0.5 * (sideA + sideB + sideC); double area = Math.sqrt(s / (s - sideA) * (s - sideB) * (s - sideC)); System.out.println("area = " + area); } else System.out.println("not equilateral"); } // end main } // end class โœ—โœคโœฃ โœ˜โœšโœ™

  79. ๏ฟฝ โ˜Ž โœ– โœ— ๏ฟฝ โœ˜ โœ˜ โœ› โœž โœ™ โœœ โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ• โœ— โ˜ž โ˜› โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ” โœ  โœก โ˜Ž โœ† โœž โœ โœ’ โœ  โœŽโœ’ โœ‘ โœ“ โœŽ โœ โœŒ โ˜ž Branch Coverage โ€ข one if statement, so two test cases needed โ€ข false case: pick sides that aren't equal โ€“ run Triangle 2 3 4 โ€“ output: not equilateral โ€ข true case: pick equal sides โ€“ run Triangle 2 2 2 โ€“ output: area = 1.7320508075688772 โ€ข output is correct, looks like all is well โœ—โœคโœฃ โœ˜โœšโœ™

  80. ๏ฟฝโœ โ˜Žโœ† โœ— โœ— โœ˜ โœ˜ โœ› โœž โœ‚ โœœ โœ„ โ˜Ž โœž โœ• โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ– โœ™ โ˜ž โœž โœ„ โ˜Ž โ˜Žโœ† โ˜ž โœž โœŸ โœ† โœ  โœก โ˜Ž โ˜› โœ โœ  โœŒ โœ โœŽ โ˜ž โœ โœ‘ โœŽโœ’ โœ“ โœ’ โœ” Two Errors not Caught by Test Cases public class Triangle { public static void main(String args []) { int sideA = Integer.parseInt(args[0]); int sideB = Integer.parseInt(args[1]); int sideC = Integer.parseInt(args[1]); should be 2 if ((sideA == sideB) && (sideA == sideC)) { double s = 0.5 * (sideA + sideB + sideC); double area = Math.sqrt(s / (s - sideA) * (s - sideB) * (s - sideC)); System.out.println("area = " + area); should be * } else System.out.println("not equilateral"); } // end main } // end class โœ—โœคโœฃ โœ˜โœšโœ™

  81. ๏ฟฝ โ˜Ž โœ– โœ— โœ— ๏ฟฝ โœ˜ โœ› โœž โœ™ โœœ โœ„ โ˜Žโœ† โ˜ž โœž โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ• โœ˜ โ˜ž โ˜› โœ‚ โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ” โœ† โœก โ˜Ž โœ  โœž โœ โœ’ โœ“ โœ  โœ‘ โœŽโœ’ โœŽ โœ โœŒ โ˜ž Combining the Two Approaches โ€ข pick a set of test cases from the specification (black box) โ€ข then look at code (white box) and see if test cases cover the code adequately โ€ข it not, add more to complete coverage โ€ข power example: โ€“ black box alone didn't tell us it was important to make sure we tested both odd and even powers โ€“ suggests additional test cases: pow = 16, pow = 15 โœ—โœคโœฃ โœ˜โœšโœ™

  82. ๏ฟฝ โ˜Žโœ† โœ— โœ‚ โœ˜ โœ˜ โœ› โœž โœ™ โœœ โœ„ โ˜Ž โœž โœ• โœ„ โœ™ โœ›โœข โœ› โœ  โœž โœ› โœ’ โœ“ โœ’ โœ– โœ— โ˜ž โœž โœ„ โ˜Ž โ˜Žโœ† โœ โœž โœŸ โœ† โœ  โ˜ž โ˜Ž โ˜› โœก โœ  โœ‘ โœ” โœ’ โ˜ž โœŽโœ’ โœ“ โœ โœŽ โœ โœŒ Testing at Different Levels โ€ข Unit testing: โ€“ dual black box/clear box approach โ€“ level of smallest granularity: want to look at code โ€ข Above unit testing level: gray box โ€“ awareness of structure, but not all details, โ€ข System testing: primarily black box โœ—โœคโœฃ โœ˜โœšโœ™

  83. ๏ฟฝ โœ› โœ„ โœ‚ โœ ๏ฟฝ โœ’ โœ“ โœ’ โœž โœŸ โœ  โœ› ๏ฟฝ โœ›โœข โœž โœ„ โœž โœž โœ  โ˜Ž โ˜Ž โœ‚ โ˜Ž โ˜ž โœ† โ˜Ž โœ‘ โœ† โ˜ž โ˜Ž โœ โ˜ž โœŽ โœ โœ„ โœก โœ‚ โ˜Žโœ† โœ™ โœ„ โ˜Ž โœ‘ โœ โœŽ โœ โœŒ โ˜ž โœ  โœž โ˜› โœก โœœ โœ  โœ† โœŸ โœž โœ โ˜Žโœ† โ˜Ž โœ„ โœ‚ โœŽโœ’ โœ“ โœ’ โ˜ž โœ™ โœž โœ› โœ’ โœ˜ โœ˜ โœ— โœ— โœ– โœ• โ˜ž โœ” โœ„ Stages โ€ข Big Bang Testing: go right to System Testing โ€“ generally least effective โ€“ very difficult to find bugs โ€“ avoid this! โ€ข Better way: โ€“ test all modules individually (unit testing) โ€“ put together gradually & test larger pieces โ˜›โœŒโ˜ž โ˜Žโœโœ† โ€“ finally test whole system โœ—โœคโœฃ โœ˜โœšโœ™

  84. ๏ฟฝ ๏ฟฝ โœฌ โœซ โœฉโœช โ˜… โœง โœฆ โœฅ โœ’ โœง โœ“ โœ’ โœ› โœž โœ  โœ› โœ โœ™ โœญ โœฉ โœž โœฌ โœฑ โœซ โœฎ โœซ โœฌ โœฐ โœฆ โœฅ โœฅ โœญ โ˜… โœช โœฏ โ˜… โœง โœซ โœฎ โœฌ โœ„ โœ›โœข โ˜Žโœ† โ˜Ž โœ‘ โœ โœŽ โœ โœŒ โ˜ž โœ  โœž โ˜› โœก โœ“ โœ  โœ† โœŸ โœž โœ โ˜Žโœ† โ˜Ž โœ„ โœ‚ โœ โœŽโœ’ โœ’ โ˜Ž โœ˜ โ˜ž โ˜ž โœ• โœ– โœ— โœ„ โœœ โœ™ โœž โœ› โœ” โœ— โœ˜ Integration Testing โ€ข Tests uses between modules - source of 40% of all errors in code. โ€ข Incremental: Top Down vs. Bottom Up โ€“ start with tested modules in either case โ€“ planning of increments starts early โœฆโœณโœฒ โ€“ top down requires stubs โ€“ bottom up requires drivers โ€“ 'sandwich' variants exist โœ—โœคโœฃ โœ˜โœšโœ™

Recommend


More recommend