Slide 1

Slide 1 text

Using PhpSpec to build quality into a Symfony app by Jakub Zalas

Slide 2

Slide 2 text

Who am I? o  I work @SensioLabsUK o  I tweet @jakub_zalas o  I code @jakzal

Slide 3

Slide 3 text

QUALITY? What is

Slide 4

Slide 4 text

How would you define software quality? @jakub_zalas

Slide 5

Slide 5 text

for me software quality is defined by factor how easy is to introduce and manage change without breaking product @cakper

Slide 6

Slide 6 text

clean, readable code. documentation where appropriate. complementary test suite. peer reviewed. @rich_81 oh and bug-free ;-)

Slide 7

Slide 7 text

easier to maintain = less technical debt = less cost financially. @rich_81 plus, who likes working on crappy projects? ;-)

Slide 8

Slide 8 text

Easy to maintain and extend. @sprain

Slide 9

Slide 9 text

software quality is very subjective! It's not only about the code @hhamon but also availability, ease to use, ease to change, failures tolerance, performance, backups management...

Slide 10

Slide 10 text

WTF per minute per user Jacek

Slide 11

Slide 11 text

I would distinguish between internal and external quality. @CiaranMcNulty

Slide 12

Slide 12 text

Quality is really two levers: external and internal quality. External quality is the quality perceived by the customer. [Internal quality is] Quality of internals of the system: how well it is designed, how good the internal tests are, and so on.

Slide 13

Slide 13 text

the extent to what the software takes into account what matters most for the customer & the maintainability of the source code @_md External quality Internal quality

Slide 14

Slide 14 text

software quality? That the software delivers real value and is built in a sustainable way. @IanDominey External quality Internal quality

Slide 15

Slide 15 text

IS IMPORTANT? What

Slide 16

Slide 16 text

Ignoring the external quality

Slide 17

Slide 17 text

THE INTERNAL QUALITY This talk is about

Slide 18

Slide 18 text

Ignoring the internal quality

Slide 19

Slide 19 text

Ignoring the internal quality  Care No care Time # of features

Slide 20

Slide 20 text

Ignoring the internal quality Time Pace Care   No  care   Care   No  care  

Slide 21

Slide 21 text

CARE? Should we

Slide 22

Slide 22 text

IS OUR PROFESSIONAL RESPONSIBILITY Ensuring the internal quality

Slide 23

Slide 23 text

CONTINUOUSLY REVIEW THE DESIGN To MAINTAIN the internal quality

Slide 24

Slide 24 text

REFACTOR To MAINTAIN the internal quality

Slide 25

Slide 25 text

TESTS There’s no refactoring without

Slide 26

Slide 26 text

IS OUR PROFESSIONAL RESPONSIBILITY Writing tests

Slide 27

Slide 27 text

DESIGN WELL To BUILD the internal quality

Slide 28

Slide 28 text

DRIVE YOUR CODE WITH TESTS To BUILD the internal quality

Slide 29

Slide 29 text

WE LEARN HOW TO KEEP THE DESIGN SIMPLE Writing tests FIRST

Slide 30

Slide 30 text

IS OUR PROFESSIONAL RESPONSIBILITY Writing tests FIRST

Slide 31

Slide 31 text

IS ALL ABOUT TDD Building the quality into our app

Slide 32

Slide 32 text

Failing   step   Failing   test   Code   Refactor   Passing   step   External Internal

Slide 33

Slide 33 text

EXCEPT THAT THEY DO Tools doesn’t matter

Slide 34

Slide 34 text

DEMO Dead Coding

Slide 35

Slide 35 text

THE END

Slide 36

Slide 36 text

Credits •  http://www.rgbstock.com/photo/mfXiaE4/Angry+Sumo •  http://www.nightmarefactory.com/cgi-bin/shopper?preadd=action&key=RU909885 •  http://en.wikipedia.org/wiki/Blind_men_and_an_elephant •  http://www.rgbstock.com/download/RWLinder/mC5Xudi.jpg