我需要分别在iPod touch、iPad和iPhone上进行测试吗?

3
我想开始开发iOS应用。由于我有Android开发的背景,所以我知道拥有更多类型的设备进行测试会更好。因为所有设备具有不同的规格,你在测试设备上运行得很完美的应用,可能在其他设备上甚至无法启动,更别说表现良好了。
我知道在实际设备上测试非常重要,因为模拟器上无法测试的方面很多。因此我决定购买一台实际设备。
然而,在iOS世界中也有很多设备可供选择!有iPod touch、iPad和iPhone,每种设备都有几个不同的版本和配置(8GB版本与16GB版本,WiFi版本,3G版本等)。除了屏幕尺寸不同外,纵横比也各不相同,并且包含的传感器也不同。
我认为让应用程序在多种设备上运行不应该太困难,但是是否有必要实际测试您计划支持的所有设备类型?苹果并不以低廉的价格著称,我希望将起始成本尽量降低。
因此,总结一下:在iOS开发领域中是否有必要/推荐测试尽可能多的设备类型?
小小的澄清:我特别问一下是否有可能存在与特定设备/设备族相关的兼容性问题,我无法通过模拟器或完全不同的设备来解决。

我认为你不需要每个设备。也许可以买一个iPod touch,一个基本的iPad,并使用模拟器。 - Scott Simpson
@Scott 嗯,正是因为我想要的不仅仅是一种直觉,所以我才提出了这个问题。 - Panda Pajama
好的,我的评论不是基于直觉,而是基于经验。 - Scott Simpson
@Scott 嗯,“不确定”和“可能”通常用于描述直觉,而在这里回答问题时,数字、技术原因和规格要更可取。这只是我的两分钱。 - Panda Pajama
5个回答

3
一般来说,在模拟器和设备上进行测试时的主要能力差异有:
  • 模拟器不使用与设备完全相同的沙盒。例如,如果您的配置文件缺少 Passbook 凭证,则此问题将显示在物理设备上,但不会在模拟器上。
  • 模拟器通常不支持 GPS、多点触控、推送通知、蓝牙和一些其他特定功能。
  • 在非 Retina 显示器上,iPhone 5+ 或(尤其是!)Retina iPad 的模拟器视图在 100% 时几乎无法使用,因为其大小将超过屏幕大小。
  • 有一些非常罕见的崩溃仅发生在模拟器上,还有一些仅发生在设备上。
  • 模拟器并不总是支持应用程序支持的最早 iOS 版本。例如,当前版本的 Xcode(如果要构建最新的 iOS 版本,则必须使用该版本)仅提供 5.0+ 的模拟器。
  • 某些使用 Instruments 进行分析的功能,据我所知,仅在模拟器中可用。

现在,在我的具体情况下,我尝试在我支持的每个屏幕分辨率和每个 主要 操作系统版本上进行测试。

这归结为以下测试设备数组:

  • (480x320) iPhone 3GS 运行 4.3.3
  • (1136x640) iPod 5gen 运行最新的 6.x
  • (960x640) iPhone 4S 运行 6.0
  • (1024x768) iPad 1st gen 运行 5.0
  • (2048x1536) iPad 4th gen 运行最新的 6.x

请注意,iPad mini 的分辨率与第一代 iPad 相同。

(我选择更偏向于后期 iOS 版本,因为我喜欢随着它们推出所有 Apple 的时髦可选功能来实现集成。如果其中一个 6.x 设备运行的是 5.1,那么可能会更平衡一些。)

如果您不需要支持 4.x,则个人建议不要这样做,因为 iTunes Connect 不再收集其崩溃报告,模拟器也不再提供。当然,只有您可以决定是否真正需要这样做,如果确实需要,请将测试重点放在这里,因为 Xcode 不会警告您是否正在使用仅在 5.0 中引入的 API,这将导致运行 4.x 的任何设备崩溃。

请注意,有办法(需要做大量准备)将设备上的 iOS 版本降级,因此,如果您真的想测试比您拥有的设备更多的版本,则可以(需要付出很多努力)。但是,您可能最好培养一个强大的测试人员池。


2

虽然在所有可能的设备上进行测试显然是很好的,但iOS生态系统比Android要严密得多,因此您可以缩小范围。

您可以从限制目标iOS版本开始。那样会剔除一些旧设备。发布4个月后,iOS6占所有iOS设备的份额现在可能约为75%;iOS5+iOS6占90%以上。如果您现在才开始开发iOS应用,您可以只针对iOS6。

这意味着您的最低硬件平台是iPad2 / iphone3GS / ipodTouch4。

设备总列表:

iPad:   2 3 4 mini
iPhone: 3GS 4 4S 5
iPod:   4 5

十个设备。

但你不需要测试它们全部。你可以合理地缩小范围到...

iPad:   mini + one of the retina models
iPhone: 3GS + 5

针对日常测试而言。

显然,如果您想更好地兼容性,只需将较低端的测试模型替换为较低规格的设备(iPhone 3、iPad 1)。

存储容量的差异(例如8GB与16GB)基本上是不重要的。

根据您的项目,有一些硬件功能需要特别注意。最明显的是视网膜和非视网膜显示器之间的区别。位置服务的硬件功能在各种型号之间特别微妙。

Lowendmac有一个相当详尽的iPhone比较表...


2
我认为让应用在多种设备上运行不应该很困难,但是否有必要在所有你计划支持的设备类型上进行测试呢?
这在很大程度上取决于你打算构建什么类型的应用。例如,通用应用程序可以在小屏和大屏设备上运行,但可能在每个设备上呈现不同的外观,因此您需要能够尝试两者。许多应用程序专门针对iPad,因此不必在小型设备上进行测试。 iPod Touch和iPhone非常相似,因此在其中一个上进行测试通常就足够了。
简而言之,您不必拥有每个设备的每个版本,也不必测试发布过的每个iOS版本。但是您确实希望在尽可能多的不同设备和操作系统版本上测试您的产品。因此,培养一组贝塔测试人员,他们将通过尝试您的应用程序来帮助您测试其在其设备上的表现。 iOS开发人员计划允许您向您的账户添加最多100个测试设备,以便您可以在许多不同情况下测试您的应用程序。

有趣的事情,向其他人请求帮助测试你的应用程序。然而,除非你能要求那个人把他的设备交给你进行进一步的测试,否则特定于设备的问题是无法解决的。 - Panda Pajama
不一定需要。你的测试人员可以向你发送崩溃日志,有时这些日志提供了足够的信息来解决问题。你也可以在应用程序的测试版本中添加仪器以收集性能信息等。而且测试人员本身也可以提供有价值的反馈。 - Caleb
当然,拥有尽可能多的测试人员是非常有用的。但我不会将其他人作为我的首要测试线。 - Panda Pajama
当然,你可以在模拟器和你所拥有的设备上进行测试。但是大多数开发者没有资源拥有每个iOS设备每个版本的副本。而且这也不是必要的——设备数量远远小于Android世界,并且它们更加一致。 - Caleb

1

在iPod touch上进行测试通常是不值得的。

在iOS世界中,一般有iPhone/iPod、iPhone 5/iPod第五代和iPad。

因此,总共有3种屏幕尺寸。

如果您计划针对的不仅是最新的操作系统(iOS 6),那么测试的复杂性就会出现。仅针对iOS 5和iOS 6,您需要测试的目标数量几乎翻倍。

我试着保持简单。我在我的iPhone 5和iPad上进行测试。这两个设备都运行iOS 6。对于iOS 5和小型iPhone,我依赖模拟器。


iPod的主要(可能是幼稚的)优点是它比iPhone便宜,而且获得iPhone很可能需要与移动运营商签订合同,这对于测试目的来说是无关紧要的,除非我正在制作一个必须在3G上运行的网络应用程序。 - Panda Pajama
没错,但 iPhone 也是一部手机;-) - Jason Whitehorn
...这是无关紧要的,除非我正在制作一个必须在3G上工作的网络应用程序。 - Panda Pajama
你说得对,我只是指出你无论如何都必须有一部手机...只是开玩笑,不要太认真 :-) - Jason Whitehorn
除非我刚从石器时代回来,否则我很可能已经有一部手机了(顺便说一下,是一部Galaxy Note 2)。 - Panda Pajama

0

我同时开发Android和iOS,所以我理解这个问题的来由。我有幸能够在大多数不同的iOS设备上进行开发,并且我会说,在大多数情况下,我会感到舒适,测试我用户将要使用的最基本的设备。如果它在iPod第三代上运行流畅,那么它在iPhone 4S、5等上也会非常流畅。对于iPhone 5的不同屏幕高度,模拟器可以很好地布局。

你需要考虑的事情是,如果你的应用程序只有手机才有的某些功能选项,比如打电话。此外,如果你想制作iPad或通用应用程序,拥有一个实际的iPad会非常方便,但模拟器也可以很好地工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接