[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:qa-test-automation\u002Fsd-contract-testing":4,"config":169},null,{"field_key":5,"field_name":6,"seniority":7,"topic_key":8,"topic_name":9,"spec_key":7,"spec_name":7,"locale":10,"cell_total":11,"field_total":12,"seniorities":13,"topics":17,"specs":76,"samples":84},"qa-test-automation","QA \u002F Test Otomasyonu","","sd-contract-testing","Sd Contract Testing","tr",75,1500,[14,15,16],"junior","mid","senior",[18,21,24,27,30,33,36,39,42,45,48,49,52,55,58,61,64,67,70,73],{"key":19,"name":20,"count":11},"qa-api-testing","Qa Api Testing",{"key":22,"name":23,"count":11},"qa-automation-fundamentals","Qa Automation Fundamentals",{"key":25,"name":26,"count":11},"qa-ci-cd-testing","Qa Ci Cd Testing",{"key":28,"name":29,"count":11},"qa-defect-management","Qa Defect Management",{"key":31,"name":32,"count":11},"qa-exploratory-manual-testing","Qa Exploratory Manual Testing",{"key":34,"name":35,"count":11},"qa-performance-testing","Qa Performance Testing",{"key":37,"name":38,"count":11},"qa-test-case-design","Qa Test Case Design",{"key":40,"name":41,"count":11},"qa-test-strategy","Qa Test Strategy",{"key":43,"name":44,"count":11},"sd-ci-test-infrastructure","Sd Ci Test Infrastructure",{"key":46,"name":47,"count":11},"sd-code-quality-test-code","Sd Code Quality Test Code",{"key":8,"name":9,"count":11},{"key":50,"name":51,"count":11},"sd-test-data-management","Sd Test Data Management",{"key":53,"name":54,"count":11},"sd-test-doubles-mocking","Sd Test Doubles Mocking",{"key":56,"name":57,"count":11},"sd-test-framework-design","Sd Test Framework Design",{"key":59,"name":60,"count":11},"ta-cross-browser-parallel-execution","Ta Cross Browser Parallel Execution",{"key":62,"name":63,"count":11},"ta-framework-architecture-patterns","Ta Framework Architecture Patterns",{"key":65,"name":66,"count":11},"ta-locators-selectors-strategy","Ta Locators Selectors Strategy",{"key":68,"name":69,"count":11},"ta-selenium-cypress-playwright-tradeoffs","Ta Selenium Cypress Playwright Tradeoffs",{"key":71,"name":72,"count":11},"ta-synchronization-flaky-tests","Ta Synchronization Flaky Tests",{"key":74,"name":75,"count":11},"ta-visual-regression-reporting","Ta Visual Regression Reporting",[77,81],{"key":78,"name":79,"count":80},"sdet","SDET",450,{"key":82,"name":83,"count":80},"test-automation","Test Automation",[85,103,116,129,142,156],{"id":86,"topic":9,"difficulty":87,"body":88,"options":89,"correct_key":97,"explanation":102},"019fb4ec-2a67-7e41-9755-f51a883e7231",1,"Consumer-driven contract testing'in temel fikri nedir?",[90,93,96,99],{"key":91,"text":92},"a","Provider ekibi consumer'ın gönderebileceği her alanı yazar ve tüm consumer'ları buna birebir uydurur",{"key":94,"text":95},"b","Bir test uzmanı canlı bir provider'a karşı consumer uygulamasında manuel olarak gezinip hiçbir şeyin bozulmadığını doğrular, bu adımları her release öncesinde elle tekrar eder",{"key":97,"text":98},"c","Consumer, provider'dan beklediği etkileşimleri tanımlar; provider da bu beklenti setini karşılayabildiğini doğrular",{"key":100,"text":101},"d","Provider, yanıt gecikmesini ölçmek için production trafiğini bir staging ortamına karşı tekrar oynatır","Consumer-driven contract (CDC) testing'de consumer, göndereceği istekleri ve beklediği yanıtları belirtir; provider da aynı beklenti setine karşı doğrulama yapar — bu (c). Provider'ın şemayı dikte etmesi (a) ilişkiyi tersine çevirir, manuel UI gezinme (b) keşifsel test'tir, trafik tekrar oynatma (d) ise performans testidir, contract testing değildir.",{"id":104,"topic":9,"difficulty":87,"body":105,"options":106,"correct_key":94,"explanation":115},"019fb4ec-2a68-7de4-947c-f1403e73c0e0","Contract testing terminolojisinde \"pact\" (kontrat) nedir?",[107,109,111,113],{"key":91,"text":108},"İki mühendislik yöneticisi arasında release tarihleri hakkında imzalanmış bir hukuki belge",{"key":94,"text":110},"Belirli bir consumer ile belirli bir provider arasındaki beklenen request\u002Fresponse etkileşimlerinin kaydedildiği bir küme",{"key":97,"text":112},"Her mikroservisi kapsayan tam kullanıcı yolculuğunu çalıştıran tek bir uçtan uca test",{"key":100,"text":114},"Bir provider'ın saniyede alabileceği istek sayısını sınırlayan ve provider'ın load balancer'ı tarafından otomatik uygulanan bir performans bütçesi","Pact, consumer'ın provider'dan beklediği etkileşimleri (göndereceği istekler ve bekleyeceği yanıtlar) kaydeden bir artefakttır (genelde bir JSON dosyası) — bu (b). Hukuki belge (a), tam uçtan uca test (c) ya da performans bütçesi (d) değildir.",{"id":117,"topic":9,"difficulty":87,"body":118,"options":119,"correct_key":94,"explanation":128},"019fb4ec-2a6e-765d-944d-d7b88bf5b40a","Contract testing'de kullanılan consumer\u002Fprovider terminolojisinde roller hangi ifadeyle doğru tanımlanır?",[120,122,124,126],{"key":91,"text":121},"Consumer her zaman bir frontend UI'dır, provider ise her zaman bir veritabanıdır",{"key":94,"text":123},"Consumer, bir çağrı yapan servistir; provider ise bu çağrıyı alıp yanıtlayan servistir",{"key":97,"text":125},"Consumer ve provider aynı servisin iki farklı adıdır, o anda hangi ekibin paylaşılan repo'yu sahiplendiğine göre seçilir",{"key":100,"text":127},"Provider test kodunu yazan taraftır, consumer ise sadece sonuçları okur","Consumer, bir API'yi çağıran her şeydir (bir frontend, başka bir backend servisi, mobil uygulama vb.); provider ise o API'yi açığa çıkarıp yanıtlayan taraftır — bu (b). Roller UI-veritabanı ayrımına bağlı değildir (a), aynı servisin iki adı değildir, ayrı servislerdir (c), ve her iki taraf da kendi testini yazar (d).",{"id":130,"topic":9,"difficulty":87,"body":131,"options":132,"correct_key":100,"explanation":141},"019fb4ec-2a72-75a3-b2fa-d146d9ae5043","Contract testing, tam uçtan uca entegrasyon testinden ayrı bir pratik olarak neden var?",[133,135,137,139],{"key":91,"text":134},"Unit testleri tamamen ortadan kaldırır, çünkü unit testler entegrasyon sorunlarını yakalayamaz",{"key":94,"text":136},"Herhangi bir public REST API sunan sistem için yasal bir zorunluluktur",{"key":97,"text":138},"Provider'ın iş mantığının her girdi için doğru sonuç ürettiğini garanti eder ve böylece her türlü fonksiyonel testi gereksiz kılar",{"key":100,"text":140},"Takımların, her servisi bir arada ayağa kaldırmadan consumer ile provider'ın bir API'nin şekli üzerinde anlaştığını doğrulamasını sağlar","Contract testing, gerçek servisleri bir arada çalıştırmaya gerek kalmadan entegrasyon uyuşmazlıklarını erken yakalamak için vardır — bu (d). Unit testlerin yerini almaz (a), yasal bir zorunluluk değil mühendislik pratiğidir (b), ve iş mantığının doğruluğunu değil API'nin request\u002Fresponse şeklini kontrol eder (c).",{"id":143,"topic":9,"difficulty":144,"body":145,"options":146,"correct_key":97,"explanation":155},"019fb4ec-2a77-7936-bd2f-5ac12e33d48a",2,"Bir platformda 6 consumer servis, 5 farklı provider servisi çağırıyor. Her consumer-provider çiftinin, gerçek deploy edilmiş örneklere karşı çalışan kendi özel tam uçtan uca entegrasyon test suite'ine ihtiyacı olsaydı, bu hangi sorunu gösterir?",[147,149,151,153],{"key":91,"text":148},"Her isteğin fazladan bir veritabanı gidiş-dönüşü tetiklediği N+1 query sorunu",{"key":94,"text":150},"Testlerin zamanlama sorunları yüzünden aralıklı olarak başarısız olduğu flaky test sorunu",{"key":97,"text":152},"Test suite sayısının her consumer-provider kombinasyonuyla birlikte büyüdüğü N×M entegrasyon testi patlaması",{"key":100,"text":154},"Bir testin arta kalan verisinin, ilgisiz başka bir testin beklenen başlangıç durumunu bozduğu test verisi kirlenmesi sorunu","Bu, N×M patlamasıdır: N consumer ve M provider varken naif bir yaklaşım en fazla N×M özel entegrasyon suite'i gerektirir ve her yeni servis maliyeti çarpar — bu (c). N+1 query (a) bir veritabanı performans sorunudur, flakiness (b) deterministik olmayan başarısızlıklarla ilgilidir, veri kirlenmesi (d) bir test izolasyon sorunudur — hiçbiri suite sayısındaki kombinatoryal büyümeyi tanımlamaz.",{"id":157,"topic":9,"difficulty":87,"body":158,"options":159,"correct_key":91,"explanation":168},"019fb4ec-2a79-7d31-8832-29d24a5aaa8b","Contract testing, consumer-driven contract'ların tanımladığı N×M entegrasyon testi patlamasını azaltmaya nasıl yardımcı olur?",[160,162,164,166],{"key":91,"text":161},"Her consumer, kontrattan üretilen hafif bir mock'a karşı test edilir; her provider da aynı kontrata karşı bağımsız olarak doğrulanır, böylece hiçbir çift için canlı birleşik ortama gerek kalmaz",{"key":94,"text":163},"Provider'ların hiç otomatik teste ihtiyacı kalmadığı anlamına gelir",{"key":97,"text":165},"Tüm consumer ve provider'ları tek bir monolitik deploy edilebilir birime birleştirir, böylece test edilecek tek bir şey kalır",{"key":100,"text":167},"Her consumer ve provider'ın aynı programlama dilinde yeniden yazılmasını gerektirir","Contract testing iki tarafı birbirinden ayırır: consumer, kontrattan üretilen bir mock'a karşı doğrulanır, provider da aynı kontrata karşı bağımsız doğrulanır; böylece N×M canlı entegrasyon suite'i N+M kontrat doğrulamasına iner — bu (a). Provider'ın kendi test sorumluluğunu ortadan kaldırmaz (b), servisleri birleştirmeyi gerektirmez (c), dile bağımlı değildir (d).",{"fields":170,"seniorities":356,"interview_shapes":357,"locales":362,"oauth":364,"question_count":367,"coach_enabled":368,"jd_match_enabled":368},[171,196,216,233,257,270,289,308,330,337,343,350],{"key":172,"name_tr":173,"name_en":173,"sort":87,"specializations":174},"backend","Backend",[175,178,181,184,187,190,193],{"key":176,"name":177,"field":172},"general","Genel",{"key":179,"name":180,"field":172},"go","Go",{"key":182,"name":183,"field":172},"python","Python",{"key":185,"name":186,"field":172},"java","Java",{"key":188,"name":189,"field":172},"csharp","C#\u002F.NET",{"key":191,"name":192,"field":172},"nodejs","Node.js",{"key":194,"name":195,"field":172},"php","PHP",{"key":197,"name_tr":198,"name_en":198,"sort":144,"specializations":199},"frontend","Frontend",[200,201,204,207,210,213],{"key":176,"name":177,"field":197},{"key":202,"name":203,"field":197},"javascript","JavaScript",{"key":205,"name":206,"field":197},"typescript","TypeScript",{"key":208,"name":209,"field":197},"react","React",{"key":211,"name":212,"field":197},"vue","Vue",{"key":214,"name":215,"field":197},"angular","Angular",{"key":217,"name_tr":218,"name_en":218,"sort":219,"specializations":220},"fullstack","Fullstack",3,[221,222,223,224,225,226,227,228,229,230,231,232],{"key":176,"name":177,"field":217},{"key":179,"name":180,"field":172},{"key":182,"name":183,"field":172},{"key":185,"name":186,"field":172},{"key":188,"name":189,"field":172},{"key":191,"name":192,"field":172},{"key":194,"name":195,"field":172},{"key":202,"name":203,"field":197},{"key":205,"name":206,"field":197},{"key":208,"name":209,"field":197},{"key":211,"name":212,"field":197},{"key":214,"name":215,"field":197},{"key":234,"name_tr":235,"name_en":235,"sort":236,"specializations":237},"devops-cloud","DevOps \u002F Cloud",4,[238,239,242,245,248,251,254],{"key":176,"name":177,"field":234},{"key":240,"name":241,"field":234},"aws","AWS",{"key":243,"name":244,"field":234},"gcp","GCP",{"key":246,"name":247,"field":234},"azure","Azure",{"key":249,"name":250,"field":234},"kubernetes","Kubernetes",{"key":252,"name":253,"field":234},"terraform","Terraform",{"key":255,"name":256,"field":234},"linux","Linux",{"key":258,"name_tr":259,"name_en":259,"sort":260,"specializations":261},"ai-engineer","AI Engineer",5,[262,263,264,267],{"key":176,"name":177,"field":258},{"key":182,"name":183,"field":258},{"key":265,"name":266,"field":258},"llm-rag","LLM\u002FRAG",{"key":268,"name":269,"field":258},"mlops","MLOps",{"key":271,"name_tr":272,"name_en":273,"sort":274,"specializations":275},"database","Veritabanı","Database",6,[276,277,280,283,286],{"key":176,"name":177,"field":271},{"key":278,"name":279,"field":271},"postgresql","PostgreSQL",{"key":281,"name":282,"field":271},"mysql","MySQL",{"key":284,"name":285,"field":271},"mongodb","MongoDB",{"key":287,"name":288,"field":271},"redis","Redis",{"key":290,"name_tr":291,"name_en":292,"sort":293,"specializations":294},"mobile","Mobil","Mobile",7,[295,296,299,302,305],{"key":176,"name":177,"field":290},{"key":297,"name":298,"field":290},"ios-swift","iOS (Swift)",{"key":300,"name":301,"field":290},"android-kotlin","Android (Kotlin)",{"key":303,"name":304,"field":290},"flutter","Flutter",{"key":306,"name":307,"field":290},"react-native","React Native",{"key":309,"name_tr":310,"name_en":311,"sort":312,"specializations":313},"security","Güvenlik","Security",8,[314,315,318,321,324,327],{"key":176,"name":177,"field":309},{"key":316,"name":317,"field":309},"appsec","AppSec",{"key":319,"name":320,"field":309},"offensive-pentest","Offensive \u002F Pentest",{"key":322,"name":323,"field":309},"cloud-security","Cloud Security",{"key":325,"name":326,"field":309},"devsecops","DevSecOps",{"key":328,"name":329,"field":309},"blue-team-incident","Blue Team \u002F Incident",{"key":5,"name_tr":6,"name_en":331,"sort":332,"specializations":333},"QA \u002F Test Automation",9,[334,335,336],{"key":176,"name":177,"field":5},{"key":82,"name":83,"field":5},{"key":78,"name":79,"field":5},{"key":338,"name_tr":339,"name_en":339,"sort":340,"specializations":341},"data-engineer","Data Engineer",10,[342],{"key":176,"name":177,"field":338},{"key":344,"name_tr":345,"name_en":346,"sort":347,"specializations":348},"game-dev","Oyun Geliştirme","Game Development",11,[349],{"key":176,"name":177,"field":344},{"key":351,"name_tr":352,"name_en":352,"sort":353,"specializations":354},"ml-engineer","ML Engineer",12,[355],{"key":176,"name":177,"field":351},[14,15,16],{"junior":358,"mid":360,"senior":361},{"questions":359,"median_sec":3},20,{"questions":359,"median_sec":3},{"questions":359,"median_sec":3},[10,363],"en",[365,366],"google","github",22650,true]