Your SlideShare is downloading. ×
0
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Hello BDD @ WebConf/2013
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Hello BDD @ WebConf/2013

862

Published on

Én, mint előadó …

Én, mint előadó
Elmondom, hogy miért nagyszerű a BDD
Így a jelenlévők is megismerhetik azt

Forgatókönyv: sikeres előadás :]
Amennyiben elhangzott az előadás
És a hallgatók megértik az elhangzottakat
Majd hasznosítják azt a mindennapi munkájukban
Akkor ezáltal boldogabbak lesznek
És örömükben meghívják az előadót 1-2 sörre

Forgatókönyv: sikertelen előadás :[
Amennyiben elhangzott az előadás
És a hallgatók unalmukban elaludtak
Majd az előadás végén felébrednek
Akkor megdobálják az előadót tojással
De az biztos, hogy nem hívják meg 1-2 sörre

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
862
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
1
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. hello BDD É,mn eőd n it laó Emno,hg métngseűaBD lodm oy ir ayzr D Íyajlnéő i mgsehtkat g eelvk s eimrei z Fraóöy:skrseőds: ogtknv iee laá ] Aenie ehnzt a eőds mnybn lagot z laá É ahlgtkmgri a ehnztaa s alaó eétk z lagotkt Mj hsnstá atamnenp mnáubn ad azoíjk z idnai ukjka Akreátlbloabklsnk ko zla odgba eze É ööübnmgíjka eődt12sre s rmke ehvá z laó - ör Fraóöy:skree eőds: ogtknv ietln laá [ Aenie ehnzt a eőds mnybn lagot z laá É ahlgtkuamka eautk s alaó nlubn llda Mj a eődsvgnflbenk ad z laá éé eérde Akrmgoájka eődttjsa ko edblá z laó oásl D a bzo,hg nmhvá mg12sre e z its oy e íjk e - ör
  • 2. hello BDD TDD, BDD és sok egyéb xBR
  • 3. SZÁSZ ZOLTÁN zoltan at szasz.me @szaszz /in/zoltanszasz
  • 4. BEMUTATKOZÁS 10+ éve dev bizniszben Önjelölt Clean Coder Dev & Ops, többnyire Dev Agile / Scrum / Kanban / XP kedvelő TDD & automata teszt hívő Symfony2 fan PHP Meetup alapító & szervező 2 gyermek büszke apukája
  • 5. BUSINESS DRIVEN DEVELOPMENT VS BEHAVIOR DRIVEN DEVELOPMENT
  • 6. BUSINESS DRIVEN DEVELOPMENT = BEHAVIOR DRIVEN DEVELOPMENT
  • 7. TÖRTÉNET FELTALÁLÓK Dan North Chris Matts Liz Keogh @tastapod @papachrismatts @lunivore
  • 8. FELTALÁLTÁK Behavior Driven Development MEGCSINÁLTÁK RBehave » RSpec JBehave
  • 9. TESZTELÉS ~ISMÉTLÉS A TUDÁS ATYJA~
  • 10. MIÉRT TESZTELJÜNK? helyesség teljesség robusztusság regressziók kizárása hibák megelőzése stb.
  • 11. MI TÖRTÉNIK, HA NEM TESZTELÜNK?
  • 12. MIÉRT AUTOMATA TESZTELJÜNK? úgyis tesztelsz miért csinálnád kézzel? teszt is lehet komplex hamar megtérül stb, stb.
  • 13. XP TESZT ALAPOK minden kód unit tesztelt minden kód „átmegy” a unit teszteken a tesztek felfedik a hibákat a tesztek gyorsak, és gyakran futnak + a tesztek determinisztikusak és koherensek a cél továbbra is pontosan ez
  • 14. TDD a legegyszerűbb tesztet, és 1. Írd meg lásd, hogy úgy fail-el, ahogy vártad 2. Teljesítsd a tesztet a legegyszerűbb kóddal 3. Refaktorálj! Ismételd, a fenti 3 lépést, míg készen nem vagy
  • 15. CLEAN CODE SOLID SRP Egy osztály egy dologért felel OCP Az osztály kiterjeszthető, de nem módosítható LSP Egy osztály helyett, bármely gyereke használható ISP Ne függj olyantól, amit nem használsz. A logika kis interface-eknek feleljen meg. DIP A működés (logikai szinten) nem a konkréttól, csupán az absztrakttól függ (decoupling)
  • 16. „TOVÁBB IS VAN! MONDJAM MÉG?” YAGNI Mindig csak a szükséges dolgokat implementáld DRY Mindent csak egyszer írj meg KISS Tartsd egyszerűen FIRST Tesztek AJÁNLÓ Magyar Attila – Clean Code slide video Orcsik Antal – Objektum orientált mérések a gyakorlatban slide video Ördög Rafael – Test driven mockery slide video
  • 17. SZUPER-ZÖLD! AVAGY A  „BETÖRT ABLAK”-ELV is! Óvakodj a „flaky” teszttől, meg a „skipped” teszttől és persze az „incomplete” teszttől
  • 18. BDD ALAPOK
  • 19. SPECIFIKÁCIÓ
  • 20. FORMÁLIS SPECIFIKÁCIÓ üzleti szemléletben már a 60-as évektől több paradigma több leíró nyelv kötöttek nem rugalmasak
  • 21. INFORMÁLIS SPECIFIKÁCIÓ szeretnék egy olyat... legyen... kék! nem jó kék! nem is!... inkább piros!
  • 22. XP SPECIFIKÁCIÓ USER STORY Flazáó krss ehsnlk eeée #il tte Mn rnse amnstáo it edzr diizrtr Seenkaflazáó kz krsi zrté ehsnlk öt een Aét hg mgéhse a aaakt zr, oy enzesm z dtia #oe rl #eur fate #eei bnft ELFOGADÁSI KRITÉRIUMOK •flazáó krseőknvé emi cmaajn ehsnlk eehte é s -al í lpá •lsanzte ltmanvt emi cmt tlfnzmt it éebn áo eé, -al íé, eeosáá •lsanzte anvektitaarsltsnztjlnkmg it éebn ér atnv ézee ée eei e •rsltsnzte ltmmne mnetaaá cootsta ézee éebn áo idn ett dtt sproív
  • 23. BDD SPECIFIKÁCIÓ Ami bevált azon miért változtatnánk? USER STORY Faue AcutHle wtdascs etr: con odr ihrw ah #il tte A a AcutHle s n con odr Iwn t wtda cs fo a AM at o ihrw ah rm n T S ta Icngtmnywe tebn i coe o ht a e oe hn h ak s lsd #oe rl #etr faue #eei bnft
  • 24. AKKOR MI AZ ÚJ? Scenariók, mint automatán tesztelhető elfogadási kritériumok Seai:Acuthssfiin fns cnro con a ufcet ud Gvnteacutblnei $0 ie h con aac s 10 Adtecr i vld n h ad s ai Adtemciecnan eog mny n h ahn otis nuh oe We teAcutHle rqet $0 hn h con odr euss 2 Te teAMsol dses $0 hn h T hud ipne 2 Adteacutblnesol b $0 n h con aac hud e 8 Adtecr sol b rtre n h ad hud e eund Seai:Acuthsisfiin fns cnro con a nufcet ud Gvnteacutblnei $0 ie h con aac s 1 Adtecr i vld n h ad s ai Adtemciecnan eog mny n h ahn otis nuh oe We teAcutHle rqet $0 hn h con odr euss 2 Te teAMsol ntdses aymny hn h T hud o ipne n oe AdteAMsol syteeaeisfiin fns n h T hud a hr r nufcet ud Adteacutblnesol b $0 n h con aac hud e 1 Adtecr sol b rtre n h ad hud e eund #il tte #otx cnet #otx cnet #otx cnet #vn eet #ucm otoe #ucm otoe #ucm otoe
  • 25. EZ MÁR AUTOMATA TESZT? NEM! ✱ ✱ De jó úton járunk :)
  • 26. DSL
  • 27. GHERKIN - A NYELV pontosabban DSL (domain specific language) leírja a viselkedést, az implementáció ismerete nélkül „nyakkendősök” is megértik: ügyfél, Product Owner, Project Manager, Business Analyst, Marketing fejlesztők is megértik kötött szintaxissal, de természetes nyelven írható (~40 nyelv) .feature fileok (user story + scenariók) natívan: Ruby, Java, Js, .Net sok BDD eszköz alap DSL-je (pl: Behat, Behave)
  • 28. USER STORY FEATURE | BUSINESS NEED | ABILITY Faue Ccme etn etr: uubr aig A ahnr mn s ugy a Iwn t etsm ccme at o a oe uubr S ta Iwntb hnr o ht o' e ugy TESZT ESET SCENARIO (FORGATÓKÖNYV) Seai:Et5oto 1 cnro a u f 2 Gvnteeae1 ccmes ie hr r 2 uubr We Iet5ccmes hn a uubr Te Isol hv 7ccmes hn hud ae uubr
  • 29. LÉPÉSEK GIVEN (AMENNYIBEN|ADOTT) Gvnteeae1 ccmes ie hr r 2 uubr Ad6ptt n oao #öboo agmnuo tbsrs ruetmk GvnTeevgtbe aeo tetbe ie hs eeals r n h al: |vgtbe|aon | eeal mut |ccme |1 uubr 2 | |ptt oao |6 | WHEN (MAJD|HA|AMIKOR) We Iet5ccmes hn a uubr Ad2ptte n oaos
  • 30. LÉPÉSEK THEN (AKKOR) Te Isol hv 7ccmes hn hud ae uubr Ad4ptte n oaos AND (ÉS), BUT (DE) Te iseccmes hn e uubr Adptte n oaos Btid ntseoin u o o e no
  • 31. TESZT VÁZLAT SCENARIO (OUTLINE | TEMPLATE) Seai Otie Etn cnro uln: aig Gvnteeae<tr>ccmes ie hr r sat uubr We Iet<a>ccmes hn a et uubr Te Isol hv <et ccmes hn hud ae lf> uubr Eape: xmls |sat|et|lf | tr a et | 1 2 | 5 | 7 | | 2 0 | 5 | 1 | 5
  • 32. ALAPVETÉS BACKGROUND (HÁTTÉR) Bcgon: akrud Gvnteeae1 ccmes ie hr r 2 uubr Seai:Et5oto 1 cnro a u f 2 We Iet5ccmes hn a uubr Te Isol hv 7ccmes hn hud ae uubr Seai:Et6oto 1 cnro a u f 2 We Iet6ccmes hn a uubr Te Isol hv 6ccmes hn hud ae uubr
  • 33. I18N EN Seai:Acuthssfiin fns cnro con a ufcet ud Gvnteacutblnei $0 ie h con aac s 10 Adtecr i vld n h ad s ai Adtemciecnan eog mny n h ahn otis nuh oe We teAcutHle rqet $0 hn h con odr euss 2 Te teAMsol dses $0 hn h T hud ipne 2 Adteacutblnesol b $0 n h con aac hud e 8 Adtecr sol b rtre n h ad hud e eund HU #agae h lnug: u Fraóöy:Vneé pn asáln ogtknv a lg éz zmá Aenie asáleyne $0 mnybn zmagelg 10 É akry évne s áta réys É a AMbneeed pn vn s z T-e lgnő éz a Aio tljoo kvs $0t mkr uadns iez 2Akra AMka $0t ko z T id 2É asál eynee$0 s zma gelg 8 É akrytkat a AM s átá ida z T
  • 34. ESZKÖZÖK ✱ ÉS KERETRENDSZEREK .Net: NBehave, NSpec, Concordion Java: JBehave, Spock, Concordion JavaScript: Jasmine, Vows (node.js) PHP: Behat, PHPUnit Story Python: Behave, Letucce, Concordion Ruby: RSpec, Cucumber, Concordion Scala: ScalaTest, Concordion ✱ a nyelvek ABC sorrendben szerepelnek
  • 35. SCENARIO A teszt metódus nevek legyenek mondatok Egy kifejező teszt név nagyon hasznos, ha failel a teszt Viselkedést definiáljunk, ne tesztet írjunk A követelmény viselkedés is Mindennapi (mindenki számára érthető) nyelven Az elfogadási kritériumok legyenek futtathatók Legyen a story olvasmányos Mi lenne ha?
  • 36. BDD != TDD AVAGY MIT TESZTELJÜNK?
  • 37. BBD » TDD TDD test class under test method under test passing / behaving failing / misbehaving 100% coverage BDD example class we’re describing valuable behaviour working, providing value should it do what I’ve described? Please, come change my code. I believe I’ve given you enough information to do this safely.
  • 38. PÉLDÁUL...
  • 39. BEHAT & MINK
  • 40. SCENARIO Seai:Cekgnrt tubal cnro hc eeae hmnis GvnIa i adrcoy"m" ie m n ietr ig AdIhv a iptiae"et12_6.n" n ae n nu mg ts_0478pg We Icet nwtubal hn rae e hmnis Te nwycetdtubaleit "etspg hn el rae hmni xss ts_.n" Adnwycetdtubaleit "etmpg n el rae hmni xss ts_.n"
  • 41. KÓD <pp ?h / FlSseCnetetnsBhtBhtCnetBhtotx; / ieytmotx xed eaeaotxeaCnet casTubaletrsetnsFlSseCnet ls hmniFaue xed ieytmotx { /* * *@ie /Ia i adrcoy"["])$ Gvn ^ m n ietr (^"*"/ *@ie /Ig t adrcoy"["])$ Gvn ^ o o ietr (^"*"/ * / pbi fnto cagDro$ietr){ ulc ucin hneiT(drcoy } /* * *@ie /Ihv a iptiae"["])$ Gvn ^ ae n nu mg (^"*"/ * / pbi fnto raFl(fl){ ulc ucin edie$ie }
  • 42. KÓD /* * *@hn/Icet nwtubal$ We ^ rae e hmnis/ * / pbi fnto cetTubal( { ulc ucin raehmnis) } /* * *@hn/nwycetdtubaleit "["])$ Te ^el rae hmni xss (^"*"/ *@hn/fl eit "["])$ Te ^ie xss (^"*"/ * / pbi fnto flEit(fl){ ulc ucin iexss$ie } }
  • 43. SHAMELESS SELF PROMO
  • 44. KÉRDÉSEK? Szász Zoltán zoltan at szasz.me @szaszz /in/zoltanszasz
  • 45. READ_IT_LATER.TXT Business Behavior @tastapod @papachrismatts @lunivore XP teszt alapok Kent Beck - Extreme Programming Explained TDD SOLID SRP: Single Responsibility Principle
  • 46. READ_MORE_LATER.TXT OCP: Open Closed Principle LSP Liskov Substitution Principle ISP: Interface Segregation Principle DIP: Dependency Inversion Principle Clean Coders YAGNI: You ain't gonna need it DRY: Don't Repeat Yourself KISS: Keep It Simple Stupid
  • 47. READ_MORE_LATER_2.TXT FIRST: Fast, Independent, Repetable, Self-validating, Timely Magyar Attila - Clean Code slide video Orcsik Antal - Objektum orientált mérések a gyakorlatban slide video Ördög Rafael - Test driven mockery slide video Robert C. Martin - Clean Code: A Handbook of Agile Software Craftsmanship Robert C. Martin - Tiszta kód Robert C. Martin - The Clean Coder: A Code of Conduct for Professional Programmers Robert C. Martin - Túlélőkönyv programozóknak
  • 48. READ_MORE_LATER_3.TXT „Betört ablak”-elv Specifikáció formális specifikáció User Story C3 User Story On Acceptance criteria for user stories DSL Gherkin - a nyelv
  • 49. READ_MORE_LATER_4.TXT Gherkin ~40 nyelven Given-When-Then .Net: NBehave, NSpec, Concordion Java: JBehave, Spock,Concordion JavaScript: Jasmine, Vows (node.js) PHP: Behat, PHPUnit Story Python: Behave, Letucce, Concordion Ruby: RSpec, Cucumber, Concordion Scala: ScalaTest, Concordion
  • 50. READ_MORE_LATER_5.TXT Dan North - Introducing BDD Dan North - What’s in a Story? BBD » TDD Behat & Mink PHP Meetup Budapest @szaszz /in/zoltanszasz

×