Screenshot-based автоматическое тестирование Android приложений

от автора

Что такое тестирование приложений и для чего оно нужно все знают. И все, я надеюсь, понимают, что нужно стремиться к созданию автоматических тестов. Работать должна машина. И все это хорошо и здорово, пока дело не касается пользовательского интерфейса (UI). Несмотря на то, что инструментов для тестирования UI существует немало, в том числе и для Android, разработка таких тестов дело нудное. По моему, очень показательно, в этом habrahabr.ru/post/173455/ опросе 80% отметили, что не пишут тестов для Android приложений.

Ну и что-же теперь совсем не писать тестов? Тем более для UI? Я думаю, что если таких тестов не писать, то рано или поздно вы получите в своем приложении такую картинку, как на приведнных здесь скриншотах.

[!!! картинка с клавиатурой] Бага в UI реального приложения.

Где же выход?

UI тесты?

<
Автоматическое тестирование UI дело или сложное или занудное. Как правило, автоматическое тестирование интерфейса пользователя сводится к отображению нужного окна/экрана и проверки элементов управления, которые при этом отображаются. Например, такое тестирвание UI описано здесь [http://habrahabr.ru/post/124110/] для платформы .NET или в этом [http://etutorials.org/Programming/Java+extreme+programming/Chapter+4.+JUnit/4.17+Testing+Swing+Code/] тюториале по функциональному тестированию UI swing приложений.

Такой тест может выглядеть примерно так:

    public void testTextFieldsAreInitiallyDisabled(  ) {         assertTrue("First name field should be disabled",                 !this.emptyPanel.getFirstNameField().isEnabled(  ));         assertTrue("Last name field should be disabled",                 !this.emptyPanel.getLastNameField().isEnabled(  ));     } 

Такое тестирование интерфейса пользователя, позволяет ответить на следующие вопросы:

  1. Наличие/отсутствие элемента управления. Например, чтобы нажать на кнопку (програмно), ее нужно сперва найти в окне. Если ее там нет, то скорее всего, мы что-то сломали.
  2. Корректность реакции элемента управления на действия пользователя. Например: «по нажатию на buttonAdd в itemsList должна добавиться строка из nameItemEdit.
  3. Различные свойства объекта. Такие, например, как „Hidden“, текст кнопки, элементы в списке и так далее.

ссылка на оригинал статьи http://habrahabr.ru/post/174753/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *