Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SpecBDD на пальцах

SpecBDD на пальцах

Talk from http://2012.symfonycamp.org.ua about SpecBDD & phpspec2

F742011db78e0c681ed4bc885bfee982?s=128

Konstantin Kudryashov

December 01, 2012
Tweet

Transcript

  1. что-то там, что-то там php, BDD, spec ...

  2. ever,,, ...zet no more BC-breaks, I promise

  3. http://everzet.com

  4. @KnpLabs:France Прямиком из

  5. BDD?

  6. Requirements Analysis Design Development Testing [Royce 1970] 9 месяцев 3

    мес. 2 мес. 12 мес. ...
  7. Большая часть стоимости разработки ПО складывается из задержек обратной связи

  8. Давайте их уменьшим!

  9. Requirements Acceptance Testing Coding Refactoring Недели 15-20 минут [Beck &

    Cunningham 1996-99]
  10. Requirements Acceptance Testing? Coding Refactoring Недели 15-20 минут [North 2003]

  11. Requirements Acceptance Specification Implementation Refactoring Недели 15-20 минут [North 2003]

  12. Narrative What do you mean? Specification Implementation Refactoring Недели 15-20

    минут [North 2003]
  13. Narrative What do you mean? Specification Implementation Refactoring [North 2003]

  14. Narrative What do you mean? Specification Implementation Refactoring [North 2003]

  15. Narrative What do you mean? Specification Implementation Refactoring StoryBDD SpecBDD

    [North 2003]
  16. Narrative What do you mean? Specification Implementation Refactoring Behat phpspec

    [North 2003]
  17. None
  18. Вам, наверное, тысячу раз говорили, что вы не практикуете TDD

    потому что вы ленивы, медленны или просто недостаточно умны.
  19. Моки Стабы ? ?

  20. Моки Стабы $mock ->expects($this->once()) ... $mock ->expects($this->any()) ...

  21. Моки $mock ->expects($this->once()) ... Стабы $mock ->expects($this->any()) ...

  22. Если даблы сломаны, то почему бы их просто не игнорировать?

  23. Classical school London school

  24. Classical school London school В TDD самое важное - это

    состояние системы после воздействия на нее
  25. Classical school London school В TDD самое важное - это

    состояние системы после воздействия на нее В TDD самое важное - это взаимодействие объектов внутри ее
  26. Classical school London school В TDD самое важное - это

    взаимодействие объектов внутри ее $object->doAction($dep); assertEquals( $expectedState, $object->getState() );
  27. Classical school London school $object->doAction($dep); assertEquals( $expectedState, $object->getState() ); $dep->setTitle(‘everzet’)

    ->shouldBeCalled() ; $object->doAction($dep);
  28. Classical school London school $object->doAction($dep); assertEquals( $expectedState, $object->getState() ); $dep->setTitle(‘everzet’)

    ->shouldBeCalled() ; $object->doAction($dep); Beck
  29. Classical school London school $object->doAction($dep); assertEquals( $expectedState, $object->getState() ); $dep->setTitle(‘everzet’)

    ->shouldBeCalled() ; $object->doAction($dep); Beck North
  30. Classical school London school $object->doAction($dep); assertEquals( $expectedState, $object->getState() ); $dep->setTitle(‘everzet’)

    ->shouldBeCalled() ; $object->doAction($dep); Beck North, everzet
  31. Classical school London school $object->doAction($dep); assertEquals( $expectedState, $object->getState() ); $dep->setTitle(‘everzet’)

    ->shouldBeCalled() ; $object->doAction($dep); Beck North, everzet Mockery?
  32. Продолжим...

  33. $this->assertEquals(‘smoke’, $unexisting->getSmoke() );

  34. $this->assertEquals(‘smoke’, $unexisting->getSmoke() );

  35. $this->expectToBe(‘smoke’, $unexisting->getSmoke() ); private function expectToBe($expected, $actual) { ... }

  36. Продолжим...

  37. None
  38. None
  39. None
  40. None
  41. Костян, ты опять все поломал.

  42. Костян, ты опять все поломал. шоб ты сдох!

  43. Что мы имеем

  44. Что мы имеем 1.Тул, который нас заставляет отвечать на вопросы

    реализации
  45. Что мы имеем 1.Тул, который нас заставляет отвечать на вопросы

    реализации 2.Тул, который заставляет нас говорить с ним в терминах тестирования
  46. Что мы имеем 1.Тул, который нас заставляет отвечать на вопросы

    реализации 2.Тул, который заставляет нас говорить с ним в терминах тестирования 3.Тул, который кричит на нас, когда что-то не работает
  47. Что нам надо Что мы имеем 1.Тул, который нас заставляет

    отвечать на вопросы реализации 2.Тул, который заставляет нас говорить с ним в терминах тестирования 3.Тул, который кричит на нас, когда что-то не работает
  48. Что нам надо Что мы имеем 1.Тул, который нас заставляет

    отвечать на вопросы реализации 2.Тул, который заставляет нас говорить с ним в терминах тестирования 3.Тул, который кричит на нас, когда что-то не работает 1.Тул, который будет заставлять нас думать о дизайне
  49. Что нам надо Что мы имеем 1.Тул, который нас заставляет

    отвечать на вопросы реализации 2.Тул, который заставляет нас говорить с ним в терминах тестирования 3.Тул, который кричит на нас, когда что-то не работает 1.Тул, который будет заставлять нас думать о дизайне 2.Тул, который будет заставлять нас говорить в терминах поведения
  50. Что нам надо Что мы имеем 1.Тул, который нас заставляет

    отвечать на вопросы реализации 2.Тул, который заставляет нас говорить с ним в терминах тестирования 3.Тул, который кричит на нас, когда что-то не работает 1.Тул, который будет заставлять нас думать о дизайне 2.Тул, который будет заставлять нас говорить в терминах поведения 3.Тул, который будет строить с нами диалог, если что-то пока еще не работает
  51. None
  52. phpspec не пытается уговорить вас использовать SpecBDD. Он делает разработку

    вне SpecBDD суицидальной.
  53. Вопросы?