É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
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
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
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
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
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
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?
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.
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 }
}
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
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