"Automated testing is an integral part of the development lifecycle."
In android app proejcts we've implemented MVP, Rx with Retrofit and Content Provider/SQLite, dagger. Every android apps will always have server communication, storing data in local database, complex ui like naviagtion drawer and recycler view etc, and difficult navigation flow of application.
What we want to achieve?
Based on above, there are few questions,
(Feel free to improve check list as we don't know best practices for testing module in SDLC for android mobile app.) originally asked, here.
Some answers to your questions:
Auto vs. manual: once design/dev cycles have settled, automated tests should be part of the code delivery before releasing. A good trigger here is simply include UI testing in Definition of Done on stories before they're shipped. For Android, this could be as simple as some Espresso tests that cover new functionality.
MVP layer testing...unit test your presenters and UI test your views. that covers almost anything in models that doesn't work because model changes are rarely done in isolation of those two layers. high unit coverage in the presenter helps to balance how much UI test are written. see this article for in-depth tutorial.
business logic: at the very least, ALL tasks on the critical paths that users take to accomplish key goals (i.e. your revenue stream, basic adoption). So yes, this includes registration, login, and password features...but might not cover all preferences/configurations and their effects.
type of testing: each type tests different layers/aspects of your application, so ask yourself "what details in the layers of my app should I care about"?
tools: you've pretty much nailed the current toolchain. for Android UI testing, Espresso/Dagger/mockito is a huge win. keep these types of tests small and focused. for end-to-end testing, Appium is still your best friend, but there are things that even it can't do (like visual validation and certain popups) that you'll need to seek beyond them to automate.
Also, while I completely understand your statement "can not be auto tested because whatever reason", I think that's a big red flag and the details matter a lot. The choice of auto vs. manual should be business decision about how to achieve velocity goals, not about technical limitations and shortfalls. I hear this all the time from customers until they realize that the right tech enables them to achieve the level of automation that's right for them.
There are two pieces of research I assisted with this year that I think will help this conversation:
Hope this and my research above helps your work.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With