So, I wanted to concentrate on breaking a product too see what I learn by finding it's rough spots. This has been fun at times in the sense that I am actually learning ways to more effectively test my own software. I plan to use this knowledge to write better software myself.
I am currently testing a product on both Mac OS X and iOS. As a dev I have some things I learned from writing Mac apps that I have been able to put to use in my job as a tester.
One of those is to always test the First Run case. What is this? The First Run test involves running the app as if you were a new user installing and running the app for the first time.
How to do this on Mac?
- Does the app use the Keychain to store anything? Find out and make sure to clear it before you run the test.
- Does the app use the User Defaults to store anything? Probably, so go learn the command line tool defaults. Here is a short primer:
- Open Terminal.app
- Run this: defaults
- Now you have the standard usage (screenshot shown above).
- If you app's defaults are stored in the domain "com.mycompany.myapp" then type this to view what the app is storing:
- defaults read com.mycompany.myapp
- Now before a First Run test run this to clear the stored setting:
- defaults delete com.mycompany.myapp
- Does your app use any other storage? SQLLite for example? CoreData store?
- Find out, find out where the files are stored and then delete them before you run a First Run test.
Run the test and see what blows up.
Too often we forget to retest this scenario as we work on features and the simple First Run case can get broken.
Test it often to weed out problems before new users find them. I always run this on candidate builds for a new release to end users. I am also always surprised when this breaks since we seldom think the simple changes we are making in our app will break the First Run.