# Testing

Software testing is the process of executing a program with the intent of
finding errors and abnormal or unexpected behavior. Testing and test-driven
development (TDD) is a critically important step of the software development
process for all Android developers. It helps to reduce defect rates in
commercial and enterprise software.

To prepare for the Associate Android Developer certification exam, developers should:

- Thoroughly understand the fundamentals of testing
- Be able to write useful local JUnit tests
- Understand the Espresso UI test framework
- Know how to write useful automated Android tests

## Resources

- [Android Developers -\> Fundamentals of testing](https://developer.android.com/training/testing/fundamentals)
- [Android Developers -\> Automate UI tests](https://developer.android.com/training/testing/ui-testing/)
- [Codelabs -\> Unit tests](https://codelabs.developers.google.com/codelabs/android-training-unit-tests/index.html#0)
- [Codelabs -\> Android Testing -\> Unit testing with JUnit and Mockito](https://codelabs.developers.google.com/codelabs/android-testing/index.html#0)
- [Codelabs -\> Android Testing -\> Espresso for UI testing](https://codelabs.developers.google.com/codelabs/android-training-espresso-for-ui-testing/index.html#0)