Feature Coding
           Part 3
Unit and Integration Testing
         DEV_205
        Eric Shupps
About Me
 Eric   Shupps, MVP
     President, BinaryWave
     Email: eshupps@binarywave.com
   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
•   Less rework                                       • Eliminate defects
•   Shorter cycles                                    • Validate functionality
•   Faster delivery times                             • Reduce complexity
•   Fewer support
    requests
                             Reduce         Ensure
                             Costs          Quality




                             Increase      Improve
                             Efficiency   Dynamics

    • Faster changes                                  • Facilitate change
    • Repeatable processes                            • Simplify integration
    • Increased confidence                            • Increase modularity
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 Refactoring
                           Class

 Method Method Method Method Method Method




         Class             Class                 Class

 Method Method Method Method Method Method



  Test       Test   Test           Test   Test           Test
Refactor the core solution components for testability.

CODE ISOLATION
Unit Testing
Unit Testing Objectives

                   Integrate

        Validate               Refactor



    Isolate        Code            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
Create and execute unit tests for isolated code.

UNIT TESTS
IntegrationTesting
Integration Testing Objectives

     Test code
 execution against     Verify methods as
                                              Validate/invalidate
       target         they will be used in
                                               unit test results
system/dependenci        released code
         es


                                       Identify
           Exercise all points
                                   vulnerabilities in
           of interoperability
                                   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
Create and execute integration tests for core solution components.

INTEGRATION TESTS
Thank you for attending!
(This slide must always be the last
         slide in your deck)

Share point 2010 unit and integration testing

  • 1.
    Feature Coding Part 3 Unit and Integration Testing DEV_205 Eric Shupps
  • 2.
    About Me  Eric Shupps, MVP  President, BinaryWave  Email: eshupps@binarywave.com  Microsoft Patterns & Practices: spg.codeplex.com  CKS:DEV cksdev.codeplex.com  Blog: www.sharepointcowboy.com  Twitter: @eshupps  Facebook: www.facebook.com/sharepointcowboy
  • 3.
    Agenda  Testing Fundamentals  Code Optimization  Unit Testing  Integration Testing
  • 4.
  • 5.
    Testing Objectives • Less rework • Eliminate defects • Shorter cycles • Validate functionality • Faster delivery times • Reduce complexity • Fewer support requests Reduce Ensure Costs Quality Increase Improve Efficiency Dynamics • Faster changes • Facilitate change • Repeatable processes • Simplify integration • Increased confidence • Increase modularity
  • 6.
    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
  • 7.
    Testing Lifecycle Unit Integration Regression
  • 8.
  • 9.
    Code Isolation andRefactoring Class Method Method Method Method Method Method Class Class Class Method Method Method Method Method Method Test Test Test Test Test Test
  • 10.
    Refactor the coresolution components for testability. CODE ISOLATION
  • 11.
  • 12.
    Unit Testing Objectives Integrate Validate Refactor Isolate Code Maintain
  • 13.
    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
  • 14.
    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
  • 15.
    Create and executeunit tests for isolated code. UNIT TESTS
  • 16.
  • 17.
    Integration Testing Objectives Test code execution against Verify methods as Validate/invalidate target they will be used in unit test results system/dependenci released code es Identify Exercise all points vulnerabilities in of interoperability execution chain
  • 18.
    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)
  • 19.
    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
  • 20.
    Create and executeintegration tests for core solution components. INTEGRATION TESTS
  • 21.
    Thank you forattending! (This slide must always be the last slide in your deck)