
Yura
14.06.2016
10:54:49
нет, ведь больше никде описывать не нужно

Sergey
14.06.2016
10:56:50
ну вот пришел баг что если делишь на ноль, все пропало. ты в бехате описываешь этот сценарий дублируя тикет

Yura
14.06.2016
10:58:30
ну вот в бехате создаётся тикет(почините деление на ноль), который несёт чисто планировочный характер
потом с доменными экспертами составляются сценарии

Google

Yura
14.06.2016
10:58:52
который необходимо оттестировать
(на геркине например)
они и несут основную ценность
они и закладываются в behat

Sergey
14.06.2016
11:00:16
у вас вместе багтрекера лезут в код добавлять тест?

Yura
14.06.2016
11:00:42
бля, не понял твоё предложение
вся бизнес ценность приложения сосредоточена в сценариях
который написаны на ubiquitous language
и говорят чё приложение умеет

Sergey
14.06.2016
11:05:42
для небольших приложений может и сойдет

Yura
14.06.2016
11:06:30
как раз-таки нет
это именно для гигантских приложений
это как централизованная база знаний

Google

Sergey
14.06.2016
11:10:30
ок. сценарий:
я продавец, загружаю каталог своих продуктов. когда захожу на общий поиск для покупателей, должен их увидеть

Yura
14.06.2016
11:11:00
ок
я программист
и разрабатываю приложения
приятно познакомитсья :)

Aleh
14.06.2016
11:13:25

Yura
14.06.2016
11:13:40
с этим и postgresql справится
в плане с крудом

Sergey
14.06.2016
11:15:54
теперь реализация: чувак загружает xml файл в зипе на фтп, мы его проверяем на наличие malware, переливаем на другой сервер, там другое приложение его процессит и складывает в базу результаты. результаты получать нужно из базы + запрашивать данные с апи этого продавца. все результаты процессятся параллельно демонами на пхп. т.е задействовано 3 приложения(веб морда, процессинг демоны и демоны для поиска)

Yura
14.06.2016
11:17:08
что за техническая хуита?)
где тут сложный домен

Aleh
14.06.2016
11:17:21
это ж типа деталь реализации
может по фтп зип файл, а может по ресту json
разницы не много
стоят перед доменом пара middleware, ну пускай

Sergey
14.06.2016
11:18:02
ну вот я описал бизнес кейс, который пришел от кастомера. и конкретная техническая реализация
как ты в behat это опишешь и реализуешь?

Yura
14.06.2016
11:18:22
я это не буду описывать на бехат

Sergey
14.06.2016
11:18:33
эм

Yura
14.06.2016
11:18:36
бехать для логики

Google

Yura
14.06.2016
11:18:43
а не для технической фигни

Sergey
14.06.2016
11:18:45
ок
что в твоем понимании логика?

Yura
14.06.2016
11:18:59
правила доменной области
продавец может загружать товары не более 10 кг
3 раза в день
если у него нет заодлженности
блаблабла
behat не тестирует реализацию
обычно пишутся сценарии до кода

Aleh
14.06.2016
11:20:45
ну, смотря реализацию чего конечно

Yura
14.06.2016
11:20:47
в соответствии с bdd

Sergey
14.06.2016
11:21:43
ты пишешь кейс в 3 предложения, а тебе для этого нужно сделать 100500 моков, поднять несколько баз и тд

Yura
14.06.2016
11:21:57
не нужно

Sergey
14.06.2016
11:21:59
чтобы проверить

Yura
14.06.2016
11:22:04
нет
я буду общаться с внешним интерфейсом приложения
например
через rest api

Aleh
14.06.2016
11:22:31
в случае бихата ты вообще будешь сущности подымать

Google

Sergey
14.06.2016
11:22:33
а данные очищать после тестов кто будет?

Yura
14.06.2016
11:22:43
да какая разница

Sergey
14.06.2016
11:22:45
и что если упадут сервисы?

Yura
14.06.2016
11:22:46
китаец
которого я найму
я буду очищать

Sergey
14.06.2016
11:23:15
мда

Yura
14.06.2016
11:23:15
если упадут сервисы
то у тебя не работает приложение
тадам

Admin
ERROR: S client not available

Yura
14.06.2016
11:24:04
есть другие типы тестов

Aleh
14.06.2016
11:25:46
@Enleur в случае бихата зип там архив или нет, еще что-то не важно, важна сущность предметов. Как выше Юра писал только 10кг 3 раза в день летом с 9 до 17. И эти условия вообще не зависят от того, через что пришлось пройти данным к нашей бизнес-модели.
там вообще базы нет

Sergey
14.06.2016
11:27:11
а что они тогда проверяют?
rest интерфейс дергают?

Aleh
14.06.2016
11:27:40
нет
$basket = new Basket;
$basket->addItem(SomeItem::withSomeProps());
$basket->addItem(SomeOtherItem::withCount(150));
...
и в итоге должен быть, например exception, что нельзя так много item'ов брать
нам для этого не нужны никакие сторонние сервисы, база
абсолютно все равно сделали запрос по http, cli, ftp

Google

Sergey
14.06.2016
11:30:41
в этом случае да, но такой логики это 5% приложения от силы

Yura
14.06.2016
11:31:16
тогда у тебя не сложное доменное приложение
нанимай 10 китайцев

Sergey
14.06.2016
11:31:22
и это ты описал обычные юнит тесты, с которыми phpunit вполне успешно справляется

Yura
14.06.2016
11:31:27
и иди отдыхать

Aleh
14.06.2016
11:31:58
работаю со всей доменной моделью
и они спокойно друг-друга дергают

Yura
14.06.2016
11:33:18
и ещё много кого
только без сайд эффектов
:)

Sergey
14.06.2016
11:34:57
я ж говорю, приложения разные бывают. либо это какой-нибудь склад, аудиторское или страховое приложение, тогда вся логика в домене, а если приложение завязано на интеграциях, то в основном вся логика в сервисах и лежит

Yura
14.06.2016
11:35:34
нууу, я бы так не сказал
вернее не классифицировал

Aleh
14.06.2016
11:36:59
ну, если надо как zapier, то да, но вот что-то типа слэка или жиры или гх, внешних интеграций миллион, но и внутряк серьезный(особенно в жире)

Sergey
14.06.2016
11:37:02
это у фаулера в книге описано..
ну например приложение для отслеживания посылок
своей логики мало, а интеграции нужно делать со всеми провайдерами

Aleh
14.06.2016
11:39:20
там будет много тестов на преобразование форматов
там да, юниты правят балом)

Sergey
14.06.2016
11:47:04
к каждому сервису свой специфический запрос нужен, и такой же ответ. это все юнит тестами покрывается и мокаются запросы/ответы от внешнего сервиса на изначально валидные, как по докам.
определение какому провайдеру отправлять запрос, это нужно каждый номер разбирать - тоже юнит тесты
при этом все тесты выполняются за секунду
а если юзать функциональщину и тестировать все через сабмит формы каждый раз.. там 1 секунды не хватит

Aleh
14.06.2016
11:47:57