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,17 +27,19 @@ 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
34
36
```
35
37
36
-
37
- <p class =" alert alert-info " >Под Windows вместо стандартной командной строки cmd лучше использовать другой интерпретатор.
38
- Тот который использует подсветку кода, например <a href =" http://gooseberrycreative.com/cmder/ " target =" _blank " >Cmder</a >.
39
- Если у вас возникли проблемы с кодировкой в командной строке, то попробуйте выполнить в ней команду "chcp 65001".
38
+ <p class =" alert alert-info " >Работая под Windows вместо стандартной командной строки cmd удобнее использовать другой
39
+ интерпретатор, который использует подсветку кода. Например <a href =" http://www.conemu.ru/ " target =" _blank " >ConEmu</a >, он
40
+ идёт в комплекте с <a href =" http://open-server.ru/ " target =" _blank " >OpenServer</a > или
41
+ <a href =" http://gooseberrycreative.com/cmder/ " target =" _blank " >Cmder</a >. Если у вас возникли проблемы с кодировкой
42
+ в командной строке, то попробуйте выполнить в ней команду "chcp 65001".
40
43
</p >
41
44
42
45
#### Codeception
@@ -46,7 +49,7 @@ Codeception основан на php фреймворке для тестиров
46
49
Вся настройка Codeception сводится к следующим шагам:
47
50
48
51
- создайте директорию ` codecept ` , где посчитаете нужным (не внутри учебника)
49
- - создайте в этой директории ` composer.json ` :
52
+ - создайте в этой директории ` composer.json ` со следующим содержанием :
50
53
```
51
54
{
52
55
"require": {
@@ -59,7 +62,7 @@ Codeception основан на php фреймворке для тестиров
59
62
- запустите команду ` composer install ` из этой директории
60
63
- после установки всех зависимостей, настройте переменную
61
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 " >
62
- PATH</a > на директории ` codecept\vendor\bin\ ` , чтобы команда codecept была доступна из любого места .
65
+ PATH</a > на директории ` codecept\vendor\bin\ ` , чтобы команда ` codecept ` была доступна глобально .
63
66
64
67
Теперь можно выполнить команду ` codecept -V ` , чтобы увидеть версию Codeception и убедиться, что он успешно установлен.
65
68
@@ -101,7 +104,7 @@ Codeception поддерживает следующие виды тестов:
101
104
` acceptance, functional, unit ` директории, которые хранят тесты в зависимости от их видов. ` _output ` - это директория, в
102
105
которую будет попадать результат эмуляции браузера (html код страницы) для функциональных тестов, в случае ошибки.
103
106
104
- В Codeception есть понятие "Исполнители тестов". Из названия понятно, для чего они. Для того, чтобы их создать
107
+ В Codeception есть понятие "Исполнители тестов". Для чего они? Из названия понятно. Перед их созданием
105
108
необходимо произвести их инициализацию. В директории ` tests/codeception/frontend `
106
109
необходимо выполнить ` codecept build ` . Создадутся файлы:
107
110
@@ -142,10 +145,10 @@ OK (6 tests, 49 assertions)
142
145
codecept run functional
143
146
```
144
147
145
- после очередного рефакторинга кода, можно с уверенностью сказать, корректно ли работает сайт. А не бродить по сайту в поисках
146
- "А не поломал ли я чего -нибудь?". В этом и есть одна из приятных особенностей тестирования.
148
+ после очередного рефакторинга кода, можно с уверенностью сказать, корректно ли работают эти части сайта. Больше не нужно
149
+ бродить по сайту в поисках "А не поломал ли я что -нибудь?". В этом и есть одна из приятных особенностей тестирования.
147
150
148
- Также можно попробовать запустить модульные тесты:
151
+ Также можно попробовать запустить модульные(юнит, unit) тесты:
149
152
150
153
``` php
151
154
codecept run unit
@@ -186,16 +189,23 @@ http://localhost:8888/yii2-app-advanced/. Сделайте это.
186
189
187
190
А сейчас, когда PhpBrowser настроен, можно пробовать запускать и приёмочные тесты.
188
191
189
- Запуск отдельных тестов, сокращает время ожидания выполнения. Codeception поддерживает: запуск всех тестов,
190
- запуск тестов по видам и запуск отдельных тестов. Например, для ` yii2-app-advanced/tests/codeception/frontend ` можно
191
- выполнить:
192
+ Запуск отдельных тестов, сокращает время ожидания выполнения. Codeception поддерживает:
193
+
194
+ - запуск всех тестов;
195
+ - запуск тестов по видам;
196
+ - запуск отдельных тестов.
197
+
198
+ Например, для ` yii2-app-advanced/tests/codeception/frontend ` можно выполнить:
192
199
193
200
```
194
201
codecept run
195
202
codecept run functional
196
203
codecept run functional functional\InterviewCept.php
197
204
```
198
205
206
+ В разделе [ Сохранение реляционных данных] ( /scripts/index.php?c=step-1.3 ) присутствует пример как проверить работоспособность
207
+ формы с помощью тестирования.
208
+
199
209
#### Дополнительная информация для самостоятельного ознакомления:
200
210
201
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