Автоматическое приемочное тестирование является стандартной и распространенной практикой при разработке веб-приложений. Одна из самых популярных сред — это Cucumber, и ее легко интегрировать в приложения Ruby on Rails и Java. Тем не менее, в настоящее время так же легко использовать эти платформы с собственными мобильными приложениями. В этой статье мы рассмотрим простое приложение, написанное на Swift, и покажем, как можно использовать такую среду, как Calabash, и начать писать автоматизированные приемочные тесты.
Прежде чем продолжить, это предварительные условия, необходимые для запуска программного обеспечения, описанного в этой статье:
- Xcode 6.1
- Гит
- Рубин
- Rubygems
Сделать списки
Приложение, к которому мы добавим приемочные тесты, представляет собой простой список дел. Исходный код можно найти здесь . Я разветвил существующее приложение и внес несколько небольших изменений.
1 Извлеките репозиторий, вы должны по умолчанию находиться в начальной ветке.
$ git clone https://github.com/codingricky/todoSwift
2 Откройте файл SingleTodo.xcodeproj в Xcode. Скомпилируйте и запустите это.
Вам должно быть представлено приложение, которое выглядит следующим образом:
Нажав кнопку Добавить, вы добавите задачу. Нажатие Готово удалит все отмеченные задачи.
Теперь, когда у нас есть работающее приложение, давайте добавим несколько тестов.
Кальян
Calabash — одна из многих платформ для приемочного тестирования iOS. Это тот, который я нашел наиболее простым в использовании. Учитывая мой опыт работы с Rails и Cucumber, переход прошел гладко, поскольку Cucumber поддерживается в среде Calabash. Одним из недостатков Calabash является то, что для его сборки требуется отдельная версия приложения, поскольку он встраивает в приложение HTTP-сервер. Это позволяет волшебству автоматизации случиться.
3 Калебас распространяется как драгоценный камень. Выполните следующую команду в терминале.
$ gem install calabash-cucumber --no-ri --no-rdoc
4 Установите фреймворк Calabash в проект Xcode, выполнив следующую команду в каталоге, в котором вы клонировали репозиторий git.
$ calabash-ios setup
Это добавит еще одну схему под названием SingleTodo-cal в проект Xcode. Он также добавится в каталог calabash.framework.
$ ls -al total 32 drwxr-xr-x 10 ricky staff 340 30 Oct 11:31 . drwxr-xr-x 4 ricky staff 136 30 Oct 11:25 .. drwxr-xr-x 13 ricky staff 442 30 Oct 11:32 .git -rw-r--r-- 1 ricky staff 289 30 Oct 11:25 .gitignore -rw-r--r-- 1 ricky staff 57 30 Oct 11:25 .travis.yml -rw-r--r-- 1 ricky staff 1478 30 Oct 11:25 README.md drwxr-xr-x 12 ricky staff 408 30 Oct 11:25 SingleTodo drwxr-xr-x 5 ricky staff 170 30 Oct 11:25 SingleTodo.xcodeproj -rwxr-xr-x 1 ricky staff 92 30 Oct 11:25 build.sh drwxr-xr-x 6 ricky staff 204 24 Oct 13:10 calabash.framework
5 Создайте образец файла объектов. Запустите следующую команду:
$ calabash-ios gen
Это сгенерирует следующие файлы.
$ ls features/ my_first.feature step_definitions support
6 Создайте схему SingleTodo-cal в Xcode. Запустите пробный тест.
$ cucumber
Это выполнит функцию против симулятора. Фактический симулятор появится. Вывод в терминале должен выглядеть следующим образом:
Feature: Running a test As an iOS developer I want to have a sample feature file So I can begin testing quickly Scenario: Example steps # features/my_first.feature:6 Given I am on the Welcome Screen # features/step_definitions/my_first_steps.rb:1 Then I swipe left # calabash-cucumber-0.11.3/features/step_definitions/calabash_steps.rb:234 And I wait until I don't see "Please swipe left" # calabash-cucumber-0.11.3/features/step_definitions/calabash_steps.rb:165 And take picture # calabash-cucumber-0.11.3/features/step_definitions/calabash_steps.rb:229 1 scenario (1 passed) 4 steps (4 passed) 0m31.562s
Актуальный тест
Хорошо иметь пример теста, но давайте напишем тест, который немного больше подходит для приложения.
Для простоты мы будем использовать предопределенные шаги в Cucumber / Calabash. Тест добавит задачу и подтвердит, что она была добавлена.
7 Создайте новый файл объектов и удалите образец.
$ touch features/todo.feature $ rm features/my_first.feature
8 Отредактируйте новый файл ( features / todo.feature ) в предпочитаемом вами редакторе. Вставьте следующее в файл.
Feature: Todo list application can add tasks As a user I want to add tasks So I can remember to do things Scenario: Add Task Given I am on the Welcome Screen When I touch "Add" And I fill in "TaskDescription" with "listening to Taylor Swift" And I touch "Add task" Then I wait for "listening to Taylor Swift" to appear
Тест довольно понятен. Есть пара вещей, на которые стоит обратить внимание. Во-первых, шаги «Когда я касаюсь» используют метку кнопки. «Заливка в» шаг использует метку доступности. Так как мы изучаем Swift, мы могли бы также послушать немного Swift.
9 Запустите огурец еще раз, сценарий должен выполнить.
$ cucumber
Вывод должен выглядеть следующим образом:
Feature: Todo list application can add tasks As a user I want to add tasks So I can remember to do things Scenario: Add Task # features/todo.feature:6 Given I am on the Welcome Screen # features/step_definitions/my_first_steps.rb:1 When I touch "Add" # calabash-cucumber-0.11.3/features/step_definitions/calabash_steps.rb:15 And I fill in "TaskDescription" with "listening to Taylor Swift" # calabash-cucumber-0.11.3/features/step_definitions/calabash_steps.rb:114 And I touch "Add task" # calabash-cucumber-0.11.3/features/step_definitions/calabash_steps.rb:15 Then I wait for "listening to Taylor Swift" to appear # calabash-cucumber-0.11.3/features/step_definitions/calabash_steps.rb:174 1 scenario (1 passed) 5 steps (5 passed) 0m34.296s
Резюме
Итак, теперь вы видели, как легко начать работу с приложениями Calabash и iOS. Используя этот подход, вы можете легко создать набор тестов и убедиться, что качество вашего приложения остается высоким.
В следующих статьях я буду опираться на этот пример, так что следите!