ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 모바일 에뮬레이터(AOS)와 시뮬레이터(iOS)의 차이
    Software QA 2021. 8. 9. 21:58

    개요

    담당 프로젝트 때문에 모바일앱 테스트 자동화 방법을 리서치 하던 중에
    근본적으로 Android와 iOS의 테스트 기기 환경이 달라서 조사하게 됐다.

    Android는 왜 에뮬레이터(Emulator)인데 iOS는 왜 시뮬레이터(Simulator)일까?
    QA와 관련된 자료는 워낙 적어서 외국 자료와 나의 사견을 추가해서 정리해 본다.


    뭐가 다를까?

    먼저 가장 만만한 사전적 정의 먼저 알아보자.

     

    에뮬레이터
    A simulator creates an environment that mimics the behavior and configurations of a real device. On the other hand, an emulator duplicates all the hardware and software features of a real device.

    에뮬레이터(Emulator)는 한 시스템에서 다른 시스템을 복제한다. 그리하여 두 번째 시스템이 첫 번째 시스템을 따라 행동하는 것이다. 외부의 행동에 대해 똑같이 따라하려고 하는 이 관점은 시뮬레이션과는 정 반대이다. 왜냐하면, 시뮬레이션은 자주 내부 상태와 관련하여, 흉내내는 시스템의 추상적인 모델과 관계가 있기 때문이다.

     

    시뮬레이터
    A simulator mimics the basic behavior of a device.

     

    시뮬레이터나 움직임이 빠른 텔레비전 게임은 영상을 만들어 내고 그것을 연속적으로 바꿔 줌으로써, 마치 움직이는 것처럼 보이게 하는 컴퓨터의 기능을 이용한 장치이다. 군대, 항공수송 기관, 우주개발 기관 등에서 많이 쓰이며, 더욱 정교한 성능의 시뮬레이터를 개발하기 위한 연구가 계속되고 있다.

    모바일 환경에 대입해서 요약하면 에뮬레이터는 실제 기기를 그대로 모방한 것이고,
    시뮬레이터는 특정 상황을 따라해서 묘사한 것의 차이다.

     

    당연하게도 실제기기와 똑같은 에뮬레이터에서 더 많은 기능을 제공하고 실제 테스트와 유사한 효과를 낼 수 있다.

     

    하지만 단점도 있다.
    실제와 같은 환경을 구축하기 위해서 컴퓨터의 자원을 더 많이 쓸수 밖에 없고,
    시뮬레이터에 비해 속도도 많이 느린 편이다.

     

    Android Studio에서 에뮬레이터를 사용해보고, Xcode에서 시뮬레이터를 사용하면 바로 체감할 수 있다.
    이는 구조적으로 시뮬레이터는 시뮬레이션을 위해 필요한 바이너리만 실행하기 때문에 당연한 결과다.

     

     

    에뮬레이터와 시뮬레이터의 차이를 정리한 표


    Android와 iOS의 제공 테스트 환경은 왜 다를까?

    이 부분은 공식문서를 기준으로 찾아봤지만 Apple, Google 모두 명확하게 정리해놓은 문서는 없었다.
    예전 개발자 컨퍼런스에서 소개를 했을 것 같기도 한데 찾기가 어렵다...

    내 사견으로 이유를 추측해보자면, 두 OS 태생의 차이 때문인 것 같다.

     

    Android OS가 이미 jvm(Java virtual machine)기반이므로, 에뮬레이터와 같은 가상 머신을 제공하는데 더 적합했을 것이다.
    또한 Android는 기기 제조사가 매우 많고, 파편화 되어있다보니 특정 환경만 재현하는 시뮬레이터보다는
    실제 기기와 온전하게 똑같은 동작을 하는 에뮬레이터를 제공하는 것이 협력사들에게 더 편했을 것 같다.

     

    반면 iOS는 Apple이라는 하나의 회사가 설계부터 기기 제조까지 모두 담당하기 때문에
    파편화된 환경을 고려할 필요 없이 본인들의 입맛에 맞는 적당한 수준을 시뮬레이터로 준비했을 것 같다.
    그렇게 하는 것이 개발 속도 측면에서도 빠를테니까.


    레퍼런스


     

    댓글

Designed by Tistory.