Birim (Unit) Testleri
Birim Testi Nedir? 🤔
Birim testi, bir yazılımın en küçük test edilebilir bileşenlerinin (bir fonksiyon, metot veya sınıf gibi) bağımsız olarak test edilmesidir. Amaç, her bir birimin beklendiği gibi çalıştığından emin olmaktır.
Neden Birim Testi Yapmalıyız? 🎯
- Hata Tespiti: Kodun erken aşamalarında hataları bulmanızı sağlar. 🐛
- Kod Güvenilirliği: Kodunuzun doğru çalıştığından emin olursunuz. ✅
- Refactoring Kolaylığı: Kodunuzu değiştirdiğinizde, testler sayesinde değişikliklerin sistemi bozmadığını garanti edersiniz. 🛠️
- Dokümantasyon: Testler, kodun nasıl kullanılması gerektiğine dair bir örnek teşkil eder. 📚
Birim Testi Nasıl Yazılır? ✍️
- Test Ortamını Kurun: Birim testleri için bir framework (JUnit, pytest, NUnit vb.) kullanın. ⚙️
- Test Edilecek Birimi Seçin: Test etmek istediğiniz fonksiyonu veya metodu belirleyin. 🔍
- Test Senaryoları Oluşturun: Farklı girdi değerleri ve beklenen çıktıları içeren test senaryoları tasarlayın. 📝
- Testleri Yazın: Her senaryo için bir test fonksiyonu yazın. Bu fonksiyon, birimi çağırır ve sonucunu beklenen sonuçla karşılaştırır. 🧪
- Testleri Çalıştırın: Testlerinizi çalıştırın ve sonuçları inceleyin. Başarısız olan testleri düzeltin. 🚀
Örnek Birim Testi (Python) 🐍
Aşağıdaki Python kodu, iki sayıyı toplayan basit bir fonksiyonu ve bu fonksiyon için yazılmış bir birim testini göstermektedir:
def topla(a, b):
return a + b
import unittest
class TestTopla(unittest.TestCase):
def test_topla_pozitif(self):
self.assertEqual(topla(2, 3), 5)
def test_topla_negatif(self):
self.assertEqual(topla(-1, 1), 0)
if __name__ == '__main__':
unittest.main()
Matematiksel İfadelerle Birim Testi ➕➖
Örneğin, bir dairenin alanını hesaplayan bir fonksiyonunuz varsa, bu fonksiyonu aşağıdaki gibi test edebilirsiniz:
Alan = $\pi r^2$
def daire_alani(r):
return 3.14159 * r * r
import unittest
class TestDaireAlani(unittest.TestCase):
def test_daire_alani_pozitif(self):
self.assertAlmostEqual(daire_alani(5), 78.53975, places=5)
if __name__ == '__main__':
unittest.main()
En İyi Uygulamalar 🏆
- Testleri Otomatikleştirin: Testlerinizi sürekli entegrasyon (CI) sistemine entegre edin. 🤖
- Testleri Basit Tutun: Her testin tek bir şeyi test ettiğinden emin olun. 🎯
- Testleri Düzenli Olarak Çalıştırın: Kodunuzu her değiştirdiğinizde testleri çalıştırın. 🔄
- Kapsamlı Testler Yazın: Farklı senaryoları ve edge case'leri kapsayan testler yazın. 🧪