Simulator和Emulator的区别
- Simulator和Emulator异同
- 相同之处
- 不同之处
- 使用决策
- 何时使用Simulator
- 何时使用Emulator
- 结论
- 参考
软件测试种,经常会听到Simulator和Emulator,两者就像同义词一样。某种程度来说,确实如此,Simulator和Emulator确实在很多方面都相似,从测试工程师角度看,两者似乎没有实质性的区别。
但是事实上两者还是不同的东西,如果你想更精进一步,你需要区分开两者以便于在合适的时机使用其中一个。
Simulator和Emulator异同
相同之处
首先,我们先看两者相同之处吧。Simulator和Emulator两者都可以在灵活的软件定义网络的环境中执行软件测试。而且这种方式比在真机中测试更快速更简单。真机测试往往在软件发布以用于生产力之前。
不同之处
它们具体工作方式不同。
Simulator用于创建包含了应用程序真实生产环境中的变量和配置的模拟环境。但是Simulator不会尝试仿真生产环境中真实的硬件,因为Simulator只是创建软件环境,这种环境可以通过高级编程语言实现。
而Emulator会尝试模拟生产环境种所有的硬件功能和软件功能。通常你需要使用汇编语言来编写emulator来实现这个目的。
从某种程度来说,你可以认为Emulator是Simualtor和真机之间的一层。Simulator只是模拟了可以用软件定义或配置的功能环境,而Emulator模拟了软硬件功能。当然因为Emulator可能模拟生产环境中软硬件环境不到位,所以它们不是真机环境的替代品哦。
使用决策
何时使用Simulator
通常,Simulator最好用于软件测试场景中,这时你只需要关注程序与外部程序或环境交互时的执行结果是否和预期一致即可。例如,你想测试一款应用程序是否可以向其它应用程序发送数据,此时,Simulator足够了,因为底层硬件配置不太可能会影响数据传送。
何时使用Emulator
在你需要测试软件如何与底层硬件交互或者需要软硬件结合环境时,Emulator将会更合适。例如,你想知道固件(firmware)更新,对你的应用程序时候会造成影响,你就可以使用Emulator了。再者,你想知道在不同的CPU种类或者不同内存分配下,你的应用程序的表现如何,都可以使用Emulator。
结论
总结就是:Simulator提供了快速简单的方式设置软件环境以测试应用程序,而不关心硬件。Emulator既模拟软件,也模拟硬件。两者都很有用,但是都不足以代替真机环境。
Simulator | Emulator |
一定程度上模拟其它系统 | 精确模仿其它系统 |
不一定遵循所有的被模拟系统的规则 | 严格遵循被模拟系统的参数和规则 |
应用程序和事件的模型 | 就是其它系统的拷贝 |
参考
[1] Simulators vs. Emulators: What’s the Difference, Anyway? [2] Difference between Simulator and Emulator [3] Difference Between Emulator and Simulator