Kesintili Testler: Bunların Sebepleri Nedir ve İyi Bir Şekilde Nasıl Düzeltilebilir?
Rastgele başarısız olan bir test, ekibinize başarısızlıkları görmezden gelmeyi öğretir. Bir testin hatalı olduğunu nasıl doğrulayacağınızı, gerçek nedeni bulmayı ve gerçekte neyin işe yaradığını gösteren demolarla sorunu nasıl düzelteceğinizi öğrenin.
- Bir kesintili test aynı kod üzerinde hiçbir değişiklik olmaksızın başarılı olur ve başarısız olur.
- Genel nedenler zamanlama, paylaşılan durum, kararsız veriler, harici hizmetler ve ortam farklılıklarıdır.
- Sabit uykuları belirli bir koşulun beklenmesiyle değiştirin ve her teste kendi verilerini verin.
- Yeniden denemeler gerçek hataları gizleyebilir. Sorunlu bir testi karantinaya alın, son teslim tarihi içinde düzeltin veya silin.
Yapı kırmızıya döner, birisi “yeniden çalıştır”a tıklar, geçer ve herkes yoluna devam eder. Zararsız gibi görünse de kesintili testler yavaş yavaş bir test paketinin sahip olduğu en değerli şeyi yok eder: insanların ona olan güveni. Arızalar genellikle gürültüden ibaret olduğunda, gerçek hatalar da ortadan kalkar.
Bu kılavuz, testlerin neden hatalı hale geldiğini ve her bir nedenin doğru şekilde nasıl düzeltileceğini kapsar. Zamanlamayı ve paylaşılan durum demolarını Python 3.13’te çalıştırdık ve gösterilen sayılar bu çalıştırmalardan geliyor. Bunlar, pullanmanın kolayca görülmesini sağlamak için tasarlanmış küçük gösterimlerdir, dolayısıyla kendi başarısızlık oranlarınız farklı olacaktır.
Kesintili test nedir?
Kesintili test aynı kod üzerinde farklı sonuçlar verir. Üründe hiçbir şey değişmese bile, bir çalıştırmada başarılı oluyor ve sonraki seferde başarısız oluyor. Test hatalı olabilir veya kod gerçekten aralıklı bir hata içeriyor olabilir. Bu ikinci olasılık tam olarak onları göz ardı etmemenizin nedenidir.
Kesintili testler neden bu kadar maliyetli?
- Güven kaybı. İnsanlar kırmızının “muhtemelen belirsiz” anlamına geldiğini varsaydıklarında, gerçek başarısızlıkları araştırmayı bırakırlar.
- Zaman kaybı. Geliştiriciler ardışık düzenleri yeniden çalıştırmak ve yaptıkları değişiklikle hiçbir ilgisi olmayan hataları incelemek için saatler harcıyor.
- Daha yavaş yayın. Birleştirmeler ve sürümler yeniden çalıştırmalarda bekleyerek CI/CD amacını zayıflatır.
- Gizli hatalar. Üründeki yarış koşulları tıpkı test gürültüsü gibi görünebilir ve üretime zarar verenler bunlardır.
Bir bakışta yaygın nedenler
| Sebep | Tipik işaret | Her zamanki düzeltme |
|---|---|---|
| Zamanlama ve eşzamansız | CI meşgul olduğunda daha fazla başarısız oluyor | Bir koşulu bekle |
| Paylaşılan durum | Test sırasına bağlı olarak başarısız olur | Verileri izole edin, durumu sıfırlayın |
| Tarihler ve rastgelelik | Belirli zamanlarda veya günlerde başarısız oluyor | Saati ve tohumu kontrol edin |
| Kırılgan seçiciler | Kullanıcı arayüzü değişikliklerinden sonra başarısız oluyor | Sabit konum belirleyicileri kullanın |
| Dış hizmetler | Bir bağımlılık yavaş olduğunda başarısız olur | Onlarla alay et ya da onları sapla |
| Çevre farklılıkları | Yerel olarak geçer, CI’da başarısız olur | Kaplarla hizalayın |
| Kaynak sınırları | Paralel çalıştırmalarda başarısız oluyor | İşçileri ayarlayın, çekişmeyi düzeltin |
Neden 1: Zamanlama ve sabit uykular
Bu en yaygın nedendir. Test, arka plan çalışmasının sabit bir gecikmeden sonra tamamlanacağını varsayar. Etkiyi görmek için, çalışmanın 2 ms’ye kadar sürdüğü ve testin kontrol etmeden önce yalnızca 1 ms beklediği küçük bir test yazdık:
def flaky_timing():
result = {}
def work():
time.sleep(random.uniform(0, 0.002))
result["done"] = True
threading.Thread(target=work).start()
time.sleep(0.001) # hope it has finished
assert result.get("done")
Çözüm, cömert bir üst limitle gerçek durumu beklemektir:
def fixed_timing():
result = threading.Event()
def work():
time.sleep(random.uniform(0, 0.002))
result.set()
threading.Thread(target=work).start()
assert result.wait(timeout=1) # continues as soon as it is ready
Her sürümü 200 kez çalıştırdık:
| Sürüm | 200 üzerinden başarısızlıklar |
|---|---|
| Sabit uyku | 102 |
| Bir koşulu bekle | 0 |
Sonuç, güvenilirlikten daha fazlasıdır. Sabit versiyon iş yapıldığı anda hareket eder, dolayısıyla genellikle daha hızlıdır. Daha uzun bir uyku, ilk sürümün daha az sıklıkta başarısız olmasına neden olur, ancak bu durumda her çalıştırma daha yavaş olur ve yoğun bir CI makinesinde yine de başarısız olabilir.
Tarayıcı testlerinde de aynı prensip geçerlidir. time.sleep yerine Oyun Yazarı‘nın otomatik beklemesini veya açık Selenium beklemelerini kullanın:
# Playwright: retries until true or a timeout is reached
expect(page.get_by_text("Order placed")).to_be_visible()
# Selenium: an explicit wait for a condition
WebDriverWait(driver, 10).until(
EC.visibility_of_element_located((By.ID, "confirmation"))
)
Neden 2: Paylaşılan durum ve test sırası
Testler verileri paylaştığında, biri diğerini etkileyebilir ve sonuç, çalıştırılma sırasına bağlıdır. Bu iki test, tek bir paylaşılan liste kullanır:
store = []
def test_add():
store.append("x")
assert len(store) == 1
def test_empty():
assert store == []
| Sipariş | test_add | test_empty |
|---|---|---|
| boş, sonra ekle | Geçmek | Geçmek |
| ekle, sonra boşalt | Geçmek | Başarısız |
Çalışmamız bunu doğruladı ve bu nedenle bir paket aylarca geçebilir ve birisi paralel çalışmalar veya rastgele bir sipariş eklentisi eklediğinde bozulabilir. Tedavi izolasyondur:
- Her teste, onu ayarlayan ve temizleyen bir donanım kullanarak yeni veriler verin. pytest eğiticimiz bunun nasıl yapılacağını gösterir.
- Paylaşılan bir “test kullanıcısı” yerine rastgele bir sonek içeren bir e-posta gibi benzersiz kayıtlar oluşturun.
- Veritabanı testlerini bir işlem içine sarın ve kurulumunuzun izin verdiği ölçüde geri alın.
- Bu sorunların erken ortaya çıkması için testleri düzenli olarak rastgele sırayla çalıştırın.
Neden 3: Tarihler, saat dilimleri ve rastgelelik
Tüm haftayı geçen bir sınav cumartesi günü, gece yarısı ya da ayın son günü başarısız olabilir. Mantığınızın içindeki saati okumak yerine zamanı bir girdi haline getirin:
def is_weekend(today=None):
today = today or datetime.date.today()
return today.weekday() >= 5
is_weekend(datetime.date(2026, 11, 7)) # True (a Saturday)
is_weekend(datetime.date(2026, 11, 9)) # False (a Monday)
Bu testler her gün aynı cevabı veriyor. Benzer şekilde, testlerdeki rastgele değerler için sabit bir tohum belirleyin ve rastgele verileri kullandığınızda bunu günlüğe kaydedin, böylece bir başarısızlığı yeniden oluşturabilirsiniz. Setlerden, dış kaynaklardan alınan sözlüklerden veya ORDER BY numarası olmayan veritabanı sorgularından belirli bir sıra almayın.
Neden 4: Kırılgan seçiciler
div:nth-child(3) > span içeren bir düğme bulan bir test, herhangi bir düzen ayarında kesintiye neden olur ve yalnızca bazı ekran boyutları veya çeşitleri için başarısız olabilir. Kullanıcıların gördüklerine veya özel test özelliklerine göre konum belirleyicileri tercih edin. Oyun yazarı bulucularına ilişkin kılavuzumuz, bunları deneme sırasını açıklamaktadır. Animasyonlar da sık karşılaşılan başka bir sorun kaynağıdır, bu nedenle bunları test ortamlarında devre dışı bırakmayı düşünün.
Neden 5: Dış hizmetler ve ağlar
Bir test gerçek bir ödeme sağlayıcısını veya üçüncü taraf bir API’yi çağırırsa, sonucu başka birinin çalışma süresine ve oran sınırlarına bağlıdır. Çoğu test için bu çağrılarla dalga geçin ve gerçek hizmete karşı az sayıda ayrı sözleşme kontrolü bulundurun, böylece değişip değişmediğini öğrenmeye devam edin. Birim ve entegrasyon testlerine ilişkin kılavuzumuzda bunların nasıl bölüneceği açıklanmaktadır.
İpucu: “Yerel olarak geçer, CI’da başarısız olur” genellikle hız, saat dilimi, kaynaklar veya sürümlerde farklılık olduğu anlamına gelir. Testlerin aynı kapsayıcı görüntüsünde yerel olarak ve CI’da çalıştırılması bunların çoğunu ortadan kaldırır. Docker Compose eğiticimiz yardımcı olabilir.
Kesintili bir test nasıl teşhis edilir
- Onaylayın. Testi değişiklik yapmadan birçok kez çalıştırın. Pytest ile basit bir kabuk döngüsü çalışır ve
pytest-repeatgibi bir eklenti size--count=100verir. - Kanıtları kaydedin. Her arıza için günlükleri, ekran görüntülerini ve izleri kaydedin. Oyun yazarının iz görüntüleyicisi burada özellikle kullanışlıdır.
- Koşulları vurgulayın. Sınırlı CPU ile paralel veya rastgele sırada çalıştırın. Daha sık başarısız olmak, çalışmayı kolaylaştırır.
- Tek başına test edin. Her zaman tek başına geçiyor ancak pakette başarısız oluyorsa, paylaşılan durumdan şüphelenin.
- Örüntüleri arayın. Hangi makinelerin, günün saatlerinin ve komşu testlerin dahil olduğunu kontrol edin.
- Ürünü kontrol edin. Uygulamanızda bunun gerçek bir yarış koşulu olup olamayacağını dürüstçe sorun.
Otomatik yeniden denemeler bir çözüm müdür?
Yeniden denemeler kısa vadeli yararlı bir güvenlik ağıdır ve çare değildir. CI’daki tek bir otomatik yeniden deneme, siz araştırma yaparken işinizin devam etmesini sağlayabilir ancak geçmesi için yeniden denemeyi gerektiren bir test size hâlâ bir şeyler söylüyordur. Daha da kötüsü, zamanın %20’sinde başarısız olan gerçek bir aralıklı ürün hatası, genellikle yeniden denemeden fark edilmeden geçecektir.
Bu kurallarla yeniden denemeleri kullanın: bunları bir veya iki ile sınırlayın, gereken her testi kaydedin ve bu listeyi yapılacaklar listeniz olarak değerlendirin. “Yeniden denemede başarılı” olarak bildirilen bir test, bir başarı olarak değil, araştırılması gereken bir sorun olarak sayılmalıdır.
Kesintili testler için bir ekip süreci
- Ölçün. Hangi testlerin başarısız olduğunu takip edin ve ardından aynı işlemi iletin. Birçok CI aracı ve test raportörü bunu gösterebilir.
- Karantina. Onaylanmış bir hatalı testi, herkesin dikkatini dağıtmaması için engelleme çalışmasının dışına çıkarın, ancak çalıştırmaya ve izlemeye devam edin.
- Bir sahip ve son tarih atayın. Son tarihi olmayan bir karantina, mezarlığa dönüşür.
- Düzeltin veya silin. Bir test düzeltilmeye değer değilse kaldırın ve kapsamının başka bir yerde hala mevcut olup olmadığını kontrol edin.
- Önleyin. Birleştirmeden önce yeni testleri birkaç kez çalıştırın. Elli denemede bir kez başarısız olan bir testi şimdi altı ay sonra yakalamaktan daha iyi yakalayabilirsiniz.
Kesintili bir testi arka plan gürültüsü olarak değil, öncelikli bir hata olarak değerlendirin. Önem derecesi ve öncelik bölümünde ele alındığı üzere önem derecesi ve öncelik burada da geçerlidir. Kesintiler yaygınsa, daha kapsamlı test otomasyonu hataları hakkında bilgi edinin ve tarayıcı düzeyinde çok fazla testinizin olup olmadığını değerlendirin.
Son sözler
Kesintili testler rastgele gibi görünür, ancak nadiren öyledir. Neredeyse herkes zaman, düzen, veri veya çevre hakkında her zaman doğru olmayan bir varsayıma varır. Bu hafta boru hattınızda en sık başarısız olan testi seçin. Elli kez çalıştırın, varsayımı bulun ve bunu tamamen düzeltin. Gerçek bir düzeltme, bir takıma yüzlerce tekrardan daha fazlasını öğretir.
Sık sorulan sorular
Kesintili test nedir?
Kesintili bir test, kodda herhangi bir değişiklik olmaksızın bazı çalıştırmalardan geçer ve diğerlerinde başarısız olur. Sebep testte, ortamda veya üründe olabilir.
Kesintili testlere ne sebep olur?
En yaygın nedenler zamanlama varsayımları, testler arasında paylaşılan durum, kararsız seçiciler, harici hizmetler, tarih işleme ve CI ile yerel makineler arasındaki farklardır.
Kesintili testleri silmeli miyim?
Öncelikle bunları düzeltmeye çalışın. Bir testin değeri düşükse ve düzeltilmesi maliyetliyse, silinmesi sorun yaratmaz ancak önemli kapsamının başka bir yerde bulunduğundan emin olun.
Başarısız testleri otomatik olarak yeniden denemeli miyim?
Sınırlı bir güvenlik ağı olarak evet, ancak her yeniden denemeyi kaydedin ve araştırın. Yeniden denemeler tek başına sorunları gizler ve gerçek aralıklı hataların üretime ulaşmasına neden olabilir.
Kesintili testleri nasıl bulabilirim?
CI geçmişinizi veya bir raporlama aracını kullanarak başarısız olan ve aynı işlemi gerçekleştiren testleri arayın. Ayrıca şüpheli testleri bir döngü içinde birçok kez çalıştırabilirsiniz.
Öğrenmeye devam et
Test, WordPress veya SEO konusunda yardıma mı ihtiyacınız var?
Ekiplerin daha iyi yazılımlar sunmasına ve sitelerini büyütmesine yardımcı oluyoruz. Bize ne üzerinde çalıştığınızı söyleyin, biz de bir sonraki adım için net bir öneride bulunalım.
Daha fazla kılavuz test, yapay zeka ve modern geliştirme
Bu makaleyi beğendiniz mi? Bir konu seçin ve doğrudan en yeni eğitimlerimize geçin.
Yapay Zeka Halüsinasyonları Açıklandı: Dil Modelleri Neden İşleri Düzeltiyor ve Nasıl Azaltılabilir?
Yapay zeka halüsinasyonları açıkladı: ne olduklarını, dil modellerinin bunları neden ürettiğini, yaygın türlerini, temellendirme ve yönlendirmelerle…
Makaleyi okuyun →DevOpsAçıklanan Ortam Değişkenleri: .env Dosyaları, Sırlar ve Yapılandırma Doğru Yapıldı
Çalıştırdığımız Python örnekleriyle açıklanan ortam değişkenleri: bunları okumak ve ayarlamak, neden her değerin bir dize olduğu, .env dosyaları, sü…
Makaleyi okuyun →Yazılım geliştirmeAPI Hız Sınırlamasının Açıklaması: Algoritmalar, Başlıklar ve 429 Hatalarının Ele Alınması
API hızı sınırlaması, çalıştırdığımız bir simülasyonla açıklanmıştır: belirteç kümesi, sabit pencere, kayan pencere, 429 yanıt, hız sınırı başlıklar…
Makaleyi okuyun →Test otomasyonuPython'da alay etme: Unittest.mock, patch ve Testleri Yalan Yapan Hatalar
Unittest.mock ile Python'da alay etme, test edildi: Sahte ve dönüş_değeri, yan_etki, bir adın kullanıldığı yerde yama uygulama, spesifikasyon ve oto…
Makaleyi okuyun →Yazılım testiKod Kapsamının Açıklaması: Hat ve Şube Kapsamı ve %100'ün Gerçek Anlamı
Kod kapsamı gerçek bir kapsama.py çalışmasıyla açıklanmıştır: hat, şube ve durum kapsamı, bir raporun okunması, %100 kapsamın neden hâlâ hataları ka…
Makaleyi okuyun →Veritabanları ve SQLSQL'de DELETE vs TRUNCATE vs DROP: Farklılıklar, Geri Alma ve Her Biri Ne Zaman Kullanılmalı
DELETE vs TRUNCATE vs DROP test edilmiş SQL ile açıklandı: her birinin neyi kaldırdığı, geri aldığı, tetiklediği, kimlik sıfırlaması, hızı ve Postgr…
Makaleyi okuyun →Veritabanları ve SQLAçıklanan SQL Görünümleri: Örneklerle Tuzakları Oluşturun, Kullanın ve Önleyin
Çalıştırdığımız sorgularla açıklanan SQL görünümleri: görünüm oluşturma, canlı sonuçlar, sütunları gizleme, performans, güncellenebilir ve gerçekleş…
Makaleyi okuyun →Yazılım geliştirmeTypeScript Arayüzü ve Tür: Gerçek Farklılıklar, Derleyiciyle Test Edildi
TypeScript arayüzü ve türü, gerçek derleyiciyle kontrol edildi: her ikisinin de yapabileceği, yalnızca birinin yapabileceği, bildirim birleştirme, g…
Makaleyi okuyun →Yazılım geliştirmePython *args ve **kwargs'ın Açıklaması: Açık Örneklerle Esnek Fonksiyonlar
Python *args ve **kwargs çalıştırdığımız kodla açıklanmıştır: paketleme ve paketten çıkarma, parametre sırası, yalnızca anahtar kelime ve yalnızca k…
Makaleyi okuyun →Yazılım geliştirmePython Lambda İşlevleri: Söz Dizimi, Gerçek Kullanımlar ve Ne Zaman Kullanılmaması Gerektiği
Çalıştırdığımız kodla açıklanan Python lambda işlevleri: sözdizimi, anahtarla sıralama, harita ve filtre, kapatmalar, geç bağlama tuzağı ve normal b…
Makaleyi okuyun →Yapay zekâYapay Zeka Ajanları Nelerdir? Çalıştırabileceğiniz Basit Bir Aracı Döngüsüyle Nasıl Çalışırlar?
Yapay zeka ajanları nedir? Aracı döngüsüne, araçlara, belleğe ve korkuluklara ilişkin basit bir kılavuz, çalıştırdığımız küçük bir Python döngüsü, g…
Makaleyi okuyun →DevOpsİzleme ve Gözlemlenebilirlik: Günlükler, Metrikler ve İzlerle Gerçek Fark
İzleme ve gözlemlenebilirliğin açıklanması: bilinen ve bilinmeyen arızalar, günlükler, ölçümler ve izler, ödeme olayının gözden geçirilmesi, altın s…
Makaleyi okuyun →DevOpsDocker Birimleri ve Bağlama Bağlantıları: Konteyner Verilerini Doğru Şekilde Kalıcılaştırın
Docker birimleri ile bağlama bağlamaları arasındaki karşılaştırma açıklandı: kapsayıcı verilerinin neden kaybolduğu, adlandırılmış birimler, bağlama…
Makaleyi okuyun →Test otomasyonuTDD ve BDD: Temel Farklılıklar, Her İki Şekilde Geliştirilmiş Bir Özellik ve Her Birinin Ne Zaman Kullanılacağı
TDD ve BDD, her iki yönde de oluşturulmuş bir indirim özelliğiyle açıklandı: çalıştırdığımız kodla kırmızı-yeşil-refactor, Verilen-Ne Zaman-O Zaman …
Makaleyi okuyun →Yazılım testiKullanıcı Kabul Testi (UAT): Süreç, Kontrol Listesi ve Gerçek Örnekler
Kullanıcı kabul testi açıklandı: bunu kimin yürüttüğü, QA'dan farkı, yedi adımlı bir süreç, bir UAT test senaryosu şablonu, bir kontrol listesi, otu…
Makaleyi okuyun →Veritabanları ve SQLAçıklanan SQL NULL Değerleri: IS NULL, COALESCE, NULLIF ve Kaçınılması Gereken Tuzaklar
SQL NULL değerleri, çalıştırdığımız sorgularla açıklandı: üç değerli mantık, IS NULL, COALESCE, NULLIF, toplamaların, birleştirmelerin ve sıralamanı…
Makaleyi okuyun →Veritabanları ve SQLSQL CASE WHEN İfadesi: Sözdizimi, Gerçek Örnekler ve Yaygın Hatalar
SQL CASE WHEN çalıştırdığımız sorgularla açıkladı: basit ve aranmış formlar, koşul sırası, SUM'lu pivotlar, COUNT hileleri, özel sıralama, güncellem…
Makaleyi okuyun →Yazılım geliştirmeJWT Nedir? JSON Web Belirteçleri Bir Çalışma Örneğiyle Açıklanıyor
JWT nedir? JSON Web Tokens açıkladı: üç bölüm, çalıştırdığımız kodda oluşturulan ve üzerinde değişiklik yapılan bir token, JWT ile oturumlar, depola…
Makaleyi okuyun →Yazılım geliştirmeJavaScript Olay Döngüsü Açıklaması: Örneklerle Çağrı Yığını, Mikro Görevler ve Zamanlayıcılar
JavaScript olay döngüsü çalıştırdığımız kodla açıklandı: çağrı yığını, görev ve mikro görev kuyrukları, setTimeout 0'ın neden anında olmadığı, engel…
Makaleyi okuyun →Yazılım geliştirmePython Jeneratörleri ve Verim Açıklaması: Gerçek Örneklerle Bellekten Tasarruf Edin
Python üreteçleri ve verim, çalıştırdığımız kodla açıklandı: nasıl duraklatılır ve devam ettirilir, ölçülen bellek tasarrufları, işlem hatları, sons…
Makaleyi okuyun →Yapay zekâGömmeler Nelerdir? Vektörler ve Kosinüs Benzerliği Basitçe Açıklandı
Gömmeler nedir? Vektörler, kosinüs benzerliği ve anlamsal aramaya ilişkin sade dilli bir kılavuz; çalıştırdığımız küçük bir örnek, yaygın kullanımla…
Makaleyi okuyun →DevOpsMavi-Yeşil ve Kanarya Konuşlandırılması: Farklılıklar, Takaslar ve Nasıl Seçilir
Mavi-yeşil ve kanarya konuşlandırması açıklandı: her birinin nasıl çalıştığı, maliyet, risk ve geri alma, test ettiğimiz istikrarlı kullanıcı grubu,…
Makaleyi okuyun →Test otomasyonuKesintili Testler: Bunların Sebepleri ve Nasıl Düzeltileceği
Yaptığımız demolarla açıklanan hatalı testler: ana nedenler, birinin nasıl doğrulanacağı ve teşhis edileceği, zamanlama için uygun düzeltmeler, payl…
Makaleyi okuyun →Yazılım testiYük Testi ve Stres Testi: Farklılıklar, Metrikler ve k6 Örnekleri
Yük testi ve stres testinin açıklaması: her birinin neyi kanıtladığı, ani yükselme ve soğuma testleri, önemli ölçümler, ortalamaların neden yanıltıc…
Makaleyi okuyun →Yazılım testiTest Senaryosu ve Test Senaryosu: Temel Farklılıklar, Örnekler ve Her Biri Ne Zaman Kullanılmalı?
Test senaryosu ve test senaryosunun açıklaması: net tanımlar, yan yana tablo, senaryolardan vakalara, şablonlara ve her birinin ne zaman kullanılaca…
Makaleyi okuyun →Veritabanları ve SQLSQL Sorgu Optimizasyonu: Zamanlamalarla Yürütme Planlarını Okuyun ve Yavaş Sorguları Düzeltin
SQL sorgu optimizasyonu bir milyon satırda test edilmiştir: yürütme planlarını okuyun, doğru dizinleri ekleyin, değiştirilemeyen filtreleri düzeltin…
Makaleyi okuyun →Veritabanları ve SQLSQL UNION ve UNION ALL: Farklılıklar, Örnekler ve Test Edilmiş Performans
SQL UNION ve UNION ALL, yürüttüğümüz sorgularla açıklandı: kopyalar, her ikisinin de takip ettiği kurallar, gerçek bir veri hatası, ölçülen performa…
Makaleyi okuyun →Yazılım geliştirmeJavaScript Fetch API Eğitimi: GET, POST, Hata İşleme ve Zaman Aşımları
Yerel bir sunucuya karşı test edilen bir JavaScript Fetch API öğreticisi: GET ve POST, 404'ün neden atmadığı, yeniden kullanılabilir bir yardımcı, s…
Makaleyi okuyun →Yazılım geliştirmePython Dosya İşleme: Örneklerle Okuma, Yazma, CSV, JSON ve pathlib
Python dosya işleme, çalıştırdığımız kodla açıklanmıştır: açık modlar, büyük dosyaları okuma, CSV, JSON, pathlib, ikili dosyalar, güvenli yazma, hat…
Makaleyi okuyun →Yazılım geliştirmePython Sınıfları ve Nesneleri: Gerçek Örneklerle OOP Eğitimi
Çalıştırdığımız kodla açıklanan Python sınıfları ve nesneleri: __init__, yöntemler, sınıf ve örnek nitelikleri, kalıtım, özellikler, dunder yöntemle…
Makaleyi okuyun →Yapay zekâBüyük Dil Modeli Nedir? Yüksek Lisans'ların Nasıl Çalıştığı, Abartmadan Açıklanıyor
Büyük dil modeli nedir? LLM'ler sade bir dille açıklandı: belirteçler, yerleştirmeler, dikkat, eğitim, sıcaklık ve bağlam pencereleri, küçük bir son…
Makaleyi okuyun →DevOpsYeni Başlayanlar İçin Linux Komutları: Örneklerle Temel Terminal Kılavuzu
Yeni başlayanlar için göreve göre gruplandırılmış Linux komutları: pratik bir günlük analizi örneğiyle gezinme, dosyalar, günlükleri görüntüleme, gr…
Makaleyi okuyun →Test otomasyonuSelenyum ve Oyun Yazarı: Temel Farklılıklar, Karşılaştırılan Kod ve Hangisinin Seçileceği
Selenium ve Playwright karşılaştırması: mimari, bekleme, tarayıcı ve dil desteği, hata ayıklama, her iki araçta da aynı test, geçiş tavsiyesi ve nas…
Makaleyi okuyun →Yazılım testiEşdeğerlik Bölümleme: Test Tasarımı Tekniğinin Çalışılmış Örneklerle Açıklanması
Eşdeğerlik bölümlemenin açıklaması: geçerli ve geçersiz bölümlerin nasıl bulunacağı, yaşlara yönelik çalışılmış örnekler, şifreler ve kuponlar, yürü…
Makaleyi okuyun →Yazılım testiYazılım Testinde Şiddet ve Öncelik: Farklılıklar, Matris ve Gerçek Örnekler
Yazılım testinde önem ve önceliğin açıklanması: net tanımlar, örnekler içeren dört yönlü bir matris, seviye ölçekleri, her birini kimin belirlediği …
Makaleyi okuyun →Veritabanları ve SQLSQL Alt Sorguları Eğitimi: Türler, İlişkili Alt Sorgular ve Örneklerle EXISTS
Çalıştırdığımız sorguları içeren bir SQL alt sorgu eğitimi: skaler, IN, FROM ve SELECT alt sorguları, ilişkili alt sorgular, EXISTS, NOT IN NULL tuz…
Makaleyi okuyun →Veritabanları ve SQLSQL İşlemleri ve ACID Açıklaması: COMMIT, ROLLBACK ve İzolasyon Seviyeleri
SQL işlemleri ve ACID, yürüttüğümüz bir banka transferiyle açıklandı: COMMIT, ROLLBACK, kayıt noktaları, kilitler, izolasyon seviyeleri, kirli okuma…
Makaleyi okuyun →Yazılım geliştirmeGit merge vs rebase: farklar, örnekler ve hangisi ne zaman kullanılır
Git merge vs rebase; gerçek log çıktısı, karşılaştırma tablosu, rebase'in altın kuralı ve güvenli bir ekip iş akışıyla anlatılıyor.
Makaleyi okuyun →Yazılım geliştirmePython Liste Üreteci (List Comprehension): Sözdizimi, Örnekler ve Kaçınılacak Durumlar
Python list comprehension anlatımı: sözdizimi, filtreleme, if-else, iç içe döngüler, ölçülmüş süreler ve düz for döngüsünün daha iyi olduğu durumlar.
Makaleyi okuyun →Veritabanları ve SQLSQL JOIN Örneklerle Açıklama (Inner, Left, Right, Full)
SQL JOIN'leri örnek tablolar ve sorgularla adım adım öğrenin: INNER, LEFT, RIGHT, FULL, CROSS ve SELF; yaygın hatalar ve performans ipuçları.
Makaleyi okuyun →