[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:en: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 Automation","","sd-contract-testing","Sd Contract Testing","en",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,"What is the core idea behind consumer-driven contract testing?",[90,93,96,99],{"key":91,"text":92},"a","The provider team writes every field a consumer is allowed to send and forces all consumers to match it exactly",{"key":94,"text":95},"b","A tester manually clicks through the consumer application against a live provider to confirm nothing broke, repeating the same manual steps by hand before every single release",{"key":97,"text":98},"c","The consumer defines the interactions it expects from the provider, and the provider verifies it can satisfy those expectations",{"key":100,"text":101},"d","The provider replays production traffic against a staging environment to measure response latency","In consumer-driven contract (CDC) testing, the consumer specifies the requests it will send and the responses it expects; the provider then verifies against that same expectation set, which is (c). Provider-dictated schemas (a) invert the relationship, manual UI walkthroughs (b) are exploratory testing, and traffic replay for latency (d) is performance testing, not contract testing.",{"id":104,"topic":9,"difficulty":87,"body":105,"options":106,"correct_key":94,"explanation":115},"019fb4ec-2a68-7de4-947c-f1403e73c0e0","In contract testing terminology, what is a \"pact\" (contract)?",[107,109,111,113],{"key":91,"text":108},"A signed legal document between two engineering managers about release dates",{"key":94,"text":110},"A recorded set of expected request\u002Fresponse interactions between a specific consumer and a specific provider",{"key":97,"text":112},"A single end-to-end test that exercises the full user journey across every microservice",{"key":100,"text":114},"A performance budget that caps how many requests per second a provider may receive, enforced automatically by the provider's load balancer","A pact is the artifact (typically a JSON file) that records the interactions a consumer expects from a provider — requests it will send and the responses it expects back — which is (b). It is not a legal document (a), not a full end-to-end test (c), and not a performance budget (d).",{"id":117,"topic":9,"difficulty":87,"body":118,"options":119,"correct_key":94,"explanation":128},"019fb4ec-2a6e-765d-944d-d7b88bf5b40a","In the consumer\u002Fprovider vocabulary used by contract testing, which statement correctly describes the roles?",[120,122,124,126],{"key":91,"text":121},"The consumer is always a frontend UI and the provider is always a database",{"key":94,"text":123},"The consumer is the service that makes a call, and the provider is the service that receives and responds to that call",{"key":97,"text":125},"The consumer and provider are two names for the same service, chosen based on which team happens to own the shared repository at any given time",{"key":100,"text":127},"The provider is the service that writes the test code, and the consumer only reads the results","A consumer is whatever calls an API (a frontend, another backend service, a mobile app, etc.) and a provider is whatever exposes that API and responds — that is (b). The roles are not tied to UI-vs-database (a), they refer to distinct services, not one service under two names (c), and both sides write their own tests (d).",{"id":130,"topic":9,"difficulty":87,"body":131,"options":132,"correct_key":100,"explanation":141},"019fb4ec-2a72-75a3-b2fa-d146d9ae5043","Why does contract testing exist as a distinct practice from full end-to-end integration testing?",[133,135,137,139],{"key":91,"text":134},"It replaces unit testing entirely, since unit tests cannot catch integration problems",{"key":94,"text":136},"It is required by law for any system exposing a public REST API",{"key":97,"text":138},"It guarantees that the provider's business logic produces correct results for every input, eliminating the need for any functional testing",{"key":100,"text":140},"It lets teams verify that a consumer and provider agree on an API's shape without standing up every service together","Contract testing exists to catch integration mismatches early without needing every real service running together, which is (d). It does not replace unit testing (a), it is an engineering practice, not a legal requirement (b), and it checks the API's request\u002Fresponse shape, not the correctness of business logic (c).",{"id":143,"topic":9,"difficulty":144,"body":145,"options":146,"correct_key":97,"explanation":155},"019fb4ec-2a77-7936-bd2f-5ac12e33d48a",2,"A platform has 6 consumer services calling 5 different provider services. If every consumer-provider pair needed its own dedicated full end-to-end integration test suite running against real deployed instances, what problem does this illustrate?",[147,149,151,153],{"key":91,"text":148},"The N+1 query problem, where each request triggers an extra database round trip",{"key":94,"text":150},"The flaky test problem, where tests fail intermittently due to timing issues",{"key":97,"text":152},"The N×M integration test explosion, where the number of test suites grows with every consumer-provider combination",{"key":100,"text":154},"The test data pollution problem, where one test's leftover data corrupts another, unrelated test's expected starting state","This is the N×M explosion: with N consumers and M providers, a naive approach needs up to N×M dedicated integration suites, and every new service multiplies the cost, which is (c). N+1 queries (a) is a database performance issue, flakiness (b) is about non-deterministic failures, and data pollution (d) is a test isolation issue — none describe the combinatorial growth in suite count.",{"id":157,"topic":9,"difficulty":87,"body":158,"options":159,"correct_key":91,"explanation":168},"019fb4ec-2a79-7d31-8832-29d24a5aaa8b","How does contract testing help reduce the N×M integration test explosion described by consumer-driven contracts?",[160,162,164,166],{"key":91,"text":161},"Each consumer tests against a lightweight mock built from the contract, and each provider verifies against the same contract independently, so no pair needs a live combined environment",{"key":94,"text":163},"It eliminates the need for providers to have any automated tests at all",{"key":97,"text":165},"It merges all consumers and providers into a single monolithic deployable so there is only one thing to test",{"key":100,"text":167},"It requires every consumer and provider to be rewritten in the same programming language","Contract testing decouples the two sides: the consumer verifies against a mock generated from the contract, and the provider verifies independently against the same contract, so N×M live integration suites shrink to N+M contract verifications, which is (a). It does not remove the provider's own test responsibility (b), does not require merging services (c), and is language-agnostic (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":331,"name_en":6,"sort":332,"specializations":333},"QA \u002F Test Otomasyonu",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},[363,10],"tr",[365,366],"google","github",22650,true]