Test Driven Development

17
Test Driven Development İlkin Ulaş BALKANAY @ilkinulas Etohum Kafe Toplantısı 21/03/2013

Transcript of Test Driven Development

Page 1: Test Driven Development

Test Driven Developmentİlkin Ulaş BALKANAY @ilkinulas

Etohum Kafe Toplantısı21/03/2013

Page 2: Test Driven Development

İçerik

○ TDD nedir? Faydaları nelerdir?

○ Nasıl uygulayabilirim? (Red-Green-Refactor)

○ İyi bir test hangi özelliklere sahip olmalıdır?

○ Hangi durumlarda test yazmasak da olur?

○ Workshop (Batak)

Page 3: Test Driven Development

Test Driven Development

HA sunucularJava ThreadsSyncronizationTPS

Limited memorySpritesBitmapsFPS

Page 4: Test Driven Development

Test Driven Development

Unit

Page 5: Test Driven Development

Neden test yazmalıyım?

● İyi tasarım ve test edilebilir kod arasında bir sinerji vardır.

● Testler, kodun nasıl kullanılması gerektiğini gösteren

örnekler içerir.

● Korkmadan "refactoring" yapabilmemizi sağlar.

● Ne az ne fazla, "ÖZ" kod yazmamızı sağlar.

● Eklediğimiz yeni özelliğin, mevcut özellikleri

bozmadığından emin oluruz.

Page 6: Test Driven Development

Neden test yazmalıyım?

İyi tasarım ve test edilebilir kod arasında bir sinerji vardır.● Çok fazla bağımlılık (loosely-coupled)

● Bir sürü parametresi olan metodlar (Single Responsibility)

● Framework'e çok sıkı bağlılık (Separation of concerns)

● "private" bir metodu test etme ihtiyacı (Single Responsibilty)

Page 7: Test Driven Development

Neden test yazmalıyım?

● İyi tasarım ve test edilebilir kod arasında bir sinerji vardır.

● Testler, kodun nasıl kullanılması gerektiğini gösteren örnekler içerir.

● Korkmadan "refactoring" yapabilmemizi sağlar.

● Ne az ne fazla, "ÖZ" kod yazmamızı sağlar.

● Eklediğimiz yeni özelliğin, mevcut özellikleri

bozmadığından emin oluruz.

Page 8: Test Driven Development

Neden test yazmalıyım?

● İyi tasarım ve test edilebilir kod arasında bir sinerji vardır.

● Testler, kodun nasıl kullanılması gerektiğini gösteren

örnekler içerir.

● Korkmadan "refactoring" yapabilmemizi sağlar.● Ne az ne fazla, "ÖZ" kod yazmamızı sağlar.

● Eklediğimiz yeni özelliğin, mevcut özellikleri

bozmadığından emin oluruz.

Page 9: Test Driven Development

Neden test yazmalıyım?

● İyi tasarım ve test edilebilir kod arasında bir sinerji vardır.

● Testler, kodun nasıl kullanılması gerektiğini gösteren

örnekler içerir.

● Korkmadan "refactoring" yapabilmemizi sağlar.

● Ne az ne fazla, "ÖZ" kod yazmamızı sağlar.● Eklediğimiz yeni özelliğin, mevcut özellikleri

bozmadığından emin oluruz.

Page 10: Test Driven Development

Neden test yazmalıyım?

● İyi tasarım ve test edilebilir kod arasında bir sinerji vardır.

● Testler, kodun nasıl kullanılması gerektiğini gösteren

örnekler içerir.

● Korkmadan "refactoring" yapabilmemizi sağlar.

● Ne az ne fazla, "ÖZ" kod yazmamızı sağlar.

● Eklediğimiz yeni özelliğin, mevcut özellikleri bozmadığından emin oluruz.

Page 11: Test Driven Development

Red-Green-Refactor

Page 12: Test Driven Development

Testlerin özellikleri

● Hızlı

● Otomatik - tek tuş, CI (Continuous Integration)

● Bağımsız

● İzole

● "Production" kodları kadar özenli yazılmalıdır.

● Testler sistemin parçasıdır, production kodları ile

beraber versiyonlanmalıdır.

Page 13: Test Driven Development

Fazla abartmamak lazım

Aşağıdaki durumlarda test yazmaya gerek yok:

● getter & setter metodlar

● User Interface (GUI) kodları

● Kısa (2-3 satır), net metodlar

Page 14: Test Driven Development

Test coverage

by Martin Fowler

Page 15: Test Driven Development

Test coverage

Page 16: Test Driven Development

Workshop

Page 17: Test Driven Development

Teşekkü[email protected]