简体   繁体   English

iPhone OS测试最佳做法

[英]iPhone OS Testing Best Practices

Not so long ago iPhone development was quite simple, only a few OS versions and even less devices. 不久之前,iPhone的开发非常简单,只有几个OS版本,甚至更少的设备。

Now however, there are 2 major OS versions and 5 different devices to consider. 但是,现在有2种主要的OS版本和5种不同的设备需要考虑。

As a company about to release several applications testing has been become more and more of an issue. 作为一家即将发布多个应用程序的公司,测试已成为越来越多的问题。

What are the best ways to test all combinations, do I need to acquire every generation of iPhone and iPod Touch? 测试所有组合的最佳方法是什么,我需要购买每一代iPhone和iPod Touch吗? Are there any gotchas with specific hardware/OS combinations I might need to code around? 我可能需要编写一些具有特定硬件/操作系统组合的陷阱?

I guess my question is, "What's the minimum amount of testing required to cover all the bases?" 我想我的问题是,“涵盖所有基础的最低测试量是多少?”

In my experience, you won't have much compatibility trouble between iPod/iPhone. 以我的经验,您在iPod / iPhone之间不会有太多的兼容性问题。 There are other gotchas to be aware of: 还有其他注意事项:

  • The devices run at different speeds. 设备以不同的速度运行。 iPhone v1 and iPhone 3G run at 412MHz; iPhone v1和iPhone 3G以412MHz运行; iPod Touch runs at 532MHz, and the new 3GS runs at 600MHz. iPod Touch的运行频率为532MHz,而新的3GS的运行频率为600MHz。 This can have a big impact on performance and even functionality if you're getting fancy. 如果您喜欢的话,这可能会对性能甚至功能产生重大影响。
  • There's a huge performance difference between EDGE/3G/WiFi networks ; EDGE / 3G / WiFi网络之间存在巨大的性能差异 often the differences are counter-intuitive. 通常,差异是违反直觉的。 EDGE can often have better latency (time to first byte) than 3G, while 3G has 10x better bandwidth. EDGE通常比3G具有更好的延迟(到第一个字节的时间),而3G具有10倍的带宽。 You'll want to test your app under all three conditions. 您需要在所有三个条件下测试您的应用程序。
  • Are you using Core Location? 您在使用核心位置吗? iPhone v1 and iPod Touch do not have GPS. iPhone v1和iPod Touch没有GPS。
  • Are you using the camera? 您在使用相机吗? The iPod Touch does not have a camera. iPod Touch没有相机。
  • Is your app compatible with jailbroken phones? 您的应用与越狱手机兼容吗? A lot of people have done it, and if your app crashes on them, they will blame you, not the Dev Team hackers, and this will be reflected in your App Store ratings. 很多人都这样做了,如果您的应用程序崩溃了,他们会责怪您,而不是开发团队的黑客,这将反映在您的App Store评分中。 Note especially that background apps can use up memory that you might have thought would be available exclusively for your app. 特别要注意的是,后台应用程序可能会用尽您可能认为专门用于您的应用程序的内存。 Leave yourself some overhead. 给自己留些开销。

So, what do you need to buy? 那么,您需要购买什么? If you're a serious developer, yes, you should have all 5 devices available. 如果您是一个认真的开发人员,可以,您应该拥有所有5种设备。 But do you need to test every build on all 5 devices? 但是您是否需要测试所有5种设备上的每个版本? Does every one of your developers need 5 devices each? 您的每个开发人员都需要5台设备吗? No. 没有。

One developer can probably test everything that matters with one iPhone 3G and an iPod Touch. 一个开发人员可能可以用一部iPhone 3G和iPod Touch测试所有重要的事情。 Toss in a 3GS and your coverage is probably nearly perfect. 投掷3GS,您的覆盖范围可能几乎是完美的。 (Note that development on 3GS is much nicer just because the CPU is faster, so your apps deploy more quickly.) (请注意,由于CPU速度更快,因此3GS上的开发要好得多,因此您的应用程序部署会更快。)

At work we have one device per developer, but they're a mix of 3G and iPod devices (and, today, one 3GS). 在工作中,每个开发人员只有一台设备,但它们是3G和iPod设备的混合体(今天是3GS)。

I don't have much experience with the iPhone itself, but in general this might be a good application of pairwise testing . 我对iPhone本身没有太多经验,但是总的来说,这可能是成对测试的良好应用。 In practice, you can get 90% coverage with a small fraction of the testing of an exhaustive test pass. 在实践中,只需进行详尽的测试通过的一小部分测试,即可获得90%的覆盖率。 Then later if you find certain configurations have gotchas you can add them to your set of configurations and still not need to do an exhaustive pass. 然后,如果您发现某些配置存在陷阱,则可以将它们添加到配置集中,而无需进行详尽的说明。

I am not sure if its a best practice. 我不确定这是否是最佳做法。 But I have heard many people using ibetatest for exactly what you are looking for. 但是我听说很多人使用ibetatest来满足您的需求。 Lots of enthusiastic beta testers out there. 有很多热情的Beta测试人员。 You shouldn't have any issues on 95% of your code running on different versions, and something like ibetatest should catch the remaining 5%. 95%的代码在不同版本上运行时,您应该不会有任何问题,而ibetatest之类的东西应该可以捕获剩余的5%。

I'd suggest a couple things: 我建议一些事情:

  • you probably will need a range of devices for your own internal testing. 您可能需要一系列设备进行自己的内部测试。 As has already been pointed out, there are various differences between each generation of iPod Touch/iPhone 正如已经指出的那样,每一代iPod Touch / iPhone之间存在各种差异。

  • you may want to look into using crowd-sourcing to supplement your internal testing. 您可能需要研究使用众包来补充内部测试。 This potentially allows you to have a bigger audience to test your apps and any cost of using crowd-sourcing is potentially offset by the fact that you can spend less on devices and potentially less on internal testing staff and at the same time, potentially producing a better product. 这样一来,您可能会有更多的受众来测试您的应用,而使用众包的任何成本都可能因您可以在设备上花费更少,在内部测试人员身上花费更少而同时可能产生更好的产品。 One crowd-sourced test group not mentioned above is uTest.com uTest.com是上面未提及的一个众包测试组

Get all the combinations is the short answer. 获得所有组合是简短的答案。

I started out with just the iPod, but it's 100MHz faster than the previous iPhone model. 我刚开始使用iPod,但是它比以前的iPhone型号快100MHz。 My app's performance sensitive, so I'm gonna have to get an old iPhone. 我的应用程序对性能很敏感,因此我将不得不购买旧的iPhone。 I can hardly ask my beta testers (volunteers?) to run the GL performance tool. 我几乎不能要求我的Beta测试人员(志愿者?)运行GL性能工具。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM