Automated tests

Few arguments for writing automated tests and/or unit tests:

Happier development team 
– fewer bugs = fewer late nights/weekend work
– more time to add new features
– helps your prevent breaking the code 

Happier users
– fewer defects reaching production 
– no data loose, less application crashes
 
Reduce business costs
– defects are found early in the development cycle
– HOW can we debug is we don’t have tests ? search logs, events in OS = time spent which costs money
 
Reliability
– exactly same test code runs each time
– if nothing is change in code, everything runs the same
– no variance between test runs from human error
 
Faster execution
– quicker than a human performing tests manually.
 
Independent & isolated by other test
– running order doesn’t change the result
 
Reliable & repeatable
 
Test single behavior / logical thing
– it’s ok to have multiple asserts if they are testing the same logical behavior
 
Clear intent / readable
 
Test code should have the same quality as production code
 
Tests should be valuable for development team