我为iPhone开发了一个应用程序,现在我希望在App Store上使用它。我的许多iOS极客朋友告诉我要在实际设备(例如iPhone)上对其进行测试。
因此,我想知道为什么尽管他们(苹果公司)提供了与我的设备几乎相同的“模拟器”,但为什么有必要在实际的iPhone设备上测试我的iPhone应用程序吗?
我为iPhone开发了一个应用程序,现在我希望在App Store上使用它。我的许多iOS极客朋友告诉我要在实际设备(例如iPhone)上对其进行测试。
因此,我想知道为什么尽管他们(苹果公司)提供了与我的设备几乎相同的“模拟器”,但为什么有必要在实际的iPhone设备上测试我的iPhone应用程序吗?
Answers:
您需要至少在真实设备上测试应用程序,以查看其行为方式:
iOS开发人员,请继续此列表。
使用模拟器进行测试时,您永远不会知道的一件事是,用户手中握着一个真实设备,在屏幕上滑动手指的感觉如何。结果,在笔记本电脑上使用触摸板进行仿真时,看起来似乎很顺畅的用户操作对于实际的设备使用而言可能非常麻烦。为确保您的应用程序正常,请使用真实设备进行测试。
值得在实际设备上进行测试的另一件事是电池消耗。仅依靠真实的设备进行测试,比依赖模拟器开发人员在其工具中成功复制它的方式确实更安全。
可能还有其他事情在模拟器上还不够完善。例如,音量和平衡-在笔记本电脑上的发音方式可能与真实手机上的有所不同。振动是另一个很难通过模拟器正确实现的示例。陀螺仪传感器在真实手机上的工作方式。GPS /位置相关的东西。等等等等...
模拟器与真实设备测试是一个非常重要的问题。在我过去的项目之一中,商业上成功的重要部分是在这些测试之间进行谨慎的平衡,这实际上归结为永久性地重新提出诸如为何在设备上进行测试等问题。
真正的工作始于一个人问为什么,在特定情况下,选择在设备测试和模拟器测试之间进行选择的原因。
忽视设备测试会使您的产品面临(相当高的)最终用户手中破坏安全的风险,从而完全破坏了您投入开发的所有精力。但事实是,模拟器测试便宜得多,自动化也容易得多。如果一个盲目的坚持上设备仅用于测试,他们的版本可能变得显着比竞争对手更高,更昂贵。
从经验和最佳投票答案中脱颖而出:
当我们为Windows Phone 7开发Decimation X2时,您的手指而不是鼠标是最大的不同。它是在模拟器上编码的,因为我们没有WP7,而且它是在WP7发行之前。如果最后一句话对您没有意义,我们可能会在发布前获得免费的WP7,因为微软邀请我们在他们的手机上发布启动标题。事实证明,在真实电话上,我们希望用户用手指进行的操作非常困难,而使用鼠标则很容易。这与屏幕边缘的情况有关。不幸的是,我们的游戏要求您的手指始终保持在屏幕边缘,由于屏幕凹陷且外壳较厚,某些手机难以做到这一点。我们实际上发布了一个补丁来解决此问题。这表示我们所有的初次使用者都表现不佳,甚至可能无法使用,我们的游戏版本。:(
其次是最大的硬件速度差异。我们不得不以一种不准确的方法来猜测,那就是采用Xbox 360版本的游戏并将其相应地降级为帧速率的一半(60fps至30fps)和三分之一的GHz(3.0GHz至1.0GHz),我们猜到了错误。当然,处理器是不同的,我们知道这一点。没有硬件,我们就la脚了。由于没有WP7,这不是我们的选择,但我们了解到了我现在要与您分享的教训。在某些手机上,在游戏中最密集的部分,它掉了帧。:(没有人似乎在乎,因为他们认为减速适用于如此剧烈的部分。所以这没什么大不了的,但是重点是:如果这没什么大不了的,那么“ app”就不会被我们la脚的猜测所打破。
在真实的硬件上测试。并且,当您为各种电话硬件编码时,如果性能存在问题,请在低端硬件上进行测试。
因为您将不会有很多用户随身携带一个模拟器。
编辑:每当您在模拟器(或模拟器)上测试您的应用程序时,您使用的是假冒设备,根据定义,它不能100%准确地表示真实事物。仿真器可能比仿真器更准确,但是仍然存在差异。唯一100%准确的仿真器是设备本身。
在模拟器上设计,测试,优化代码会导致应用程序经过微调,以在模拟器上最佳工作。但是,您的用户将没有模拟器。您定位的设备错误。非常相似的一个;但不是您的用户将使用的设备。
这可能会导致多种问题。像bug,崩溃这样的严重问题当然是您的重中之重。但是还有其他。例如人体工程学。尝试将模拟器握在手中。试一试。UI元素在不同的屏幕上呈现,可能具有不同的颜色呈现,当然还有不同的尺寸(例如,美丽的视网膜显示加剧了这一问题,例如,还不能通过使用视网膜Macbook来完全解决)。在阳光下的设备上,那些精致的灰色阴影是否可以同等地区分?
速度的细微差异以及不同的传感器仿真(或缺乏仿真)有时会极大地改变体验。
如果您的应用程序依赖于Internet连接,则您无法在LTE,3G,EDGE或GPRS之间切换,测试不同的场景,甚至测试不同的运营商。
您要支持越狱设备吗?也许您不是,但是如果您是,则您可能愿意用一个来测试您的应用程序。或者,如果不是,您是否有信心检测到越狱环境?
当用户握住重量并用手指玩时,您在模拟器上开发的iPad游戏是否同样可用?意外的多次触摸是否能够破坏您的应用程序,而这在安全的单点触摸(或对称双点触摸)模拟器环境中是无法预期的?
您会不会舒适地登上从未真正离开过地面的飞行员指挥的飞机?
最重要的是:在发货之前,请务必使用与用户要使用的设备相同的设备。他们都不会使用模拟器。
实际原因:
1)您没有“发送邮件”功能。
2)您不能将设备上下颠倒。
当然已经说了原因:
3)低带宽
4)与模拟器相比,计算能力非常小
5)Open GL调用在模拟器中的实现有些不同
6)磁盘空间/ RAM
尽管提到了硬件性能通常较差,但必须注意的是,OpenGL ES并非如此。模拟器是通过软件实现的,因此在设备本身上运行时注意到巨大的性能提升并不罕见。
此外,Open GL ES的软件和硬件实现之间还存在一些细微差异,例如,着色器精度提示可能具有不同的输出。
有一些功能,例如PushNotification,使用相机等,我们只能在设备上进行测试;这些是无法在模拟器上测试的功能。
在提交到App Store之前在实际设备上测试您的应用程序可以减少应用程序被拒绝的机会;有时,应用程序在模拟器中可以正常运行,但会在实际设备上崩溃,这是导致应用程序被拒绝的主要原因。
实际设备和仿真器之间可能存在实际的性能差异。我们发现,在许多情况下,仅使用模拟器进行测试会导致应用程序运行非常缓慢,这是我们没有想到的。