Merhaba Webkolog dostları, bugün yazılım geliştirme sürecinin en kritik ama bazen en çok ihmal edilen konularından birine değineceğiz: Birim Testleri (Unit Testing). Projelerimiz büyüdükçe, bir yerde yaptığımız değişikliğin başka bir yeri bozup bozmadığını kontrol etmek tam bir kabusa dönüşebilir. İşte tam bu noktada imdadımıza PHPUnit yetişiyor.
Peki, neden bu zahmete giriyoruz? Aslında yanıt çok basit: Özgüven. Kodunuzu canlıya alırken "Acaba bir yeri bozdum mu?" korkusu yaşamamak ve bir ay sonra koda geri döndüğünüzde her şeyin hala tıkır tıkır çalıştığını 1 saniyede anlamak için test yazıyoruz. Ayrıca test edilebilir kod yazmaya çalışmak, sizi ister istemez daha temiz ve düzenli kod yazmaya teşvik eder.
1. Kurulum ve Hazırlık
PHP projelerimizde kütüphane yönetimi için bildiğiniz gibi Composer kullanıyoruz. Bilgisayarınızda Composer'ın yüklü olduğunu varsayarak, proje klasörünüzde terminali açıp şu komutu çalıştırmanız yeterli:
composer require --dev phpunit/phpunit
Buradaki --dev eki çok önemli. Bu kütüphane bize sadece geliştirme aşamasında lazım; canlı sunucumuzda (production) yer kaplamasına gerek yok.
2. Test Edilecek Bir Sınıf Oluşturalım
Test yapabilmek için önce elimizde test edilecek bir "birim" (unit) olmalı. Basit bir hesap makinesi sınıfı üzerinden ilerleyelim. src/Calculator.php dosyamızı oluşturalım:
namespace App;
class Calculator { public function add($a, $b) { return $a + $b; } }
3. İlk Test Dosyamızın Yazımı
Test dosyalarımızı genellikle tests klasörü altında topluyoruz ve isimlerinin mutlaka Test.php ile bitmesi gerekiyor. Şimdi tests/CalculatorTest.php dosyasını oluşturalım:
use PHPUnit\Framework\TestCase; use App\Calculator;
class CalculatorTest extends TestCase { public function testAddFunction() { $calc = new Calculator(); // 1. Hazırlık (Arrange) $result = $calc->add(2, 3); // 2. Çalıştırma (Act)
// 3. Kontrol Etme (Assert)
$this->assertEquals(5, $result);
}
}
Burada ne yaptık? TestCase sınıfını genişleterek PHPUnit'in yeteneklerini devraldık. assertEquals(beklenen, gerçek) metodu ile "Eğer sonuç 5 ise test geçer, değilse kalır" dedik.
4. AAA Kuralı: Test Yazım Standartı
Birim test yazarken zihninizde şu üç aşamayı (AAA) tutmanız işinizi çok kolaylaştırır:
| Aşama | İngilizce | Açıklama |
|---|---|---|
| Hazırla | Arrange | Nesneleri oluştur, verileri hazırla. |
| Eyleme Geç | Act | Test etmek istediğin metodu çağır. |
| Denetle | Assert | Çıkan sonuç beklediğin şey mi? |
5. Testleri Çalıştırma
Terminalinize şu komutu yazarak testlerinizi koşturabilirsiniz:
./vendor/bin/phpunit tests
Eğer her şey doğruysa terminalde yeşil bir bar veya "OK (1 test, 1 assertion)" yazısını göreceksiniz. Eğer 5 yerine yanlışlıkla 6 bekleseydik, PHPUnit size nerenin hatalı olduğunu kırmızı harflerle söyleyecekti.
PHPUnit dünyasına giriş bu kadar basit! İlerleyen yazılarımda projelerimizdeki devre elemanlarını (sınıfları ve metodları) tek tek nasıl test edeceğimizi daha detaylı ele alacağım.
Webkolog'u takipte kalın!
Hepinize hatasız ve başarılı kodlama deneyimleri dilerim!







0 yorum:
Yorum Gönder