Visão Geral
Curso Agile Testing Methods for Developers and Testers. O desenvolvimento ágil de software significa produzir código utilizável e testado mais rapidamente do que com métodos tradicionais. Além de práticas que visam acelerar a produção de código, como a programação em pares, os métodos ágeis também definem práticas para melhorar a qualidade do código entregue por meio de testes, como integração contínua e desenvolvimento test-first e orientado a testes. Este Curso Agile Testing Methods for Developers and Testers, explora as diversas práticas Ágeis para melhorar a qualidade do desenvolvimento de software por meio de testes e como essas práticas podem ser aplicadas a qualquer forma de desenvolvimento de software, independentemente de as abordagens Ágeis serem adotadas ou não. Neste Curso Agile Testing Methods for Developers and Testers, exploraremos o desenvolvimento orientado a testes, integração contínua, programação em pares e outros métodos e técnicas introduzidos pelas abordagens de desenvolvimento ágil de software.
Conteúdo Programatico
Testing in the SDLC
General Approach to Software Development
- The Software Development Process
- Exercise: Why Don’t We Get Quality Software?
- Mandatory Elements
- Transitions
The Classic SDLC Timeline
- Elements and Phases
- Test Stages
- Unit
- Integration
- System
- Acceptance
- Exercise: Can We Do without These Stages?
- Exercise: Applying All Four Stages
- Issues with Linear Life Cycles
- Testing in Isolation
- Determining a True Baseline
- The Problem with Late Testing
- General Approaches To Quality Assurance
- It Compiles, Therefore, It Must Work
- Problems with Code Expansion
Unit Summary
- Keys to Success
Test Methods
General Approaches to Testing
- Exercise: Testing Methods
- Prepare, Execute, Document
- Test Cases
- Elements of a Test
- Sources of Test Cases
- Exercise: Defining a Test Case
Classic Testing Methods
- Script-Driven Testing
- Destructive Testing
- Cause-Effect Testing
- Requirements Based Testing
- Root Cause Testing
Alternate Test Execution Approaches
- Exploratory Testing
- Scenario Testing
Testing in Agile Development
- Rapid Application Development
- Test First Approach
- Test-Driven Development
- Extreme Programming (XP)
- Exercise: What Components of Testing Should Be Taken from Each Method?
Unit Summary
- Exercise: Which Method?
- Summary
- Keys to Success
- Applying Test Methods to Your Testing Process
The Concept of Continual Testing
The Rise of Agile Methods
- Different Reasons for Agile Software Development
- Time – Schedule Orientation
- The Agile Manifesto
- Quality and Agile?
Testing from the Beginning
- The Circle of Life
- Agile Approach to Requirements
- The User Story
- Epics and themes
- Testing against stories, epics and themes
- Exercise: Creating User Stories, epics, and themes
- Can There Be Too Much Testing?
- Balanced Approach: Coding and Testing
Testing During Development
- The Testing Frameworks
- Test Fixtures
- Unit Testing
- Integration Testing
- Acceptance Testing
- Defining Tests
- Defining the Unit Test
- Defining the Acceptance Test
- Exercise: Defining a Test from User Story
- Setting Up and Organizing Test Cases
- The Structure of Test Organization
- Separate the Test Class from Code Class
- Add Test Class to Build Class
- Stubs, Drivers, and Mock Objects
- Workshop: Defining Stubs and Drivers
Unit Summary
- Applying Continual Testing and Test Organization to Your Testing Process
- Keys to Success
Test-Driven Development Overview
Test-First Development
- Test-First Philosophy
- PDSA Cycle
- Design Direction
- Verification Method
- A Testing Methodology?
- How It Works
- Workshop: Applying Test-First Approach to Requirements
Design, Code, or Test?
- A Testing Methodology?
- Rationale for Test-Driven Development
- Timeboxing
- Accommodating Change
- “Red, Green, Refactor”
- TDD as a Design Approach
- Specification, Not Validation
- Alternative to Modeling?
- Complementary Approaches
Assessment of TDD
- Benefits of TDD Approaches
- Limitations of TDD
- TDD and Automation
- TDD Pragmatics: Project Size, Team Size, Languages
- TDD and Traditional Testing Practices
Unit Summary
- Keys to Success
Refactoring
What Is Refactoring?
- Do the Simplest Thing that Can Work
- Principles of Refactoring
- Exercise: Refactoring
- Bad Smells in Code
- Cargo Cult Programming
- Voodoo Chicken Programming
Simplification
- Simplifying Conditionals
- Simplifying Methods
- Generalization
Unit Summary
- Applying Refactoring to Your Development Process
- Keys to Success
- Workshop: Refactoring
Execution: Applying TDD at the Unit Level
Developer Testing
- Developer, Programmer, Unit Testing
- Where TDD Fits
- Smallest Increment of Functionality
- Rules of TDD
- Write the Test – Red
- Write the Code – Green
- Refactor – Refactor
Using the Unit Testing Frameworks
- Framework Class Hierarchy
- Runner Class Diagram
- JUNIT Framework (3)
- Installing XUNIT (3)
- Red, Green Refactor in Junit
- Nunit Errors
- XUnit Rest Results
- Typical XUnit Assertion Statements (2)
- Other Xunit Frameworks
- CppUnit (2)
- VBUnit (2)
- PyUNit (2)
- HTMLUnit (2)
- Others (2)
Building Tests
- Value of Self-Testing Code
- Mock and Fake Objects
- Abstract Methods
- Mock Object Tools
- Method Stub
- Organizing Data
- White Box and Black Box Testing with TDD
- Tips for Building Test Classes
- Exercise: Building Tests
Pair Programming
- Basis for Pair Programming
- Pair Programming Roles
- The Tester in Pair Programming
- Pair Programming and TDD
- Exercise: Pair Programming
Unit Summary
- Applying TDD to Your Development Process
- Keys to Success
- Workshop: Applying TDD
Continuous Integration
Background
- Classic Integration
- Unit and Integration Testing with TDD
- Scheduled Builds
- Automation
- A Successful Build
Test Organization
- Organizing Test Cases for Integration and Regression
- Accessing Tests and Code
ANT
- Background
- ANT Configuration File
- Similarities to Make
CruiseControl
- What CruiseControl Is All About
- The Build Loop
- The Dashboard
- Getting Started
- Reporting
Other Approaches
- Hudson
Unit Summary
Applying Continuous Integration to Your Development and Testing Process
- Keys to Success
- Workshop: CruiseControl
Agile Acceptance Testing
Agile Acceptance Testing
- Acceptance Tests Come First
- Testing Business Rules
- Involving the Customer
- Test-First Paradigm
- The Safety Net Effect
FIT and FITnesse
- Background
- Preparation
- What Is FIT?
- Framework for an Integrated Test (FIT)
- Fitnesse – FIT with a Wiki
- Context-Driven Testing Revisited
- Fixtures (2)
- Setting Up Fixtures
- Column Fixture
- Row Fixture
- Action Fixture
- Exercise: Setting Up Fixtures
- HTML Tables
- Parsing Tables
- FITnesse Description
- Using FITnesse
- Organization of Test Cases
- Workshop: Setting Up a FITnesse Table
Unit Summary
- Applying TDD and Automated Acceptance Testing to Your QC Process
- Keys to Success
- Workshop: An Automated Acceptance Test
Some Additional Testing Practices
Incorporating the Practices in Your Process
- Phased Approach
- Increasing Collaboration
- What to Do First?
Applying TDD to Structured Approaches
- Test First for Design
- Testing Structured Code First
- Workshop: Adding the Practices
Unit Summary
- Keys to Success
The Bottom Line
Ideas to Use
- Best Practices in Testing
- Best Practices in Agile Testing
- Highlights