There are 4 generations of iPhone and iPod touch, 2 generations of iPad combined with a lot of versins of iOS. After 4.0, I feel more apps and games crashed than before.(Is that because of multitasking?) I just want to know whether there is an easy way to test your games in different situation on different iOS devices before the game would be released. How small developers do that? Did I need each type of devices? Thanks.
As long as your code is technically sound, and not invoking methods that aren't available on a given version of iOS, then crashes are likely to due running out of memory. You can simulate a low memory warning to see how your app behaves in those conditions. There could also be timing issues that affect slower devices, which you may never see if you're testing exclusively on the latest hardware. I always keep my old hardware when I buy the latest devices, but for any devices I'm missing, I'll try to find someone who owns it and ask them to run a test build. Chances are you can find used older devices for pretty cheap, as well, on eBay or from friends who are looking to upgrade.
I have a touch 4 and a 3g phone and my partner has a couple of different devices, so we just played the hell out of the game trying to break it and finding bugs and fixing them for a couple of weeks and once we seemed to be bugless we recruited as many friends as we could to play for us, although our friends were mostly pretty slack and couldn't be bothered. I think it was sufficient, although very exhausting spending every spare moment playing the same game.