Okay, so you had an idea for a killer app which you had envisioned it in your head and you know there is a need for it. You had out sourced the design and programming of your app or you have created it yourself. Then you have to get the app distributed and marketed but first you need to have it tested.

This article will help you in testing the iphone applications you have created.

1. Report properly, available memory. Many of the non-reproducible bugs you run into when testing iPhone apps are related to memory problems. It’s critical that you know and report available free memory before launching an application. Most of the time, the probability of a crashing iPhone app due to bug is related to low memory conditions. When there’s plenty of free memory, a crashing defect may disappear.

2. Test under low and high memory conditions. If you force free memory to a very low level of below 2MB, before proceeding with your tests, you’ll be able to cause additional crashing bugs. Before you start your testing, you may open several Safari windows in order to check available memory. . Developers always like to have help in their debugging process, and useful defect characterization helps them narrow down the root cause of a bug. If a crash happens under low memory conditions (see #1 and #4 above), then try it under conditions where there’s lots of memory available, e.g. >40MB. If a problem occurs under iPhone OS 2.2.x, then try it under 3.x.

3.  Provide logs of your defect reports. Each time an iPhone application crashes, a .crash file is created on your iPhone which can be retrieved when you synch your iPhone with iTunes.

4. Run app with other background applications. iPhones and iPod touches are devices that users buy primarily to use as a phone or a music player, it’s important to test that an app can gracefully handle situations where the user receives a call or plays music from their music library (iTunes) while the app is running. We’ve seen issues here where apps aren’t smoothly multi-functioning in these areas. Applications that continue running in the background on the iPhone are Safari, iPod and Mail. Reminders and push notifications are also “interrupters” that can affect the behavior of an application under test.

5. Send Screenshots. Nothing makes a UI bug become very apparent for a developer than when you send screenshots. There’s no excuse not to do this with iPhone’s built-in screen capture.

6. Boundary test data input. You have an opportunity to find a bug whenever an iPhone app asks for text input. One technique is to copy a huge amount of text, then paste it into each text field. You’d be surprised at how this trips up some apps.

More so, application errors are generated when entering the following characters into text fields: !@#$%^&*()_. (Note: Holding down letters (A, E, I, O, etc) or symbols ($, !, &, etc) on the onscreen keyboard generates a keyboard popup that includes localized and 2-byte characters. These should also be entered into text fields.)

7. Check connectivity problems. Test for degraded or unavailable connectivity, if you’re testing an iPhone app that depends on internet connectivity. It’s easy to make connectivity unavailable by simply turning on Airplane Mode. Use some sort of metallic “shield” on top of your iPhone to degrade connectivity, especially on Edge or 3G.

8. View warnings on the app from the console. You can view warnings in real-time using Apple’s iPhone Configuration Tool. iPhone apps will report application and system level warnings to the console. By knowing what’s being reported when interacting with an app can help you polish the steps you need to replicate tricky (and memory related) problems.

For local device testing:

  • Connect the iPhone to your Mac using the standard USB cable
  • Do “Build and Run” to compile the project and install it on your device. This works for both Development and Distribution profiles. Newer versions of Xcode are smart enough to prompt you to install the right profile on the device if it’s missing.
  • If you keep the phone connected while you run your app, you can view the console output using the Xcode Organizer (Window | Organizer)