As a tester and sometimes agile coach-ish I have some pretty strong opinions as to what makes a ‘good’ development culture. Respect, communication, and oh, Testing. While not an organization per se, I think the Android culture is terribly broken. At least from the perspective of its answer to testing. So here is what I would do were I tasked with improving the culture of Android Application development.
First, it has to come from Google. And not just from someone at Google, but someone with the full weight and blessing of the Android division behind it. I’m sure Google has evangelists; an Android Testing one would be fantastic.
Typically, evangelists spend a lot of time on airplanes going to conferences. If you look at pretty much any Mobile/Android focused conference there is, if you are lucky, one session on testing. And if there is, their descriptions imply that are entirely black-box, manual testing focused. But what about automation? What about below-the-covers? What about, gasp, TDD? Mobile apps are complex; testing them is too. Let’s not pretend that just futzing with them in a couple emulators is anything close to be sufficient.
Speaking of TDD, the platform seems designed to make it really hard to do. And what tidbits of information that you can sniff out do not come from inside Google. I would love to see TDD become part of all the tutorials.
To Google’s credit, the component specific testing pages are decent, but it would be nice if the examples that come with the ADK actually had examples of the things that that they say you should test. And while on the specific topic of documentation, if it is suggested in the docs that you should use IntentService more often than Service it would be nice to have some code that does it. (So its not just test specific docs that have issue.)
Actually, I would take the documentation effort even further. Clearly Google wouldn’t want to, or be able to, approve books on Android app development before publication, but they could reach out to publishers and say something like ‘we are trying to address the lack of testing in our culture and would appreciate it if you could ask your authors to include it in their manuscripts as well’. I suspect a lot of the test infection in the Ruby On Rails community is largely because of the test focus of most of the books that are available.
Sites like StackOverflow will also Google where their testing docs lack. So far every question I have come up with has also been there. And usually without an answer that didn’t seem quite right.
Its a bit of a rant after doing some Android development, but I really do believe that within a year Google could turn around the culture from one focused on just what the user interacts with to a mature, TDD-based one similar to the Rails one. (Feels odd calling Rails mature…) The thing that is going to decide [this round of] the phone platform wars is the applications they support. Improving the quality of those apps would be an excellent salvo in that battle.
Categories
- Android (2)
- BITW (5)
- Books (21)
- CAST2008 (2)
- GLSEC2008 (14)
- Housekeeping (22)
- Interviews (1)
- javascript (1)
- marketing (1)
- Podcasts (28)
- Process (23)
- Python (19)
- Quality (400)
- Ruby (7)
- s3cr3t (1)
- Selenium (10)
- Star West 2010 (8)
- subversion (1)
- Uncategorized (415)
- Video (54)
- What I Learned Yesterday (3)
Find things by
- Browsing...
- Searching...
With regards to TDD, first the code has to be written in a testable way. This means you need to separate your own concerns (or use an existing framework, of which there aren’t many yet), which is no small task, especially if you are starting work on “just a small app”. If you don’t start with a good foundation, your “small app” will become a huge mess.
Personally, I think testing is very important, and that’s why I wrote an MVP pattern for my UI, and was able to test it quite completely (with MSpec, I’m using Mono for Android).
As far as UI testing, there aren’t very good tools, and this is where Google is falling short. There aren’t really good UI designing tools either, so writing a good UI is a struggle all the way around.
Perhaps part of the problem lies with mobile application development as a general culture. Since most devices are being squeezed for every byte of processor and runtime memory that can be managed for applications, it doesn’t leave much room for automation to sit on top. I ran into this all the time with media devices and console gaming application testing. Under this culture, “testing” means loading it onto a device (or emulator/simulator) and using it while watching a debug log spew.
Perhaps once the general culture starts accepting the newer generations of smart devices are not so constrained, attitudes about testing will change.
Hm, I think you raise a good point here with the testing of android apps. How does it compare to apple’s testing procedures, and what are the best of each?