...
- Unit tests exist and they adequately cover edge cases
- Integration tests exist and they adequately test the interface contract (i.e. for RAML we have JSON schema's for parameters and returns)
- All tests that are meant to verify searching or filtering, do so on a larger dataset than just what matches the search criteria (e.g. an IT that searches user by username should run with at least a few users with different usernames in the database)
- Proper error handling techniques are used
- Exceptions are only used when there is a programming error
- External dependencies are brought in with care - is it mature, is it stable, does its functionality overlap with an existing piece
- Log messages are useful in a service oriented context and utilize an appropriate level
All automated tests run & pass, tests aren’t removed unless appropriate
...