際際滷

際際滷Share a Scribd company logo
Jasmine ile Behavior Driven Development
                      Osman Y端ksel  jstanbul 2012
JavaScript uygulamam脹 neden test etmeliyim?
Dier dillerle yazd脹脹n脹z uygulamalar脹 neden test ediyorsunuz?


JavaScript, bir web 端r端n端n端n, son kullan脹c脹n脹n g旦rd端端 en 旦nemli b旦l端mlerinden biridir.


Yap脹lacak en ufak hata, sitenin tamamiyle 巽al脹mamas脹na sebep olabilir.


Herhangi bir yerde console.log kullanmak yerine, bunun testini yaz脹n


Dolay脹s脹yla, JavaScript de en az dier diller kadar sayg脹y脹 hak ediyor.
TDD nedir?
Yeilden 旦nce k脹rm脹z脹y脹 g旦rmek
- Herhangi bir kod yazmadan, 旦nce testini yaz脹p,
  bu testin baar脹s脹z olduunu(k脹rm脹z脹) g旦rmek

                                                                            m
K脹rm脹z脹y脹 yeile 巽evirmeye 巽al脹mak
- Baar脹s脹z olan testi, baar脹l脹 yapacak minimum
  kodu yazarak, testi baar脹l脹(yeil) hale getirmek


Ama her zaman yeili de k脹rm脹z脹 yapabilecek durumlar yaratmaya 巽al脹mak
- Daha sonra, baar脹l脹 testi baar脹s脹z yapacak yeni testler ekleyerek kodu deitirmek


En sonda mavide huzur bulmakt脹r
- Bu s脹rada kodun kalitesini 巽al脹an yap脹y脹 bozmad脹脹ndan emin olarak artt脹rmak (Refactoring)
Neden TDD?
Sizi daha iyi bir tasar脹ma zorlar
- Daha mod端ler
- Daha tekrar-kullan脹labilir (reusable)
- Daha test edilebilir


Haz脹r dok端mantasyon!
- Testler, en g端zel dok端mantasyonlard脹r


Abi ben d端zg端n yazd脹m, Mehmet'in yazd脹脹 kod patlatm脹
- Regression test hayat kurtar脹r
TDD ne deildir?
Boa harcanan zaman
- Eer 端r端n端 gelitirmeye devam edecekseniz, o zaman脹n 巽ok daha fazlas脹n脹
  kodun bak脹m脹 i巽in harcamak zorunda kalabilirsiniz


Daha 旦nce yaz脹lm脹 kodu, test eder
- Hen端z yaz脹lmam脹 kodun testini i巽erir. Kodun testi deil, testin kodu vard脹r


Her soruna 巽旦z端md端r
- Testler de yanl脹/eksik olabilir. Kodda 巽脹kan bir bug asl脹nda yanl脹/eksik bir testtir
BDD nedir?
TDD yaz脹l脹mc脹 g旦z端nden test iken, BDD kullan脹c脹 g旦z端nden test demektir
- BDD :Kullan脹c脹 siteye girince Hogeldiniz mesaj kutusu a巽脹ls脹n
- TDD: DomReady event'i trigger edildiinde,
  app.showWelcomeMessage() 巽a脹r脹ls脹n


S旦z dizimi (syntax) daha insanidir.                                    m
- We write the specs in English, BDD - Beatless 2012
- http://www.youtube.com/watch?v=pvJi1E730HA


TDD'nin evrim ge巽irmii falan deildir, TDD'nin ta kendisidir
- Google.com  TDD done right
Jasmine BDD
Taray脹c脹da 巽al脹abilir, komut sat脹r脹nda bir eyler yapman脹z gerekmez.


Dolay脹s脹yla kolayd脹r


Ama yine de komut sat脹r脹ndan bir ey yapmak isterseniz qasmine var ;)


DOM'a ve baka bir framework'e ba脹ml脹l脹脹 yoktur


Ruby'nin Rspec'lerine 巽ok benzer bir s旦z dizimi vard脹r


Sadece web i巽in deil, JavaScript'in 巽al脹t脹脹 neredeyse her yerde kullan脹labilir
Jasmine BDD
https://github.com/pivotal/jasmine/




qasmine 巽脹kt脹s脹
Jasmine BDD
Jasmine BDD
Jasmine BDD
Jasmine BDD
Jasmine BDD
Jasmine BDD
Jasmine - Matchers
Jasmine - Spies
Bir s脹n脹f脹 izlemek i巽in


Bir s脹n脹f脹 mocklamak i巽in
Jasmine - Spies
Jasmine  Asenkron Spec'ler
JavaScript'te her ey tek thread 端zerinden 巽al脹脹r


Ama istekler asenkron 巽al脹abilir (event loop)
- Timer event'lerini dinlemek
- XHR(AJAX) request'lerini dinlemek


Dolay脹s脹yla bu tip durumlar脹 test edebilmek i巽in baz脹 旦zel eyler yapmam脹z gerekir
Jasmine  Asenkron Spec'ler
Jasmine  Asenkron Spec'ler
qasmine
Tart mutfa脹nda, el demeden haz脹rlanm脹t脹r
Jasmine spec'lerini komut sat脹r脹ndan 巽al脹t脹rabilen, bir Qt C++ uygulamas脹
Continious integration ve git hook'lar脹 i巽in haz脹rland脹
http://github.com/tart/qasmine
Kaynak巽a
http://www.cihataltuntas.com/?p=37
http://hendryluk.wordpress.com/2009/07/17/bdd-tdd-done-right/
http://www.youtube.com/watch?v=pvJi1E730HA
http://pivotal.github.com/jasmine/
http://github.com/tart/qasmine
http://github.com/yuxel/ggmock


Sunum dosyas脹
https://github.com/yuxel/presentations
http://slideshare.net/yuxel/jasminebdd
Talk is cheap, show me the code


  Hoppity Hop! @ Facebook Puzzles
 http://www.facebook.com/careers/puzzles.php?puzzle_id=7
 bit.ly/PX6hu8
Web eitimi sadece 端lkemizde deil, d端nyan脹n 巽ou yerinde 巽ok k旦t端.
W3, bunun i巽in Web Education Community'yi kurdu
http://www.w3.org/community/webed/
Eitim d旦k端manlar脹, 端niversiteler ile ilikiler vs.
T端rkiye topluluu da var, 巽eviri bekleyen bir 巽ok belge var.
Bekleriz ;)
Sorular?
yuxel@sonsuzdongu.com

    http://yuxel.net
m
    https://github.com/yuxel

    http://twitter.com/yuxel

    http://friendfeed.com/yuxel

More Related Content

Jasminebdd

  • 1. Jasmine ile Behavior Driven Development Osman Y端ksel jstanbul 2012
  • 2. JavaScript uygulamam脹 neden test etmeliyim? Dier dillerle yazd脹脹n脹z uygulamalar脹 neden test ediyorsunuz? JavaScript, bir web 端r端n端n端n, son kullan脹c脹n脹n g旦rd端端 en 旦nemli b旦l端mlerinden biridir. Yap脹lacak en ufak hata, sitenin tamamiyle 巽al脹mamas脹na sebep olabilir. Herhangi bir yerde console.log kullanmak yerine, bunun testini yaz脹n Dolay脹s脹yla, JavaScript de en az dier diller kadar sayg脹y脹 hak ediyor.
  • 3. TDD nedir? Yeilden 旦nce k脹rm脹z脹y脹 g旦rmek - Herhangi bir kod yazmadan, 旦nce testini yaz脹p, bu testin baar脹s脹z olduunu(k脹rm脹z脹) g旦rmek m K脹rm脹z脹y脹 yeile 巽evirmeye 巽al脹mak - Baar脹s脹z olan testi, baar脹l脹 yapacak minimum kodu yazarak, testi baar脹l脹(yeil) hale getirmek Ama her zaman yeili de k脹rm脹z脹 yapabilecek durumlar yaratmaya 巽al脹mak - Daha sonra, baar脹l脹 testi baar脹s脹z yapacak yeni testler ekleyerek kodu deitirmek En sonda mavide huzur bulmakt脹r - Bu s脹rada kodun kalitesini 巽al脹an yap脹y脹 bozmad脹脹ndan emin olarak artt脹rmak (Refactoring)
  • 4. Neden TDD? Sizi daha iyi bir tasar脹ma zorlar - Daha mod端ler - Daha tekrar-kullan脹labilir (reusable) - Daha test edilebilir Haz脹r dok端mantasyon! - Testler, en g端zel dok端mantasyonlard脹r Abi ben d端zg端n yazd脹m, Mehmet'in yazd脹脹 kod patlatm脹 - Regression test hayat kurtar脹r
  • 5. TDD ne deildir? Boa harcanan zaman - Eer 端r端n端 gelitirmeye devam edecekseniz, o zaman脹n 巽ok daha fazlas脹n脹 kodun bak脹m脹 i巽in harcamak zorunda kalabilirsiniz Daha 旦nce yaz脹lm脹 kodu, test eder - Hen端z yaz脹lmam脹 kodun testini i巽erir. Kodun testi deil, testin kodu vard脹r Her soruna 巽旦z端md端r - Testler de yanl脹/eksik olabilir. Kodda 巽脹kan bir bug asl脹nda yanl脹/eksik bir testtir
  • 6. BDD nedir? TDD yaz脹l脹mc脹 g旦z端nden test iken, BDD kullan脹c脹 g旦z端nden test demektir - BDD :Kullan脹c脹 siteye girince Hogeldiniz mesaj kutusu a巽脹ls脹n - TDD: DomReady event'i trigger edildiinde, app.showWelcomeMessage() 巽a脹r脹ls脹n S旦z dizimi (syntax) daha insanidir. m - We write the specs in English, BDD - Beatless 2012 - http://www.youtube.com/watch?v=pvJi1E730HA TDD'nin evrim ge巽irmii falan deildir, TDD'nin ta kendisidir - Google.com TDD done right
  • 7. Jasmine BDD Taray脹c脹da 巽al脹abilir, komut sat脹r脹nda bir eyler yapman脹z gerekmez. Dolay脹s脹yla kolayd脹r Ama yine de komut sat脹r脹ndan bir ey yapmak isterseniz qasmine var ;) DOM'a ve baka bir framework'e ba脹ml脹l脹脹 yoktur Ruby'nin Rspec'lerine 巽ok benzer bir s旦z dizimi vard脹r Sadece web i巽in deil, JavaScript'in 巽al脹t脹脹 neredeyse her yerde kullan脹labilir
  • 16. Jasmine - Spies Bir s脹n脹f脹 izlemek i巽in Bir s脹n脹f脹 mocklamak i巽in
  • 18. Jasmine Asenkron Spec'ler JavaScript'te her ey tek thread 端zerinden 巽al脹脹r Ama istekler asenkron 巽al脹abilir (event loop) - Timer event'lerini dinlemek - XHR(AJAX) request'lerini dinlemek Dolay脹s脹yla bu tip durumlar脹 test edebilmek i巽in baz脹 旦zel eyler yapmam脹z gerekir
  • 19. Jasmine Asenkron Spec'ler
  • 20. Jasmine Asenkron Spec'ler
  • 21. qasmine Tart mutfa脹nda, el demeden haz脹rlanm脹t脹r Jasmine spec'lerini komut sat脹r脹ndan 巽al脹t脹rabilen, bir Qt C++ uygulamas脹 Continious integration ve git hook'lar脹 i巽in haz脹rland脹 http://github.com/tart/qasmine
  • 23. Talk is cheap, show me the code Hoppity Hop! @ Facebook Puzzles http://www.facebook.com/careers/puzzles.php?puzzle_id=7 bit.ly/PX6hu8
  • 24. Web eitimi sadece 端lkemizde deil, d端nyan脹n 巽ou yerinde 巽ok k旦t端. W3, bunun i巽in Web Education Community'yi kurdu http://www.w3.org/community/webed/ Eitim d旦k端manlar脹, 端niversiteler ile ilikiler vs. T端rkiye topluluu da var, 巽eviri bekleyen bir 巽ok belge var. Bekleriz ;)
  • 26. yuxel@sonsuzdongu.com http://yuxel.net m https://github.com/yuxel http://twitter.com/yuxel http://friendfeed.com/yuxel