Defensive Programming in Android: Errors, Exceptions, and Testing