3. Test-driven development, kod yazmadan önce,
kodun davranışını belirleyen testi, ardından bu
testin geçmesini sağlayan doğru kodun
yazılması ve bu işlemlerin otomatik olarak
denetlenmesidir.
4. TDD’ye basitçe başlama
1. Kod yazmadan önce, kodun nasıl
davranacağını belirleyen bir test yazın.
2. Kodu yazdıktan sonra bu test başarıyla
geçmeli.
3. Refactor edin.
6. Eksileri
• Başlarken TDD’ye vakit ayırmak gerekebilir, yavaş ilerliyormuş
izlenimi verebilir.
• Sade kod yazmaya odaklanmak ilerde sık refactor etmeyi
gerektirebilir.
• Sade test yazmayı öğrenmek zaman alabilir.
• Yazılım gereksinimleri sürekli değişiyorsa testleri tekrar tekrar
uyarlamak zaman alabilir.
• Tüm takımın katılması gerekir, tek başına olmaz.
• Legacy kodlara uygulanması çok zordur.
7. Artıları
• Modüler ve test edilebilir kod yazmanızı sağlar.
• Hataları daha erken tespit etmenizi sağlar ve maliyetleri
azaltır.
• Uzun vadede development süresini ciddi oranda kısaltır.
• Testler “live documentation” olur ve documentation olarak
kullanılabilir.
• Dalgınlık ile yapılmış hataların anında tespit edilmesini sağlar.
• Kod refactor etmeyi gerçek anlamda mümkün kılar.
9. PhpSpec
• Ciaran McNulty, Marcello Duarte ve Konstantin
Kudryashov tarafından yazılmıştır.
• Ciaran McNulty tarafından maintain edilmektedir.
• Version 5 stable
10. Ana özellikleri
• Opinionated bir design aracıdır.
• Ana özelliği test etmek değildir, design etmeye
yardımcı olmaktır.
• Kodun yazılmasına yardımcı olur. Class, function
vb. kendi oluşturabilir, işleri hızlandırır.
11. Nasıl yüklenir?
composer require --dev phpspec/phpspec
Composer nedir?
https://medium.com/kodcular/kısaca-composer-ade8414e7789!
22. Canlı kod
• İki rakamı birbiriyle çarpan bir özellik eklemek istiyoruz.
• Yapmamız gereken şeyler sırasıyla nelerdir?
23. PhpSpec Matchers
• Identity Matcher, === enforce eder.
shouldBe(), shouldReturn(), shouldEqual() & etc.
• Comparison Matcher, == kullanır, strict değildir.
shouldBeLike() & etc.
• Type matcher, dönen değerin tipini kontrol eder.
shouldBeAnInstanceOf(), shouldBeArray() & etc.
• Throw Matcher, exception throwlanmasını tespit edebilir.
shouldThrow() & etc.
Matcher’lar ile neredeyse her şey kontrol edilebilir.
24. Tüm matcherlar
Bütün matcher’lara değinmemiz bu sunum için olanaksız.
Ayrıntılı liste:
http://www.phpspec.net/en/stable/cookbook/matchers.html