Rehber Copilot ile yazılan bir Python fonksiyonuna anlamlı test nasıl eklenir?

Garfield

YZF Admin
Katılım
27 Ekim 2026
Mesajlar
218
Tepkime puanı
0
Yaş
40
Konum
Utah
Copilot’tan test yazmasını isterken yalnız fonksiyonu vermeyin; beklenen davranışı ve önemli sınırları da belirtin. Aksi halde mevcut hatalı sonucu beklenen sonuç kabul eden testler üretebilir. Küçük bir saf fonksiyonda Python’un unittest modülüyle, ek paket kurmadan davranışı görünür hale getirebilirsiniz.

Önce iş kuralını yazın​

Varsayımsal bir kargo hesabında 500 lira ve üzeri sipariş ücretsiz, altındaki sipariş 50 lira olsun. Negatif tutar kabul edilmesin. Burada özellikle 499,99 ile 500 arasındaki sınır önemlidir; yalnız 1000 liralık örnek, yanlış karşılaştırma işaretini yakalamaz.

Testi üretin ve çalıştırın​

  1. Fonksiyonu ayrı dosyada tutun. shipping.py içinde shipping_cost(total) bulunduğunu varsayın. Copilot’a bu fonksiyonun yan etkisiz olduğunu ve yukarıdaki kuralları verin.
  2. Beklentileri açıkça yazın. 0 için 50, 499.99 için 50, 500 için 0 ve negatif değer için ValueError beklediğinizi belirtin. Beklenen değerleri mevcut fonksiyonun döndürdüklerinden türetmemesini isteyin.
  3. Test dosyasını inceleyin. Aşağıdaki örnekte import yolunun gerçek dosyanızla aynı olduğundan emin olun. Kodun yaptığı işi okumadan çalıştırmayın.


    Python:
    import unittest
    from shipping import shipping_cost
    
    class ShippingTests(unittest.TestCase):
        def test_threshold(self):
            for value, expected in [(0, 50), (499.99, 50), (500, 0)]:
                with self.subTest(value=value):
                    self.assertEqual(shipping_cost(value), expected)
    
        def test_negative(self):
            with self.assertRaises(ValueError):
                shipping_cost(-1)
    
    if __name__ == '__main__':
        unittest.main()

  4. Testi proje kökünden çalıştırın. Dosyayı test_shipping.py adıyla kaydedip python -m unittest test_shipping komutunu verin. Sınır örnekleri aynı test yönteminde çalışsa da subTest başarısız girdiyi ayrı gösterir.
  5. Hatanın nedenini değerlendirin. 500 için ücret çıkıyorsa uygulamadaki eşik karşılaştırmasını inceleyin. Beklenen değeri sırf test geçsin diye 50’ye çevirmeyin.

Para hesaplarının gerçek uygulamasında kayan nokta yuvarlaması ayrıca ele alınmalıdır; bu küçük test fiyatlandırma sisteminin tamamını doğrulamaz. Copilot’un katkısını test sayısıyla değil, yanlış bir davranışın bu örnekler tarafından yakalanmasıyla değerlendirin.
 
Son düzenleme:
Örnekte üç eşik girdisi subTest içinde, negatif tutar ise ayrı test yönteminde bulunuyor. Test çalıştırıcısının iki test raporlaması yalnız iki girdinin denendiği anlamına mı gelir? Test sayısını kapsanan durum sayısıyla karıştırmadan, 499.99 ve 500 sınırlarının gerçekten çalıştığını nasıl kontrol etmek gerekir?
 
Test yöntemi sayısıyla içindeki örnek sayısı aynı şey değil. Burada eşik yöntemi üç girdiyle döner; negatif değer için de ayrı bir beklenti vardır. subTest, döngüde hangi girdinin başarısız olduğunu belirtmeye yardımcı olur. Kontrolü yalnız rapordaki toplam sayıyla değil, testin içindeki gerçek örneklerle değerlendirmek gerekir.
 
Beklenen değerlerin seçimi de sayıdan daha önemli. Yüzlerce benzer yüksek tutar, 500 sınırındaki yanlış karşılaştırmayı kaçırabilir. Bu örnekte sınırın hemen altı ve sınırın kendisi farklı davranışları temsil ediyor. Para hesabının yuvarlama kuralı değişirse o davranış için ayrıca uygun beklenti tanımlamak gerekir.
 
Geri
Üst