Presentation is loading. Please wait.

Presentation is loading. Please wait.

Unit Test Pattern.

Similar presentations


Presentation on theme: "Unit Test Pattern."— Presentation transcript:

1 Unit Test Pattern

2 Unit Testing The focus is the module a programmer has written
Most often UT is done by the programmer himself UT will require test cases for the module UT also requires drivers to be written to actually execute the module with test cases Besides the driver and test cases, tester needs to know the correct outcome as well

3 Unit Test Pattern Good unit tests are difficult to write
"the code is good when it passes the unit tests“ Unit test should be written first, before the code that is to be tested Challenges Unit testing must be formalized Design also must be formally performed

4 Unit Test Patterns Pass/fail patterns Collection management patterns
Data driven patterns Performance patterns Simulation patterns Multithreading patterns Stress test patterns Presentation layer patterns Process patterns

5 Pass/Fail Patterns First line of defense to guarantee good code
Simple-Test Pattern Code-Path Pattern Parameter-Range Pattern

6 Simple Test-Pattern Code Pass/Fail results tell us that
Expected Result Condition A Condition B Expected Failure Pass/Fail results tell us that the code under test will work/trap an error given the same input (condition) as in the unit test No real confidence that the code will work correctly or trap errors with other set of conditions

7 Code-Path Pattern Emphasizes on conditions that
Code paths Code path A Path result Code path B Path result Emphasizes on conditions that test the code paths with in the unit rather than conditions that test for pass/fail Results are compared to expected output of given code path Caveat: How do you test code-paths if tests are written first?

8 Parameter-Range Pattern
Success set Code paths Code path A Path result Code path B Path result Failure set Code-Path pattern with more than a single parameter test

9 Data Driven Test Patterns
Patterns which enable testing units with a broad range of input output pairs Simple-Test-Data Pattern Data-Transformation-Test Pattern

10 Simple-Test-Data Pattern
Data Set Input Output Computation Code Unit Test Verify Result Reduces complexity of Parameter-Range unit by separating test data from the test. Test data is generated and modified independent of the test Results are supplied with the data set. Candidates for this pattern: Checksum Calculations, algorithims, etc…

11 Data-Transformation-Test Pattern
Input test data Validation Transformation code Unit test Measurement Works with data in which a qualitative measure of the result must be performed. Typically applied to transformation algorithms such as lossy compression

12 Data Transaction Patterns
Patterns embracing issues of data persistence and communication Simple-Data-I/O Pattern Constraint Data Pattern The Rollback Pattern

13 Simple-Data-I/O Pattern
Service Write test Read Test Verifies the read/write functions of the service

14 Constraint Data Pattern
Nullable Unique Default value Foreign key Cascading update Cascading delete Service Write test Constraints Adds robustness to Simple-Data-I/O pattern by Testing more aspects of the service Any rules that the service may incorporate Unit test verifies the service implementation itself For example, DB schema, web service, etc…

15 Rollback Pattern Verifies rollback correctness
Service Write test Write test Verifies rollback correctness Most transactional unit tests should incorporate ability to rollback dataset to known state In order to undo test side effects

16 Collection Management Patterns
Used to verify that the code is using the correct collection Collection-Order Pattern Enumeration Pattern Collection-Constraint Pattern Collection-Indexing Pattern

17 Collection-Order Pattern
Unordered Code Containing Collection Unordered data Sequenced Ordered Verifies expected results when given an unordered list The test validates that the result is as expected Unordered, ordered or same sequence as input Provides implementer with information on how the container manages the collections

18 Code Containing Collection
Enumeration Pattern Edge test Code Containing Collection Expected datum Enumerator (FWD, REV) Collection Verifies issues of enumeration or collection traversal Important test when connections are non-linear. E.g. collection tree nodes Edge conditions (past first or last item) are also important to test

19 Collection-Constraint Pattern
Write test Collection container Nullable Unique Constraints Verifies that the container handles constraint violations Null values and duplicate keys Typically applies to key-value pair collections

20 Collection-Indexing Pattern
Write test Collection container Index Key Out of bound index Update/ Delete Index Index test Verifies and documents indexing methods that the collection must support – by index and/or by key Verifies that update and delete transactions that utilize indexing are working properly and are protected against missing indexes

21 Performance Patterns Used to test non functional requirements as
performance and resource usage Performance-Test Pattern

22 Performance-Test Pattern
Pass Metric at Start Metric at End Code Pass criteria Fail Types of performance that can be measured: Memory usage (physical, cache, virtual) Resource (handle) utilization Disk utilization (physical, cache) Algorithm Performance (insertion, retrieval)

23 Pattern Summary Unit Test patterns cover broad aspects of development; not just functional May promote unit testing to become a more formal engineering discipline Helps identify the kind of unit tests to write, and its usefulness. Allows developer to choose how detailed the unit tests need to be


Download ppt "Unit Test Pattern."

Similar presentations


Ads by Google