Why Android fragmentation does not really matter
So what is fragmentation. In the context of mobile phones (or computers and similar devices), it means basically diversity, in hardware and software.
It's usually argued that it's a bad thing, or a very bad thing, and it's usually associated with Android mobiles. The other players in the smart phone market seek to eliminate it, e.g. there are basically 3 iPhone and 2 kinds of iPads on sale, and that's it. In practice, that means that an app developer needs only to handle 4 different resolutions (1024x768, 2048x1536, 960x640 and 1136x640) while an Android developer needs to handle resolutions from 320x240 to 1920x1200. The difference in real estate is not that much bigger than in the Apple world, but Apple, with offering basically 6 devices (iPhone 4/4S/5, iPad 2/iPad 3, iPod Touch), allows for more fine tuning and more exhaustive testing.
Microsoft btw went in some ways even further, for Window Phone 7 they specified such a stringent hardware design, that the phones basically came out with hardware one year or so old, WP7 phones basically did not even cause a yawn in the market, as top of the line WP7 handsets had hardware specs similar to midrange Android handsets at the time of their launch.
So yes, from the perspective of the developer, Android fragmentation is a PITA, it makes designing harder, because you need to handle way more different devices, and it makes exhaustive testing an impossibility with over 100 different handsets on the market.
But from the perspective of the user, it's a huge benefit. You've got small hands, go with a small device that feels comfortable in your hands. You've got clumsy hands, and need big on screen keyboards, well, 5"+ phablets to the rescue.
You need a phone that can keep up with your job as a builder or hardcore skiing, no problem. So while the iPhone is and for a long time probably will be the most sold mobile, the iOS ecosystem is starting to become dwarfed by the Android ecosystem, because Android manufacturers while not tailoring an individual handset for your needs, come way nearer to this.
So what about the poor poor developers. Well, they are still in a better situation than in the PC market, where every body can throw together a mix of hardware, slap some OS onto it, and wonder why this does not work as well as a box build monolithically. Android handsets provide certain services, a certain basic level works everywhere, you can query what else is provided by the phone, and so on.
So what about exhaustive testing?
- exhaustive testing as such is not really feasible. (Every chip designer will tell you that, even a simple boolean function in hardware quickly goes beyond being completely testable.)
- Well, yes, you have put more work into testing. More leg work, but also more brain work to design the testing that it captures a maximum coverage.