我需要在 iPod touch、iPad 和 iPhone 上分别进行测试吗?
Posted
技术标签:
【中文标题】我需要在 iPod touch、iPad 和 iPhone 上分别进行测试吗?【英文标题】:Do I need to separately test on iPod touch, iPad and iPhone? 【发布时间】:2012-12-21 03:16:05 【问题描述】:我想开始为 ios 开发。来自 android 开发背景,我知道您可以使用的设备类型越多,测试效果就越好,因为所有设备的规格都大相径庭,而在您的测试设备中可以完美运行的设备可能甚至无法运行另一个,别说好看了。
我知道在实际设备上进行测试非常重要,因为您可以在模拟器上测试的内容有很多限制,所以我决定购买一个实际设备。
但是,iOS 世界中也有大量可用的设备!有 iPod touch、iPad 和 iPhone,每个都有几个不同的世代和配置(8GB 版本与 16GB 版本、WiFi 版本、3G 版本等)。不仅是屏幕尺寸,而且不同设备的宽高比也有很大差异,包括的传感器也是如此。
我认为让应用程序在不同的设备上运行应该不难,但是否有必要在您计划支持的所有设备类型上进行实际测试?苹果不是以低价出名的,我想尽量降低起步成本。
因此,总结一下:是否有必要/建议在 iOS 开发世界中尽可能多地测试设备类型?
一个小小的说明:我特别询问是否可能存在与特定设备/设备系列相关的兼容性问题,我无法通过在模拟器上进行测试或完全不同的设备。
【问题讨论】:
我认为您不需要所有设备。也许买一个 iPod touch,一个基本的 iPad,然后使用模拟器。 @Scott 嗯,是的,正是因为我想要的不仅仅是预感,所以我提出了这个问题。 嗯,我的评论不是基于预感,而是基于经验。 @Scott 好吧,“不认为”和“也许”是描述预感时常用的词,而在此处回答问题时,数字、技术原因和规格更可取。只是我的 2 日元。 【参考方案1】:一般来说,在模拟器上测试和在设备上测试在能力上的主要区别是:
模拟器不使用与设备完全相同的沙盒。因此,例如,如果您的配置文件缺少 Passbook 凭据,则此问题将出现在物理设备上,但不会出现在模拟器上。 模拟器通常不支持 GPS、多点触控、推送通知、蓝牙和其他一些特定功能。 在非视网膜显示器上,iPhone 5+ 或(尤其是!)视网膜 iPad 的模拟器视图在 100% 时几乎无法使用,因为它的尺寸将超过您的屏幕尺寸。 有少数非常罕见的崩溃仅在模拟器上发生,少数仅在设备上发生。 模拟器并不总是支持您的应用程序支持的最早的 iOS 版本。例如,当前版本的 Xcode(如果您想为最新的 iOS 版本构建,则必须使用它)只有 5.0+ 的模拟器可用。 据我所知,使用 Instruments 进行的某些分析只能在模拟器中使用。现在,在我的具体情况下,我尝试在我支持的每种屏幕分辨率和我支持的每个主要操作系统版本之一上进行测试。
归结为以下测试设备数组:
(480x320) iPhone 3GS 运行 4.3.3 (1136x640) 运行最新 6.x 的 iPod 5gen (960x640) iPhone 4S 运行 6.0 (1024x768) iPad 第一代运行 5.0 (2048x1536) iPad 第 4 代运行最新的 6.x请注意,iPad mini 的分辨率与第一代 iPad 相同。
(我的选择偏向于后来的 iOS 版本,因为我喜欢在它们推出时实现与所有 Apple 时髦的可选功能的集成。如果 6.x 设备之一运行 5.1,它可能会是一个更平衡的分类而是。)
如果您需要支持 4.x,我个人建议不要这样做,因为 iTunes Connect 不再为它收集崩溃报告,模拟器也不再提供它。当然,只有你自己才能决定你是否真的需要,如果你这样做了,把你的大量测试集中在那里,因为如果你使用的是仅在5.0,这将使任何运行 4.x 的设备崩溃。
请注意,有一些方法可以(经过大量准备)降级设备上的 iOS 版本,因此,如果您真的想测试比您的设备更多的版本,您可以(付出很多努力)。但无论如何,你最好为此培养一批强大的 Beta 测试人员。
【讨论】:
【参考方案2】:虽然在所有可能的设备上进行测试显然很棒,但 iOS 生态系统比 Android 更紧密,因此您可以稍微缩小范围。
您可以从限制目标 iOS 版本开始。无论如何,这将淘汰一些旧设备。 iOS6 在所有 iOS 设备中的份额现在可能在发布 4 个月后达到 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 comparison chart...
【讨论】:
【参考方案3】:我认为让应用程序在不同的设备上运行应该 不难,但是否有必要实际测试所有 您计划支持的设备类型?
这在很大程度上取决于您打算构建什么样的应用程序。例如,通用应用程序可以在小屏幕和大屏幕设备上运行,但在每个设备上的呈现方式可能不同,因此您希望能够同时尝试这两种设备。许多应用程序专门针对 iPad,因此显然没有必要在小型设备上进行测试。 iPod Touch 和 iPhone 非常相似,因此在其中一个上进行测试通常就足够了。
简而言之,您不必拥有每台设备的每一个版本,也不必对曾经发布的每一个 iOS 版本进行测试。但是您确实希望在尽可能多的不同设备和操作系统版本上测试您的产品。因此,培养一批 Beta 测试人员,他们将通过在他们的设备上试用您的应用程序来帮助您。 iOS 开发者计划可让您准确地将多达 100 台测试设备添加到您的帐户中,以便您可以在许多不同的情况下测试您的应用。
【讨论】:
有趣的事情,请一群其他人帮助您测试您的应用程序。但是,除非您还可以要求该人将他的设备提供给您进行进一步测试,否则特定于设备的问题将无法解决。 不一定。您的测试人员可以向您发送崩溃日志,这些日志有时会提供足够的信息来解决问题。您还可以添加工具来测试您的应用程序版本,以收集性能信息等。测试人员自己也可以提供有价值的反馈。 好吧,拥有尽可能多的测试人员当然非常有用。不过,我只是不使用其他人作为我的第一行测试。 当然——您在模拟器和您拥有的设备上进行测试。但是大多数开发人员没有资源来拥有每个 iOS 设备的每个版本的副本。无论如何,这真的没有必要——设备的数量比 Android 世界要少得多,而且更加一致。【参考方案4】:在 iPod touch 上进行测试通常不值得。
在 iOS 世界中,一般有 iPhone/iPod、iPhone 5/iPod 第 5 代和 iPad。
所以,总共有 3 种屏幕尺寸。
如果您计划针对的目标不仅仅是最新的操作系统 (iOS 6),那就是测试的复杂性所在。只需针对 iOS 5,iOS 6 几乎会使您需要测试的目标数量增加一倍。
我尽量保持简单。我在我的 iPhone 5 和 iPad 上进行测试。两者都运行 iOS 6。对于 iOS 5 和小 iPhone,我依赖于模拟器。
【讨论】:
嗯,iPod 的主要(可能是幼稚的)优势是它比 iPhone 便宜,而且获得 iPhone 很可能涉及与移动运营商签订合同,这与测试目的无关,除非我正在制作一个联网应用程序,该应用程序特别需要在 3G 上运行。 没错,但 iPhone 也是一部手机 ;-) ...这无关紧要,除非我正在制作一个专门必须在 3G 上运行的联网应用程序 你说得对,我只是指出你必须有一部手机......只是心平气和,不要太认真:-) 除非我刚从石器时代进来,否则我很可能已经有一部手机(顺便说一句,Galaxy Note 2)【参考方案5】:我为 Android 和 iOS 开发,所以我知道这个问题来自哪里。我有幸能够在大多数不同的 iOS 设备上进行开发,我想说在大多数情况下,我会在用户将使用的最不先进的设备上进行测试。如果它在 iPOd 3rd gen 上运行流畅,那么它将在 iPhone 4S、5 等上运行非常流畅。对于 iPhone 5 的不同屏幕高度,模拟器在布局时效果非常好。
您需要考虑的事情是,您的应用是否可以选择使用某些只有手机才有的功能,例如拨打电话。另外,如果您想制作 iPad 或通用应用程序,拥有一台真正的 iPad 会非常方便,但模拟器确实可以很好地工作。
【讨论】:
以上是关于我需要在 iPod touch、iPad 和 iPhone 上分别进行测试吗?的主要内容,如果未能解决你的问题,请参考以下文章
检测 iPhone/iPad/iPod touch 的颜色?
info.plist 上的设置是啥以防止应用程序在 iPod-touch 上运行?
锚标签在 iPhone/iPod Touch/iPad 的 Safari (ios) 中不起作用
iPhone / iPod Touch 图标图像错误(MininumOSVersion 低于 3.2),而项目适用于 iPad?