There’s a bunch of well known things to test when finalising an app. However, there are a few others that aren’t so obvious and could have major issues with a minority of people.
This caught me out once. The NSDateFormatter and NSNumberFormatter default to the device’s current locale. If you are parsing date strings from a server, such as “11-Oct-2013”, then you must explicitly set the locale for your formatter. If somebody from say, Germany was using your app, the months are all spelled differently, so it would be expecting “11-Okt-2013” and you will get a nil NSDate. You can get a specific NSLocale like so:
[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
Of course if dates were your problem, you’re better off using epoch timestamps, just a number which is timezone irrelevant.
Not standard to the iPhone and iPad, keyboard accessories add a full keyboard to the device, along with all the keys that aren’t standard on the on screen keyboard.
I recommend you make sure your app works when there is a first responder field with no on screen keyboard present, and check that special keys like tab have the correct behaviour.
Low disk space
What will your app do if the user has barely any disk space left? How will it act when you try to save some critical data and it fails?
Going in and out of connectivity
Mobile devices are exactly that, mobile. Because of this you can not guarantee the user is going to have a stable connection. The internet can drop in and out consistently, and your app needs to handle this. Also something to note is that if you are using a 3G connection and move between cell towers, your user may be given a new IP address, so if your app does anything fancy with the IP, this may cause issues.
Testing on real people
So you’ve got beta testers? They’re probably more advanced than your average user. Try your parents, or a child, whoever your target audience is. Your app needs to be simple enough to use, if it isn’t then chances are your users will delete it and get the next app. Ease of use shouldn’t be confused with long instructional guides to use your app. At b2cloud we tend to think that if we need to explain something to a user (within reason), then we haven’t done our jobs properly.