Мини-конференция Anadea Inc. 5 ноября 2015

Anadea Inc. Internal Mini-conference

Пятая мини-конференция Anadea Inc как по совпадению состоялась пятого ноября. К половине шестого стерео-система была готова, слайды заряжены, слушатели заняли свои места и конференцию как всегда открыла речь Алексея Деркача.

Сразу два доклада было посвящено тестированию: обзор Calabash Кирилла Мачухина и рассмотрение тестирования с точки зрения разработчика от Дарьи Коваленко. Но сперва из Гродно по Skype выступил Дмитрий Кириенко. Это первое онлайн-выступление в истории наших мини-конференций. Дима не только рассказывал, но и показывал на практике, как можно сделать лучше своё Ruby on Rails-приложение. А показывал он как:

  • Выносить логику из контроллеров в модели, оставляя в контроллерах только диспетчеризацию;
  • Вводить не-ActiveRecord модели, в частности и особенно в случаях, когда контроллер управляет больше, чем одной моделью.

Основная мысль заключалась в том, что стоит решать проблемы по мере их возникновения, причём доступными средствами - для этого не нужно долго подбирать правильный инструмент или правильный способ.

Уже после этого начался разговор о тестировании. Кирилл Мачухин начал доклад с вопроса: "какой инструмент выбрать для автоматического тестирования проекта?". Он обозначил все требования для такого инструмента, а позже представил фреймворк, которая полностью им отвечает - Calabash.

  • Calabash Android
  • Calabash iOS
  • Ruby
  • Gherkin Syntax (Cucumber style)
  • Calabash Android last updated - 26 days ago
  • Calabash iOS last updated - a month ago
  • Запуск на реальных девайсах

Кирилл рассказал о том, как начать работу с ним - установить, запустить, а также то, чем отличаются версии Android и iOS. Он показал, что до определённого этапа пишется одинаковый код и предложил способ избежания дублирования. Решение банальное и простое: установить gem’ы на стороне сервера, т.е. выделить наш Calabash из мобильных проектов, разбить наш page_object на модули и склеить launcher’ы calabash_iOS и calabash_Android.

Плюсы такой реализации:

  • не имеем повторяющегося кода (*.feature, *_steps.rb);
  • возможность простого доступа к объектам через ActiveRecord;
  • эмуляция работы второго клиента на стороне сервера.

Минусы:

  • различные команды запуска (cucumber, calabash-android run);
  • нет возможности работать в debug режиме предоставляемым calabash.

Так же, он продемонстрировал возможное избавление от минусов реализации.

Ответив на вопросы слушателей, Кирилл передал микрофон Дарье Коваленко, которая продолжила тему тестирования приложений рассказом о тестировании в iOS с точки зрения разработчика. Она рассуждала на тему того, зачем вообще разработчику писать тесты, говорила об интеграционных тестах и почему для них лучше всего подходит KIF.

Почему KIF:

  • Синтаксис на objective-c;
  • Добавляется через pod, в текущий или новый тестовый target;
  • Возможность использования OCMock stub’ов и expect’ов.

Даша рассказала о преимуществах использования интеграционных тестов:

  • Один тест выполняет сразу несколько действий, поэтому можно быстро покрыть тестами большое количество кода.
  • Экономит время при необходимости запуска приложения для проверки работы основных функций.
  • Легко отлавливаются мелочи, особенно на переходах между экранами, которые сложно проверить unit-тестами.

И о недостатках:

  • Если упал тест-сценарий в середине, следующие уже не пройдут, поскольку приложение не перезапускается.
  • Привязан к конкретной версии iOS и некоторые функции не работают после обновления iOS.Тесты проходят достаточно медленно.
  • Могут не пройти, если отключен показ клавиатуры, выскакивают системные окна и т. п.
  • Привязаны к accessibility labels.

А так же о том, почему стоит сначала писать тесты, а потом код:

  • Это даёт возможность более детально продумать структуру класса.
  • С помощью тестов описать возможные варианты поведения метода - а затем уже писать код, который выполняет все условия.
  • Приходится разбивать методы на более мелкие для тестов.
  • Потому что потом писать тесты ой как не хочется.

Когда аплодисменты провели последнего докладчика, на смену проектору и слайдам пришли пицца и кола, и как всегда, во время дружеских посиделок, ребята дискутировали с выступавшими по темам их докладов.

Запись конференции можно посмотреть здесь.

Связаться