본문으로 건너뛰기
중급약 8시간 (예상)

네트워크 품질 저하 테스트

느린 네트워크와 '연결됨·인터넷 사용 불가' 상태를 실기기에서 재현하고, 저하된 상태에서 제품이 어떻게 행동하는지 검증한다. 상태 정의와 4축(대역폭·지연·지터·손실), 시뮬레이션이 적용되지 않는 구조적 원인, 기기 내장 기능·프록시·리눅스 AP·에뮬레이터 도구별 설정값 환산, Limited Service 재현 레시피, 재시도·타임아웃·멱등성 검증, 조건 매트릭스를 실행 가능한 테스트 케이스로 설계하고 자동화하는 법까지 다룬다.

★ '느려지는지'가 아니라 '느려졌을 때 제품이 어떻게 행동하는지'를 보는 모듈이다.

학습 목표

이 모듈 한 줄 요약 — "잘 터지는 곳에서만 쓰는 게 아니다". 개발자 책상과 사무실 와이파이는 늘 빠르다. 실제 사용자는 지하철·엘리베이터· 지하 주차장·해외 로밍에서 같은 앱을 쓴다. 느리고 끊기는 상황을 일부러 만들어 놓고 시험하는 법을 다룬다 — 그런 조건에서야 드러나는 결함이 따로 있다.

모듈 16에서 성능 테스트를, 모듈 17에서 모바일 고유의 검증 포인트를 다뤘다. 이 모듈은 그 둘이 만나는 지점을 파고든다 — 네트워크가 나빠졌을 때 제품이 어떻게 행동하는가.

핵심 전환은 문장 하나다. 네트워크 테스트는 "느려지는지"를 보는 것이 아니라 "느려졌을 때 제품이 어떻게 행동하는지" 를 보는 것이다. 대역폭 수치를 재는 일은 준비 작업일 뿐이고, 본론은 그 상태에서 타임아웃 정책·재시도·부분 로딩·중복 처리가 설계대로 동작하는지 확인하는 데 있다.

이 모듈을 마치면 네트워크 상태를 팀이 같은 기준으로 부를 수 있게 정의하고, 실기기에서 그 상태를 재현하고, 재현됐음을 증명하고, 그 위에서 제품의 행동을 검증해 재현 가능한 결함 리포트로 남길 수 있다.

완료 후 할 수 있는 것

  • 네트워크 상태를 정상·저하·Limited Service·단절 네 단계로 정의하고, 대역폭·지연·지터·손실 4축으로 수치화할 수 있다
  • '연결은 되었으나 사용 불가'를 단절과 구분해 별도 상태로 다루고, 각각에 맞는 검증 항목을 설계할 수 있다
  • PC 기반 도구가 스마트폰 트래픽에 닿지 않는 구조적 이유를 설명하고, 그 상황에서 대안을 고를 수 있다
  • '설정했다'와 '적용되었다'를 구분하고, 조건 적용을 측정으로 증명하는 절차를 수행할 수 있다
  • iOS 네트워크 링크 컨디셔너·Android 개발자 옵션·프록시 스로틀링·리눅스 AP + tc netem·에뮬레이터를 상황에 맞게 선택할 수 있다
  • Mbps·KB/s·바이트/초·비율과 퍼센트를 도구별로 정확히 환산해 입력할 수 있다
  • Limited Service를 네 가지 원인별(극단 저속·DNS 실패·상위망 차단·완전 손실)로 재현하고, 원인마다 다른 기대 화면을 판정할 수 있다
  • 저하 상태에서 타임아웃·재시도·중복 처리·부분 로딩·회선 전환·자원 소모를 체계적으로 점검할 수 있다
  • 지수 백오프·지터·멱등키·재시도 예산이 왜 필요한지 설명하고, 클라이언트 재시도 정책을 검증할 수 있다
  • 조건 매트릭스를 기대 결과와 판정 기준이 있는 실행 가능한 테스트 케이스로 재설계할 수 있다
  • Playwright CDP·adb emu·클라우드 디바이스 팜으로 네트워크 조건을 자동화에 넣을 수 있다

채용시장에서의 위치

네트워크 저하 테스트는 모바일 QA 채용에서 실력을 가르는 대표적인 질문 소재 다. "네트워크가 느릴 때 어떻게 테스트하나요"라는 질문에 "비행기 모드를 켜봅니다"로 답하는 사람과, 상태 정의부터 도구 선택, 적용 확인, 체크포인트까지 설명하는 사람은 같은 경력이어도 다르게 평가된다.

이 능력의 값어치는 결함 재현율 에서 나온다. "가끔 로딩이 안 돼요"라는 CS 문의를 조건명과 측정값이 붙은 재현 절차로 바꿔주면 개발이 바로 고칠 수 있다. 반대로 조건 없이 "느릴 때 문제가 있다"고만 올린 결함은 대부분 재현 불가로 닫힌다.

핀테크·커머스·배달·스트리밍처럼 지하철·엘리베이터·지하주차장에서 쓰이는 앱 을 만드는 회사에서 특히 직접적으로 요구된다. 결제 중복, 주문 유실, 업로드 중단 후 상태 불일치가 전부 이 영역에서 나오는 사고다.

도구를 많이 아는 것보다 팀이 반복해서 쓸 수 있는 조건 하나를 표준으로 정착시킨 경험 이 더 높게 평가된다. 조건별 스크립트를 만들어 회귀에 붙이고, 결함 리포트 양식에 조건명을 넣게 만든 사람이 그렇게 한 사람이다.

레슨 (8개)

  1. 중급약 24분

    네트워크 상태 모델 — 무엇을 느림이라 부르고 무엇을 사용 불가로 판정할 것인가

    네트워크 상태를 정상·저하·Limited Service·단절 네 단계로 정의하고, 대역폭·지연·지터·손실 4축으로 수치화한다. 비대칭과 버퍼블로트처럼 흔히 빠뜨리는 축까지 포함해 팀 공통 기준을 만든다.

  2. 중급약 24분

    왜 시뮬레이션이 적용되지 않는가 — 설정했다와 적용되었다는 다르다

    PC 기반 저하 도구가 스마트폰 트래픽에 닿지 않는 구조적 이유를 이해하고, 자주 막히는 여덟 가지 원인을 점검하는 법과 조건 적용을 측정으로 증명하는 6단계 절차를 익힌다.

  3. 중급약 22분

    기기에서 직접 거는 저하 — iOS 링크 컨디셔너와 Android 속도 제한

    추가 장비 없이 스마트폰 자체에서 네트워크 저하를 거는 두 가지 방법을 익힌다. iOS 네트워크 링크 컨디셔너의 프로파일과 사용자 정의, Android 개발자 옵션의 다운로드 속도 제한, 각각의 한계와 원복 절차를 다룬다.

  4. 중급약 25분

    프록시 스로틀링 — API 하나만 골라 느리게 만들기

    PC에서 프록시를 띄워 스마트폰 트래픽의 대역폭·지연을 제어하고 특정 API만 골라 느리게 하거나 오류를 주입한다. 도구 비교와 구성 절차, 그리고 인증서 피닝·QUIC·소켓이라는 세 가지 한계를 다룬다.

  5. 고급약 26분

    리눅스 AP + tc netem — 팀 공용 저하 랩 만들기

    라즈베리파이 등으로 테스트 전용 Wi-Fi를 만들고 커널에서 트래픽을 제어한다. netem의 대역폭·지연·지터·손실 문법과 상·하향 비대칭 구성, 조건 스크립트화, 그리고 재현성이 가장 높은 이유를 다룬다.

  6. 고급약 25분

    Limited Service 재현 레시피 — 연결됨·인터넷 사용 불가 만들기

    '연결은 되었으나 사용 불가' 상태를 원인별로 네 가지(극단 저속·DNS 실패·상위망 차단·완전 손실) 재현하고, 원인마다 달라야 할 기대 화면을 판정한다. 운영체제의 인터넷 연결 확인 원리까지 다룬다.

  7. 고급약 27분

    저하 상태에서 확인할 것들 — 타임아웃·재시도·중복·정합성

    네트워크가 나빠졌을 때 제품이 어떻게 행동해야 하는지를 여덟 가지 체크포인트로 정리하고, 타임아웃 예산·지수 백오프·지터·멱등키·재시도 예산을 검증 가능한 항목으로 다듬는다.

  8. 고급약 28분

    조건 매트릭스를 테스트 케이스로 — 설계 재구성과 자동화

    흔히 쓰이는 네트워크 조건 엑셀의 한계를 짚고, 기대 결과와 판정 기준이 있는 실행 가능한 테스트 케이스로 재설계한다. 도구별 설정값 환산표를 만들고 에뮬레이터·Playwright·클라우드 팜으로 자동화에 넣는 법까지 다룬다.