Skip to main content

One post tagged with "Instrumented Tests"

View All Tags

· 2 min read
Hugh Stanway

Integrating MotionInput and Final testing

Starting the month we worked closely with the masters and the final year students to merge their MotionInput builds into our app. Next, although we had ensured to follow test-driven-development throughout the entire development process, as we neared a final product, we started increased testing of the app. This invloved writing UI tests, Instrumented (Unit) tests, Integration tests and Performance testing.

Finished MotionInput Integration

After we added the foundations for integration MotionInput at the end of last month, the merging of MotionInput builds was done at the start of this month. This was successful as we worked with the other teams to fix any bugs that was introduced along the process and we now have MotionInput integrated into the app.

Face and Hands MotionInput Image

Writing Tests

Instumented (Unit) Tests

Instrumented tests are small unit-like tests that test small components of each class induidually in isolation to other components of the app. These are written similarly to unit tests, however, they differ in the fact that they run on physical or emulated Android devices rather than the JVM therefore they can still use the Android framework. This is crucial for testing UI components and Bluetooth components of the app. Using a combination of testing libraries and frameworks, such as JUnit, Espresso, Mockito and others, we began writing extensive tests that would interact with the apps UI and backend componets to test they were behaving correctly for both valid and invalid input.

Integration Tests

We used integration tests to test how entire components behaved as a whole. This was mainly done with the Bluetooth component as we tested how its classes worked together as an entire component and how it interacted with Androids bluetooth libraries.

Performance Tests

We used the Android Studio profiler to measure the CPU and memory activities of the app during general use. This allowed us to measure average performance over time but also check for any bottlenecks in performance.