Deprecated: Assigning the return value of new by reference is deprecated in /home/jetson/dollar15.com/wp-settings.php on line 520

Deprecated: Assigning the return value of new by reference is deprecated in /home/jetson/dollar15.com/wp-settings.php on line 535

Deprecated: Assigning the return value of new by reference is deprecated in /home/jetson/dollar15.com/wp-settings.php on line 542

Deprecated: Assigning the return value of new by reference is deprecated in /home/jetson/dollar15.com/wp-settings.php on line 578

Deprecated: Function set_magic_quotes_runtime() is deprecated in /home/jetson/dollar15.com/wp-settings.php on line 18

Strict Standards: Declaration of Walker_Page::start_lvl() should be compatible with Walker::start_lvl(&$output) in /home/jetson/dollar15.com/wp-includes/classes.php on line 1199

Strict Standards: Declaration of Walker_Page::end_lvl() should be compatible with Walker::end_lvl(&$output) in /home/jetson/dollar15.com/wp-includes/classes.php on line 1199

Strict Standards: Declaration of Walker_Page::start_el() should be compatible with Walker::start_el(&$output) in /home/jetson/dollar15.com/wp-includes/classes.php on line 1199

Strict Standards: Declaration of Walker_Page::end_el() should be compatible with Walker::end_el(&$output) in /home/jetson/dollar15.com/wp-includes/classes.php on line 1199

Strict Standards: Declaration of Walker_PageDropdown::start_el() should be compatible with Walker::start_el(&$output) in /home/jetson/dollar15.com/wp-includes/classes.php on line 1244

Strict Standards: Declaration of Walker_Category::start_lvl() should be compatible with Walker::start_lvl(&$output) in /home/jetson/dollar15.com/wp-includes/classes.php on line 1391

Strict Standards: Declaration of Walker_Category::end_lvl() should be compatible with Walker::end_lvl(&$output) in /home/jetson/dollar15.com/wp-includes/classes.php on line 1391

Strict Standards: Declaration of Walker_Category::start_el() should be compatible with Walker::start_el(&$output) in /home/jetson/dollar15.com/wp-includes/classes.php on line 1391

Strict Standards: Declaration of Walker_Category::end_el() should be compatible with Walker::end_el(&$output) in /home/jetson/dollar15.com/wp-includes/classes.php on line 1391

Strict Standards: Declaration of Walker_CategoryDropdown::start_el() should be compatible with Walker::start_el(&$output) in /home/jetson/dollar15.com/wp-includes/classes.php on line 1442

Strict Standards: Redefining already defined constructor for class wpdb in /home/jetson/dollar15.com/wp-includes/wp-db.php on line 306

Strict Standards: Redefining already defined constructor for class WP_Object_Cache in /home/jetson/dollar15.com/wp-includes/cache.php on line 431

Strict Standards: Declaration of Walker_Comment::start_lvl() should be compatible with Walker::start_lvl(&$output) in /home/jetson/dollar15.com/wp-includes/comment-template.php on line 1266

Strict Standards: Declaration of Walker_Comment::end_lvl() should be compatible with Walker::end_lvl(&$output) in /home/jetson/dollar15.com/wp-includes/comment-template.php on line 1266

Strict Standards: Declaration of Walker_Comment::start_el() should be compatible with Walker::start_el(&$output) in /home/jetson/dollar15.com/wp-includes/comment-template.php on line 1266

Strict Standards: Declaration of Walker_Comment::end_el() should be compatible with Walker::end_el(&$output) in /home/jetson/dollar15.com/wp-includes/comment-template.php on line 1266

Strict Standards: Redefining already defined constructor for class WP_Dependencies in /home/jetson/dollar15.com/wp-includes/class.wp-dependencies.php on line 31

Strict Standards: Redefining already defined constructor for class WP_Http in /home/jetson/dollar15.com/wp-includes/http.php on line 61
another iphone development blog | dollar 15
Apr 27 2009

Using Promo Codes for Testing

I recently discovered that promo codes, the free “give-away” codes you get when your app is accepted to the store, work before your app is actually in the store. In fact, they work even after you’ve pulled down your app from the store.

I recently launched an app that I had to pull back from the store hours later after discovering from friends that there was a bad crashing bug in the game. 3/6 friends who tried the game for the first time reported crashes that I’d never seen in testing.

That experience opened my eyes to the reality that iPhones can be in a wide range of states, from just restarted to not restarted in the last 30 days. I did lots of testing on my development phone, but it defienitely wasn’t in a normal state.

I really needed to test the application on 15 or so devices in a real-world state before releasing the app. Without a test lab how am I going to get access to 15 devices in real-world states?

One solution is to give out promo codes to your friends before you launch and ask them for testing and feedback. This approach not only uncovers bugs but usability and product issues as well. It can also help to build buzz: you can recruit people from blogs and forums to help you.

Just set your availability date to sometime in the far future. Once you’re sure your app is solid, set the avaibility date to today and let it fly.

Another solution is to use the Ad Hoc Distribution system which can be used any time and doesn’t blow promo codes. However getting people setup with an Ad Hoc build is a pain. It’s much easier to just give them a code and have them cash it in.

Be careful not to give out too many of your promo codes for testing uses. Promo codes are key for getting reviewers and bloggers to try out your game. For more on this check out this excellent video over at Pangea Software.

I will never make an app available again without pre-testing with promo codes.