BDD 1С по душе

0. Дмитрий Тузов (dima_tuzov) 68 14.01.17 13:06 Сейчас в теме
Размышляя над проблемой тестирования, а точнее над проблемой качества решений, умные и не очень люди, в основном ломают копья над следующим противоречием “надо тестировать, но надо разрабатывать, а не тестировать” (Алексей Лустин) www.silverbulleters.org

Перейти к публикации

Комментарии
1. Сергей Рудаков (fishca) 1064 16.01.17 09:43 Сейчас в теме
Странное ощущение оставляет статья, какая-то она "википедичная". Есть какая-то недосказанность что-ли...
h00k; kuntashov; mrDSide; +3 Ответить
3. Дмитрий Тузов (dima_tuzov) 68 16.01.17 13:40 Сейчас в теме
(1) Основная цель статьи - заинтересовать. Насчет недосказанности, значит возникли вопросы?
12. Сергей Рудаков (fishca) 1064 17.01.17 00:17 Сейчас в теме
(3) недосказанность имеется ввиду с вашей стороны, чувствуется какая незавершенность статьи.
13. Дмитрий Тузов (dima_tuzov) 68 17.01.17 09:57 Сейчас в теме
(12) Я понял, такое ощущение у большинства, кто раньше не сталкивался с BDD. Формулируйте вопросы, будем общаться.
19. Сергей Рудаков (fishca) 1064 17.01.17 10:57 Сейчас в теме
(13) Вы ничего не поняли, у меня по этой теме вообще нет вопросов, мне все понятно. Материалы серебряной пули изучены вдоль и поперек. BDD - бесспорно вещь нужная, но ей надо заниматься и не все понимают эффект от применения этой технологии. Нет инструментов от вендора, а это многих отпугивает.
2. Brr (brr) 179 16.01.17 10:15 Сейчас в теме
Кто в теме тот нового не узнал, но тему нужно продвигать в массы всеми силами, поэтому + за публикацию, автор пиши ещё.
4. Роберт В е р т и н с к и й (v3rter) 16.01.17 14:00 Сейчас в теме
А с ГОСТами ( http://it-gost.ru/content/view/101/51/ ) планируется какая-нибудь стыковка?
JohnyDeath; mrDSide; kraynev-navi; +3 Ответить
5. Дмитрий Тузов (dima_tuzov) 68 16.01.17 15:10 Сейчас в теме
(4) ГОСТ 19.201-78 от 1980 и 34.602-89 от 1990 (Государственный стандарт союза ССР)? Какая стыковка? Вы о чем?
6. c+ + (ture) 230 16.01.17 18:44 Сейчас в теме
(5) Да, давайте как-то научней рассматривать подобные вопросы, т.к. здесь далеко не все дураки.
kraynev-navi; +1 Ответить
7. Дмитрий Тузов (dima_tuzov) 68 16.01.17 19:45 Сейчас в теме
(4) Ок. Как вы себе представляете стыковку Agile-методов с ГОСТами? Я себе не представляю...
8. Евгений Мартыненков (JohnyDeath) 290 16.01.17 20:19 Сейчас в теме
(7) Наверное в этом и был вопрос.
Заказчик требует ТЗ по ГОСТу. Вы хотите от него Геркина, сценариев и Agile.
Как быть? Бросать клиента? Писать Гибкое ТЗ?
9. Дмитрий Тузов (dima_tuzov) 68 16.01.17 20:46 Сейчас в теме
Я воспринимаю ТЗ по ГОСТу, как формальность. Представьте, что на этапе постановки задачи, вы ведете переговоры с заказчиком и конспектируете это в виде Gherkin. Вам это будет удобнее, чем писать какую-то прозу с абзацами и пунктами. Появится дополнительная информация по заданию, вам такую нотацию будет легче исправить, добавить группу "И" в "Когда", исправить пару "И" в "Тогда"... это ваш инструмент, не обязательно ему обучать заказчика.
Заказчик требует от вас ТЗ, а вы получили все ответы на вопросы? Всем известно, сколько таких вопросов возникает уже в процессе программирования. Неожиданно поняли, что БП кривой.. Нельзя проводить этот документ не создав тот.. а вот тут вообще нужен был новый справочник... и тд...
Когда вы пишите на Gherkin, вы по сути уже начали программировать и очень много начинает всплывать. А если сразу задумаетесь о связи Gherkin с кодом (как это уже было описано), вы сможете реально оценить время, которое уйдет на кодинг. Что после этого стоит написать ТЗ по ГОСТу?
Designer1C; +1 Ответить
10. Решитко Дмитрий (grumagargler) 320 16.01.17 21:16 Сейчас в теме
(9) можете привести реальный пример технического задания написанного на языке геркин? Желательно, чтобы это ТЗ лежало в основе проекта стоимостью скажем несколько десятков $К, утверждено заказчиком, и было выполнено качественно и в срок.
Спасибо.
gubanoff; 1ceo_2015; kuntashov; +3 Ответить
14. Дмитрий Тузов (dima_tuzov) 68 17.01.17 10:00 Сейчас в теме
(10) Реальные примеры приводят Алексей Лустин и Леонид Паутов (Ссылки в статье).
11. Евгений Мартыненков (JohnyDeath) 290 16.01.17 22:11 Сейчас в теме
(9) я хорошо представляю, что такое Gherkin и BDD. Но я также понимаю, что проект не будет утвержден только по набору фич.
А есть заказчики, где ГОСТ - далеко не формальность, а обязательность (госструктуры, ВПК...)
kuntashov; +1 Ответить
15. Дмитрий Тузов (dima_tuzov) 68 17.01.17 10:04 Сейчас в теме
(11) Почему вы противопоставляете понятие формальности и обязательности? Понятное дело, что ТЗ будут требовать и вам придется его писать... Вам предлагается инструмент, который поможет вам это сделать корректно и в короткий срок.
16. c+ + (ture) 230 17.01.17 10:46 Сейчас в теме
(15) - Почему вообще понадобились такие инструменты?
- Потому что мирок программиста 1С перестал ограничиваться парой функций из букваря.

- И что?
- Программисты стали путаться в паре сосен.

- Да, ну?!
- API 1С стало не эффективным и приходится выискивать "правильный" путь. Каждый находит свой, а потом не понимает чужой код. В результате качество снижается и будет снижаться, если не остановить.

- И что такого Вы предлагаете? Построить разработку задом на перед?
- Да, нет! Просто поговорить хотелось.
17. Евгений Сосна (pumbaE) 569 17.01.17 10:48 Сейчас в теме
(16) Эх, опять сосны виноваты.
Pr-Mex; sorb; brr; artbear; 1cWin; 1ceo_2015; Man4kin; kuntashov; Новиков; JohnyDeath; +10 Ответить
18. Дмитрий Тузов (dima_tuzov) 68 17.01.17 10:53 Сейчас в теме
(16) Критиковать BDD, да и вообще Agile-методы можно только попробовав их использовать на практике. Если у вас есть такая практика, поделитесь....
20. c+ + (ture) 230 17.01.17 11:23 Сейчас в теме
(18) Я не критикую, я не вижу в нем толка. Я считаю, что необходимость в такой терминологии отпадает вместе с детскими мечтами об идеале. В действительности есть причины и их прячут за новыми терминами.
- Однако придется читать чужой код и тратить на это 90% времени.
- Однако придется вырабатывать дизайн решения и постепенно отрезать лишние и ненужные шаги.
- Однако появится какой-то шаблон решения однотипных задач и начнутся ненужные споры, где кто-то будет учиться новому, а кто-то будет учить.

Еще немного 1ц подрастет и перестанет быть средой быстрой разработки ПО. Питон?
21. Дмитрий Тузов (dima_tuzov) 68 17.01.17 11:50 Сейчас в теме
Коллеги, давайте договоримся. Те кто толк в BDD не видят, сюда не пишут. А кто изучил вопрос вдоль и поперек, помогите раскрыть тему и убрать "недосказанности" из статьи. Есть вещи о которых я не написал, или написал недостаточно для понимания сути - жду вопросы. Не надо писать типа - и что дальше? или - как то все криво... Давайте по существу - я попробовал вот это, у меня не получилось вот то...
22. Евгений Сосна (pumbaE) 569 17.01.17 12:03 Сейчас в теме
(21) просто все ожидают увидеть магию в этих процедурах:
ПроверитьНаличиеДолгаКонтрагентаПоВзаиморасчетам();
СоздатьПровестиДокументПКО();
ПроверитьПроводкиПоСчетамВзаиморасчетов();
ПроверитьПоводкиПоСчетамАвансовКонтрагентов();


а магии там нет.
sorb; 1ceo_2015; +2 Ответить
23. Александр Кунташов (kuntashov) 360 17.01.17 14:49 Сейчас в теме
(21)
помогите раскрыть тему и убрать "недосказанности" из статьи


Тему бы вы раскрыли, если бы привели примеры из вашей практики, вот ровно вот как вы сами призываете - "я попробовал вот это".

А так данная публикация - больше похожа на школьный реферат на тему "Что такое BDD" - нарезали цитат из известных публикаций и скомпоновали их.
sorb; Dementor; zqzq; omut; fishca; ardn; МимохожийОднако; JohnyDeath; kraynev-navi; +9 Ответить
25. Максим Гр. (MGraf) 2 17.01.17 16:03 Сейчас в теме
(23)
у бы вы раскрыли, если бы привели примеры из вашей практики, вот ровно вот как вы сами призываете - "я попробовал вот это".

А так данная публикация - больше похожа на школьный реферат на тему "Что такое BDD" - нарезали цитат из известных публикаций и скомпоновали их.

Вот у меня например практики почти нет. Сейчас я ищу варианты получения максимальной пользы от тестирования на всех проектах при минимальных затратах единожды. Пока только вот что придумал:

1) Дымовые тесты после обновления нетиповой конфигурации
2) Дымовые тесты для внешних печатных форм, обработок и отчетов каждый день.

Трудозатрат ноль, а полезный эффект получаешь сразу.
31. Dima Neumoichev (Ndochp) 100 18.01.17 10:51 Сейчас в теме
(25) "Тестирования нет, забудьте это слово" (С) Лустин.
Ну и то, что вы привели это ТДД, а не разу не БДД ;)

(0) Как мне надоели ребята, которые говорят, что БДД круче ТДД по определению (на самом деле потому, что после). Аж выть хочется.

Итак, задача:
УПП, при установленной галке "списывать спецодежду в НУ одновременно с БУ" при наличии нескольких видов спецодежды в эксплуатации при возврате спецодежды из эксплуатации формируется временная разница, а быть ее не должно.

Разработка проверки по ТДД
0. Подготовка справочников
1. КЗР на некий "срез" регистра "Учет движения МПЗ и затрат Регл"
2. программно формируем документ возврата из эксплуатации, проводим и проверяем отсутствие ВР
3. Чистим за собой КЗР и возврат из эксплуатации (по вкусу - на нулевом шаге создаем, на этом чистим справочники)

Разработка проверки по БДД
А. Период -1:
1. Оприходовать спецодежду нескольких видов на 10.10
2. Сформировать документ передачи в эксплуатацию
3. Сформировать документы закрытия периода (расчет себестоимости, по вкусу НУ)
Б: Период 0:
4. Сформировать документ по погашению стоимости материалов в эксплуатации
5. Сформировать какой-нибудь выпуск, чтобы не тащить незавершенку в целевой период
6. Сформировать документы закрытия периода (расчет себестоимости, по вкусу НУ)
В: Целевой период
7. Оформить возврат из эксплуатации, проверить отсутствие ВР.


Когда нужно обновлять тест (когда он сломается)?
ТДД - когда изменится:
1. КЗР (никогда),
2. структура регистра Учет затрат Регл
3. документ возврат из эксплуатации (причем не форма, а внутре)

БДД - когда изменится:
1. Оприходование
2. передача в эксплуатацию
3. Отчет производства за смену
4. Расчет себестоимости
5. Погашение стоимости материалов в эксплуатации
6. Возврат из эксплуатации

Какой тест быстрее отработает на "ночной сборке" тоже в целом понятно.
sorb; serge_focus; Dementor; dabu-dabu; artbear; kuntashov; +6 Ответить
33. Александр Кунташов (kuntashov) 360 18.01.17 14:22 Сейчас в теме
(31) Спасибо за реальный пример (поставил плюс именно за него).

Сразу скажу, что я далеко не фанат ни TDD, ни BDD. По мере целесообразности использую и то, и другое, а но чаще просто пишу автоматизированные тесты, без TDD/BDD, т.к. чаще приходится работать с кодом, который достался в наследство, т.е. он уже требования когда-то были озвучены, код написан и надо его дорабатывать.

И когда сравнивают теплое с мягким у меня тоже начинается батхерт. Попробую его направить в позитивное русло.

Оба ваших "подхода" можно реализовать и в виде модульного теста, и на Gherkin'е и по BDD.
Поскольку про юнит-тесты вам все понятно, я напишу только про геркин.

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

Как вы сформулировали задачу:

УПП, при установленной галке "списывать спецодежду в НУ одновременно с БУ" при наличии нескольких видов спецодежды в эксплуатации при возврате спецодежды из эксплуатации формируется временная разница, а быть ее не должно.


В геркин это "переводим" дословно:

Сценарий: Ошибочное формирование ВР при возврате спецодежды

Допустим, в ИБ в настройках установлен флаг "списывать спецодежду в НУ одновременно с БУ"
И на остатках есть спецодежда нескольких видов

Когда я оформляю документ "Возврат спецодежды из эксплуатации" 
Тогда не должно образовываться временной разницы
Показать


Когда вам пользователь рассказывал условие, наверняка он еще примеры привел в базе, которые по возможности в том или ином виде
нужно в сценарии отразить (только значимое). Но это надо сделать и для модульного теста, как он без данных-то!

Ну а реализацию шагов вы уже написали. Вот те, которые идут в "Допустим":


0. Подготовка справочников
1. КЗР на некий "срез" регистра "Учет движения МПЗ и затрат Регл"


и вот реализация шагов, которые идут в после "Когда" и "Тогда":


2. программно формируем документ возврата из эксплуатации, проводим и проверяем отсутствие ВР


Зачистка данных - это служебное действие.
sorb; serge_focus; JohnyDeath; dima_tuzov; +4 Ответить
36. Дмитрий Тузов (dima_tuzov) 68 18.01.17 18:16 Сейчас в теме
(33) "Геркин - не значит "прокликивание" мышкой и приемочные тесты с высокой степенью детализации, хотя я догадываюсь, откуда у вас такие впечатления." - вот это кстати очень похоже на реальность. А откуда это утверждение? Ссылка на "авторитетный" источник есть?
37. Александр Кунташов (kuntashov) 360 18.01.17 19:42 Сейчас в теме
(36) Да потому что это очевидный вывод, который вы сами сделаете, если будете изучать BDD не только по материалам от команды "Серебряная Пуля", а в том числе и на основе первоисточников, в частности, https://cucumber.io

При всем уважении к Алексею и Леониду, большой акцент на крайне детализированные сценарии, которые преимущественно все про "прокликивание" (знаменитые "фичи и воздуха" и иже с ними) сыграли плохую шутку: геркин среди 1Сников стал рассматриваться как альтернатива записи кода для тестированию интерфейса.

А такой подход нарушает один важный постулат BDD:

Your cucumber features should drive your implementation, not reflect it.


(с) https://cucumber.io/blog/2014/03/03/the-worlds-most-misunderstood-collaboration-tool

С этой статьи рекомендую и начать.
serge_focus; dima_tuzov; zqzq; 1ceo_2015; +4 Ответить
42. Алексей Лустин (lustin) 860 23.01.17 01:14 Сейчас в теме
(37) мы же это обсуждали и не раз. Я даже видео публичные записывал

"В 1С мире развитие идет наоборот"

первоисточник нужно читать в конце, а не в начале ;-).

Развитие бехавойриста в 1С идет по следующему сценарию

Фаза 1 - "Тестов нет, есть поведение"

* фичи из воздуха - аналог Silenium
* автодокументация - аналог PicklesUI
* интегральные сценарии - аналог SpecLog, cucumber.pro
* библиотеки шагов - аналог canned steps
* сервер сборок - аналог cucumber-jvm-reports, allure-behavior

Фаза 2 - "Тесты есть, но они зависимы"

* поведение объектов
* поведение общих модулей

Фаза 3 - "Не всегда нужно BDD"

* xUnitFor1C ;-)

в соседнем мире (а Аслака в частности) всё происходит наоборот по мере накопления "фич"

* xunit
* rspec
* cucumber
* canned-steps
* silenium

у нас же в 1С мире - фич сразу много, потому как большая часть функциональности формируется самой платформой.

поэтому любой "бехайворист" 5 уровня, читает первоисточники по BDD начиная с фазы 3, но если он начнет это делать на фазе 1 - проверено, не напишет ни одной фичи и будет в G+ всех убеждать что BDD не нужен, TDD слишком избыточно в 1С и вообще "я буду жить как раньше"

P.S. Обратите внимание - некоторые достигшие дзена, вдруг внезапно вычисляют что первоисточник то BDD как бы не Аслак и Мэт из команды cucumber.io, а внезапно Дэн Норт... И даже делают перевод его статей (за что Денису огромная благодарность) , читать тут http://www.1service.ru/blog/
1ceo_2015; +1 Ответить
34. Артур Аюханов (artbear) 882 18.01.17 14:37 Сейчас в теме
(31) ИМХО ты также сильно утрируешь :) как и приводимые тобой "ребята, которые говорят, что БДД круче ТДД по определению" :(
40. Dima Neumoichev (Ndochp) 100 19.01.17 11:12 Сейчас в теме
(34) Ну так КЗР это же в чистом виде "тестирование реализации вместо тестирования поведения", не?
Она же должна быть в БДД предана анафеме?
41. Никита Грызлов (nixel) 149 19.01.17 14:51 Сейчас в теме
(40) погодите.
КЗР в случае бдд - это подготовка базы, секция контекст. Поведение у нас живет в Когда и Тогда, а в Дано по факту хоть прямыми запросами в базу пишите.
1ceo_2015; artbear; kuntashov; +3 Ответить
27. Дмитрий Тузов (dima_tuzov) 68 17.01.17 17:34 Сейчас в теме
(23) Ок. Пример будет. Выложу отдельной статьей, как продолжение к реферату...
24. c+ + (ture) 230 17.01.17 15:22 Сейчас в теме
(21) Помню как в прежние времена люди болели сервисной шиной и так мозг мой этим надрывали, что тошнило одни и те же слова слушать. Теперь вот долбят мозг тестированием. В тот раз им вручили инструмент, который полностью удовлетворял всем требованиям, даже написан на джаве. Увидели и отвернулись, теперь даже вспоминать не хотят.
26. Решитко Дмитрий (grumagargler) 320 17.01.17 16:03 Сейчас в теме
(24) Справедливо. Но так происходит всегда, и многие программисты отворачиваются от технологий как раз по причине излишней их пропаганды без надлежащей практической базы и стройной методики. Вырабатывайте иммунитет к этому, и в свободное время пробуйте разные инструменты, потому что в основе своей, вопрос тестирования очень базовый.
sorb; Dementor; kuntashov; v3rter; +4 Ответить
28. Роберт В е р т и н с к и й (v3rter) 17.01.17 17:34 Сейчас в теме
< инженеры | программисты | менеджеры | логисты | руководители среднего звена >
отворачиваются от технологий как раз по причине излишней их пропаганды
// )
29. Федор Латыпов (1ceo_2015) 18.01.17 10:03 Сейчас в теме
Что касается таких ключевых слов как Фон(Background), Сценарий-Схема(Scenario-Outline) и Образцы(Examples) то их используют достаточно редко, особенно если код пишет не программист, а бизнес-аналитик.


(0) а как вы повторности использования добиваетесь при редком употреблении данных слов?
30. Никита Грызлов (nixel) 149 18.01.17 10:31 Сейчас в теме
(29) интересно, откуда вообще возник такой перевод.
Есть официальный список ключевых слов, переведенный на десяток языков, и используемый во всех парсерах геркина
https://github.com/cucumber/gherkin/blob/master/gherkin-languages.json
И там есть Контекст, Структура сценария и Примеры.
dima_tuzov; kuntashov; JohnyDeath; 1ceo_2015; +4 Ответить
32. Федор Латыпов (1ceo_2015) 18.01.17 10:53 Сейчас в теме
(30) ну это уже второй вопрос))
35. Дмитрий Тузов (dima_tuzov) 68 18.01.17 17:32 Сейчас в теме
(30) Спасибо за ссылку, сразу не нашел.
38. Решитко Дмитрий (grumagargler) 320 18.01.17 22:28 Сейчас в теме
Ребята, подскажите пожалуйста, а какую проблему решает огурец? Я понимаю, что с его помощью делается, я не понимаю какая при этом проблема решается. Если говорить о нашем домене, мне кажется гораздо эффективней разработчика отправить на курсы бухгалтерского учета, или бизнес аналитиков заставить сдавать 1С:Профессионал, чем использовать предлагаемые инструменты (я отдаю себе отчет в том, что там миллионы скачиваний). Но если аналитик не может донести проблему, или у разработчика отсутствует чувство задачи – то эти вопросы решаются другим образом, не инструментарием, на мой взгляд. На своей практике, выращивание в программисте чувства задачи идет другим путем, а конечные результаты – это понимание процессов с полуслова, постановка задачи в виде описания решаемой проблемы в нескольких предложениях на родном языке понятном конечному пользователю. Это не теория, а собственная практика, либо мне невероятно везет последние лет 15. Но вот из раза в раз подтверждается один простой тезис – если нет понимания конечной цели, никакой формализацией, включая языки описания поведения – осчастливить клиента не получится.

Формирование документации на основе сценариев…простите, но такая документация бесполезна. Может быть это еще как-то можно назвать инструкцией, но никак не документацией.
dabu-dabu; +1 Ответить
39. Александр Кунташов (kuntashov) 360 18.01.17 23:55 Сейчас в теме
(38) Не думаю, что что-то новое вам открою, но все же...

Пользователь и разработчик в процессе коммуникаций должны в идеале достичь общего понимания требований. Естественно, это понимание требований надо каким-то образом "зафиксировать" на понятным и тому и другому языке, с конкретными примерами данных.

При должной формализации языка изложения требований, проверку их реализации можно автоматизировать.

Таким образом ответить на ваш вопрос "какая проблема решается" можно так: геркин - понятный не-программисту, но при этом формальный (подходящий для автоматизации) язык для документирования требований к ПО, а огурец - инструмент для автоматизации проверки выполнения этих требований.

А вообще, то что вы написали в (38) почти слово-в-слово говорил автор огурца Aslak Hellesøy - коммуникации первичны. Инструменты - геркины, огурцы и прочее - все это пустое, если понимание не достигнуто.
sorb; Danil.Potapov; artbear; dabu-dabu; 1ceo_2015; +5 Ответить
43. Дмитрий Тузов (dima_tuzov) 68 15.03.17 13:49 Сейчас в теме
Сижу читаю "BDD in action - John Ferguson". Надеюсь поможет... А то когда статью писал, был дзен, а теперь каша в голове...
Оставьте свое сообщение