Lecture 15 Test Process Outline • Test Process • Testing within Stages of Software Development 1 July 24, 2016 Test Process • Many organizations postpone testing until end of development • Waiting until the “last minute” compresses testing efforts • Produces unreliable software • Testers don’t have adequate resources • Testing should be integrated from the beginning 2 July 24, 2016 Testing as Part of Development Process • Incorporate test plans / procedures into development process • Testing put into each phase of development • Process agnostic • • • • Agile Waterfall Spiral ... • Testing should NOT be isolated into separate stages 3 July 24, 2016 Outline • Test Process • Testing within Stages of Software Development 4 July 24, 2016 Typical Stages of Development • • • • • • • • Requirements analysis System design Intermediate design Detailed design Implementation Integration Deployment Operation and Maintenance 5 July 24, 2016 Three Categories of Test Activies • Test Action – testing the artifacts created at this stage • Test Design – using elements to prepare final test set • Test Influence – using test results to influence future stages 6 July 24, 2016 Requirements Analysis • Complete description of external SW behavior • Defines content / boundaries of SW system Test Action • Evaluate requirements • Ensure requirements are correct, testable, and complete • (Use requirements inspection and prototyping) 7 July 24, 2016 Requirements Analysis Test Design • Prepare for system testing and verification activities • Write test requirements for software system • Create a test plan for each stage (including scope / objective) • Create a high-level plan • Describe software support needed for each stage 8 July 24, 2016 Requirements Analysis Test Influence • Developing test scenarios may detect ambiguous requirements • Provide feedback to help design testable code 9 July 24, 2016 System Design • Partition requirements into hardware or software systems • Build overall system overall architecture Test Action • Verify mapping between requirements and design Test Design • Prepare for acceptance and usability testing • Create acceptance test plan / test requirements 10 July 24, 2016 System Design Test Influence • Influence design of user interface (usability tests) • Usability tests on interface prototype should clarify customer’s desires 11 July 24, 2016 Intermediate Design • Software broken down into components and classes • Design specifications written for each component / class • (Many problem arise from mismatched interfaces) Test Action • Avoid mismatched interfaces 12 July 24, 2016 Intermediate Design Test Design • Write test plan for unit, integration, and system testing • Refine unit / integration tests based on interfaces • Test support tools for driver, stubs, measurements Test Influence • Influence detailed design • CITO (class integration test order) should help determine this 13 July 24, 2016 Detailed Design • Testers write subsystem specs and module pseudocode Test Action • Make sure all test materials are ready for testing when modules are written • Testers prepare for both unit and integration testing • Refine test plans • Generate test cases • Write detailed test specs for integration testing 14 July 24, 2016 Detailed Design Test Design • Topic of course / book thus far! Test Influence • Influence the implementation and unit/integration testing • (Level 4 testing?) 15 July 24, 2016 Implementation • Starting writing / compiling classes and methods Test Action • Effective and efficient unit testing • Testing based on test criterions used and test data generated • Unit testing specified by unit test plan, criteria, tools, cases Test Design • Prepare for integration and system testing 16 July 24, 2016 Implementation Test Influence • Cheaper / easier to find bugs during unit testing • Efficient unit testing ensures early integration 17 July 24, 2016 Integration • CITO is a major challenge in software integration Test Action • Perform integration testing • Start as soon as components pass unit tests • Goal: find errors from unexpected component interactions 18 July 24, 2016 Deployment • Software fully implemented! Test Action • system, acceptance, and usability testing • System testing: based on previous criterions • Acceptance tests: meets customer’s needs • Usability tests: evaluate interface to software 19 July 24, 2016 Operation and Maintenance • After release, users will find problems • When software is changed, should be regression tested 20 July 24, 2016 Put Quality First • Begin test activities EARLY! • Manage test artifacts with version control • • • • • • Test design documents Test scripts Test results Inputs Automated tools Testing coverage and criteria 21 July 24, 2016