Get in, get out. That’s the attitude that most developers have in testing and debugging their applications. Few developers look forward to these tasks during the development cycle, and so they want to efficiently get into the code, figure out what’s working and what’s not, fix any problem, and then move on. Given the heterogeneous nature of Web applications, debugging has always been challenging, particularly when trying to work with client–side JavaScript. To address this need, fairly sophisticated debugging tools have emerged over the past few years among the developer community, most notably Firebug and other add–ons for Firefox. However, the problem is that most of these testing tools that Web developers have come to rely on for desktop browsers are not yet compatible with the iPhone, iPad and iPod touch platform.

Many iPhone developers, unsure of where else to turn, end up resorting to alert() debugging — adding alert() throughout the body of the script code to determine programmatic flow and variable values. However, not only is this type of debugging painful, but it can also throw off the timing of the script, making it difficult or impossible to simulate real world results. While the number of debugging and testing tools are indeed limited right now for Mobile Safari, there still are options that either work directly inside Mobile Safari or emulate Mobile Safari on the desktop. Developers will probably want to incorporate aspects of both as part of their regular debugging and testing process.

Some high level test scenarios for iPhone application are given below
  • Handset Application Functionality: Perform real iPhone based testing of the application with various scenarios. Test team will test the application based on defined specifications.
  • Device Certification: Certify applications on actual device. Test team should test the performance of the application, resource usage, behavior and interactions.
  • Performance and Scalability: Backend applications will need to manage the traffic of multiple mobile devices at the same time. This test will identify all the load issues and will help make system more scalable.
  • Usability and Compatibility: Verify the effectiveness of Usability of application onto various devices including interoperability with other applications running on the device. Certify the Application on Various mobile devices for the correct behavior and interactions.
  • UI Response Application: Verify the response of each function and measure the performance of each response.
  • Settings Response: Verify all settings available for the application and test the functionality of each setting.
  • Crash Points: Identify all crash points, and will work with development team to resolve them.
  • Low Connectivity: Test the behavior of iPhone App in Low connectivity mode and verify proper behavior.
  • Response Memory Handling: Measure the memory usage of the application and identify all memory leaks.
  • Sleep Mode: Test the application response in sleep mode.
  • Accelerometer: Test to ensure that iPhone application properly responds to rotations.
  • Battery Usage: Measure the battery usage and will provide feedback on increasing battery life.
  • Retrials in Case of Network Disconnection: Test application behavior in case of network disconnection.