[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:qa-test-automation\u002Fta-visual-regression-reporting":4,"config":148},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":58,"samples":63},"qa-test-automation","QA \u002F Test Otomasyonu","","ta-visual-regression-reporting","Ta Visual Regression Reporting","tr",75,1050,[14,15,16],"junior","mid","senior",[18,21,24,27,30,33,36,39,42,45,48,51,54,57],{"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},"ta-cross-browser-parallel-execution","Ta Cross Browser Parallel Execution",{"key":46,"name":47,"count":11},"ta-framework-architecture-patterns","Ta Framework Architecture Patterns",{"key":49,"name":50,"count":11},"ta-locators-selectors-strategy","Ta Locators Selectors Strategy",{"key":52,"name":53,"count":11},"ta-selenium-cypress-playwright-tradeoffs","Ta Selenium Cypress Playwright Tradeoffs",{"key":55,"name":56,"count":11},"ta-synchronization-flaky-tests","Ta Synchronization Flaky Tests",{"key":8,"name":9,"count":11},[59],{"key":60,"name":61,"count":62},"test-automation","Test Automation",450,[64,82,95,108,122,135],{"id":65,"topic":9,"difficulty":66,"body":67,"options":68,"correct_key":70,"explanation":81},"019faeb4-4c07-79b3-b74f-e545da7755f4",1,"Görsel regresyon testinin (visual regression testing) temel fikri nedir?",[69,72,75,78],{"key":70,"text":71},"a","Yeni bir ekran görüntüsü, istenmeyen görsel değişiklikleri tespit etmek için kaydedilmiş bir baseline görüntüyle piksel piksel karşılaştırılır",{"key":73,"text":74},"b","Test, bir sayfanın ne kadar hızlı render edildiğini ölçer ve render süresi sabit bir eşiği aşarsa başarısız olur",{"key":76,"text":77},"c","Test, sayfanın HTML kaynağını okur ve kaydedilmiş bir markup kopyasıyla karşılaştırır",{"key":79,"text":80},"d","Test, sayfanın önceden kaydedilmiş bir videosunu tekrar oynatır ve video dosya boyutunun değişmediğini kontrol eder","Görsel regresyon testi, mevcut bir ekran görüntüsünü alır ve kaydedilmiş bir baseline görüntüyle karşılaştırarak istenmeyen bir görsel değişikliği işaret eden piksel-seviyesi farkları işaretler.",{"id":83,"topic":9,"difficulty":66,"body":84,"options":85,"correct_key":73,"explanation":94},"019faeb4-4c0b-71e7-917a-177459e21f53","Görsel regresyon testi terminolojisinde bir \"baseline\" görüntü nedir?",[86,88,90,92],{"key":70,"text":87},"Projenin tarihinde alınan ilk ekran görüntüsü olup, tarihsel bir kayıt olarak sonsuza dek değiştirilmeden saklanır",{"key":73,"text":89},"Doğru render olarak kabul edilen ve sonraki çalıştırmaların karşılaştırıldığı referans ekran görüntüsü",{"key":76,"text":91},"Kullanıcının attığı her tuş vuruşundan sonra otomatik olarak alınan bir ekran görüntüsü",{"key":79,"text":93},"Yalnızca disk alanından tasarruf etmek için kullanılan, bulanık ve düşük çözünürlüklü bir ekran görüntüsü kopyası","Baseline, doğru\u002Fbeklenen arayüz durumunu temsil eden kabul edilmiş referans görüntüdür; her yeni test çalıştırmasının ekran görüntüsü değişiklikleri tespit etmek için bu baseline ile karşılaştırılır.",{"id":96,"topic":9,"difficulty":66,"body":97,"options":98,"correct_key":76,"explanation":107},"019faeb4-4c0b-7b09-a947-7616cd3384a7","Bir görsel regresyon aracının ürettiği \"diff\" tipik olarak neyi gösterir?",[99,101,103,105],{"key":70,"text":100},"Sayfanın stylesheet'inde bulunan her CSS özelliğinin metinsel bir listesini",{"key":73,"text":102},"Sayfanın yüklenirken yaptığı toplam HTTP istek sayısını",{"key":76,"text":104},"Mevcut ekran görüntüsünün baseline'dan tam olarak nerede farklılaştığını gösteren vurgulanmış bir görüntü",{"key":79,"text":106},"Sayfa yüklenirken çağrılan her JavaScript fonksiyonunun bir listesini","Diff çıktısı genellikle görsel bir üründür: baseline ile mevcut ekran görüntüsü arasında farklılaşan piksellerin işaretlendiği bir görüntü, değişikliğin bir bakışta fark edilmesini sağlar.",{"id":109,"topic":9,"difficulty":110,"body":111,"options":112,"correct_key":79,"explanation":121},"019faeb4-4c0c-7465-901c-9fc9bc63c570",2,"Görsel regresyon araçları görüntüleri karşılaştırırken neden tam piksel eşleşmesi yerine yapılandırılabilir bir \"threshold\" (tolerans) değeri kullanır?",[113,115,117,119],{"key":70,"text":114},"Çünkü tam piksel eşleşmesi hiçbir karşılaştırma kütüphanesinde teknik olarak uygulanamaz",{"key":73,"text":116},"Çünkü threshold, görüntünün çoğunu atlayarak testi daha hızlı çalıştırır",{"key":76,"text":118},"Çünkü threshold, diskte kaç baseline görüntü saklanacağını belirler",{"key":79,"text":120},"Çünkü aksi takdirde anti-aliasing gibi küçük render farkları her çalıştırmada yanlış başarısızlıklara neden olur","Bir tolerans eşiği, anlamsız küçük render varyasyonlarını (anti-aliasing, font hinting, GPU farkları) yutar; böylece test yalnızca gerçek bir regresyon sayılacak kadar büyük görsel fark olduğunda başarısız olur.",{"id":123,"topic":9,"difficulty":110,"body":124,"options":125,"correct_key":70,"explanation":134},"019faeb4-4c0c-7bcf-9f50-b82876f75931","Sadece görüntülerin ötesinde daha geniş bir kavram olarak \"snapshot testing\" nedir, örneğin render edilmiş bir component'in serileştirilmiş çıktısını karşılaştırırken?",[126,128,130,132],{"key":70,"text":127},"Çıktının serileştirilmiş halini bir kez yakalayıp saklamak ve sonraki çalıştırmaların çıktısını değişiklikleri yakalamak için bu kopyayla karşılaştırmak",{"key":73,"text":129},"Her test çalıştırmasından önce uygulamanın kalıcı verisinin tam bir yedeğini almak, böylece bir test veriyi bozarsa durum sonradan geri yüklenebilir",{"key":76,"text":131},"Test çalıştırıcı makinenin tam CPU ve bellek kullanımını tek bir anda kaydetmek",{"key":79,"text":133},"Aynı testi art arda iki kez çalıştırıp iki sonucu birlikte ortalamak","Snapshot testing, baseline-diff fikrini sadece görüntülerle sınırlı kalmadan serileştirilebilir herhangi bir çıktıya genelleştirir: referans bir snapshot bir kez saklanır ve sonraki çalıştırmalar istenmeyen değişiklikleri yakalamak için bununla karşılaştırılır.",{"id":136,"topic":9,"difficulty":66,"body":137,"options":138,"correct_key":73,"explanation":147},"019faeb4-4c0e-71b9-afd7-bd32af58dfe6","Cypress'te bir `cypress run` (headless) çalıştırması sırasında bir test başarısız olduğunda varsayılan olarak ne olur?",[139,141,143,145],{"key":70,"text":140},"Cypress, başarısız test için önerilen bir düzeltmeyle otomatik olarak bir pull request açar",{"key":73,"text":142},"Cypress, başarısızlık anında bir ekran görüntüsü yakalar ve artifact olarak kaydeder",{"key":76,"text":144},"Cypress, gelecekteki çalıştırmalarda tekrar başarısız olmaması için test dosyasını siler",{"key":79,"text":146},"Cypress, yürütmeyi süresiz olarak durdurur ve bir geliştiricinin manuel müdahale etmesini bekler","Cypress'in `cypress run` sırasında yerleşik bir screenshot-on-failure davranışı vardır: bir test başarısız olduğunda, o anda tarayıcının bir ekran görüntüsünü otomatik olarak yakalar ve bunu bir CI artifact'i olarak saklar.",{"fields":149,"seniorities":334,"interview_shapes":335,"locales":340,"oauth":342,"question_count":345,"coach_enabled":346,"jd_match_enabled":346},[150,175,195,212,236,249,268,287,309,315,321,328],{"key":151,"name_tr":152,"name_en":152,"sort":66,"specializations":153},"backend","Backend",[154,157,160,163,166,169,172],{"key":155,"name":156,"field":151},"general","Genel",{"key":158,"name":159,"field":151},"go","Go",{"key":161,"name":162,"field":151},"python","Python",{"key":164,"name":165,"field":151},"java","Java",{"key":167,"name":168,"field":151},"csharp","C#\u002F.NET",{"key":170,"name":171,"field":151},"nodejs","Node.js",{"key":173,"name":174,"field":151},"php","PHP",{"key":176,"name_tr":177,"name_en":177,"sort":110,"specializations":178},"frontend","Frontend",[179,180,183,186,189,192],{"key":155,"name":156,"field":176},{"key":181,"name":182,"field":176},"javascript","JavaScript",{"key":184,"name":185,"field":176},"typescript","TypeScript",{"key":187,"name":188,"field":176},"react","React",{"key":190,"name":191,"field":176},"vue","Vue",{"key":193,"name":194,"field":176},"angular","Angular",{"key":196,"name_tr":197,"name_en":197,"sort":198,"specializations":199},"fullstack","Fullstack",3,[200,201,202,203,204,205,206,207,208,209,210,211],{"key":155,"name":156,"field":196},{"key":158,"name":159,"field":151},{"key":161,"name":162,"field":151},{"key":164,"name":165,"field":151},{"key":167,"name":168,"field":151},{"key":170,"name":171,"field":151},{"key":173,"name":174,"field":151},{"key":181,"name":182,"field":176},{"key":184,"name":185,"field":176},{"key":187,"name":188,"field":176},{"key":190,"name":191,"field":176},{"key":193,"name":194,"field":176},{"key":213,"name_tr":214,"name_en":214,"sort":215,"specializations":216},"devops-cloud","DevOps \u002F Cloud",4,[217,218,221,224,227,230,233],{"key":155,"name":156,"field":213},{"key":219,"name":220,"field":213},"aws","AWS",{"key":222,"name":223,"field":213},"gcp","GCP",{"key":225,"name":226,"field":213},"azure","Azure",{"key":228,"name":229,"field":213},"kubernetes","Kubernetes",{"key":231,"name":232,"field":213},"terraform","Terraform",{"key":234,"name":235,"field":213},"linux","Linux",{"key":237,"name_tr":238,"name_en":238,"sort":239,"specializations":240},"ai-engineer","AI Engineer",5,[241,242,243,246],{"key":155,"name":156,"field":237},{"key":161,"name":162,"field":237},{"key":244,"name":245,"field":237},"llm-rag","LLM\u002FRAG",{"key":247,"name":248,"field":237},"mlops","MLOps",{"key":250,"name_tr":251,"name_en":252,"sort":253,"specializations":254},"database","Veritabanı","Database",6,[255,256,259,262,265],{"key":155,"name":156,"field":250},{"key":257,"name":258,"field":250},"postgresql","PostgreSQL",{"key":260,"name":261,"field":250},"mysql","MySQL",{"key":263,"name":264,"field":250},"mongodb","MongoDB",{"key":266,"name":267,"field":250},"redis","Redis",{"key":269,"name_tr":270,"name_en":271,"sort":272,"specializations":273},"mobile","Mobil","Mobile",7,[274,275,278,281,284],{"key":155,"name":156,"field":269},{"key":276,"name":277,"field":269},"ios-swift","iOS (Swift)",{"key":279,"name":280,"field":269},"android-kotlin","Android (Kotlin)",{"key":282,"name":283,"field":269},"flutter","Flutter",{"key":285,"name":286,"field":269},"react-native","React Native",{"key":288,"name_tr":289,"name_en":290,"sort":291,"specializations":292},"security","Güvenlik","Security",8,[293,294,297,300,303,306],{"key":155,"name":156,"field":288},{"key":295,"name":296,"field":288},"appsec","AppSec",{"key":298,"name":299,"field":288},"offensive-pentest","Offensive \u002F Pentest",{"key":301,"name":302,"field":288},"cloud-security","Cloud Security",{"key":304,"name":305,"field":288},"devsecops","DevSecOps",{"key":307,"name":308,"field":288},"blue-team-incident","Blue Team \u002F Incident",{"key":5,"name_tr":6,"name_en":310,"sort":311,"specializations":312},"QA \u002F Test Automation",9,[313,314],{"key":155,"name":156,"field":5},{"key":60,"name":61,"field":5},{"key":316,"name_tr":317,"name_en":317,"sort":318,"specializations":319},"data-engineer","Data Engineer",10,[320],{"key":155,"name":156,"field":316},{"key":322,"name_tr":323,"name_en":324,"sort":325,"specializations":326},"game-dev","Oyun Geliştirme","Game Development",11,[327],{"key":155,"name":156,"field":322},{"key":329,"name_tr":330,"name_en":330,"sort":331,"specializations":332},"ml-engineer","ML Engineer",12,[333],{"key":155,"name":156,"field":329},[14,15,16],{"junior":336,"mid":338,"senior":339},{"questions":337,"median_sec":3},20,{"questions":337,"median_sec":3},{"questions":337,"median_sec":3},[10,341],"en",[343,344],"google","github",22200,true]