Testing in an Agile Environment
General testing theory
- Evaluating the key testing principles
- Differentiating between Agile and traditional practices
- Introducing the theory of Lean Agile testing
Transitioning to Agile software development processes
- Mapping Agile principles and values to testing
- Inspecting Agile testing quadrants
- Benefiting from Test Driven Development (TDD)
- Automating testing for better Agility
Confirming Customer Satisfaction
Acquiring a test basis
- Testing the charter and key features
- Focusing on customer value and user personas
- Writing useful test cases from user stories
- Developing Story Acceptance Criteria
Automating through Acceptance Test Driven Development (ATDD)
- Designing the anatomy of an Agile Test
- Creating a Test Idea Catalog
- Refining a Definition of Done and Ready
- Anticipating validation criteria through Behavior Driven Development (BDD)
Preparing for User Acceptance Testing (UAT)
- Specifying by example and scenarios
- Enabling Usability and Exploratory Testing
- Performing Story-Mapping for better coverage
- Managing UAT processes
Implementing Developer and Technology Testing
Creating unit tests
- Defining the unit candidates for testing
- Testing First and Asserting First Patterns
- Delineating test data
- Setting up and tearing down a test
- Leveraging tools for better management and insightful coverage analysis
Building proficiency with TDD
- Achieving green-light success
- Identifying good tests
- Dealing with large systems
Employing mocking and stubbing techniques
- Programming fake and spy objects
- Simulating data access
- Identifying interfaces and mocking frameworks
- Testing legacy systems
Validating for FURPS+
- Finding non-functional testing patterns
- Simulating interfaces and conducting performance testing through automation
- Evaluating legacy systems
Refactoring to Optimize Product Design
Applying Regression Testing
- Adopting a catalog of refactoring patterns
- Identifying refactoring motivations
Committing changes through retesting
- Keeping tests synchronized with code changes
- Adding features and retesting
- Managing and retesting bugs
- Striving for zero-bug tolerance
Orchestrating Continuous Integration (CI)
Delivering software
- Mapping the deployment pipeline of Agile
- Incorporating key principles of Configuration Management (CM) for frequent releases
- Adapting version control and branching strategies to the Agile requirements
Managing the deployment pipelines
- Creating a build process and deployment script
- Controlling code commits and protecting product integrity
- Integrating the test automation in the CI process
Creating a CI ecosystem
- Planning the infrastructure and environments
- Managing components and dependencies
- Setting up continuous delivery