模拟器与仿真器 – 它们之间的区别

模拟器与仿真器的主要区别

  • 仿真器是用机器级汇编语言编写的,而模拟器是用高级语言编写的。
  • 仿真器更适合用于调试,而模拟器在调试方面可能比较困难。
  • 仿真器是对原始软件的完整重新实现,而模拟器只是对原始软件的部分重新实现。
  • 仿真器和模拟器都是虚拟设备。虚拟设备不是真实的手机,而是一种软件,它提供与真实手机相同的功能(除了相机等少数功能)。

什么是真实测试设备?

在真实设备上测试允许您运行移动应用程序并检查其功能。真实设备测试确保您的应用程序在客户手机上流畅运行。

Real Testing Device

什么是仿真器?

仿真器是一种软件程序,通过将其安装到您的计算机或移动设备上,允许您的移动设备模仿您想要模仿的另一台计算机或移动软件的功能。

Emulator

模拟器和仿真器测试的区别

以下是模拟器和仿真器测试的主要区别

基于模拟器的测试 基于仿真器的测试
模拟器的目标是尽可能地模拟对象的内部状态。 仿真器旨在尽可能地仿真或模仿对象的外部行为。
当测试团队需要测试手机的内部行为(如其内部硬件、固件等)时,模拟器是更优选的。 当测试团队需要测试手机的外部行为(如计算、进行交易等)时,仿真器是更优选的。
模拟器是用高级语言编写的。 仿真器是用机器级汇编语言编写的。
模拟器在调试方面可能比较困难。 仿真器更适合用于调试。
模拟器只是原始软件的部分重新实现。 仿真器通常是对原始软件的完整重新实现。

真实设备和仿真器/模拟器测试的优点

问题 仿真器测试 真实设备测试
基于情景的应用 在某些特定情况下,文本执行结果的截止日期很短,可能无法购买所需的移动设备。因此,在这些情况下,可能需要使用仿真器/模拟器来测试需要测试的相关移动应用程序。 真实设备允许测试人员测试移动应用程序几乎所有可以测试的实时场景。这些设备通过手指操作,模拟真实生活中的使用。它们还有助于情境真实性:在火车上或在街上行走时使用应用程序是否容易?在阳光明媚或下雨时的情况如何?
对真实手持设备的亲近感 移动设备的广泛性带来了问题,测试人员不确定在预算限制下,应该投资哪些移动设备进行测试。仿真器/模拟器是为此类情况量身定制的。 真实设备允许测试人员测试甚至可用性问题,如应用程序的外观和感觉、屏幕的色彩分辨率、图片在白天和夜间条件下是否明亮等等。
易于获取 仿真器/模拟器在大多数情况下是开源免费软件,可以很容易地从互联网上下载并准备好进行测试。 真实设备允许严格的性能测试问题,例如连续15小时使用实时交通应用程序,这是仿真器无法成功模拟的。
通过URL打开Web应用程序的便捷性 在打开Web应用程序时,Web应用程序测试更容易。用户只需复制粘贴应用程序URL即可。 在真实设备上测试在可靠性方面提供了更多优势。
捕获出现缺陷情况的屏幕截图 使用模拟器捕获屏幕截图非常容易,因为我们只需使用Microsoft Office功能。 使用真实设备进行测试在互操作性测试方面非常有帮助。
电池场景的模拟验证 仿真器/模拟器无法模拟电池问题。 真实世界设备可以轻松完成同样的事情。
传入中断的验证 仿真器/模拟器无法模拟短信和来电的传入中断。 真实世界设备可以轻松模拟传入中断。
精确色彩显示的验证 当真实设备在阳光下或黑色时,仿真器/模拟器无法正确仿真/模拟设备的精确色彩显示。 真实世界设备可以轻松模拟精确色彩显示。
性能验证 仿真器/模拟器的性能有时会比原始设备慢。 原始设备的性能往往比仿真器或模拟器更快。
模拟内存相关问题 仿真器/模拟器上可用的内存往往比真实设备多得多,这可能会给使用相同验证的用户造成误解。 设备的存储内存水平往往远低于仿真器,因此这可能会

仿真器/模拟器和真实设备的缺点

仿真器/模拟器 真实设备
对于某些场景,例如测试团队需要长时间验证应用程序性能的场景,仿真器/模拟器并非总是最佳解决方案。 与仿真器/模拟器相比,真实设备成本较高。因此,预算和时间线受限的项目可能会面临盈利能力以及整个项目可行性的风险。
仿真器/模拟器主要适用于某些类型的功能测试用例执行。 移动设备种类繁多,从苹果到三星,再到安卓和塞班等等。考虑到如此广泛的移动设备,测试团队在相当多的预算和时间线限制下安排所有类型的移动设备非常困难。
仿真器/模拟器有时可能不支持某些类型的应用程序,在这种情况下,测试团队可能需要购买软件补丁,这些补丁并非总是免费的,有时可能成本高昂。 在开发阶段用于单元测试和类似目的时,真实移动设备可能比仿真器更难连接到IDE,这给调试带来了巨大的问题,在有时间线限制的项目中,这很可能会阻碍项目的整体结论。
并非所有仿真器/模拟器都支持所有类型的移动应用程序。例如,bada模拟器支持Maemo(如诺基亚N900)、Symbian Touch(如诺基亚N8)和Symbian非触控(如诺基亚E71),但它不支持其他移动设备,如安卓。就应用程序测试功能而言,bada不支持直接的网页浏览测试,但它允许用户只测试和创建webapp和小部件。 为了使用真实设备进行测试,设备需要始终连接到机器的USB端口。因此,如果USB端口无法正常工作,测试将无法进行。如果不提供足够的安全措施,移动设备(如果它们恰好像Apple iPhone一样昂贵)可能会丢失或被盗,从而阻碍整体工作。增加安全性也可能会增加项目涉及的总体支出。
用户必须手动输入URL才能打开需要测试的Web应用程序。为了解决这个特定问题,测试人员可能需要创建手机书签、短URL服务,或使用蓝牙连接将URL发送到手机,或创建包含一些URL的网页。采用这些程序将确保占用大量非常重要的内存空间,从而影响应用程序的整体性能。

仿真器 vs 模拟器 vs 真实设备测试:结论

考虑到移动应用程序在当今日常生活中扮演的重要角色,这些应用程序的测试将不断发展,因此它们需要大量的测试才能按要求工作。在模拟器/仿真器和真实设备上进行测试都是必要的,以保持高标准和质量保证。

仔细权衡了移动仿真器和真实设备的优缺点后,值得得出结论:企业最佳的移动测试解决方案既不是将所有鸡蛋都放入真实设备的篮子,也不是将它们放入仿真器,而是需要两者的最佳组合

仿真器可以被认为是应用程序开发初始阶段的非常合适的工具。

但是,为了避免发布带有缺陷的业务关键型应用程序而造成的昂贵后果,企业需要确保在应用程序投入生产之前,在真实设备上执行大部分移动测试。

每个组织都需要仔细制定战略和计划,以确定在哪个阶段引入真实设备。他们还需要决定多少设备足以满足市场需求,以及管理这些设备的最佳选择是什么。

最佳实践表明,实际开发应使用仿真器(和少数参考真实手机)以加快编码阶段的应用程序调试,而健全性测试、冒烟测试、性能测试、互操作性测试和网络可行性测试以及回归测试应在真实手机上进行。

还有一种新兴的做法是,开发人员在开发阶段使用仿真器进行快速执行,而测试团队在测试阶段使用真实设备进行测试,以确保整体质量保证目标和指标。为了节省成本,他们可以考虑使用虚拟移动测试工具。这些服务允许开发人员在全球各地使用不同的移动网络在各种手机上测试其应用程序(对于使用GPS的应用程序非常有用)。此类服务按小时计费,与购买新手机相比,成本效益非常高。