[
  {
    "courseSlug": "testing",
    "question": "단위 테스트의 3막 구조 given-when-then에서 'when' 단계가 하는 일은 무엇인가?",
    "option1": "테스트에 필요한 객체와 데이터를 만들어 무대를 준비한다",
    "option2": "assertThat으로 실제값과 기대값이 같은지 검증한다",
    "option3": "검사하려는 동작을 딱 하나만 실행한다",
    "option4": "테스트가 끝난 뒤 사용한 데이터를 깨끗하게 정리한다",
    "answerIndex": 2,
    "explanation": "코스의 연극 비유에서 when은 '사건 발생', 즉 주인공의 행동으로 테스트하려는 딱 그 동작 하나만 호출하는 단계다. 두세 가지를 한꺼번에 하면 실패했을 때 범인을 못 찾는다고 설명한다."
  },
  {
    "courseSlug": "testing",
    "question": "이 코스가 테스트 코드를 '미래의 나를 지키는 보험'에 비유한 핵심 이유는?",
    "option1": "한 번 작성해 두면 수정 없이 영원히 코드를 지켜 주기 때문에",
    "option2": "사고가 나기 전에 미리 들어 두고, 나중에 코드가 부서지면 빨간불로 즉시 알려 주기 때문에",
    "option3": "테스트가 있으면 버그가 아예 발생하지 않도록 원천 차단해 주기 때문에",
    "option4": "배포 전에 사용자가 대신 기능을 눌러 보고 검사해 주기 때문에",
    "answerIndex": 1,
    "explanation": "섹션 1에서 보험은 사고가 나기 전에 드는 것이고, 3개월 뒤의 내가 코드를 부수면 테스트가 빨간불로 즉시 알려 준다고 설명한다. 보험료(작성 시간)는 조금 내고 보험금(밤샘 디버깅 면제)은 크게 돌려받는다는 비유다."
  },
  {
    "courseSlug": "testing",
    "question": "코스가 입문 단계에서 꼭 챙기라고 특별히 강조한 좋은 단위 테스트의 두 가지 조건은?",
    "option1": "반복 가능할 것, 자가 검증이 될 것",
    "option2": "코드가 짧을 것, 메서드 이름을 한글로 쓸 것",
    "option3": "커버리지가 높을 것, 실제 DB로 검증할 것",
    "option4": "빠를 것, 테스트끼리 서로 독립적일 것",
    "answerIndex": 3,
    "explanation": "섹션 5에서 특히 강조한 두 조건은 빠르다(Fast)와 독립적이다(Independent)이다. 빨라야 고칠 때마다 돌리는 습관이 생기고, 독립적이어야 순서나 공유 데이터 때문에 터지는 '도미노 테스트'가 되지 않는다. 반복 가능·자가 검증은 '그 외' 조건으로만 언급된다."
  },
  {
    "courseSlug": "testing",
    "question": "ProgressServiceTest의 '이미 완료한 강의를 다시 완료해도 진도율은 그대로다' 테스트에 대한 설명으로 옳은 것은?",
    "option1": "완료 버튼 연타로 진도율이 두 배로 오르던 실제 버그의 재발을 막으려고 남긴 테스트다",
    "option2": "DB와 서버를 실제로 띄워 진도율 API를 호출해 보는 통합 테스트다",
    "option3": "강의를 전부 완료했을 때 정확히 100%가 나오는지 확인하는 테스트다",
    "option4": "같은 강의를 두 번 완료하면 진도율이 20%가 되는 것이 정상임을 증명하는 테스트다",
    "answerIndex": 0,
    "explanation": "섹션 4의 해부 ④에서 이 테스트는 실화 기반으로, 완료 버튼을 연타하면 진도율이 2배로 오르던 버그를 고친 뒤 재발하지 말라고 못 박아 둔 것이라고 설명한다. 테스트는 '버그의 묘비명이자 부활 방지 부적'이라는 표현이 나온다."
  },
  {
    "courseSlug": "testing",
    "question": "출석률(0~100%)을 계산하는 함수를 새로 만들었고 테스트 케이스를 3개만 고를 수 있다. 코스에서 배운 경계값 요령에 가장 충실한 선택은?",
    "option1": "37%, 52%, 68%처럼 서로 다른 중간값 3개를 골라 검사한다",
    "option2": "매번 무작위로 값 3개를 새로 뽑아 다양하게 검사한다",
    "option3": "출석 0번(0%), 딱 1번 출석, 전부 출석(100%)의 가장자리 값을 검사한다",
    "option4": "가장 자주 나올 평균적인 값 하나를 골라 3번 반복해 검사한다",
    "answerIndex": 2,
    "explanation": "섹션 6에서 버그는 평범한 가운데 값이 아니라 범위가 시작되고 끝나는 가장자리에서 태어난다고 했다. 실전 요령으로 '텅 빈 경우 / 딱 1개인 경우 / 꽉 찬(최대) 경우' 세 칸을 먼저 챙기라고 안내한다."
  }
]
