Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
Behaviour Driven Development(BDD) dengan PHPUnit danSelenium8 Juni 2013, @STIKOM SurabayaTaufan Aditya - Lead Dev @Matahar...
Apa yang akan kita diskusikan hari ini :● Kenapa menggunakan BDD?● BDD di PHP : PHPUnit + Selenium
Kenapa menggunakan BDD?GIVEN a romantic partyWHEN a registered userwith tuxedo heading to meTHEN "Hello Bob" will bedispla...
Tahapan web development umumnya...● Pertama-tama, tim pengembang melakukananalisa untuk requirement dan prioritas.● Pada f...
Timeline untuk model konvensional● Requirement gathering : 1-2 bulan● Design phase : 1-2 bulan● Implementasi : 3-5 bulanEn...
Aku baru mendapatkabar dari developer.Katanya, masih perlu 5-9 bulan lagi sampaiwebsite ibu kita selesai.
Di hari uji-coba, 5-9 bulan kemudian...Sesuai dokumentasirequirement kami,sistem memiliki fitur A,B, C dan DTapi yangkumak...
Beberapa problematika modeldevelopment konvensional :● Terlalumementingkandokumentasi yangrijit● Terlalu fokus keproses da...
We need to become more AGILE!!!
Manifesto for Agile Software DevelopmentWe are uncovering better ways of developingsoftware by doing it and helpingothers ...
Perbandingan daur hidup : Waterfall - AgileWaterfall :5-9 bulanPlanAnalysis &DesignCode Test DeployAgile :1-3 bulan 1-3 bu...
Dari Agile... Kita Dapatkan... TDD!Test Driven Development● Red — Tulis sebuah testyang mengekspresikanbagaimana cara anda...
Keuntungan menggunakan TDD● Bukti bahwa code kita bekerja dengan baik.● Dapat melihat kapan saja, apa yang rusakdan dimana...
Oke, aku merencanakanuntuk membuat 1243.983fungsi, 138 class daninterface.Mana yang lebih dahuluakan kubuat unit-test-nya?...
Lalu, apa itu BDD? Apakah BDD == TDD?I had a problem. While using andteaching agile practices like test-driven development...
Perbandingan TDD - BDDTDD :● Tulis test yang akan gagalkarena belum adafungsionalitas● Tulis kode yang melewatitest● Refac...
BDD sebagai "Stories" dan "Behaviour"Stories● Berhubungandengan ekspektasipada user-story.● Menjelaskan carakerja aplikasi...
Struktur dari sebuah "Story"NaratifAs a [some_role_here]I want [some_feature_here]So that [benefit_of_feature_here]Skenari...
Tanpa BDD, besar kemungkinan :Developer umumnyamemulai percakapansbb :echo preg_replace(array (/(19|20)(d{2})-(d{1,2})-(d{...
Fungsi BDD pada web-development● Memfasilitasi desain aplikasi di levelbehaviour, dengan menyediakan template"Given-When-T...
BDD dengan PHPUnit dan SeleniumTEST ME....I Dare you!
Beberapa popular BDD toolsJava : Ruby :PHP :
Kenapa PHPUnit?● De-facto standard, untuk unit-testing di PHP● Memiliki ekstensi PHPUnit-Story, untukmemfasilitasi BDD den...
Membuat Story dan Step dengan PHPUnitclass SomeSpec extends PHPUnit_Extensions_Story_TestCase{// @scenariopublic function ...
Red-Green-Refactor, seperti halnya TDD
Selenium adalah...● Seperangkat alat untuk otomatisasitesting web-aplikasi yang berjalan dibanyak platform browser.● Jemba...
Selenium IDE
BDD dengan PHPUnit+Selenium● PHPUnit● PHPUnit-Story● PHPUnit-Selenium● Selenium Server
Kembali ke prinsip Red-Green-Refactor
Bagan BDD berdasarkan level-ekspektasiApplication-Level EkspektasiPresentasi/UIServicesClassClient/End-User/DomainExpertDe...
Go beyond this presentation!● Test Automation (Phing, Custom bash script)● Continuous Integration Server (Travis,Jenkins)●...
Reference● Test Driven Development (Kent Beck)● The Art Of Agile Development (OReily)● http://martinfowler.com/agile.html●...
QuestionTime!Thats it!Thanks!
Bdd dengan php dan selenium
Bdd dengan php dan selenium
Nächste SlideShare
Wird geladen in …5
×

Bdd dengan php dan selenium

  • Als Erste(r) kommentieren

Bdd dengan php dan selenium

  1. 1. Behaviour Driven Development(BDD) dengan PHPUnit danSelenium8 Juni 2013, @STIKOM SurabayaTaufan Aditya - Lead Dev @Mataharilabs
  2. 2. Apa yang akan kita diskusikan hari ini :● Kenapa menggunakan BDD?● BDD di PHP : PHPUnit + Selenium
  3. 3. Kenapa menggunakan BDD?GIVEN a romantic partyWHEN a registered userwith tuxedo heading to meTHEN "Hello Bob" will bedisplayed
  4. 4. Tahapan web development umumnya...● Pertama-tama, tim pengembang melakukananalisa untuk requirement dan prioritas.● Pada fase desain, business requirementstadi di translasikan menjadi solusi IT.● Setelah itu, dimulailah pembuatan layoutdan implementasi kode.● End-user/client melakukan evaluasi dantesting.● Maintenance.
  5. 5. Timeline untuk model konvensional● Requirement gathering : 1-2 bulan● Design phase : 1-2 bulan● Implementasi : 3-5 bulanEnd-user akan dapat melakukan evaluasi danmencoba berinteraksi pertama kali denganwebsite :1-2 bulan + 1-2 bulan + 3-5 bulan = 5-9 bulan
  6. 6. Aku baru mendapatkabar dari developer.Katanya, masih perlu 5-9 bulan lagi sampaiwebsite ibu kita selesai.
  7. 7. Di hari uji-coba, 5-9 bulan kemudian...Sesuai dokumentasirequirement kami,sistem memiliki fitur A,B, C dan DTapi yangkumaksudsebenarnyaadalah E, F, G, H HAH?Kenapa anda tidakmemberi tahukami?Terakhir kalianbertanyapadaku adalah5-9 bulan lalu.
  8. 8. Beberapa problematika modeldevelopment konvensional :● Terlalumementingkandokumentasi yangrijit● Terlalu fokus keproses dan alat,dan seringmelupakanperlunya interaksiindividual.● Dokumentasi yangrijit memerlukanwaktu yang lama.● Kurangnyakolaborasi denganend-user/client,menyebabkan adakesenjangan antaraekspektasi denganhasil.
  9. 9. We need to become more AGILE!!!
  10. 10. Manifesto for Agile Software DevelopmentWe are uncovering better ways of developingsoftware by doing it and helpingothers do it.Through this work we have come to value :● Individuals and interactions over processes and tools● Working software over comprehensive documentation● Customer collaboration over contract negotiation● Responding to change over following a planThat is, while there is value in the items on the right, we value the items on theleft more.Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler,James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon KernBrian Marick, Robert C. Martin,Steve Mellor, Ken Schwaber, Jeff Sutherland, Dave Thomas
  11. 11. Perbandingan daur hidup : Waterfall - AgileWaterfall :5-9 bulanPlanAnalysis &DesignCode Test DeployAgile :1-3 bulan 1-3 bulan 1-3 bulanPlanAnalysis&DesignCodeTestDeployPlanAnalysis&DesignCodeTestDeployPlanAnalysis&DesignCodeTestDeploy
  12. 12. Dari Agile... Kita Dapatkan... TDD!Test Driven Development● Red — Tulis sebuah testyang mengekspresikanbagaimana cara andamenggunakan kode.● Green — Mulailahmenulis kode, untukmelewati test.● Refactor — Bersihkankode dari duplikasi,perbaiki desain jikaperlu.Ulangi, sampai selesai!
  13. 13. Keuntungan menggunakan TDD● Bukti bahwa code kita bekerja dengan baik.● Dapat melihat kapan saja, apa yang rusakdan dimana bug muncul.● Dapat memperbaiki desain/arsitektur kode,tanpa merusaknya.● Test-first memaksa kita merencanakansebelum mulai menulis kode.● Bisa berfungsi sebagai dokumentasifungsional.● ... and the list goes on...
  14. 14. Oke, aku merencanakanuntuk membuat 1243.983fungsi, 138 class daninterface.Mana yang lebih dahuluakan kubuat unit-test-nya? Hmm....Ketika seseorang baru mengenal TDD...Wah, fungsi ini tidak bolehdipakai diluar scopenya.Dia harus berupa privatemethod. Mana yang perludan mana yang tidakperlu dicover dalam test?Hmm....Fungsi dalam class iniadalahdoSomethingWhenFooNotLongerBar. Harus kuberinama apa test-case untukini? Hmm....
  15. 15. Lalu, apa itu BDD? Apakah BDD == TDD?I had a problem. While using andteaching agile practices like test-driven development (TDD) onprojects in different environments,I kept coming across the sameconfusion andmisunderstandings.My response is Behaviour-DrivenDevelopment (BDD).Dan North — creator of jBehave
  16. 16. Perbandingan TDD - BDDTDD :● Tulis test yang akan gagalkarena belum adafungsionalitas● Tulis kode yang melewatitest● Refactor● Ulangi kembali Red-Green-Refactor sampaisemua class/fungsi yangdiperlukan selesaiBDD :● Tulis spesifikasi(berdasarkan story)yang akan gagal karenabelum adafungsionalitas● Tulis kode yangmelewati spesifikasi● Refactor● Ulangi kembali Red-Green-Refactor sampaisemua spesifikasiselesai
  17. 17. BDD sebagai "Stories" dan "Behaviour"Stories● Berhubungandengan ekspektasipada user-story.● Menjelaskan carakerja aplikasisecara high-level.Behaviour● Berhubungandengan ekspektasipada sistem.● Menjelaskan carakerja aplikasisecara low-level.
  18. 18. Struktur dari sebuah "Story"NaratifAs a [some_role_here]I want [some_feature_here]So that [benefit_of_feature_here]SkenarioGiven [some_existing_condition]When [some_event_occur]Then [system_should_or_should_not_do]
  19. 19. Tanpa BDD, besar kemungkinan :Developer umumnyamemulai percakapansbb :echo preg_replace(array (/(19|20)(d{2})-(d{1,2})-(d{1,2})/,/^s*{(w+)}s*=/),array (3/4/12,$1 =),{startDate} = 1999-5-27);Dan end-user a.k.aclient, akanmenanggapi sbb :
  20. 20. Fungsi BDD pada web-development● Memfasilitasi desain aplikasi di levelbehaviour, dengan menyediakan template"Given-When-Then".● Memfasilitasi komunikasi antar departemendalam web-development : Client - Domainexpert - QA - Developer, dengan bahasayang dapat dimengerti oleh semua personel(ubiquitous language).
  21. 21. BDD dengan PHPUnit dan SeleniumTEST ME....I Dare you!
  22. 22. Beberapa popular BDD toolsJava : Ruby :PHP :
  23. 23. Kenapa PHPUnit?● De-facto standard, untuk unit-testing di PHP● Memiliki ekstensi PHPUnit-Story, untukmemfasilitasi BDD dengan template "Given-When-Then"● Memiliki ekstensi PHPUnit-Selenium, untukmemfasilitasi acceptance test yang bisadiintegrasikan ke Selenium server.Satu framework testing, untuk semua layer!
  24. 24. Membuat Story dan Step dengan PHPUnitclass SomeSpec extends PHPUnit_Extensions_Story_TestCase{// @scenariopublic function someFeature(){$this->given(keyword, OOT)->when(search)->then(search should not contain any result);}// @givenpublic function runGiven(&$world, $action, $arguments){}// @whenpublic function runWhen(&$world, $action, $arguments){}// @thenpublic function runThen(&$world, $action, $arguments){}}
  25. 25. Red-Green-Refactor, seperti halnya TDD
  26. 26. Selenium adalah...● Seperangkat alat untuk otomatisasitesting web-aplikasi yang berjalan dibanyak platform browser.● Jembatan yang menyediakanabstraksi untuk berinteraksi denganlayer web/browser
  27. 27. Selenium IDE
  28. 28. BDD dengan PHPUnit+Selenium● PHPUnit● PHPUnit-Story● PHPUnit-Selenium● Selenium Server
  29. 29. Kembali ke prinsip Red-Green-Refactor
  30. 30. Bagan BDD berdasarkan level-ekspektasiApplication-Level EkspektasiPresentasi/UIServicesClassClient/End-User/DomainExpertDeveloperSelenium-TestBehaviour-TestUnit-Test
  31. 31. Go beyond this presentation!● Test Automation (Phing, Custom bash script)● Continuous Integration Server (Travis,Jenkins)● Read Agile/XP Books (wait for mine :) )● Practice it!
  32. 32. Reference● Test Driven Development (Kent Beck)● The Art Of Agile Development (OReily)● http://martinfowler.com/agile.html● http://dannorth.net/introducing-bdd/● http://phpunit.de/● http://seleniumhq.org/● https://github.com/toopay/PIM-Selenium
  33. 33. QuestionTime!Thats it!Thanks!

×