View
4.225
Download
15
Tags:
Embed Size (px)
DESCRIPTION
Feature Coding
Part 3
Unit and Integration Testing
DEV_205
Eric Shupps
About Me
Eric Shupps, MVP
President, BinaryWave
Email: [email protected]
Microsoft Patterns & Practices: spg.codeplex.com
CKS:DEV cksdev.codeplex.com
Blog: www.sharepointcowboy.com
Twitter: @eshupps
Facebook: www.facebook.com/sharepointcowboy
Agenda
Testing Fundamentals
Code Optimization
Unit Testing
Integration Testing
Testing Fundamentals
Testing Objectives
• Facilitate change
• Simplify integration
• Increase modularity
• Faster changes
• Repeatable processes
• Increased confidence
• Eliminate defects
• Validate functionality
• Reduce complexity
• Less rework
• Shorter cycles
• Faster delivery times
• Fewer support requests
ReduceCosts
EnsureQuality
ImproveDynamics
IncreaseEfficiency
Testing Methodologies
Any methodology is better than no methodology
Select a methodology that supports the team dynamic and satisfies the testing objectives
Code for the customer/end user, not the methodology
Focus on modularity and sustainability
Testing Lifecycle
Unit Integration Regression
Code Optimization
Code Isolation and RefactoringClass
Method Method Method Method Method Method
Class
Method Method
Class
Method Method
Class
Method Method
Test Test Test Test Test Test
CODE ISOLATION
Refactor the core solution components for testability.
Unit Testing
Unit Testing Objectives
CodeIsolate
Validate
Integrate
Refactor
Maintain
Unit Testing Principles
Separate interface from implementation
Fail first in order to succeed
Tests do not drive functionality - they verify functionality
Features define tests and tests define methods
Tests should exercise all probable execution paths
Unit Testing Methodologies
Separate interface from implementation
Fail first in order to succeed
Tests do not drive functionality - they verify functionality
Features define tests and tests define methods
Tests should exercise all probable execution paths
UNIT TESTS
Create and execute unit tests for isolated code.
IntegrationTesting
Integration Testing Objectives
Test code execution against
target system/dependenci
es
Verify methods as they will be used in
released code
Validate/invalidate unit test results
Exercise all points of interoperability
Identify vulnerabilities in execution chain
Integration Testing Principles
Tests should exercise actual dependencies –no mocks or stubs
Tests should not be authored or driven by developer
Tests should cover all application tiers (top-down, bottom-up, or both)
Manual testing is acceptable (and often preferred)
Integration Testing Methodologies
Inverse Isolation Reusing unit tests by
replacing mock or stub objects with actual implementations
Black Box Open-ended, interface-
driven tests that explore available functionality and are not driven by specific feature requirements
White Box Predefined set of test
routines that verify specific functional requirements
INTEGRATION TESTS
Create and execute integration tests for core solution components.
Thank you for attending!
(This slide must always be the last
slide in your deck)