Можно ли включить BDD в почти готовый проект?

Моя софтверная компания никогда раньше не использовала BDD или даже TDD. Предварительное тестирование означало просто опробовать новое программное обеспечение за несколько дней до развертывания.

Наш недавний проект выполнен примерно на 70%. Мы также используем его как площадку для новых технологий, инструментов и способов развития. Мой босс хотел, чтобы я переключился на «тестовое тестирование».

Я пробовал Selenium 2 и RSpec. Оба перспективны, но как наверстать месяцы разработки? Дальнейшие проблемы:

  • новый язык
  • никогда не писал ни строчки кода сам
  • огромные части написаны фрилансером
  • много модных взломов
  • никакой документации, кроме некоторых исходных комментариев и блок-схем

Все, что я смог сделать, это охватить весь процесс с помощью Selenium. Это оказалось довольно болезненным (но все же возможным), поскольку программное обеспечение, очевидно, никогда не предназначалось для тестирования таким образом. У нас есть множество динамически генерируемых идентификаторов, причудливый jQuery и многое другое. Даже не знаю, как начать работу с RSpec.

Итак, возможно ли применить BDD к этому проекту? Или я должен бежать далеко и никогда не возвращаться?


person SDD64    schedule 14.12.2011    source источник
comment
BDD означает, что вы сначала пишете тесты. Вы можете сделать это для нового кода, но по определению вы не можете сделать это для уже существующего кода.   -  person Marnen Laibow-Koser    schedule 14.12.2011


Ответы (2)


Прежде чем вы начнете, вы спросили своего босса, что он ценит в тестировании? Я бы сначала уточнил это у вашего босса. Основные преимущества BDD на уровне системы заключаются в диалогах с заинтересованными сторонами до написания кода. Вы не сможете получить это, если все, что вы делаете, это оборачиваете существующий код. На уровне юнитов основные преимущества заключаются в том, чтобы ставить под сомнение обязанности классов и их поведение, чего, опять же, вы не сможете получить. Однако это может быть полезно для понимания ценности приложения и каждого уровня кода.

Если ваш босс просто хочет попробовать BDD или TDD, может быть проще начать новый проект или даже взять существующий проект у кого-то другого, чтобы выполнить некоторые тесты. Если он действительно хочет поэкспериментировать с BDD, а не с унаследованным кодом, то, возможно, стоит сохранить то, что у вас есть - предложение книги @Esko работает. Проведение системных тестов более высокого уровня вокруг существующей функциональности может помочь вам избежать поломок при рефакторинге низкоуровневого кода (и вам нужно будет это сделать, если вы хотите внедрить тесты). Я также рекомендую "Рефакторинг" Мартина Фаулера.

RSpec лучше всего подходит для применения BDD на уровне единиц, как вариант TDD. Если вы хотите внедрить автоматизированные тесты во всю свою среду, взгляните на Cucumber. Это значительно упрощает повторное использование шагов. Затем вы можете вызвать Selenium прямо из шагов.

Я собрал страницу ссылок на BDD здесь, которая, надеюсь, поможет новичкам понять ее. лучше. Удачи.

person Lunivore    schedule 14.12.2011

Может быть полезно прочитать книгу Эффективная работа с устаревшим кодом. полезный. Существует также короткая версия в формате PDF.

person Esko Luontola    schedule 14.12.2011