[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:mobile\u002Fmobile-testing-automation":4,"config":212},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":112,"samples":126},"mobile","Mobil","","mobile-testing-automation","Mobile Testing Automation","tr",75,2400,[14,15,16],"junior","mid","senior",[18,21,24,27,30,33,36,39,42,45,48,51,54,57,60,63,66,69,72,75,78,81,84,87,90,91,94,97,100,103,106,109],{"key":19,"name":20,"count":11},"fl-dart-async-isolates","Fl Dart Async Isolates",{"key":22,"name":23,"count":11},"fl-dart-language-null-safety","Fl Dart Language Null Safety",{"key":25,"name":26,"count":11},"fl-flutter-persistence-storage","Fl Flutter Persistence Storage",{"key":28,"name":29,"count":11},"fl-flutter-platform-channels-lifecycle","Fl Flutter Platform Channels Lifecycle",{"key":31,"name":32,"count":11},"fl-flutter-rendering-widget-tree","Fl Flutter Rendering Widget Tree",{"key":34,"name":35,"count":11},"fl-flutter-state-management-widgets","Fl Flutter State Management Widgets",{"key":37,"name":38,"count":11},"ios-core-data-swiftdata-persistence","Ios Core Data Swiftdata Persistence",{"key":40,"name":41,"count":11},"ios-lifecycle-background-execution","Ios Lifecycle Background Execution",{"key":43,"name":44,"count":11},"ios-memory-management-arc","Ios Memory Management Arc",{"key":46,"name":47,"count":11},"ios-swift-concurrency-structured","Ios Swift Concurrency Structured",{"key":49,"name":50,"count":11},"ios-swift-type-system-optionals","Ios Swift Type System Optionals",{"key":52,"name":53,"count":11},"ios-swiftui-state-rendering","Ios Swiftui State Rendering",{"key":55,"name":56,"count":11},"kt-android-lifecycle-background-execution","Kt Android Lifecycle Background Execution",{"key":58,"name":59,"count":11},"kt-android-memory-context-leaks","Kt Android Memory Context Leaks",{"key":61,"name":62,"count":11},"kt-android-room-persistence","Kt Android Room Persistence",{"key":64,"name":65,"count":11},"kt-jetpack-compose-state-recomposition","Kt Jetpack Compose State Recomposition",{"key":67,"name":68,"count":11},"kt-kotlin-coroutines-flow","Kt Kotlin Coroutines Flow",{"key":70,"name":71,"count":11},"kt-kotlin-type-system-null-safety","Kt Kotlin Type System Null Safety",{"key":73,"name":74,"count":11},"mobile-distribution-ci","Mobile Distribution Ci",{"key":76,"name":77,"count":11},"mobile-navigation","Mobile Navigation",{"key":79,"name":80,"count":11},"mobile-networking-offline","Mobile Networking Offline",{"key":82,"name":83,"count":11},"mobile-performance-battery","Mobile Performance Battery",{"key":85,"name":86,"count":11},"mobile-security-storage","Mobile Security Storage",{"key":88,"name":89,"count":11},"mobile-state-data","Mobile State Data",{"key":8,"name":9,"count":11},{"key":92,"name":93,"count":11},"mobile-ui-lifecycle","Mobile Ui Lifecycle",{"key":95,"name":96,"count":11},"rn-javascript-typescript-fundamentals","Rn Javascript Typescript Fundamentals",{"key":98,"name":99,"count":11},"rn-native-bridge-modules","Rn Native Bridge Modules",{"key":101,"name":102,"count":11},"rn-navigation-lifecycle","Rn Navigation Lifecycle",{"key":104,"name":105,"count":11},"rn-networking-persistence-offline","Rn Networking Persistence Offline",{"key":107,"name":108,"count":11},"rn-performance-rendering","Rn Performance Rendering",{"key":110,"name":111,"count":11},"rn-react-hooks-state-management","Rn React Hooks State Management",[113,117,120,123],{"key":114,"name":115,"count":116},"android-kotlin","Android (Kotlin)",450,{"key":118,"name":119,"count":116},"flutter","Flutter",{"key":121,"name":122,"count":116},"ios-swift","iOS (Swift)",{"key":124,"name":125,"count":116},"react-native","React Native",[127,145,158,172,185,198],{"id":128,"topic":9,"difficulty":129,"body":130,"options":131,"correct_key":136,"explanation":144},"019f677d-2c02-7510-a0a5-80108be969d6",2,"Mobil test piramidinde unit testler neden paketin en büyük payını oluşturur?",[132,135,138,141],{"key":133,"text":134},"a","Bir cihazda çalışabilen tek test türü onlardır",{"key":136,"text":137},"b","Hızlı ve izole, geri bildirim çabuk gelir",{"key":139,"text":140},"c","UI render doğruluğunu otomatik doğrularlar",{"key":142,"text":143},"d","UI değişince güncellenmeleri gerekmez","Unit testler, UI ya da cihaz olmadan küçük ve izole bir mantık parçasını çalıştırır; bu yüzden milisaniyeler içinde koşar ve ilgisiz nedenlerle nadiren bozulur. Piramidin tabanına çok sayıda unit test konulmasının nedeni bu hız ve kararlılıktır.",{"id":146,"topic":9,"difficulty":129,"body":147,"options":148,"correct_key":139,"explanation":157},"019f677d-2c03-74c3-af10-e8b69f644193","Tam UI (uçtan uca) testler unit testlere kıyasla neden genelde daha pahalı ve kırılgandır?",[149,151,153,155],{"key":133,"text":150},"Hiç otomatikleştirilemezler",{"key":136,"text":152},"Yalnızca derleme zamanı tipleri kontrol ederler",{"key":139,"text":154},"Tüm katman çalışır, daha çok şey bozulur",{"key":142,"text":156},"Her zaman yalnızca tek ekranı test ederler","Bir UI testi, uygulamayı render, animasyon, navigasyon ve çoğu zaman ağ ya da cihaz durumu üzerinden gerçek şekilde çalıştırır. Bu katmanların her biri potansiyel bir hata kaynağıdır ve ek çalışma süresi getirir; bu da UI testlerini yavaşlatır ve ilgisiz nedenlerle bozulma olasılığını artırır.",{"id":159,"topic":9,"difficulty":160,"body":161,"options":162,"correct_key":133,"explanation":171},"019f677d-2c03-7f12-931d-b15fa0b2169b",1,"Piramitte unit ve UI testler arasında yer alan integration test nedir?",[163,165,167,169],{"key":133,"text":164},"Birkaç gerçek parçanın, tam UI olmadan birlikte çalışması",{"key":136,"text":166},"Tek bir saf fonksiyonun izole kontrolü",{"key":139,"text":168},"Yalnızca CI sunucusunda çalışır, yerelde asla",{"key":142,"text":170},"Manuel QA ihtiyacını ortadan kaldırır","Integration testler ortada yer alır: birbirleriyle gerçekten işbirliği yapan birkaç birimi (ör. bir repository ile konuşan bir view-model) bir araya getirip aralarındaki bağlantıları kontrol ederler, ama gerçek render edilmiş UI'yi çalıştırmaktan kaçınırlar; bu da onları tam UI testlerinden daha hızlı ve kararlı yapar.",{"id":173,"topic":9,"difficulty":129,"body":174,"options":175,"correct_key":139,"explanation":184},"019f677d-2c04-7752-be6e-32e7721836e1","Bir UI testi ekran yüklendikten hemen sonra bir düğmeye dokunuyor, ama tap handler'ı yalnızca animasyon bitince bağlanıyor. Test aralıklı başarısız oluyor. En olası neden?",[176,178,180,182],{"key":133,"text":177},"Framework düğmeye dokunmayı desteklemiyor",{"key":136,"text":179},"Ekranda bir memory leak var",{"key":139,"text":181},"Test hazırlığı değil animasyonu yarıştı",{"key":142,"text":183},"Düğme yanlış renkte","Animasyonlar ve diğer asenkron UI geçişleri zamanlama değişkenliği getirir. Test, ekranın (ve handler'larının) gerçekten hazır olduğunu doğrulamadan körlemesine dokunursa, bazen uygulamanın önüne geçip başarısız olur — klasik bir flaky test kök nedeni.",{"id":186,"topic":9,"difficulty":129,"body":187,"options":188,"correct_key":136,"explanation":197},"019f677d-2c04-7eff-bf82-2fbcba8c9187","Bir mobil testte ağ bağımlılığını mock'lamak ne demektir?",[189,191,193,195],{"key":133,"text":190},"Ağ yokken testi devre dışı bırakmak",{"key":136,"text":192},"Gerçek çağrıyı sahte bir yanıtla değiştirmek",{"key":139,"text":194},"Gecikmeyi ortalamak için testi iki kez çalıştırmak",{"key":142,"text":196},"Sunucunun gerçek yanıtını binary'ye gömmek","Bir ağ bağımlılığını mock'lamak, gerçek çağrıyı önceden belirlenmiş bir yanıt (başarı, hata, boş, yavaş vb.) döndüren bir yerine geçenle değiştirmek demektir. Bu, dış bir sunucunun kullanılabilirliğine bağımlılığı kaldırır ve testin tam olarak hangi senaryoyu çalıştıracağını kontrol etmesini sağlar.",{"id":199,"topic":9,"difficulty":200,"body":201,"options":202,"correct_key":133,"explanation":211},"019f677d-2c05-761e-aca2-20797357f119",3,"Profil-çekme testi gerçek backend'e istek atıyor. Backend yavaşladığında ilgisiz testler de başarısız oluyor. En iyi çözüm?",[203,205,207,209],{"key":133,"text":204},"O test için ağ katmanını mock'la",{"key":136,"text":206},"Başarısız testleri sil",{"key":139,"text":208},"Timeout'u 10 dakikaya çıkar",{"key":142,"text":210},"Paketi yalnızca gece çalıştır","Asıl sorun, uygulamanın kendi mantığını kontrol etmesi gereken bir testin canlı, dış bir sisteme sıkı bağımlılığıdır. Ağ çağrısını mock'lamak, testi backend kullanılabilirliğinden izole eder ve güvenilmez bir dış bağımlılığı kontrollü, tekrarlanabilir bir girdiye çevirir.",{"fields":213,"seniorities":388,"interview_shapes":389,"locales":394,"oauth":396,"question_count":399,"coach_enabled":400,"jd_match_enabled":400},[214,239,259,275,299,312,331,340,362,369,375,382],{"key":215,"name_tr":216,"name_en":216,"sort":160,"specializations":217},"backend","Backend",[218,221,224,227,230,233,236],{"key":219,"name":220,"field":215},"general","Genel",{"key":222,"name":223,"field":215},"go","Go",{"key":225,"name":226,"field":215},"python","Python",{"key":228,"name":229,"field":215},"java","Java",{"key":231,"name":232,"field":215},"csharp","C#\u002F.NET",{"key":234,"name":235,"field":215},"nodejs","Node.js",{"key":237,"name":238,"field":215},"php","PHP",{"key":240,"name_tr":241,"name_en":241,"sort":129,"specializations":242},"frontend","Frontend",[243,244,247,250,253,256],{"key":219,"name":220,"field":240},{"key":245,"name":246,"field":240},"javascript","JavaScript",{"key":248,"name":249,"field":240},"typescript","TypeScript",{"key":251,"name":252,"field":240},"react","React",{"key":254,"name":255,"field":240},"vue","Vue",{"key":257,"name":258,"field":240},"angular","Angular",{"key":260,"name_tr":261,"name_en":261,"sort":200,"specializations":262},"fullstack","Fullstack",[263,264,265,266,267,268,269,270,271,272,273,274],{"key":219,"name":220,"field":260},{"key":222,"name":223,"field":215},{"key":225,"name":226,"field":215},{"key":228,"name":229,"field":215},{"key":231,"name":232,"field":215},{"key":234,"name":235,"field":215},{"key":237,"name":238,"field":215},{"key":245,"name":246,"field":240},{"key":248,"name":249,"field":240},{"key":251,"name":252,"field":240},{"key":254,"name":255,"field":240},{"key":257,"name":258,"field":240},{"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":219,"name":220,"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":219,"name":220,"field":300},{"key":225,"name":226,"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":219,"name":220,"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":5,"name_tr":6,"name_en":332,"sort":333,"specializations":334},"Mobile",7,[335,336,337,338,339],{"key":219,"name":220,"field":5},{"key":121,"name":122,"field":5},{"key":114,"name":115,"field":5},{"key":118,"name":119,"field":5},{"key":124,"name":125,"field":5},{"key":341,"name_tr":342,"name_en":343,"sort":344,"specializations":345},"security","Güvenlik","Security",8,[346,347,350,353,356,359],{"key":219,"name":220,"field":341},{"key":348,"name":349,"field":341},"appsec","AppSec",{"key":351,"name":352,"field":341},"offensive-pentest","Offensive \u002F Pentest",{"key":354,"name":355,"field":341},"cloud-security","Cloud Security",{"key":357,"name":358,"field":341},"devsecops","DevSecOps",{"key":360,"name":361,"field":341},"blue-team-incident","Blue Team \u002F Incident",{"key":363,"name_tr":364,"name_en":365,"sort":366,"specializations":367},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[368],{"key":219,"name":220,"field":363},{"key":370,"name_tr":371,"name_en":371,"sort":372,"specializations":373},"data-engineer","Data Engineer",10,[374],{"key":219,"name":220,"field":370},{"key":376,"name_tr":377,"name_en":378,"sort":379,"specializations":380},"game-dev","Oyun Geliştirme","Game Development",11,[381],{"key":219,"name":220,"field":376},{"key":383,"name_tr":384,"name_en":384,"sort":385,"specializations":386},"ml-engineer","ML Engineer",12,[387],{"key":219,"name":220,"field":383},[14,15,16],{"junior":390,"mid":392,"senior":393},{"questions":391,"median_sec":3},20,{"questions":391,"median_sec":3},{"questions":391,"median_sec":3},[10,395],"en",[397,398],"google","github",21750,true]