Microsoft AZ-400: Test Stratejisi ve Kalite Mühendisliği — Çalışma kılavuzu
Şunun bir parçası: Microsoft DevOps Engineer Expert AZ-400 — Çalışma kılavuzu. Doğrulanmış cevaplarla şurada pratik yapın: Microsoft sınav merkezi, veya şurada süreli deneme sınavları çözün: ExamRoll.io.
Genel Bakış
Azure DevOps’ta Test Stratejisi ve Kalite Mühendisliği, teslimat yaşam döngüsü boyunca hızlı, deterministik geri bildirimlerle yazılıma olan güveni artırmak ve aynı zamanda kalite kapılarını ve izlenebilirliği zorunlu kılmak için platformun yerel yeteneklerini kullanmakla ilgilidir. Etkili stratejiler; dengeli bir test piramidi, erken ve sürekli doğrulama (TDD/BDD), pipeline’larda sağlam otomasyon, disiplinli test verisi yönetimi ve yük testi, kaos mühendisliği, erişilebilirlik kontrolleri ve kapsam zorunlu dağıtımlar gibi ileri teknikleri birleştirir. Azure Test Plans, Azure Pipelines, Azure Load Testing ve Azure Chaos Studio, bu uygulamaları ölçekli bir şekilde uygulamanız için size araçlar sunar.
Test Stratejisinin Temelleri
Pragmatik bir test piramidi, tabanda hızlı, düşük maliyetli testlerle ve tepede daha az sayıda yüksek doğruluklu testle riski azaltır:
- Birim testleri, izole edilmiş mantığı doğrular ve test setinin büyük bölümünü oluşturmalıdır. Hızlı yürütme ve yüksek determinizm hedefleyin. Çoğu ürün için, kritik servislerde %70-90 aralığında birim testi kapsamı hedefleri belirleyin, ancak kapsamın bir kalite garantisi değil, bir vekil metrik olduğunu unutmayın.
- Entegrasyon testleri, bileşenler arası sözleşmeleri (ör. veritabanı, mesajlaşma, harici servisler) gerçekçi sınırlar ve geçici bağımlılıklar kullanarak doğrular. Mümkün olduğunda paralel olarak, konteynerize edilmiş veya sanal korumalı (sandboxed) ortamlarda çalıştırın ve kritik kod yollarının %30-60’ının entegrasyon seviyesi senaryolarla çalıştırılmasını hedefleyin.
- Uçtan uca (E2E) testler, tüm yığın (full stack) boyunca kullanıcı yolculuklarını doğrular. Kırılgan ve yavaş geri bildirimden kaçınmak için bunları minimumda tutun ve en yüksek değerli yollara odaklanın (genellikle test setinin %5-15’i).
Sola kaydırma (shift-left) test uygulamaları, kusurları daha erken azaltır:
- Test Güdümlü Geliştirme (TDD), kırmızı-yeşil-yeniden düzenle döngülerini zorunlu kılar, tasarımı bilgilendirir ve birim düzeyinde güveni artırır. Mühendislere hızlı, yerel test çalıştırıcıları sağlayarak ve testleri hermetik ve deterministik tutarak TDD’yi pratik hale getirin.
- Davranış Güdümlü Geliştirme (BDD), Gherkin kullanarak amacı ortak bir kelime dağarcığıyla yakalar. .NET ekipleri SpecFlow kullanabilir; Java ve JavaScript ekipleri genellikle Cucumber kullanır. BDD senaryolarını Azure Boards kabul kriterlerine bağlayın ve izlenebilirlik için sonuçlarını Azure Test Plans’te yayınlayın.
Test verisi yönetimi, deterministik olmama durumunu ortadan kaldırır:
- Sentetik veri, birim ve entegrasyon testleri için deterministik, gizliliği koruyan veri setleri sağlar. Dile özgü sahte veri (faker) kütüphaneleri ve yeniden üretilebilirliğe izin veren başlangıç (seed) değerleri ile oluşturun.
- Veri maskeleme, kişisel veya hassas bilgileri ifşa etmeden gerçekçi test veri setleri oluşturmayı sağlar. Geri döndürülemez dönüşümler uygulayan veritabanı maskeleme araçlarını veya veri pipeline’larını kullanın. Azure SQL Database için, anlık görüntüleri (snapshot) bir hazırlık (staging) aboneliğine dışa aktarın ve test kullanımından önce maskeleme uygulayın.
- Ortam paritesi, test sonuçlarının anlamlı olmasını sağlar. Sistem bileşenlerinin, yapılandırmanın ve ağ topolojisinin üretim ortamıyla mümkün olduğunca yakından eşleşmesi için test ortamlarını Kod Olarak Altyapı (ARM/Bicep/Terraform) ile sağlayın. Şema geçişlerini ortamlar arasında eş zamanlı tutun.
Kararsız test tespiti ve yönetimi, geri bildirim döngülerini korur:
- Nedenler arasında zamanlama yarışları (race conditions), harici bağımlılıklar, test sırası bağımlılığı ve kaynak çekişmesi bulunur. Siz araştırırken geçici gürültüyü azaltmak için Azure Pipelines’ın Visual Studio Test görevini rerunFailedTests etkinleştirilmiş şekilde kullanın.
- Pipeline’ların yeşil kalmasını sağlamak için deterministik olmayan testleri karantinaya alın, bunları etiketleyip çalışan ve raporlayan ancak build’i başarısız kılmayan ayrı bir test setine izole edin. Karantina borcunu Azure Boards iş öğeleriyle takip edin.
- Kök neden analizi, enstrümantasyon gerektirir. Çalışmalar sırasında logları, zamanlama metriklerini ve ortam ayrıntılarını yakalayın; aynı başlangıç değeri ve bağımlılıklarla yerel olarak yeniden üretin; mock’lanmamış sistem saatlerine, ağa ve dosya sistemine olan bağımlılığı kaldırın; ve deterministik olmama durumunu kaynağında düzeltin.
Erişilebilirlik, Uyumluluk ve Yönetişim
Erişilebilirlik ve uyumluluk, kalitenin temel unsurlarıdır:
- Halka açık deneyimler için en az WCAG 2.1 AA standardına uyun. Gereksinimleri, özel erişilebilirlik test senaryoları ile Azure Boards ve Azure Test Plans’te kabul kriterlerine dönüştürün.
- Playwright, Cypress veya Selenium gibi kullanıcı arayüzü (UI) test framework’lerine entegre edilmiş axe-core ile kontrolleri otomatikleştirin. Kritik ihlaller tespit edildiğinde build’leri başarısız kılın ve erişilebilirlik raporlarını pipeline artifact’leri olarak yayınlayın.
- Otomasyonu manuel denetimlerle (klavye ile gezinme, ekran okuyucu desteği, dinamik bağlamlarda renk kontrastı) tamamlayın ve Test & Feedback eklentisini kullanarak keşif oturumlarındaki bulguları yakalayın.
- Azure Pipelines’deki uyumluluk ve kalite yönetişimi, ortam denetimlerini (environment checks) ve geçitlerini (gates) kullanır. Performans ve kullanılabilirlik için, dağıtımdan önce temel çizgileri (baseline) belirlemek amacıyla Azure Monitor veya Azure Load Testing’i sorgulayın. Kapsam (coverage) veya erişilebilirlik denetimi için, yayınlanan raporları ayrıştıran ve başarılı/başarısız (pass/fail) sonucu döndüren bir işlevi (function) veya REST denetimini çağırın. Bu, işlevsel olmayan kaliteyi sonradan düşünülen bir şey değil, bir sürüm ön koşulu olarak zorunlu kılar.
Test sonucu yayınlama ve analitik, döngüyü tamamlar:
- Test Analytics’i doldurmak, başarı oranlarındaki eğilimleri izlemek ve kararsız (flaky) testleri otomatik olarak ortaya çıkarmak için sonuç formatlarını ve kapsam raporlarını standartlaştırın.
- Birleştirmeden (merge) önce başarılı (green) testler ve yeterli kapsam gerektirmek için build politikalarını ve branch korumalarını kullanın. Geri bildirimi hızlı tutun; döngü süresini (cycle time) azaltmak için test aşamalarını paralelleştirin, büyük test paketlerini parçalara ayırın (shard) ve bağımlılıkları önbelleğe alın (cache).
Pratik Problem Senaryosu
Adobe, bir belge işleme platformunu Azure üzerinde mikroservislere dönüştürerek modernize ediyor. Mühendislik yönetimi, regresyon olmadan daha hızlı sürüm döngüsü, kanıtlanabilir performans temel çizgileri, bölgesel ağ arızalarına karşı dayanıklılık ve WCAG 2.1 AA uyumluluğu talep ediyor. Mevcut pipeline’lar, kararsız E2E testleri ve tutarsız test verilerinden muzdarip.
- Test piramidini ve shift-left uygulamalarını oluşturun
- .NET bileşenleri için NUnit ve xUnit, Java için ise JUnit kullanarak geniş ve deterministik bir birim testi tabanı oluşturmak amacıyla temel kütüphaneler ve servisler için TDD’yi (Test Güdümlü Geliştirme) benimseyin. SpecFlow ve Cucumber ile BDD (Davranış Güdümlü Geliştirme), ekipler arası kabul kriterlerini yürütülebilir spesifikasyonlar olarak yakalar. Bu, hızlı geri bildirim ve ortak bir anlayış sağlar.
- Testleri otomatikleştirin ve sonuçları Azure Pipelines’de yayınlayın
- Birim ve entegrasyon testlerini çalıştırmak için .NET için VsTest’i, Java için ise Maven/Gradle’ı kullanın. Raporlamayı merkezileştirmek ve kararsız test analizini etkinleştirmek için sonuçları Publish Test Results ile, kapsamı ise Publish Code Coverage Results ile yayınlayın. Yerleşik görevler, sıkı bir Azure DevOps entegrasyonu sağlar ve özel araç kullanımını azaltır.
- Kod kapsamı eşiklerini zorunlu kılın ve dağıtımları geçitlerle denetleyin
- Kritik servisler için kod kapsamı %80 satır ve %60 branch altına düşerse build’leri başarısız kılacak şekilde Coverlet ve JaCoCo eşiklerini yapılandırın. En son kapsam artifact’ini okuyan ve başarılı/başarısız sonucu döndüren bir Azure Function’ı çağıran bir sürüm denetimi (release check) ekleyerek kapsam politika altındayken dağıtımı önleyin. Bu, insan müdahalesi olmadan kalite geçitlerini (quality gates) resmileştirir.
- Determinizm için test verisi yönetimini uygulayın
- Birim ve entegrasyon testleri için faker kütüphanelerini kullanarak sentetik veri setleri oluşturun. Sistem testleri için, geri döndürülemez maskeleme uygulamak amacıyla Data Factory kullanan otomatik bir pipeline aracılığıyla Azure SQL veritabanlarının maskelenmiş kopyalarını klonlayın. Ortamlar arasında denklik sağlamak için Bicep ile provizyon yapın. Bu, gizlilik riskini ve veriye bağlı kararsızlığı ortadan kaldırır.
- Kararsız testleri kontrol altına alın ve ortadan kaldırın
- Geçici arızaları azaltmak için VsTest’te rerunFailedTests’i etkinleştirin ve kararsız spesifikasyonları, çalışmaya ve raporlamaya devam ederken engelleyici test paketinden (blocking suite) çıkaran bir karantina işaretiyle etiketleyin. Karantinaya alınan her test için Azure Boards iş öğeleri (work items) oluşturun. Zamanlama ve ağ loglarını toplayarak ve deterministik olmayan beklemeleri kaldırarak kök neden analizi yapın. Bu, kalıcı düzeltmeleri teşvik ederken pipeline’ların güvenilir kalmasını sağlar.
- Azure Load Testing ve k6 ile performansı doğrulayın
- Önemli kullanıcı yolculuklarını JMeter planları olarak modelleyin ve bunları staging ortamına dağıtım sonrası Azure Load Testing’de, p95 gecikme süresi ve hata oranları üzerinde başarılı/başarısız kriterleriyle çalıştırın. API seviyesindeki geliştirici testleri için, CI’da yerleşik eşiklerle k6 betikleri çalıştırın. Staging temel çizgileri karşılanmazsa üretimi engellemek için bir Azure Monitor geçidi ekleyin. Bu araçlar, Soru-Cevap’ın geçit konseptiyle uyumlu, ölçeklenebilir ve ölçülebilir performans denetimi sağlar.
- Azure Chaos Studio ile dayanıklılığı kanıtlayın
- Application Insights hata bütçelerini ve kurtarmayı izlerken, staging ortamındaki seçili mikroservislere ağ gecikmesi ve CPU baskısı enjekte eden deneyler tasarlayın. Bir üst ortama terfiden önce tüm dayanıklılık deneylerinin SLO’ları karşılamasını zorunlu kılın. Chaos Studio’nun yönetişim kontrolleri, Adobe’nin kontrollü etki alanı (blast radius) ve denetlenebilir deneyler ihtiyacıyla uyumludur.
- Erişilebilirlik ve uyumluluğu sağlayın
- Temel ekranlardaki WCAG 2.1 AA ihlallerini otomatik olarak tespit etmek için axe-core’u Playwright UI testlerine entegre edin. İhlal raporlarını build artifact’leri olarak yayınlayın ve kritik sorunlarda build’i başarısız kılın. Manuel doğrulama için Azure Test Plans ve Test & Feedback eklentisi ile keşif amaçlı erişilebilirlik oturumları planlayın. Bu, otomatikleştirilmiş kapsamı insan merkezli kontrollerle birleştirir.
- İzlenebilirlik ve analitik sağlayın
- Uygun olduğunda otomatikleştirilmiş testleri Azure Test Plans’e bağlayın, test paketlerini (suites) gereksinimlerle hizalayın ve başarı oranlarındaki eğilimleri izlemek, kararsız testleri belirlemek ve iyileştirmeye odaklanmak için Test Analytics’i kullanın. Bu, yönetimin kalite eğilimlerini ve sürüme hazırlık durumunu bir bakışta görmesini sağlar.
Her seçim, birinci sınıf entegrasyon için yerel Azure DevOps ve Azure servislerini, ortam denetimleri ve geçitler aracılığıyla yönetişimi ve geri bildirim hızını, güvenilirliği ve uyumluluğu optimize eden dengeli bir test stratejisini vurgular.
← Güvenlik · Tüm alanlar · İzleme →
Bu soruları çözün → · ExamRoll.io’da süreli pratik →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
Sınavınızı geçin →