2
2
3
3
Неотъемлемой частью разработки масштабного приложения служит тестирование тех или иных частей этого приложения.
4
4
Есть даже методика разработки приложений, которая тесно связана с тестированием - разработка через тестирование. Возможно,
5
- вы знакомы с ней как <a href =" https://en.wikipedia.org/wiki/Test-driven_development " target =" _blank " >TDD</a >.
5
+ вы знакомы с ней - <a href =" https://en.wikipedia.org/wiki/Test-driven_development " target =" _blank " >Test-driven development ( TDD) </a >.
6
6
7
7
Разработчики и сообщество Yii приложило много усилий, чтобы можно было максимально просто покрыть тестами необходимый код.
8
8
9
- Раньше, например когда создавали форму опрос, приходилось открывать браузер , заполнять форму выдуманными данными, проверять
10
- результат. Добавляли успешный вывод сообщения, в виде результата - опять открывали форму , заполняли данными , проверяли
11
- результат. Добавили, поведение к форме - опять проверяли, открывая форму и вводя данные . Сохраняли результат в базе данных -
12
- приходилось смотреть сохранились ли данные корректно. Всё это наверное вам знакомо. Возможно, вам приходится такое проделывать,
9
+ Раньше, когда создавали форму опрос, приходилось открывать страницу с формой , заполнять её выдуманными данными, проверять
10
+ результат. Добавляли код для вывода сообщения о успешном результате - опять открывали страницу с формой , заполняли её , проверяли
11
+ результат. Добавляли поведение к форме - опять проверяли результат , открывая страницу с формой и заполняя её . Сохраняли результат в базе данных -
12
+ приходилось проверять сохранились ли данные корректно. Возможно, вам приходится такое проделывать каждый раз ,
13
13
когда разрабатывается тот или иной функционал. А когда приложение становится масштабным, уже боязно вносить изменения
14
- в код. Так как далее приходится тратить много времени, чтобы пройтись по некоторым страницам сайта и проверить
15
- вручную всё ли работает как требуется. И часто, спустя несколько дней, кто-нибудь сообщает, что то что, когда-то работало,
14
+ в код потому, что далее приходится тратить много времени и сил , чтобы пройтись по некоторым страницам сайта и вручную
15
+ проверить, всё ли работает как требуется. И часто, спустя несколько дней, кто-нибудь сообщает, что то что, когда-то работало,
16
16
перестало работать. И опять тратиться время на выяснение причины неисправности, а так как изменения вносились несколько
17
- дней назад, то поиск истиной причины становится мукой. Или причина неисправности определяется неверно и в результате
17
+ дней назад, то поиск истиной причины становится мукой. А бывает причина неисправности определяется неверно и в результате
18
18
добавляется "костыль", который исправляет проблему.
19
19
20
- Может вы к этому привыкли и вас всё устраивает. Но что, если про это всё забыть и использовать всего лишь одну команду:
20
+ Может вы к этому привыкли и вас всё устраивает. Но что, если про это всё забыть и использовать всего лишь одну команду,
21
+ которая выполнит все проверки в самых нежных и уязвимых местах приложения:
21
22
22
23
```
23
24
codecept run
@@ -26,8 +27,9 @@ codecept run
26
27
Всё! Больше ничего. Запустив команду, после очередного изменения кода и не увидев ни одной ошибки в результатах, вы можете
27
28
со спокойной душой сообщить всем, что всё работает, как того требует техническое задание.
28
29
29
- В этой главе посмотрим, что скрывается под командой ` codecept run ` . Чтобы начать, выполните команду из
30
- директории yii2-tutorial:
30
+ В этой главе посмотрим, что скрывается под командой ` codecept run ` .
31
+
32
+ Для подготовки кода в соответствии с этой главой, выполните команду из директории yii2-tutorial:
31
33
32
34
```
33
35
git checkout -f step-1.0
@@ -47,7 +49,7 @@ Codeception основан на php фреймворке для тестиров
47
49
Вся настройка Codeception сводится к следующим шагам:
48
50
49
51
- создайте директорию ` codecept ` , где посчитаете нужным (не внутри учебника)
50
- - создайте в этой директории ` composer.json ` :
52
+ - создайте в этой директории ` composer.json ` со следующим содержанием :
51
53
```
52
54
{
53
55
"require": {
@@ -60,7 +62,7 @@ Codeception основан на php фреймворке для тестиров
60
62
- запустите команду ` composer install ` из этой директории
61
63
- после установки всех зависимостей, настройте переменную
62
64
<a href =" https://ru.wikipedia.org/wiki/PATH_%28%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F%29 " target =" _blank " >
63
- PATH</a > на директории ` codecept\vendor\bin\ ` , чтобы команда codecept была доступна из любого места .
65
+ PATH</a > на директории ` codecept\vendor\bin\ ` , чтобы команда ` codecept ` была доступна глобально .
64
66
65
67
Теперь можно выполнить команду ` codecept -V ` , чтобы увидеть версию Codeception и убедиться, что он успешно установлен.
66
68
@@ -102,7 +104,7 @@ Codeception поддерживает следующие виды тестов:
102
104
` acceptance, functional, unit ` директории, которые хранят тесты в зависимости от их видов. ` _output ` - это директория, в
103
105
которую будет попадать результат эмуляции браузера (html код страницы) для функциональных тестов, в случае ошибки.
104
106
105
- В Codeception есть понятие "Исполнители тестов". Из названия понятно, для чего они. Для того, чтобы их создать
107
+ В Codeception есть понятие "Исполнители тестов". Для чего они? Из названия понятно. Перед их созданием
106
108
необходимо произвести их инициализацию. В директории ` tests/codeception/frontend `
107
109
необходимо выполнить ` codecept build ` . Создадутся файлы:
108
110
@@ -143,10 +145,10 @@ OK (6 tests, 49 assertions)
143
145
codecept run functional
144
146
```
145
147
146
- после очередного рефакторинга кода, можно с уверенностью сказать, корректно ли работает сайт. А не бродить по сайту в поисках
147
- "А не поломал ли я чего -нибудь?". В этом и есть одна из приятных особенностей тестирования.
148
+ после очередного рефакторинга кода, можно с уверенностью сказать, корректно ли работают эти части сайта. Больше не нужно
149
+ бродить по сайту в поисках "А не поломал ли я что -нибудь?". В этом и есть одна из приятных особенностей тестирования.
148
150
149
- Также можно попробовать запустить модульные тесты:
151
+ Также можно попробовать запустить модульные(юнит, unit) тесты:
150
152
151
153
``` php
152
154
codecept run unit
@@ -187,16 +189,23 @@ http://localhost:8888/yii2-app-advanced/. Сделайте это.
187
189
188
190
А сейчас, когда PhpBrowser настроен, можно пробовать запускать и приёмочные тесты.
189
191
190
- Запуск отдельных тестов, сокращает время ожидания выполнения. Codeception поддерживает: запуск всех тестов,
191
- запуск тестов по видам и запуск отдельных тестов. Например, для ` yii2-app-advanced/tests/codeception/frontend ` можно
192
- выполнить:
192
+ Запуск отдельных тестов, сокращает время ожидания выполнения. Codeception поддерживает:
193
+
194
+ - запуск всех тестов;
195
+ - запуск тестов по видам;
196
+ - запуск отдельных тестов.
197
+
198
+ Например, для ` yii2-app-advanced/tests/codeception/frontend ` можно выполнить:
193
199
194
200
```
195
201
codecept run
196
202
codecept run functional
197
203
codecept run functional functional\InterviewCept.php
198
204
```
199
205
206
+ В разделе [ Сохранение реляционных данных] ( /scripts/index.php?c=step-1.3 ) присутствует пример как проверить работоспособность
207
+ формы с помощью тестирования.
208
+
200
209
#### Дополнительная информация для самостоятельного ознакомления:
201
210
202
211
- <a href =" https://ru.wikipedia.org/wiki/%D0%AD%D0%BA%D1%81%D1%82%D1%80%D0%B5%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5 " target =" _blank " >Экстремальное программирование</a >.
0 commit comments