[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:qa-test-automation":4,"config":126},null,{"field_key":5,"field_name":6,"seniority":7,"topic_key":7,"topic_name":7,"spec_key":7,"spec_name":7,"locale":8,"cell_total":9,"field_total":9,"seniorities":10,"topics":14,"specs":40,"samples":41},"qa-test-automation","QA \u002F Test Otomasyonu","","tr",600,[11,12,13],"junior","mid","senior",[15,19,22,25,28,31,34,37],{"key":16,"name":17,"count":18},"qa-api-testing","Qa Api Testing",75,{"key":20,"name":21,"count":18},"qa-automation-fundamentals","Qa Automation Fundamentals",{"key":23,"name":24,"count":18},"qa-ci-cd-testing","Qa Ci Cd Testing",{"key":26,"name":27,"count":18},"qa-defect-management","Qa Defect Management",{"key":29,"name":30,"count":18},"qa-exploratory-manual-testing","Qa Exploratory Manual Testing",{"key":32,"name":33,"count":18},"qa-performance-testing","Qa Performance Testing",{"key":35,"name":36,"count":18},"qa-test-case-design","Qa Test Case Design",{"key":38,"name":39,"count":18},"qa-test-strategy","Qa Test Strategy",[],[42,60,74,87,100,113],{"id":43,"topic":17,"difficulty":44,"body":45,"options":46,"correct_key":48,"explanation":59},"019f68ba-2372-7ade-8d26-7833bba132b1",1,"Ekranlarda tıklayarak ilerleyen bir UI testine kıyasla, bir API testi öncelikle neyi kontrol eder?",[47,50,53,56],{"key":48,"text":49},"a","Arayüz katmanındaki request ve response'ları, hiç ekran çizmeden",{"key":51,"text":52},"b","Her ekranın farklı tarayıcılarda ve pencere boyutlarında doğru render edildiğini",{"key":54,"text":55},"c","Buton ve renk gibi görsel öğelerin tasarım dosyasıyla piksel piksel eşleştiğini",{"key":57,"text":58},"d","Bir insan test uzmanının tüm görevi yalnızca mouse ve klavye ile baştan sona tamamlayabildiğini","API testi, UI'ın altındaki arayüzle doğrudan konuşur: bir istek gönderir ve status code, response body ve yan etkiler üzerinde iddia kurar — hiç ekran devreye girmez. Render, layout ve piksel seviyesi kontroller (b, c) UI\u002Fgörsel test alanına aittir; manuel uçtan uca görev tamamlama (d) tamamen ayrı bir test faaliyetidir.",{"id":61,"topic":17,"difficulty":62,"body":63,"options":64,"correct_key":51,"explanation":73},"019f68ba-237c-7989-8026-e1345d2ce7ec",2,"Bir ekip, UI test suite'lerinin 40 dakika sürdüğünü ve genelde test edilen özellikle ilgisiz nedenlerle başarısız olduğunu fark ediyor. Aynı kontrolleri API testlerine indiriyorlar. Ana pratik fayda nedir?",[65,67,69,71],{"key":48,"text":66},"API testleri otomatik olarak ekranın doğru göründüğünü de doğrular, dolayısıyla UI kontrollerini kaldırmakla bir şey kaybedilmez",{"key":51,"text":68},"API testleri render ve UI zamanlamasını atlar; bu yüzden daha hızlı çalışır ve UI katmanından gelen kararsızlığa daha az maruz kalır",{"key":54,"text":70},"API testlerinin hiç test verisi kurulumuna ihtiyacı yoktur, çünkü API'yi kullanmak yerine doğrudan veritabanıyla konuşurlar",{"key":57,"text":72},"API testleri manuel keşifsel testin yerini alır, çünkü olası her kullanıcı yolunu otomatik olarak kapsarlar","API testi render, animasyon ve UI zamanlamasını atladığı için çok daha kısa sürede çalışır ve ekranları beklemekten kaynaklanan kararsızlığa maruz kalmaz — katman avantajı budur. Bir şeyin nasıl göründüğünü kontrol etmez (a), gerçekçi girdi verisine hâlâ ihtiyaç duyar (c), ve keşifsel testin yerini almaz (d) — o, farklı türde sorunları hedefler.",{"id":75,"topic":17,"difficulty":44,"body":76,"options":77,"correct_key":54,"explanation":86},"019f68ba-237e-7973-959e-92fb86e400bf","Bir API'yi çağıran consumer ile onu sunan provider arasındaki bağlamda contract test nedir?",[78,80,82,84],{"key":48,"text":79},"Provider'ın yavaşlamadan önce saniyede kaç isteği kaldırabildiğini ölçen bir test",{"key":51,"text":81},"Geliştirme başlamadan önce her iki ekibin imzaladığı, API'yi düz dille anlatan hukuki bir belge",{"key":54,"text":83},"Consumer'ın beklediği şeklin provider'ın ürettiğiyle uyuştuğunu kontrol eden test",{"key":57,"text":85},"Yalnızca iki sistem birlikte production ortamına deploy edildikten sonra çalışan bir test","Contract test, consumer'ın bir etkileşimden ne beklediğini (alanlar, tipler, zorunlu değerler) yakalar ve bu beklentiyi provider'a karşı kontrol eder; ikisi entegre olmadan önce uyumsuzluğu yakalar. Throughput ölçümü (a) performans testidir, imzalı belge (b) otomatik bir test değildir, production'a kadar beklemek (d) ise contract testin tam olarak önlemeye çalıştığı şeydir.",{"id":88,"topic":17,"difficulty":62,"body":89,"options":90,"correct_key":57,"explanation":99},"019f68ba-2380-7125-a9ce-741691e1af21","Bir mobil ekibin uygulaması, sipariş response'undaki `total` alanının sayı olmasını bekliyor. Bir backend ekibi `total`'ı sessizce string'e çeviriyor (`\"49.90\"`) ve deploy ediyor. Mobil uygulama production'da çökene kadar kimse fark etmiyor. Bunu daha önce ne yakalardı?",[91,93,95,97],{"key":48,"text":92},"Her release öncesi mobil uygulamanın daha fazla ekranını kapsayan daha geniş bir manuel QA regresyon turu",{"key":51,"text":94},"Backend ekibinin olağandışı response örüntülerini daha erken fark etmesi için load test trafiğini artırmak",{"key":54,"text":96},"Backend ekibinden kendi iç hesaplama mantığı için daha fazla unit test yazmasını istemek",{"key":57,"text":98},"`total`'ın beklenen tipini kodlayan ve backend her değiştiğinde çalışan bir contract test","Bu tam olarak bir contract test'in yakalamak için var olduğu kırılmadır: mobil ekibin beklentisi (`total` sayıdır) çalışan bir kontrole dönüştürülür, backend her değiştiğinde tetiklenir ve alan tipi gerçek bir cihaza ulaşmadan build'i düşürür. Daha fazla manuel regresyon (a) hâlâ birinin o alanı kontrol etmesine bağlıdır, load test (b) kapasiteyi ölçer, şekli değil, backend'in kendi unit testleri (c) kendi iç mantığını doğrular, consumer'ın response'tan gerçekte ne istediğini değil.",{"id":101,"topic":17,"difficulty":44,"body":102,"options":103,"correct_key":48,"explanation":112},"019f68ba-2382-70b6-aa6e-67cf9355ba60","Test tasarımında stub ile mock arasındaki temel fark nedir?",[104,106,108,110],{"key":48,"text":105},"Stub çağrıldığında hazır bir yanıt döndürür; mock ise çağrının beklendiği gibi yapıldığını doğrulamaya izin verir",{"key":51,"text":107},"Stub yalnızca veritabanı çağrıları için, mock ise yalnızca harici API çağrıları için kullanılabilir",{"key":54,"text":109},"Stub geliştiriciler tarafından yazılır, mock ise yalnızca test uzmanları tarafından manuel test case'lerinin parçası olarak yazılır",{"key":57,"text":111},"Stub gerçek bağımlılıktan daha yavaş çalışır, mock ise gerçek bağımlılıkla tam olarak aynı hızda çalışır","Stub'ın işi, gerçek bağımlılık olmadan testin devam edebilmesi için hazırlanmış bir yanıt döndürmektir. Mock da bunu yapar ama ayrıca etkileşimi kaydeder; böylece test \"bu çağrı tam olarak bir kez, şu argümanlarla yapıldı mı\" gibi bir iddia kurabilir. İkisi de belirli bir bağımlılık türüne bağlı değildir (b), ikisi de testi yazan kişi tarafından yazılır (c), hız (d) ikisi arasındaki ayırt edici özellik değildir — davranış doğrulama yeteneğidir.",{"id":114,"topic":17,"difficulty":62,"body":115,"options":116,"correct_key":51,"explanation":125},"019f68ba-2383-7763-938b-b3694a83e233","`POST \u002Forders` testi, test çalıştırması başına gerçek ücret kesen ve test ortamında bazen erişilemeyen üçüncü taraf bir ödeme sağlayıcısını çağırmak zorunda. Sipariş mantığının kendisini test etmenin en pratik yolu nedir?",[117,119,121,123],{"key":48,"text":118},"Ödeme sağlayıcısı her ortamda %100 uptime garanti edene kadar bu endpoint'i test etmemek",{"key":51,"text":120},"Ödeme sağlayıcısının yerine kontrollü yanıt döndüren bir test double koyup sipariş mantığını test etmek",{"key":54,"text":122},"Testi ayda bir kez gerçek ödeme sağlayıcısına karşı çalıştırmak, çünkü ücret yalnızca o tek çalıştırmada kesiliyor",{"key":57,"text":124},"Ödeme sağlayıcısının ekibinden kendi servisini yavaşlatmasını istemek — test tamamlanması için daha fazla süre olsun","Ödeme çağrısı için test double kullanmak, sipariş testini kendi mantığına (verilen bir ödeme sonucu için sipariş doğru oluşturuluyor, fiyatlanıyor, kaydediliyor mu) odaklı tutar; gerçek ücret ödemeden ya da sağlayıcının uptime'ına bağımlı kalmadan. Ödeme sağlayıcısının gerçek servisiyle davranışı kendi testlerine aittir, idealde az sayıda gerçek uçtan uca kontrol de buna dahildir. Endpoint'i atlamak (a) onu test edilmemiş bırakır, ayda bir gerçek çalıştırma (c) zamanın çoğunu kapsamsız bırakır, sağlayıcıdan servisini senin testin için değiştirmesini istemek (d) altta yatan bağımlılık sorununu çözmez.",{"fields":127,"seniorities":311,"interview_shapes":312,"locales":317,"oauth":319,"question_count":322,"coach_enabled":323,"jd_match_enabled":323},[128,153,173,190,214,227,246,265,287,292,298,305],{"key":129,"name_tr":130,"name_en":130,"sort":44,"specializations":131},"backend","Backend",[132,135,138,141,144,147,150],{"key":133,"name":134,"field":129},"general","Genel",{"key":136,"name":137,"field":129},"go","Go",{"key":139,"name":140,"field":129},"python","Python",{"key":142,"name":143,"field":129},"java","Java",{"key":145,"name":146,"field":129},"csharp","C#\u002F.NET",{"key":148,"name":149,"field":129},"nodejs","Node.js",{"key":151,"name":152,"field":129},"php","PHP",{"key":154,"name_tr":155,"name_en":155,"sort":62,"specializations":156},"frontend","Frontend",[157,158,161,164,167,170],{"key":133,"name":134,"field":154},{"key":159,"name":160,"field":154},"javascript","JavaScript",{"key":162,"name":163,"field":154},"typescript","TypeScript",{"key":165,"name":166,"field":154},"react","React",{"key":168,"name":169,"field":154},"vue","Vue",{"key":171,"name":172,"field":154},"angular","Angular",{"key":174,"name_tr":175,"name_en":175,"sort":176,"specializations":177},"fullstack","Fullstack",3,[178,179,180,181,182,183,184,185,186,187,188,189],{"key":133,"name":134,"field":174},{"key":136,"name":137,"field":129},{"key":139,"name":140,"field":129},{"key":142,"name":143,"field":129},{"key":145,"name":146,"field":129},{"key":148,"name":149,"field":129},{"key":151,"name":152,"field":129},{"key":159,"name":160,"field":154},{"key":162,"name":163,"field":154},{"key":165,"name":166,"field":154},{"key":168,"name":169,"field":154},{"key":171,"name":172,"field":154},{"key":191,"name_tr":192,"name_en":192,"sort":193,"specializations":194},"devops-cloud","DevOps \u002F Cloud",4,[195,196,199,202,205,208,211],{"key":133,"name":134,"field":191},{"key":197,"name":198,"field":191},"aws","AWS",{"key":200,"name":201,"field":191},"gcp","GCP",{"key":203,"name":204,"field":191},"azure","Azure",{"key":206,"name":207,"field":191},"kubernetes","Kubernetes",{"key":209,"name":210,"field":191},"terraform","Terraform",{"key":212,"name":213,"field":191},"linux","Linux",{"key":215,"name_tr":216,"name_en":216,"sort":217,"specializations":218},"ai-engineer","AI Engineer",5,[219,220,221,224],{"key":133,"name":134,"field":215},{"key":139,"name":140,"field":215},{"key":222,"name":223,"field":215},"llm-rag","LLM\u002FRAG",{"key":225,"name":226,"field":215},"mlops","MLOps",{"key":228,"name_tr":229,"name_en":230,"sort":231,"specializations":232},"database","Veritabanı","Database",6,[233,234,237,240,243],{"key":133,"name":134,"field":228},{"key":235,"name":236,"field":228},"postgresql","PostgreSQL",{"key":238,"name":239,"field":228},"mysql","MySQL",{"key":241,"name":242,"field":228},"mongodb","MongoDB",{"key":244,"name":245,"field":228},"redis","Redis",{"key":247,"name_tr":248,"name_en":249,"sort":250,"specializations":251},"mobile","Mobil","Mobile",7,[252,253,256,259,262],{"key":133,"name":134,"field":247},{"key":254,"name":255,"field":247},"ios-swift","iOS (Swift)",{"key":257,"name":258,"field":247},"android-kotlin","Android (Kotlin)",{"key":260,"name":261,"field":247},"flutter","Flutter",{"key":263,"name":264,"field":247},"react-native","React Native",{"key":266,"name_tr":267,"name_en":268,"sort":269,"specializations":270},"security","Güvenlik","Security",8,[271,272,275,278,281,284],{"key":133,"name":134,"field":266},{"key":273,"name":274,"field":266},"appsec","AppSec",{"key":276,"name":277,"field":266},"offensive-pentest","Offensive \u002F Pentest",{"key":279,"name":280,"field":266},"cloud-security","Cloud Security",{"key":282,"name":283,"field":266},"devsecops","DevSecOps",{"key":285,"name":286,"field":266},"blue-team-incident","Blue Team \u002F Incident",{"key":5,"name_tr":6,"name_en":288,"sort":289,"specializations":290},"QA \u002F Test Automation",9,[291],{"key":133,"name":134,"field":5},{"key":293,"name_tr":294,"name_en":294,"sort":295,"specializations":296},"data-engineer","Data Engineer",10,[297],{"key":133,"name":134,"field":293},{"key":299,"name_tr":300,"name_en":301,"sort":302,"specializations":303},"game-dev","Oyun Geliştirme","Game Development",11,[304],{"key":133,"name":134,"field":299},{"key":306,"name_tr":307,"name_en":307,"sort":308,"specializations":309},"ml-engineer","ML Engineer",12,[310],{"key":133,"name":134,"field":306},[11,12,13],{"junior":313,"mid":315,"senior":316},{"questions":314,"median_sec":3},20,{"questions":314,"median_sec":3},{"questions":314,"median_sec":3},[8,318],"en",[320,321],"google","github",21750,true]