Duration: 2 Days
Test-Driven Deployment (TDD) is an evolutionary approach to development where you must first write a test that fails before you write new functional code. It is primarily an agile approach to software development and is one of the core principles of Extreme Programming.
This in-depth Agile-testing course will provide you with a solid introduction to TDD and "test first" design within the context of Agile processes and practices.
What You Will Learn
- Concept of development agility and the Agile Manifesto
- Major agile development methods and their strengths and weaknesses
- Manage an agile environment within a structured organizational approach
- Introduce agility into a development organization
- Unit testing and how various xUnit frameworks facilitate unit testing
- xUnit family of unit testing tools
- Concepts of and motivations for TDD
- Relate unit testing, test-driven development, and test coverage to agile processes
- Importance of refactoring in supporting agile and test driven processes
- Continuous Integration (CI) and components
- Motivations for CI
- Best practices for everything from CI to testing within the context of agile development
Audience
Test professionals, test managers, project leaders, quality analysts, and developers
Prerequistes
Knowledge of current development processes, such as structured top-down development and the waterfall method is beneficial
Course Outline
1. Agile Development
- Agile Software Development
- Controlling Risk
- Agile Development
- Motivation - Risk Reduction
- Discipline of Timeboxing
- Incremental Delivery and Evaluation
- Agile Software Development Manifesto
- Same Approach with Documentation
- Change Wins Out Over Following a Set Plan
- Refactoring is Artifact of Change
- Rules
- Extreme Values
- XP Practices
- CI
- Agile Testing
- Lowest Bar of Unit Testing
- Agile Testing Stages
- Test First
- Acceptance Tests
- TDD
- General Agile Principles
- Adopting or Trying Agile
- Setting User Expectations
2. Test-Driven Development (TDD)
- Unit Testing
- Purpose of Unit Testing
- Successful Unit Testing
- Unit Testing Frameworks
- XUnit
- Reasons tUse XUnit
- How XUnit works
- ROI of TDD
- Rationale for TDD
- Process of TDD
- Advantages tTDD
- Side-Effects of TDD
- Observations About Tests
- Tools tSupport TDD
- Automation and Coverage
- Working with Coverage Analysis
- Concept of Test "Close" Development
3. Improving Code Quality Through Refactoring
- Refactoring
- Sample of Refactorings
- Refactoring and Testing
- Suggested Refactoring
- Impact of Refactoring
- Advanced Refactoring
- Design Patterns
- Code that Feels Wrong
- Refactoring tDesign Patterns
- Abstract Factory Design Patterns
- Adapter Design Patterns
- Strategy Design Patterns
4. Advanced Topics
- Continuous Integration (CI)
- Typical CI Process
- Local Development Environment
- CI Server
- Potential Benefits of CI
- CI Best Practices
- Automate Source Code Management
- Automate Build Process
- Automate Testing
- Automate Deployment
- Commit Code Early and Often
- Manage the Build Process
- Separate Integration Environment
- Mimic Production Environment
- Increase Visibility
- Agile Testing Best Practices
- Coding Practices
- State- vs. Interaction-Based Testing
- Source Control
- Pair Programming and Code Reviews
- CI
- Legacy Code
Course Labs