Difference between revisions of "Fragile Test"

From CitconWiki
Jump to navigationJump to search
 
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
= Less Fragile Tests =
+
== Less Fragile Tests ==
  
== Tests ==
+
=== Tests ===
  
 
* Asserts
 
* Asserts
Line 14: Line 14:
 
* See ISO 9126
 
* See ISO 9126
  
== Good Tests ==
+
=== Good Tests ===
  
 
* Pass Repeatedly
 
* Pass Repeatedly
Line 28: Line 28:
 
*** Utility to build mocks
 
*** Utility to build mocks
 
*** Easy switching mock to real
 
*** Easy switching mock to real
 +
**** use same data, settings
  
== Bad Tests ==
+
=== Bad Tests ===
 
* Hidden cause of failure
 
* Hidden cause of failure
** Visible Replay using TimeSnapper
+
** use screen capture logger, e.g. TimeSnapper
* Visible Replay
+
* Visible Replay  
 
* Dump state data at failure
 
* Dump state data at failure
  
 
+
=== Tool advice ===
== Tool advice ==
 
 
* Time Snapper
 
* Time Snapper
 
* EasyMock
 
* EasyMock
Line 42: Line 42:
 
* DBUnit gets prod snapshot regularly (security issues: scrubbing)  Table dependancies makes it a significant task
 
* DBUnit gets prod snapshot regularly (security issues: scrubbing)  Table dependancies makes it a significant task
  
== Data ==
+
=== Data ===
 
* Domain (name, addr, etc class pulled from DB
 
* Domain (name, addr, etc class pulled from DB
 
* (abstracted data from test)
 
* (abstracted data from test)
Line 51: Line 51:
  
  
== Suggestion ==
+
=== Suggestion ===
 
* Use a virtual machine, setup - refresh test machine using VMWARe to simulate MSG based, 20 mins business transactions
 
* Use a virtual machine, setup - refresh test machine using VMWARe to simulate MSG based, 20 mins business transactions
  
== Test Data Repository ==
+
=== Test Data Repository ===
 
* Used keyword substitution to create the real data
 
* Used keyword substitution to create the real data
  
== Typical Data ==
+
=== Typical Data ===
 
* Edge / Border cases, Exception testing
 
* Edge / Border cases, Exception testing
  
== Broken windows ==
+
=== Broken windows ===
 
* Continually failing, low priority tests/defects cause a 'Broken windows' effect which degrades the value of CI.
 
* Continually failing, low priority tests/defects cause a 'Broken windows' effect which degrades the value of CI.

Latest revision as of 01:46, 30 July 2007

Less Fragile Tests

Tests

  • Asserts
    • Component
    • Integration
  • Functional
    • UAT
  • Non-Functional
    • Perf
    • Security
    • Usability
  • See ISO 9126

Good Tests

  • Pass Repeatedly
    • Timing (e.g. Selenium)
    • External Dependencies
      • External Systems
        • Reliability
        • Availability
      • Data
        • Set Values
        • Incorrect State
    • Heavy Mocking
      • Utility to build mocks
      • Easy switching mock to real
        • use same data, settings

Bad Tests

  • Hidden cause of failure
    • use screen capture logger, e.g. TimeSnapper
  • Visible Replay
  • Dump state data at failure

Tool advice

  • Time Snapper
  • EasyMock
  • Pretend Classes
  • DBUnit gets prod snapshot regularly (security issues: scrubbing) Table dependancies makes it a significant task

Data

  • Domain (name, addr, etc class pulled from DB
  • (abstracted data from test)
  • Data Driven Approach
  • Fitness Integration Testing

Strong correlation between importance of tests depending on the types of testing and what kind of thing you are doing (Product type development = high focus on test vs bespoke = low focus


Suggestion

  • Use a virtual machine, setup - refresh test machine using VMWARe to simulate MSG based, 20 mins business transactions

Test Data Repository

  • Used keyword substitution to create the real data

Typical Data

  • Edge / Border cases, Exception testing

Broken windows

  • Continually failing, low priority tests/defects cause a 'Broken windows' effect which degrades the value of CI.