To start read the OpenStack Common Review Checklist
For any change that adds new functionality to either common functionality or fixes a bug unit tests are required. This is to ensure we don't introduce future regressions and to test conditions which we may not hit in the gate runs.
For any change that adds major new functionality functional tests are required. This is to ensure that the Deckhand API follows the contract it promises. In addition, functional tests are run against the Deckhand container, which uses an image built from the latest source code to validate the integrity of the image.
Deprecated code should go through a deprecation cycle -- long enough for other Airship projects to modify their code base to reference new code. Features, APIs or configuration options are marked deprecated in the code. Appropriate warnings will be sent to the end user, operator or library user.