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