[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:qa-test-automation\u002Fperformance-testing":4,"config":211},null,{"field_key":5,"field_name":6,"seniority":7,"topic_key":7,"topic_name":7,"spec_key":8,"spec_name":9,"locale":10,"cell_total":11,"field_total":12,"seniorities":13,"topics":17,"specs":115,"samples":126},"qa-test-automation","QA \u002F Test Otomasyonu","","performance-testing","Performance Testing","tr",450,2400,[14,15,16],"junior","mid","senior",[18,22,25,28,31,34,37,40,43,46,49,52,55,58,61,64,67,70,73,76,79,82,85,88,91,94,97,100,103,106,109,112],{"key":19,"name":20,"count":21},"mq-appium-driver-architecture","Mq Appium Driver Architecture",75,{"key":23,"name":24,"count":21},"mq-device-lab-emulator-parallelization","Mq Device Lab Emulator Parallelization",{"key":26,"name":27,"count":21},"mq-mobile-locators-sync-flakiness","Mq Mobile Locators Sync Flakiness",{"key":29,"name":30,"count":21},"mq-native-frameworks-espresso-xcuitest","Mq Native Frameworks Espresso Xcuitest",{"key":32,"name":33,"count":21},"mq-network-conditioning-offline-validation","Mq Network Conditioning Offline Validation",{"key":35,"name":36,"count":21},"mq-permissions-lifecycle-system-interactions","Mq Permissions Lifecycle System Interactions",{"key":38,"name":39,"count":21},"pf-apm-profiling-bottleneck-correlation","Pf Apm Profiling Bottleneck Correlation",{"key":41,"name":42,"count":21},"pf-distributed-load-generation","Pf Distributed Load Generation",{"key":44,"name":45,"count":21},"pf-environment-fidelity-test-design","Pf Environment Fidelity Test Design",{"key":47,"name":48,"count":21},"pf-load-model-design","Pf Load Model Design",{"key":50,"name":51,"count":21},"pf-metrics-percentiles-analysis","Pf Metrics Percentiles Analysis",{"key":53,"name":54,"count":21},"pf-scripting-correlation-parameterization","Pf Scripting Correlation Parameterization",{"key":56,"name":57,"count":21},"qa-api-testing","Qa Api Testing",{"key":59,"name":60,"count":21},"qa-automation-fundamentals","Qa Automation Fundamentals",{"key":62,"name":63,"count":21},"qa-ci-cd-testing","Qa Ci Cd Testing",{"key":65,"name":66,"count":21},"qa-defect-management","Qa Defect Management",{"key":68,"name":69,"count":21},"qa-exploratory-manual-testing","Qa Exploratory Manual Testing",{"key":71,"name":72,"count":21},"qa-performance-testing","Qa Performance Testing",{"key":74,"name":75,"count":21},"qa-test-case-design","Qa Test Case Design",{"key":77,"name":78,"count":21},"qa-test-strategy","Qa Test Strategy",{"key":80,"name":81,"count":21},"sd-ci-test-infrastructure","Sd Ci Test Infrastructure",{"key":83,"name":84,"count":21},"sd-code-quality-test-code","Sd Code Quality Test Code",{"key":86,"name":87,"count":21},"sd-contract-testing","Sd Contract Testing",{"key":89,"name":90,"count":21},"sd-test-data-management","Sd Test Data Management",{"key":92,"name":93,"count":21},"sd-test-doubles-mocking","Sd Test Doubles Mocking",{"key":95,"name":96,"count":21},"sd-test-framework-design","Sd Test Framework Design",{"key":98,"name":99,"count":21},"ta-cross-browser-parallel-execution","Ta Cross Browser Parallel Execution",{"key":101,"name":102,"count":21},"ta-framework-architecture-patterns","Ta Framework Architecture Patterns",{"key":104,"name":105,"count":21},"ta-locators-selectors-strategy","Ta Locators Selectors Strategy",{"key":107,"name":108,"count":21},"ta-selenium-cypress-playwright-tradeoffs","Ta Selenium Cypress Playwright Tradeoffs",{"key":110,"name":111,"count":21},"ta-synchronization-flaky-tests","Ta Synchronization Flaky Tests",{"key":113,"name":114,"count":21},"ta-visual-regression-reporting","Ta Visual Regression Reporting",[116,119,120,123],{"key":117,"name":118,"count":11},"mobile-qa","Mobile QA",{"key":8,"name":9,"count":11},{"key":121,"name":122,"count":11},"sdet","SDET",{"key":124,"name":125,"count":11},"test-automation","Test Automation",[127,145,158,171,184,198],{"id":128,"topic":39,"difficulty":129,"body":130,"options":131,"correct_key":139,"explanation":144},"019ff6e3-9540-71af-bab3-87eac64f8e6b",1,"Yük testi sırasında yük üretici aracının yanında bir APM (Application Performance Monitoring) aracı çalıştırmak neden faydalıdır?",[132,135,138,141],{"key":133,"text":134},"a","APM, sanal kullanıcıları kendisi simüle edebildiği için yük üreticisinin yerini tamamen alır; bazı APM ajanları sentetik trafik enjekte edebilir",{"key":136,"text":137},"b","APM sadece test bittikten sonra, nihai PDF raporu üretmek için önemlidir",{"key":139,"text":140},"c","APM, yük aracının gecikmeyi kaydettiği aynı anlarda sunucu tarafı sinyalleri (CPU, GC, DB havuzu, thread durumu) yakalar.",{"key":142,"text":143},"d","APM sadece fonksiyonel testlerle ilgilidir, performans testleriyle ilgili değildir","APM araçları, yük aracının dışarıdan gecikme\u002Fthroughput ölçtüğü aynı anlarda sistemin içinde (CPU, garbage collection, bağlantı havuzları) neler olduğuna görünürlük sağlar; bu, istemci tarafındaki bir belirtiyi sunucu tarafındaki bir nedenle eşleştirmeyi mümkün kılar.",{"id":146,"topic":39,"difficulty":129,"body":147,"options":148,"correct_key":133,"explanation":157},"019ff6e3-9581-7791-909e-812d5a4b899e","Bir sistemin yük testi bağlamında \"darboğaz\" (bottleneck) nedir?",[149,151,153,155],{"key":133,"text":150},"Doygunlaştığında sistemin genel throughput'unu sınırlayan belirli kaynak.",{"key":136,"text":152},"Throughput'u sınırlayıp sınırlamadığına bakılmaksızın, test sırasında CPU tüketen herhangi bir bileşen",{"key":139,"text":154},"Scripting sırasında yazılması en uzun süren sanal kullanıcı script adımı",{"key":142,"text":156},"Yük testi bitmeden önce çalıştırılan son istek","Darboğaz, doygunlaştığında throughput'u sınırlayan kısıtlayıcı kaynaktır (ör. DB bağlantı havuzu, CPU, tek thread'li bir bileşen); doygunluk noktasından sonra eklenen yük, daha fazla tamamlanan iş yerine çoğunlukla kuyruklama ve artan gecikmeye dönüşür.",{"id":159,"topic":39,"difficulty":129,"body":160,"options":161,"correct_key":142,"explanation":170},"019ff6e3-9583-7a40-8d90-5e6d97d3eb48","Bir yük testinde, 500 eşzamanlı kullanıcıdan sonra istemci tarafında gözlenen p95 gecikmesi keskin biçimde artıyor. Sunucunun darboğaz olduğu sonucuna varmadan önce makul bir sonraki adım nedir?",[162,164,166,168],{"key":133,"text":163},"Gecikme arttığı için hemen sunucuyu darboğaz olarak raporlamak",{"key":136,"text":165},"Testi durdurmak, çünkü artan p95 gecikmesi her zaman test konfigürasyonunun (VU sayısı, ramp-up) yanlış olduğu ve yeniden yapılması gerektiği anlamına gelir",{"key":139,"text":167},"Emin olmak için sanal kullanıcı sayısını daha da artırmak",{"key":142,"text":169},"Aynı zaman aralığında sunucu tarafı metriklerine (CPU, GC duraklamaları, DB havuzu bekleme, thread kuyruğu) bakmak.","Sadece istemci tarafında gözlenen gecikmenin artması darboğazın nerede olduğunu kanıtlamaz; sorun sunucuda, ağda ya da yük üreticinin kendisinde olabilir. Nedeni sunucuya bağlamadan önce aynı zaman penceresindeki sunucu tarafı metrikleriyle eşleştirmek gerekir.",{"id":172,"topic":39,"difficulty":129,"body":173,"options":174,"correct_key":136,"explanation":183},"019ff6e3-9587-789d-ba12-44f46add8af0","Yük testi sırasında bir veritabanı bağlantı havuzu gibi bir kaynak için \"doygunluk\" (saturation) ne anlama gelir?",[175,177,179,181],{"key":133,"text":176},"Kaynağın işletim sistemi tarafından yeniden başlatılmış olması; bu da iç sayaçlarını ve bağlantı durumunu sıfırlar",{"key":136,"text":178},"Kaynağın maksimum kapasiteye yakın kullanılması; bu yüzden yeni talebin beklemesi gerekmesi.",{"key":139,"text":180},"Kaynağın yük testi tarafından kalıcı olarak devre dışı bırakılmış olması",{"key":142,"text":182},"Kaynağın yanıt süresinin sıfıra düşmüş olması","Doygunluk, bir kaynağın (CPU, bağlantı havuzu, thread pool vb.) %100'e yakın kullanım oranında olması demektir; sonraki istekler bu kaynak için kuyrukta bekler, bu da genellikle yük aracının gözlemlediği gecikme artışına yol açan şeydir.",{"id":185,"topic":39,"difficulty":186,"body":187,"options":188,"correct_key":133,"explanation":197},"019ff6e3-9588-7ca3-8d9d-614544d19ff1",2,"Bir darboğazın nerede olduğunu bulmaya çalışırken sadece istemci tarafı gecikmesine bakmak neden yanıltıcı olabilir?",[189,191,193,195],{"key":133,"text":190},"Sadece toplam gidiş-dönüş süresini gösterir, bu sürenin büyük kısmına hangi iç bileşenin neden olduğunu belirtmez.",{"key":136,"text":192},"İstemci tarafı gecikme rakamları yük test araçları tarafından her zaman uydurulur",{"key":139,"text":194},"İstemci tarafı gecikme, sunucu tarafı gecikmesinden farklı bir birimle ölçülür, bu da karşılaştırmayı imkânsız kılar",{"key":142,"text":196},"İstemci tarafı gecikme, sunucu yükünden bağımsız olarak asla değişmez","İstemci tarafında gözlenen gecikme uçtan uca bir ölçümdür; bir şeyin yavaş olduğunu söyler ama hangi iç adım\u002Fbileşenin sorumlu olduğunu söylemez; bu yüzden gerçek darboğazı izole etmek için iç (sunucu tarafı) metriklerle eşleştirilmesi gerekir.",{"id":199,"topic":39,"difficulty":186,"body":200,"options":201,"correct_key":142,"explanation":210},"019ff6e3-958b-7060-ac6e-a41f8a451e9c","Bir yük testinde, yük üreticinin kendi host'u %95 CPU kullanımı gösterirken hedef sunucu sadece %30 CPU kullanımı gösteriyor, ama istemci tarafında gözlenen gecikme yüksek. En olası açıklama nedir?",[202,204,206,208],{"key":133,"text":203},"Darboğazın kesinlikle veritabanı olduğu",{"key":136,"text":205},"Sunucu açıkça sağlıklı olduğu için sonuçların olduğu gibi güvenilmesi gerektiği; sağlıklı sunucu metrikleri her zaman istemci deneyiminin doğru olduğu anlamına gelir",{"key":139,"text":207},"Yük üretici ile sunucu arasındaki ağın kesinlikle doygun olduğu",{"key":142,"text":209},"Yük üreticinin kendisi darboğaz olabilir; bu yüzden gözlenen gecikme sunucunun gerçek davranışını yansıtmayabilir.","Yük üreticinin host'u CPU açısından doygunsa, istekleri zamanında gönderemeyebilir ya da yanıtları doğru zaman damgalayamayabilir; bu da sunucu sorunu gibi görünen ama aşırı yüklenmiş istemciden kaynaklanan yanıltıcı gecikme rakamları üretir. Bu, istemci tarafı darboğazının sunucuya yanlış atfedilmesinin klasik bir örneğidir.",{"fields":212,"seniorities":427,"interview_shapes":428,"locales":433,"oauth":435,"question_count":438,"coach_enabled":439,"jd_match_enabled":439},[213,238,258,275,299,312,331,350,372,381,396,418],{"key":214,"name_tr":215,"name_en":215,"sort":129,"specializations":216},"backend","Backend",[217,220,223,226,229,232,235],{"key":218,"name":219,"field":214},"general","Genel",{"key":221,"name":222,"field":214},"go","Go",{"key":224,"name":225,"field":214},"python","Python",{"key":227,"name":228,"field":214},"java","Java",{"key":230,"name":231,"field":214},"csharp","C#\u002F.NET",{"key":233,"name":234,"field":214},"nodejs","Node.js",{"key":236,"name":237,"field":214},"php","PHP",{"key":239,"name_tr":240,"name_en":240,"sort":186,"specializations":241},"frontend","Frontend",[242,243,246,249,252,255],{"key":218,"name":219,"field":239},{"key":244,"name":245,"field":239},"javascript","JavaScript",{"key":247,"name":248,"field":239},"typescript","TypeScript",{"key":250,"name":251,"field":239},"react","React",{"key":253,"name":254,"field":239},"vue","Vue",{"key":256,"name":257,"field":239},"angular","Angular",{"key":259,"name_tr":260,"name_en":260,"sort":261,"specializations":262},"fullstack","Fullstack",3,[263,264,265,266,267,268,269,270,271,272,273,274],{"key":218,"name":219,"field":259},{"key":221,"name":222,"field":214},{"key":224,"name":225,"field":214},{"key":227,"name":228,"field":214},{"key":230,"name":231,"field":214},{"key":233,"name":234,"field":214},{"key":236,"name":237,"field":214},{"key":244,"name":245,"field":239},{"key":247,"name":248,"field":239},{"key":250,"name":251,"field":239},{"key":253,"name":254,"field":239},{"key":256,"name":257,"field":239},{"key":276,"name_tr":277,"name_en":277,"sort":278,"specializations":279},"devops-cloud","DevOps \u002F Cloud",4,[280,281,284,287,290,293,296],{"key":218,"name":219,"field":276},{"key":282,"name":283,"field":276},"aws","AWS",{"key":285,"name":286,"field":276},"gcp","GCP",{"key":288,"name":289,"field":276},"azure","Azure",{"key":291,"name":292,"field":276},"kubernetes","Kubernetes",{"key":294,"name":295,"field":276},"terraform","Terraform",{"key":297,"name":298,"field":276},"linux","Linux",{"key":300,"name_tr":301,"name_en":301,"sort":302,"specializations":303},"ai-engineer","AI Engineer",5,[304,305,306,309],{"key":218,"name":219,"field":300},{"key":224,"name":225,"field":300},{"key":307,"name":308,"field":300},"llm-rag","LLM\u002FRAG",{"key":310,"name":311,"field":300},"mlops","MLOps",{"key":313,"name_tr":314,"name_en":315,"sort":316,"specializations":317},"database","Veritabanı","Database",6,[318,319,322,325,328],{"key":218,"name":219,"field":313},{"key":320,"name":321,"field":313},"postgresql","PostgreSQL",{"key":323,"name":324,"field":313},"mysql","MySQL",{"key":326,"name":327,"field":313},"mongodb","MongoDB",{"key":329,"name":330,"field":313},"redis","Redis",{"key":332,"name_tr":333,"name_en":334,"sort":335,"specializations":336},"mobile","Mobil","Mobile",7,[337,338,341,344,347],{"key":218,"name":219,"field":332},{"key":339,"name":340,"field":332},"ios-swift","iOS (Swift)",{"key":342,"name":343,"field":332},"android-kotlin","Android (Kotlin)",{"key":345,"name":346,"field":332},"flutter","Flutter",{"key":348,"name":349,"field":332},"react-native","React Native",{"key":351,"name_tr":352,"name_en":353,"sort":354,"specializations":355},"security","Güvenlik","Security",8,[356,357,360,363,366,369],{"key":218,"name":219,"field":351},{"key":358,"name":359,"field":351},"appsec","AppSec",{"key":361,"name":362,"field":351},"offensive-pentest","Offensive \u002F Pentest",{"key":364,"name":365,"field":351},"cloud-security","Cloud Security",{"key":367,"name":368,"field":351},"devsecops","DevSecOps",{"key":370,"name":371,"field":351},"blue-team-incident","Blue Team \u002F Incident",{"key":5,"name_tr":6,"name_en":373,"sort":374,"specializations":375},"QA \u002F Test Automation",9,[376,377,378,379,380],{"key":218,"name":219,"field":5},{"key":124,"name":125,"field":5},{"key":121,"name":122,"field":5},{"key":8,"name":9,"field":5},{"key":117,"name":118,"field":5},{"key":382,"name_tr":383,"name_en":383,"sort":384,"specializations":385},"data-engineer","Data Engineer",10,[386,387,390,393],{"key":218,"name":219,"field":382},{"key":388,"name":389,"field":382},"pipelines-etl","Pipelines \u002F ETL",{"key":391,"name":392,"field":382},"streaming","Streaming",{"key":394,"name":395,"field":382},"warehousing","Warehousing",{"key":397,"name_tr":398,"name_en":399,"sort":400,"specializations":401},"game-dev","Oyun Geliştirme","Game Development",11,[402,403,406,409,412,415],{"key":218,"name":219,"field":397},{"key":404,"name":405,"field":397},"unity-csharp","Unity (C#)",{"key":407,"name":408,"field":397},"unreal-cpp","Unreal (C++)",{"key":410,"name":411,"field":397},"gameplay","Gameplay",{"key":413,"name":414,"field":397},"graphics-rendering","Graphics \u002F Rendering",{"key":416,"name":417,"field":397},"multiplayer-netcode","Multiplayer \u002F Netcode",{"key":419,"name_tr":420,"name_en":420,"sort":421,"specializations":422},"ml-engineer","ML Engineer",12,[423,424],{"key":218,"name":219,"field":419},{"key":425,"name":426,"field":419},"classical-ml","Classical ML",[14,15,16],{"junior":429,"mid":431,"senior":432},{"questions":430,"median_sec":3},20,{"questions":430,"median_sec":3},{"questions":430,"median_sec":3},[10,434],"en",[436,437],"google","github",27600,true]