• У кого из вас есть TDD или BDD в разработке, что конкретно вы делаете, когда, как к этому пришли?

    nonlux
    @nonlux
    Книгу не читал, по этому аналогий привести не смогу
    Пишу на php для веб c bdd

    1. Пишу bdd story.
    ( в моем случае это сценарии behat)
    Для меня bdd story это как функциональные и интеграционные тесты, в которых я проверяю работу всего моего продукта в целом.

    Тут вынес несколько правил для себя:
    1.1. Обязательно формулировать цель (название) сценария
    - Я вхожу в личный кабинет
    - Я создаю новую статью блога
    Это поможет отстраниться от лишнего и не превратить сценарий в кашу

    1.2. Писать на нативном языке без технических подробностей
    Я поначалу долго сопротивлялся писать, что либо кроме файлов трансляции на русском. Но потом вкурил фишку. По сути сценарии у меня превратились не просто в тесты, а мини todo list. Всегда четкий и понятный.
    А избегание технических подробностей помогает забыть о проектирование архитектуры системы на этапе написания сценария.
    И мне гораздо понятнее:
    - Я должен видеть "Отказано в доступе"
    чем
    - Статус код страницы должен быть 403

    1.3. Я(Исполнитель) сценария дурак )
    Сценарий не должен быть замудреным. От должен быть простой и не держать какие-либо данные "в голове".

    -
    2. Далее я начинаю реализовывать шаги сценария
    (писать тесты)
    - Если я имею на руках желтый (не реализованный) сценарий, то начинаю уже задумываться о технических подробностях которые лежат на поверхности:
    Например (приведенный код это псевдокод для понятности

    Я должен быть на странице "Новости"
    assert( $uri, '/news');

    Я вижу заголовок статьи "Эта прекрасная статья"
    assertTextInElement('#newsTitle", $title);

    - Если я имею на руках красный тест, то пришло время для кода..

    3. Написание практически всего кода предшествует у меня BDDSpec
    (в моем случае phpspec)

    И так, я получил ошибку от bahat. Я специально настроил утилиту так что бы она ругалась ошибками разрабатываемой системы.
    В итоге я получаю такую ошибку:
    - uri '/new' not exist

    Это для меня прямое указание к действию. т.е я должен создать новую страницу.
    В рамках моей системы уже существуют правила:
    - новая страница - это новое action у контролера.
    - action должен вернуть массив значений для шаблона
    Опираясь на это я создаю спецификацию для контроллера
    class ControllerSpec  {
      public function it_should_show_news ()
      {
        $this->newsAction()->shouldBeArray();
      }
    }


    И далее код, который пройдет этот тест:
    class Controller {
      public function newsAction() 
      {
         return [];
      }
    }


    4. После этого запустив phpspec я получил зеленый bddspec
    5. После этого cнова возвращаюсь к bddstory
    Получаю зеленый шаг
    6. Возвращаюсь на шаг 2.

    Так начинает расти система и обрастать новым протестированным функционалом.

    До bdd использовал tdd c PHPUnit и был очень доволен, пока не подсел на behat + phpspec
    Ответ написан
    6 комментариев
  • Как скрыть от других пользователей upwork, что я сейчас работаю?

    Lucian
    @Lucian
    https://t.me/MakeFreelance
    Привет, в вашем случае можно сказать что ставка повысилась, и по прежней ставке Вы будете работать еще такой-то срок, поставьте себя на место клиента, мало приятного если фрилансер начинает выдумывать разные отмазки, вместо того чтобы набраться смелости и сказать правду.
    Ответ написан
    3 комментария
  • Как найти общий язык с сотрудниками военных предприятий, чтобы они дали описание своих процессов для составления ТЗ?

    darqsat
    @darqsat
    PM
    Вы уверены, что люди которые поставлены отвечать вам на вопросы это компетентные люди?!

    Как делился опытом аналитик, люди которые были даны ему на ответы - были просто некомпетентны. Они не отвечали не по причине секретности, а по причине того, что они непроходимо необразованны и тупы и даже собственные процессы не знают. Поэтому, не дают их огласке.

    С трудом удалось это донести до высшего состава, и с трудом найдя людей которые идут на контакт, получалось хоть в какой то мере получать информацию.

    Рекомендую советовать руководству проекта закладывать в договор буфер на риск того, что информацией ни кто делится не будет и увеличивать сроки на аналитику в связи с тем, что необходимо додумывать&догугливать&википидить самому.
    Ответ написан
    Комментировать
  • Запуск PhantomJS через Selenium. В чем ошибка?

    TTA
    @TTA Автор вопроса
    Мутировавший технарь :)
    Вопрос снят)) Никогда не называйте свой .net проект "PhantomJS" )))
    Ответ написан
    Комментировать