This two day course introduces and explains the fundamental principles and practices of software testing based on the body of knowledge for the software testing professional. A combination of lecture, interactive discussion, classroom exercises and discussions are used to build an understanding of the testing process and its relationship to the overall software project. The training will cover, in great detail, the key components of testing including the test strategy, test plan and test cases. Real-world examples and specific techniques for test case design are discussed including equivalency classes, dependency analysis, and combinatorial analysis. Students will gain an in-depth understanding of the different types of testing with emphasis on how to plan and execute regression testing. Students will complete the course with realistic, specific action items that can be implemented quickly to improve their overall testing process.

Course Objectives

The primary objective of this course is to introduce and instruct QA and software testing professionals on concepts, strategies, and techniques in order to develop a total understanding of the testing process and how it impacts the software project. Attendees will learn how to:

  • Identify critical testing tasks for each testing lifecycle phase
  • Determine critical success factors for a project and how to prioritize them
  • Perform risk analysis based on impact, likelihood, and other factors
  • Better develop a detailed test plan on how to measure its effectiveness
  • Identify different types of test coverage
  • Plan and execute thorough regression testing

Course Outline

Introduction to Software Testing – An introduction to software characteristics and how testing supports the overall success of the project delivery. Included is how testing begins at the start of a project and evolves throughout the process. Specific testing tasks for each lifecycle phase will be identified. Specific topics include:

  • Characteristics of Software Quality.
  • Roles in Testing – producer and customer
  • Common Testing Challenges
  • Relative Cost of Errors
  • Testing Traps to Avoid
  • Testing Phases – Unit, Integration, System and UAT
  • SDLC Methodologies

Test Strategy – A review of the many project factors that affect the test strategy, the key role of the software architecture, and the critical success factors for a project (and how to prioritize them). Specific topics include:

  • Test Strategies based on Project Types
  • Understanding the V-Model
  • Project Scope and its Impact on Strategy
  • Prioritization of CSFs (Critical Success Factors)

Risk Analysis – A detailed, systematic approach to identify and assess risks to better focus testing activities to ensure a better testing process. Topics include:

  • The Myth of “Complete” Testing Coverage
  • Risk Factors to Consider
  • Risk Analysis – Requirements and Tests

Test Plan – A step approach to gathering information for the test plan, structuring the test plan document, assembling the test team, and measuring the effectiveness of the test plan. Specific topics include:

  • Mandatory Test Plans
  • Developing a Test Plan Team Document
  • The Test Plan and the V-Diagram
  • Organizing an Effective Test Team
  • Delegation of Test Team Tasks
  • Critical Test Plan Content

Test Case Design – The relationship between system requirements and test cases. An approach to utilize proven methods to determine criteria for test coverage to ensure what must be tested is tested. Topics include:

  • Important Definitions – Test Case, Test Suite and Test Run
  • Effective Test Case Design
  • Requirements Coverage
  • When to Stop Testing Based on Business Drivers and Risk Criteria
  • Defect Contagion

Test Case Coverage and Equivalency Classes – The many different types of coverage and how to identify and group input and output values into partitions in order to minimize the number of test cases required for comprehensive testing. How to test more with less. Detailed topics include:

  • Types of Coverage – Code, Path, Decision, Condition, Domain, and Others
  • Equivalence Classes
  • Boundary Value Analysis
  • Special Cases to Consider

Test Case Dependency Analysis – How the dependency affects test case design and how dependency analysis can help decrease the number of test cases while still maintaining comprehensive testing. Topics include:

  • How to Test Interactions
  • Detailed Dependency Analysis
  • Effective Replacement of Redundancies

Test Case Combinatorial Analysis – A review of how to streamline the amount of software testing using combinatorial analysis techniques. Topics include:

  • Risks of Too Many Combinations
  • Combinatorial Pairs
  • Segments, Partitions, Paths and Combinations
  • Ensure Complete Coverage with Combinatorial Analysis

Regression Testing – An understanding of how to plan and execute regression testing and the importance of thorough regression testing and its positive outcomes. Identifying tests that need to be executed as part of the regression test suite. Specific topics include:

  • What is Regression Testing?
  • Effectively Planning a Regression Test
  • Minimizing effort with Partition Vectors
  • Top 10 Regression Challenges
  • Impacts – Control Flow, Data Flow, and Interface Analysis
  • Requirements versus RTS

Instructor:

Bob Crews, Checkpoint Technologies

Bob Crews, President of Checkpoint Technologies, is a consultant and trainer with over 22 years of IT experience including full life-cycle development involving development, requirements management, and software testing. He has consulted and trained for over 200 different organizations in areas such as effectively using automated testing solutions, test planning, risk analysis, implementing automated frameworks, and developing practices which ensure the maximum return-on-investment with automated solutions. Bob has presented at numerous conferences and user groups throughout the world including QAI, EuroStar (Copenhagen), HP Software Universe, and LatinStar (Mexico City). Bob was named as one of the top five speakers at the QAI Annual Software Testing Conference in 2004.