Чи BDD насправді записує непрограмісти?


24

Розвиток, керований поведінкою, з його емблематичним синтаксисом сценаріїв "Дано-Коли-Потім" останнім часом є досить розкритим щодо можливого його використання як граничного об'єкта для оцінки функціональності програмного забезпечення.

Я, безумовно, погоджуюся, що Gherkin або будь-який сценарій визначення функцій, який ви надаєте перевагу, - це бізнес- читабельний DSL , який вже читається , і він вже надає цінність.

Однак я не погоджуюся з тим, що це написано непрограмістами (як це робить Мартін Фаулер ).

Хтось має акаунти сценаріїв, написаних непрограмістами, а потім інструментами розробниками?

Якщо дійсно існує консенсус щодо недостатньої писемності, то чи побачите ви проблему з інструментом, який замість того, щоб починати з сценаріїв та інструментувати їх, створив би зручні для бізнесу сценарії з фактичних тестів?

Оновлення: стосовно інструменту "генератор сценаріїв", звичайно, не можна магічно здогадатися про ділову мову;) Але, як і ми в даний час використовуємо відповідники regexp для створення тестів у підході зверху вниз (на вимір абстракції), ми могли б використовувати конструктори струн для створення сценаріїв підходу знизу вгору.

Приклад "надати лише ідею":

Given I am on page ${test.currentPage.name}
And I click on element ${test.currentAction.element}
…

Минуло б багато часу, коли люди зможуть точно зрозуміти звичайну мову, яку читають інші люди, навіть після того, як комп'ютери вже зможуть писати код для комп'ютерів.

За іронією долі, JBehave 1 (перший інструмент BDD) розпочався з генерування бізнес-читаних сценаріїв. Ми не розбирали англійську до огірка. Я думаю, що JBehave 1 був корисним для того, щоб нагадати людям, що вони повинні про них спершу поговорити ...
Lunivore

Відповіді:


20

Я це бачив. Не закінчилося добре.

Я думаю, що огірок є громіздкою (<- lol: D) абстракцією саме з цієї причини. Надмірно важко писати нетехнічним людям самостійно; занадто багатослівний для технічних людей.

Не технічні люди просто не навчилися мислити, як програмісти. Наша привілей розуміти абстрактні знання, розбивати їх, нарощувати заново і все-таки мати можливість успішно тікати від неоднозначності. Ось за що нам і платять.

Якщо дійсно існує консенсус щодо недостатньої писемності, то чи побачите ви проблему з інструментом, який замість того, щоб починати з сценаріїв та інструментувати їх, створив би зручні для бізнесу сценарії з фактичних тестів?

Інструмент сам не зможе їх генерувати. Комп'ютер нічого не знає про бізнес-домен. Зрештою, програміст несе відповідальність за те, щоб зробити те, що потрібно все-таки створити, і навіть тоді - ймовірно, що ці сценарії виявляться занадто багатослівними / критичними для своїх кінцевих споживачів.


20
Non technical people just haven't learned to think like programmers. Правда. Ця ж концепція за останні 20 років була неодноразово розкрита і відновлювана, і майже завжди вона закінчується поганими результатами. Підприємствам подобається концепція отримання програмного забезпечення без необхідності платити за ці жадібні розробники програмного забезпечення, що всмоктують кров, але вони забувають, що найважча частина розробки програмного забезпечення - це більшість часу розуміння бізнес-правил глибше і складніше, ніж самі бізнесмени.
maple_shaft

2
"Нетехнічні люди просто не навчилися мислити як програмісти". Так, здатність розкладати проблеми і висловлювати їх у визначених атомних логічних термінах - це, мабуть, те, що робить одного програміста / аналітика. Думка про те, що схожий на англійську мову робить Ґеркіна ким-небудь корисним, здається мені неймовірно наївною. Дякуємо, що підтвердили це :) Computer knows nothing about business domain.Звичайно. Я не зробив свою ідею дуже зрозумілою, вибачте з цього приводу. Я додам інформацію до запитання.
MattiSG

8
@maple_shaft: Останні 20 років? Спробуйте останні 60 років. Деякий з ранніх проблем навколо COBOL полягав у тому, що ділові люди могли його писати, усуваючи потребу в програмістах. Коли цього не сталося, люди придумали купу того, що вони називали мовами четвертого покоління, які повинні були робити те саме.
Девід Торнлі

11

Частина труднощів щодо того, щоб клієнт написав документ із специфікаціями, полягає в тому, що замовник часто не знає, як перекласти речі, які клієнт хоче, мовою, яка фактично описує те, що потрібно клієнту. Хоча замовник може сказати, що хоче, щоб певна поведінка існувала в системі, вони, як правило, не так переймаються деталями, поки вони не побачили і не використали та не пережили програмне забезпечення, яке працює таким чином, який, як вважає клієнт, не зовсім відповідає їхнім потреби.

Коли клієнти описують бізнес-процес, вони часто залишають безліч відповідної інформації. Часто ця інформація стосується речей про процес, який зазвичай розуміється у конкретному домені замовника і який, таким чином, сприймається як належне і часто не передається програмісту. В інший час замовник насправді не знає, як впоратися з усіма граничними умовами в системі, і шукає керівника для програмування. Іноді це все простий випадок зручності використання: замовник думає, що хоче, щоб щось працювало одним способом, але згодом передумує, коли стає зрозуміліше, що все має працювати інакше.

Гаразд, так достатньо "відносин із клієнтами 101 для програмістів". Питання полягає в тому, чи є ще цінним, коли клієнт використовує бізнес-читаний DSL для визначення способу визначення специфікації. Я вважаю, що з настановою відповідь є попередньою «так», і я кажу попередньою, тому що наступне питання, яке приходить вам на думку, - чому б ви мали клієнтську майстерність DSL, коли ви можете програмістом легше визначити той, який буде надати клієнту просту, але насичену мову, щоб визначити, як система повинна працювати?

Коли ви надали клієнту мову для опису того, як вони хотіли б, щоб система працювала, ви закінчите з заявами, які щось говорять у відповідності з:

"for a given 'subsystem', as a 'business entity' I want 'some feature' so that I might achieve 'some result'".

Цей тип висловлювань описує вимогу дуже чітко, надаючи загальну форму, яку клієнт в основному бажає прийняти системою, або інший спосіб погляду на неї полягає в тому, що замовник описує, що таке система. Якщо ви хочете, щоб ваш клієнт подумав про речі трохи далі, ви можете попросити їх описати правила, яким має відповідати функція, використовуючи ряд тверджень, подібних, можливо, до:

"Given 'some system state', When 'some action occurs', Then expect 'some result'

Знову дуже чіткі описи, цього разу про те, яксистема повинна поводитися. Вся справа в тому, що це не замінить потребу розробника програмного забезпечення заповнювати всі пробіли, а також дратувати подальші деталі, про які клієнт може знати лише периферійно. Незважаючи на те, що клієнт може бути підготовлений програмістом для опису функцій та поведінки у приємному для програміста форматі, замовник насправді не має навичок чи знань для створення значущих тестових випадків, а також не для забезпечення реалізації код. Це, на мій погляд, пункт статті Мартіна Фаулера, про яку йдеться в ОП. Так, так, саме програмне забезпечення не підлягає замовленню, але опис програмного забезпечення, безумовно, може бути написано замовником. Що того, що варто, я не читав статті Фаулера, що говорив, що клієнт не повинен '

Я відчуваю, що ми, програмісти, іноді можемо забути, що наші клієнти, як правило, дуже розумні в розумінні свого бізнесу та бізнес-процесів, безумовно, набагато краще, ніж ми. Коли у них немає програміста, який би сказав їм, як створити систему програмного забезпечення, клієнти, як правило, вдаються до інших - можливо менш ефективних - засобів для вирішення конкретних проблем управління бізнесом. Під цим я маю на увазі прості бази даних (думаю, Access) або електронні таблиці, або навіть в рукописних книгах, і з чітко визначеними правилами та процедурами управління цими процесами. Те, що багатьом клієнтам бракує, - це не спосіб визначити, як повинна працювати система, а, як її будувати , і ще важливіше, наскільки ефективно описати правила поведінки системи для людей, якідійсно є навички , щоб фактично побудувати систему.

Якщо дійсно існує консенсус щодо недостатньої писемності, то чи побачите ви проблему з інструментом, який замість того, щоб починати з сценаріїв та інструментувати їх, створив би зручні для бізнесу сценарії з фактичних тестів?

Я думаю, що це дивиться на проблему неправильно. Я б бачив велику проблему з інструментом, який генерує документацію з тестів, якщо ця документація повинна була представляти специфікацію будь-яким способом. Для того щоб перевірити сценарій, вам потрібно його зрозуміти, тому сценарій повинен уже існувати, щоб ви обидва визначили тест для нього. Якщо ви описуєте сценарій у BDD-синтаксисі, то ви його вже вказали, і, таким чином, ви можете зафіксувати сценарії лише після факту. Якщо з іншого боку у вас був інструмент, який дозволив б клієнту описати систему в приємному DSL-програмі, і якщо цей інструмент міг би бути використаний для створення шаблонів коду, який би використовувався як тестовий набір, то я ' Буду сказати, було б велике значення в такому інструменті. Він не бачить, як клієнт виймає програмістів з рівняння, і це допоможе зменшити зусилля, необхідні для прийняття побажань замовника та генерування тестово-кодованих вимог BDD, і, можливо, зробить побажання замовника легше зрозуміти. Однак це не може замінити наявність під рукою досвідченого розробника програмного забезпечення, щоб допомогти клієнту відокремити потреби клієнта від його потреб.


"Щоб перевірити сценарій, вам потрібно його зрозуміти, тому сценарій повинен уже існувати, щоб ви обидва визначили тест для нього". Я згоден. Мене допитують, чи варто примусово застосовувати мовні обмеження. Я не стверджую, що ми повинні писати лише тести; але мені цікаво, чи не варто ми погоджуватися з тим, що опис бізнесу буде (і, мабуть, повинен) завжди бути простим, вільним описом форми . Отже, ми мали б чисті бізнес-описи та створили читабельні сценарії, дозволяючи людям вирішувати, чи відповідають вони; замість того, щоб робити вигляд, ми використовуємо фактичні описи для тестування.
MattiSG

@MattiSG ...whether enforcing language constraints is worth anything. Це гарне запитання. Описи у вільній формі є більш виразними та природними для письменника, але призводять до бурхливого коментаря, який потребує розсічення, щоб отримати корисну специфікацію. Визначаючи формальні «правила» (він же DSL) для написання вимог і специфікацій, ви маєте спільну мову, яку можуть розуміти і клієнт, і програміст, обмежуючи непорозуміння. Якщо ви правильно знайдете описи, вони можуть бути використані дослівно як шаблон для ваших тестів. Таким чином, немає необхідності в складних інструментах, щоб "генерувати" що-небудь.
S.Robins

@MattiSG FWIW, використовуючи DSL та BDD - це система, яку я сам використовую. Вимоги визначаються як твердження Entity-Feature-Benefit і супроводжуються специфікацією, яка розширює заявки про початкові вимоги за допомогою операторів AAA (Тобто: Дано-Коли-Тоді) ... По суті, заявами сценарію. Складність при спробі розшифрувати вільний текст полягає в тому, що без DSL у вас не є простий спосіб визначити алгоритм, який може генерувати значущі сценарії збору. Моя думка полягала в тому, що використання тестів як вихідної точки для створення сценаріїв є свого роду зворотним.
S.Robins

5

Я бачив, як розробники пишуть сценарії; тестери пишуть сценарії та навіть власник продукту пишуть сценарії. У мене також були розмови, явно розроблені для розкриття сценаріїв - "Враховуючи <цей інший контекст>, коли що повинно статися тоді?" - і записати слова, якими користується бізнес.

Найкращі результати, які я мав, - це розмова з власником продукту, поки він був в офісі, захоплення їх на вікі, потім надсилання їх йому, щоб він міг виправити та додати більше. Він знайшов пару, яку ми пропустили в наших розмовах. Це розгойдувало.

Найгірші сценарії, які я бачив, - це те, що розробники написали самі, не розмовляючи з бізнесом. Я можу сказати, оскільки вони використовують такі терміни, як "Коли я здійснюю пошук" або "Коли я надсилаю форму з датою сьогодні + 3". Зазвичай вони не дуже цікаві сценарії, їх занадто багато, занадто низький рівень деталізації і, отже, абсолютно неможливий. Бізнес також не читає цього.

Набагато краще зосередитись на розмовах ІМО. Я бачив, як кілька команд роблять це зараз протягом декількох місяців з величезними поліпшеннями якості, незалежно від автоматизації. Через кілька тижнів одній команді вдалося змусити автоматизувати роботу в дуже складних умовах, на радість тестеру! Але насправді, поки команда веде розмови та використовує сценарії для складання інших сценаріїв, я не думаю, що це важливо, хто їх записує.


+1 Комунікація насправді є ключовим, і сценарії дійсно повинні відповідати умовам, які ділові люди нас, тож у відповідності з питанням про оперативні програми, якщо ми створюємо DSL, це дійсно має бути в змозі бути ближчим. на те, що замовник скаже, а не на те, що програмісти думають, що клієнт повинен говорити.
S.Robins

0

Мій досвід полягає в тому, що найкраще залишити BA (Business Analyst) написати GWT ( Given-When- then) s (досвід використання SpecFlow). BA може перекласти вимоги Замовника до GWT, і бізнес може його прочитати. Клієнти розуміють системи, але їм не доводиться мислити писати вимоги таким чином, якими ми можемо користуватися.

В ідеалі BA буде писати деякі GWT, я б вніс деякі зміни, BA переглянув / переглянув повторення, поки BA і бізнес не були впевнені у висвітленні. Практично бакалавр дав би мені грубу чернетку, яку я б прибирав і працював. Бізнес відмахється, кажучи, що тоді впевнено дивується, чому він не охоплював деяких областей, про які ніхто і не думав.


Чи можете ви пояснити, що означає для вас GWT ? :)
MattiSG

@MattiSG: здогадуйтесь, що це для Given-When-then (див. OP).
sleske

@MattiSG - оновлений пост, хороший улов.
SoylentGray
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.