Выполнять тесты на реальных устройствах или эмуляторах? Однозначного ответа нет и быть не может, поэтому расскажу вам свои мысли по этому поводу.
Реальные устройства
Сторонники реальных устройств (читай все, кто продают эти девайсы для тестирования в облаке ;-) ) в один голос кричат “на эмуляторах не отловишь всех проблем!”. Мой опыт говорит прямо противоположное - почти нет таких багов, которые бы воспроизводились на девайсе и не воспроизводились на эмуляторе. Да, бывают баги, в конкретной прошивке конкретного устройства конкретного производителя. Но шанс поймать его на ограниченной выборке тестовых устройств ничтожно мал.
Ещё одно серьёзное достоинство реальных устройств - твоё приложение там будет работать :-)
На этом плюсы заканчиваются и начинаются минусы - устройства стоят денег (часто больших), устаревают, умирают, греются, теряют сеть, качают обновления в самый неподходящий момент, зависают, на них заканчивается место, они сами занимают место. А главная на мой взгляд проблема, что всё это плохо скейлится.
Эмуляторы
Основной их плюс - практически бесконечная горизонтальная расширяемость. Просто доставляй сервера или добавляй памяти в существующие. Ещё их можно создавать с 0 под каждый тест - прямо мечта (авто)тестировщика. Некоторые параметры устройства можно передать на старте (например, локаль) - это сильно упрощает сами тесты.
Основной недостаток - требуется немного больше времени на старте чтобы всё завести. Возможно твоё приложение не заработает под эмулятором или вообще не собирается под x86 и другие подобные мелочи :-)
Вывод?
Нужно быстро стартануть или проект маленький - подключай реальные девайсы. Стало много тестов и требуется больше устройств - используй эмуляторы.
comments powered by Disqus