Ana içeriğe geç

Kitap 10 · Özet sayfa

Test ve Kalite

Ekiplerin kodun çalıştığını ve çalışmaya devam ettiğini nasıl kontrol ettiği: test türleri, test dublörleri ve hataları erkenden yakalayan araçlar.

01A/B Testi
A/B testi, bir özelliğin iki sürümünü gerçek kullanıcıların rastgele gruplarına gösterip seçilen metrikte hangisinin daha iyi sonuç verdiğini ölçen deneydir.
  • A/B testi, gerçek kullanıcılarla bir kontrolü (A) ve bir varyantı (B) karşılaştırır.
  • Kullanıcılar rastgele ve tutarlı biçimde tek bir sürüme atanır.
  • Metriği ve örneklem büyüklüğünü deney başlamadan önce seçin.
02AssertionDoğrulama ifadesi
Assertion, kodun o noktasında bir koşulun doğru olması gerektiğini bildiren ve koşul yanlışsa testi ya da programı bir hatayla durduran ifadedir.
  • Assertion, doğru olması gereken bir koşulu belirtir ve değilse yüksek sesle başarısız olur.
  • Testlerde assertion'lar gerçek sonuçları beklenen sonuçlarla karşılaştırır.
  • Üretim kodunda assertion'lar invariant'ları belgeler ve hataları erken yakalar.
03Beyaz Kutu Testi
Beyaz kutu testi, testleri kodun iç yapısına dair bilgiyle tasarlar; böylece kodun ifadeleri, dalları ve yolları doğrudan çalıştırılıp kontrol edilir.
  • Beyaz kutu testi, testleri tasarlamak için kod bilgisini kullanır.
  • Amaç ifadeleri, dalları ve yolları çalıştırmaktır.
  • Kapsama araçları ve mutasyon testi ne kadar kapsamlı olduğunu ölçer.
04Birim Testi
Birim testi, bir fonksiyonun, metodun ya da sınıfın programın geri kalanından yalıtılmış olarak doğru davrandığını doğrulayan küçük ve otomatik bir kontroldür.
  • Birim testi, tek bir fonksiyon gibi küçük bir kod parçasını yalıtılmış olarak kontrol eder.
  • Birim testlerinin çoğu Arrange, Act, Assert desenini izler.
  • Birim testleri gerçek veritabanı, ağ ve dosya sisteminden kaçındığı için hızlıdır.
05Cypress
Cypress, web uygulamalarının uçtan uca ve bileşen testlerini tarayıcıda yürüten, otomatik bekleme ve etkileşimli çalıştırıcı sunan JavaScript framework'üdür.
  • Cypress, uçtan uca ve bileşen testleri için bir JavaScript framework'üdür.
  • Testleri uygulamanın yanında, tarayıcının içinde çalıştırır.
  • Komutlar otomatik olarak yeniden denenir; bu yüzden elle bekleme nadiren gerekir.
06Davranış Odaklı Geliştirme
Davranış odaklı geliştirme, geliştiricilerin, test uzmanlarının ve iş tarafının otomatik testlere dönüşen sade dilli örneklerde anlaştığı bir pratiktir.
  • BDD, özellikleri ekipteki herkesin okuyabileceği somut örnekler olarak tanımlar.
  • Senaryolar, çoğunlukla Gherkin ile yazılan Given-When-Then desenini izler.
  • Adım tanımları senaryoları otomatik kabul testlerine dönüştürür.
07Entegrasyon Testi
Entegrasyon testi, kod, veritabanı ve API gibi bir sistemin birkaç parçasının birlikte doğru çalışıp çalışmadığını kontrol eden otomatik bir testtir.
  • Entegrasyon testleri, birden fazla gerçek bileşenin birlikte çalıştığını kontrol eder.
  • Veritabanı sorguları, API sözleşmeleri ve yapılandırma gibi sınırlardaki hataları yakalarlar.
  • Gerçek bağımlılıklar kullandıkları için birim testlerinden yavaştırlar.
08Flaky TestKararsız test
Flaky test, koda hiçbir değişiklik yapılmadan bazen geçen bazen başarısız olan ve sonuçlarına güvenmeyi zorlaştıran otomatik bir testtir.
  • Flaky test, kod değişmeden rastgele geçer ve başarısız olur.
  • Yaygın nedenler zamanlama sorunları, paylaşılan durum, test sırası, ağ çağrıları ve tarihlerdir.
  • Flaky testler tüm test takımına olan güveni aşındırır.
09Fuzz Testi
Fuzz testi, çökmeleri, takılmaları ve güvenlik açıklarını bulmak için bir programa çok sayıda beklenmedik ya da bozuk girdi veren otomatik bir tekniktir.
  • Fuzzing, bir programa çok miktarda beklenmedik ya da bozuk girdi verir.
  • Çökmeleri, takılmaları, bellek hatalarını ve güvenlik açıklarını arar.
  • Coverage-guided fuzzer'lar yeni kod yollarına ulaşan girdileri evrimleştirir.
10Jest
Jest; test çalıştırıcıyı, doğrulamaları, mock'lamayı, snapshot'ları ve kod kapsamını az kurulumla tek pakette sunan popüler JavaScript test framework'üdür.
  • Jest, hepsi bir arada bir JavaScript test framework'üdür.
  • Bir test çalıştırıcı, doğrulamalar, mock'lama, snapshot'lar ve kapsam içerir.
  • Testler describe, test ve toEqual gibi eşleştiricilerle expect kullanır.
11Kabul Testi
Kabul testi, yazılımın kullanıcılarla ya da müşterilerle anlaşılan gereksinimleri karşılayıp karşılamadığını kontrol eder; ekip sürüm kararını buna göre verir.
  • Kabul testi, yazılımı üzerinde anlaşılan kullanıcı veya iş gereksinimlerine göre kontrol eder.
  • Otomatik kabul testleri genellikle bir testi bir kabul kriterine eşler.
  • Kullanıcı kabul testi (UAT), onaydan önce gerçek kullanıcılar veya müşteriler tarafından yapılır.
12Kalite GüvencesiQA
Kalite güvencesi (QA), yazılımın gereksinimlerini karşılayıp güvenilir çalışmasını sağlayan uygulamalardır; hataları yalnızca bulmayı değil, önlemeyi amaçlar.
  • QA, yazılımın gereksinimlerini karşılamaya devam etmesini sağlayan uygulamalar bütünüdür.
  • Hataları yalnızca bulmayı değil, önlemeyi amaçlar.
  • Kalite kontrol ürünü kontrol eder; kalite güvencesi süreci iyileştirir.
13Kara Kutu Testi
Kara kutu testi, yazılımı içindeki koda bakmadan ya da ona dayanmadan, yalnızca girdileri ve çıktıları üzerinden, yapması gereken şeye göre kontrol eder.
  • Kara kutu testi girdileri ve çıktıları gereksinimlere göre kontrol eder.
  • Test uzmanlarının kodu bilmesi ya da okuması gerekmez.
  • Denklik bölümleme ve sınır değer analizi onu yapılandırır.
14Keşif Testi
Keşif testi, test uzmanının yazılım hakkında öğrenip testleri tasarlayarak aynı anda çalıştırdığı ve bulduklarının yönlendirdiği, uygulamalı bir yaklaşımdır.
  • Test uzmanı, öğrendikçe uyum sağlayarak testleri aynı anda tasarlar ve çalıştırır.
  • Oturumlar zamanla sınırlıdır ve yazılı bir charter ile yönlendirilir.
  • Hatalar, sorular ve riskler hakkındaki notlar kısa bir değerlendirmede paylaşılır.
15Linting
Linting, kaynak kodu çalıştırmadan otomatik olarak analiz edip olası hataları, stil sorunlarını ve şüpheli kalıpları kod yayına çıkmadan işaretleme işlemidir.
  • Linter, kodu çalıştırmadan analiz eder.
  • Olası hataları, riskli kalıpları ve stil tutarsızlıklarını işaretler.
  • Kurallar yapılandırılabilir ve pek çok sorun otomatik olarak düzeltilebilir.
16Mocking
Mocking, kodu yalıtılmış biçimde test etmek için veritabanı ya da API gibi gerçek bir bağımlılığı kontrol ettiğiniz bir sahteyle değiştiren test tekniğidir.
  • Mock, gerçek bir bağımlılığı kontrol edilebilir bir sahteyle değiştirir.
  • Mock'lar testleri hızlı, tekrarlanabilir ve yan etkisiz kılar.
  • Mock'lar yalnızca veri döndürmekle kalmaz, nasıl çağrıldıklarını da doğrulayabilir.
17Mutasyon Testi
Mutasyon testi, koda küçük kasıtlı hatalar ekleyip testlerin her birini yakalayarak başarısız olup olmadığına bakarak bir test takımının kalitesini ölçer.
  • Mutasyon testi, testleri test etmek için mutant adı verilen küçük hatalar ekler.
  • Bir test başarısız olursa mutant öldürülür, tüm testler geçerse hayatta kalır.
  • Mutasyon skoru, takımın öldürdüğü mutantların yüzdesidir.
18Özellik Tabanlı Test
Özellik tabanlı test, elle yazılmış birkaç örnek yerine otomatik üretilen çok sayıda girdi için bir kuralın geçerli olduğunu kontrol eder.
  • Tek bir beklenen çıktıyı değil, tüm geçerli girdiler için geçerli olması gereken bir kuralı belirtirsiniz.
  • Çerçeve, zor uç durumlar dahil çok sayıda girdi üretir.
  • Başarısız girdiler, hâlâ başarısız olan en küçük örneğe kadar küçültülür.
19Performans Testi
Performans testi, bir sistemin beklenen ve aşırı yük altındaki hızını, kararlılığını ve ölçeklenebilirliğini yanıt sürelerinden kırılma noktasına kadar ölçer.
  • Performans testi yük altında hızı, kararlılığı ve ölçeklenebilirliği ölçer.
  • Yük, stres, ani yük, dayanıklılık ve ölçeklenebilirlik testlerini kapsar.
  • p95 ve p99 gibi yüzdelik dilimleri, throughput'u ve hata oranını izleyin.
20Playwright
Playwright, Chromium, Firefox ve WebKit'i tek bir API ile yöneten, Microsoft'un uçtan uca test ve tarayıcı otomasyonu için açık kaynaklı framework'üdür.
  • Playwright, Chromium, Firefox ve WebKit'i tek bir API ile otomatikleştirir.
  • Role dayalı locator'lar öğeleri kullanıcıların gördüğü biçimde bulur.
  • Her işlemden önceki otomatik bekleme kararsız testleri azaltır.
21Regresyon Testi
Regresyon testi, daha önce çalışan özelliklerin bozulmadığından emin olmak için bir kod değişikliğinden sonra mevcut testleri yeniden çalıştırma pratiğidir.
  • Regresyon, eskiden çalışan bir şeydeki hatadır.
  • Regresyon testi, her değişiklikten sonra mevcut testleri yeniden çalıştırır.
  • CI/CD'deki otomatik test takımları regresyon testini ucuz ve sürekli kılar.
22Selenium
Selenium, çoğunlukla uçtan uca test için web tarayıcılarını otomatikleştiren, WebDriver API'si birçok dilde bulunan açık kaynaklı bir araç takımıdır.
  • Selenium gerçek web tarayıcılarını, çoğunlukla uçtan uca testler için otomatikleştirir.
  • 2004'te başladı; WebDriver 2018'de bir W3C standardı oldu.
  • Testler Java, Python, C#, JavaScript, Ruby ve daha fazlasında yazılabilir.
23Smoke Test
Smoke test, daha derin testlere zaman ayırmadan önce bir derlemenin en önemli özelliklerinin temelde çalıştığını doğrulayan hızlı ve yüzeysel bir kontroldür.
  • Smoke test, bir derlemenin kritik parçalarının çalıştığını doğrulayan hızlı ve yüzeysel bir kontroldür.
  • Başarısız bir smoke test derlemenin bozuk olduğu anlamına gelir; bu yüzden daha derin testler atlanır.
  • Smoke testler genellikle her derlemeden ve her dağıtımdan sonra çalışır.
24Snapshot Testi
Snapshot testi, kodun çıktısını ilk çalıştırmada bir dosyaya kaydeden ve sonraki çalıştırmalarda çıktı bu kopyayla eşleşmezse başarısız olan bir tekniktir.
  • Snapshot testi, mevcut çıktıyı kaydedilmiş ve commit edilmiş bir kopyayla karşılaştırır.
  • İlk çalıştırma snapshot'ı oluşturur; çıktı farklıysa sonraki çalıştırmalar başarısız olur.
  • Bilinçli değişiklikler snapshot güncellenip commit edilerek kabul edilir.
25Sözleşme Testi
Sözleşme testi, iki servisin alıp verdikleri istek ve yanıtlar konusunda anlaşıp anlaşmadığını, ikisini birlikte çalıştırmadan kontrol eden tekniktir.
  • Sözleşme, bir tüketicinin gönderdiği istekleri ve beklediği yanıtları tanımlar.
  • Tüketici ve sağlayıcı, sözleşmeye karşı ayrı ayrı test edilir.
  • Tüketici güdümlü sözleşme testinde sözleşmeyi tüketiciler tanımlar, sağlayıcılar doğrular.
26Statik Analiz
Statik analiz, hataları, güvenlik açıklarını ve kalite sorunlarını erken bulmak için kaynak kodun çalıştırılmadan otomatik olarak incelenmesidir.
  • Statik analiz, kodu çalıştırmadan inceler.
  • Hataları, güvenlik açıklarını ve kalite sorunlarını erken bulur.
  • Teknikler örüntü eşleştirmeden veri akışı ve taint analizine kadar uzanır.
27Stres Testi
Stres testi, kırılma noktasını bulmak ve düzgün biçimde başarısız olup toparlandığını doğrulamak için bir sistemi bilerek beklenen iş yükünün ötesine iter.
  • Stres testi, kırılma noktasını bulmak için bir sistemi beklenen yükün ötesine iter.
  • Hangi kaynağın ya da bileşenin önce başarısız olduğunu ortaya çıkarır.
  • İyi bir sonuç, yüksek bir sınır değil, düzgün başarısızlık ve hızlı toparlanmadır.
28Test CaseTest Senaryosu
Test case, belirli bir davranışın kontrolüdür: başlangıç koşulları, girdi ya da adımlar ve yazılımın doğru davranıp davranmadığını gösteren beklenen sonuç.
  • Test case, koşullar, adımlar ve beklenen bir sonuçla tek bir davranışı kontrol eder.
  • Birbiriyle ilgili test case'ler test takımlarında toplanır.
  • Arrange, Act, Assert otomatik test case'leri okunur tutar.
29Test Fixture
Test fixture, bir testin çalışmadan önce ihtiyaç duyduğu örnek veri ya da yapılandırılmış nesne gibi bilinen durum ile onu kurup temizleyen koddur.
  • Fixture, bir testin dayandığı bilinen başlangıç durumudur.
  • Kurulum durumu oluşturur, sökme ise sonrasında temizler.
  • Fixture'ların kapsamı test başına, dosya başına ya da test çalıştırması başına olabilir.
30Test Kapsamı
Test kapsamı, otomatik testler çalışırken bir programın kaynak kodunun ne kadarının yürütüldüğünü ölçen ve genellikle yüzde olarak gösterilen bir metriktir.
  • Kapsam, testler sırasında hangi kodun çalıştığını gösterir ve genellikle yüzde olarak ifade edilir.
  • Yaygın türleri satır, dal ve fonksiyon kapsamıdır.
  • Dal kapsamı daha katıdır ve test edilmemiş koşulları yakalar.
31Test Odaklı Geliştirme
Test odaklı geliştirme, önce başarısız bir test yazdığınız, sonra onu geçirecek kadar kod yazıp ardından tasarımı temizlediğiniz bir kodlama pratiğidir.
  • Testi geçirecek kodu yazmadan önce başarısız bir test yazın.
  • Döngü kırmızı (başarısız), yeşil (geçen), yeniden düzenleme (temizlik) şeklindedir.
  • Her döngü küçük ve hızlıdır, çoğu zaman yalnızca birkaç dakika sürer.
32Test Otomasyonu
Test otomasyonu, testleri kodla çalıştırıp sonuçları denetlemektir; böylece aynı kontroller elle değil, her değişiklikte hızlı ve tutarlı biçimde tekrarlanır.
  • Test otomasyonu testleri kodla çalıştırır ve sonuçları kontrol eder.
  • Birim, entegrasyon ve uçtan uca testlerin hepsi otomatikleştirilebilir.
  • Test takımını CI'da çalıştırmak gerilemeleri dakikalar içinde yakalar.
33Test Piramidi
Test piramidi, otomatik testleri dengelemek için bir modeldir: çok sayıda hızlı birim testi, daha az entegrasyon testi ve tepede birkaç yavaş uçtan uca test.
  • Çok sayıda birim testi, daha az entegrasyon testi ve yalnızca birkaç uçtan uca test yazın.
  • Üst seviyedeki testler daha yavaş ve kırılgandır, ancak sistemin daha büyük bir kısmını aynı anda test eder.
  • Her testi hatayı yakalayabilecek en düşük seviyeye itin.
34Test RunnerTest çalıştırıcı
Test runner, bir projenin otomatik testlerini genellikle tek komutla bulan, çalıştıran ve hangilerinin geçtiğini ya da başarısız olduğunu raporlayan araçtır.
  • Test runner, otomatik testleri keşfeder, çalıştırır ve raporlar.
  • Başarısızlıkta sıfırdan farklı bir çıkış kodu, CI hatlarının bozuk değişiklikleri engellemesini sağlar.
  • Yaygın özellikler paralel çalıştırma, izleme modu, filtreleme ve zaman aşımlarıdır.
35Uçtan Uca Test
Uçtan uca test, kullanıcı arayüzünden veritabanına ve geri dönüşe kadar tam bir kullanıcı yolculuğunu uygulamanın tamamında çalıştıran otomatik bir testtir.
  • E2E testleri, uygulamanın tamamında gerçek kullanıcı yolculuklarını simüle eder.
  • Web E2E testleri genellikle gerçek ya da headless bir tarayıcıyı otomatikleştirir.
  • En yavaş ve en pahalı testlerdir; bu yüzden kritik akışlara saklanmalıdır.
36Yük Testi
Yük testi, bir sistemin beklenen trafik altında nasıl davrandığını ölçmek için aynı anda çok sayıda kullanıcıyı ya da isteği simüle eden performans testidir.
  • Yük testi, bir sisteme karşı çok sayıda eşzamanlı kullanıcıyı ya da isteği simüle eder.
  • Temel ölçümler yanıt süresi yüzdelik dilimleri, throughput ve hata oranıdır.
  • p95 ve p99 gibi yüzdelik dilimler, ortalamaların gizlediği yavaş uç değerleri ortaya çıkarır.
Software Dictionary'den 36 terim. Ayrıntılı açıklamalar, örnekler ve sık sorulan sorular için: softwaredictionary.org/tr/kutuphane/testing

Kitaba dönİpucu: Bir kopyasını saklamak için yazdırma penceresinde “PDF olarak kaydet”i seçin.

Daha fazla

Ayarlar