비기능 테스트 종합
성능(부하 유형·k6·JMeter·Core Web Vitals), 보안(OWASP Top 10·SQL Injection·SAST/DAST/SCA·ZAP/Burp·SQLmap·XSS/CSRF/세션), 접근성(WCAG), 사용성, 시각적 회귀와 호환성까지 비기능 전 영역을 다룬다.
학습 목표
이 모듈 한 줄 요약 — "되는 것과 쓸 만한 것은 다른 질문이다". 기능이 다 동작해도 느리면 못 쓰고, 뚫리면 못 쓰고, 어떤 사람에게는 아예 못 쓰는 것이 된다. "맞는가" 말고 "충분히 빠른가·안전한가·누구나 쓸 수 있는가" 를 다룬다. 이쪽은 합격선을 숫자로 먼저 정해야 시험이 성립한다.
이 모듈을 마치면 "기능이 맞다"는 것과 "충분히 빠르고, 안전하고, 누구나 쓸 수 있다"는 것이 별개의 질문이라는 것을 이해한다. k6와 JMeter로 부하 테스트를 만들고 결과를 해석하며, Core Web Vitals로 프런트엔드 성능을 사용자 경험 관점에서 측정할 수 있다. OWASP Top 10을 이해하고 SQL Injection을 직접 확인·리포트하는 법을 익히며, SAST·DAST·SCA로 보안 테스트의 기초를 다지고, WCAG 기준으로 접근성을 검증하며, 시각적 회귀·호환성 테스트로 화면이 의도대로 모든 환경에서 보이는지 확인하는 법을 익힌다. 나아가 XSS·CSRF·세션 관리처럼 전문 도구 없이 QA가 직접 확인할 수 있는 취약점을 손으로 재현하는 법까지 다룬다.
완료 후 할 수 있는 것
- 기능 테스트와 비기능 테스트의 차이를 설명할 수 있다
- 부하·스트레스·스파이크·내구성 테스트의 목적 차이를 구분할 수 있다
- k6로 부하 테스트를 만들고 결과 지표를 해석할 수 있다
- JMeter의 핵심 구성요소를 이해하고 k6와 상황에 맞게 골라 쓸 수 있다
- Core Web Vitals 세 지표가 각각 무엇을 측정하는지 설명할 수 있다
- OWASP Top 10의 주요 취약점 유형을 설명할 수 있다
- SQL Injection을 안전한 환경에서 직접 확인하고 심각도에 맞게 리포트할 수 있다
- OWASP ZAP·Burp Suite로 DAST 자동 스캔을 실행하고, 그 결과를 검증 없이 믿지 않을 수 있다
- SQLmap이 수동 SQL Injection 확인을 어떻게 자동화·확장하는지, 도구가 대신 못 하는 판단이 무엇인지 설명할 수 있다
- 사용성을 측정 가능한 지표로 바꾸고, 알파·베타 테스트를 상황에 맞게 판단할 수 있다
- SAST·DAST·SCA가 각각 무엇을 검사하는 도구인지 구분할 수 있다
- WCAG 기준으로 웹 접근성을 점검할 수 있다
- 시각적 회귀 테스트와 호환성 테스트의 목적과 한계를 설명할 수 있다
- XSS(저장형·반사형·DOM)와 CSRF를 안전한 방식으로 직접 확인하고, 세션 관리·토큰 노출을 점검할 수 있다
채용시장에서의 위치
비기능 테스트는 "기능이 되니까 끝"이라고 여기는 QA와, "이게 실제로 서비스로서 성립하는가"까지 보는 QA를 가르는 지점이다. 성능·보안·접근성 각각은 별도 전문가(성능 엔지니어, 보안 엔지니어, 접근성 전문가)가 있을 만큼 깊은 영역이지만, QA가 이 영역의 기초 언어를 알고 있으면 전문가와 협업할 때도, 전문 인력이 없는 조직에서 최소한의 안전망을 직접 갖출 때도 결정적인 차이를 만든다. 이 모듈은 각 영역을 깊게 파기보다, "이 관점에서 무엇을 놓치고 있는지 알아채는 눈"을 기르는 데 초점을 맞춘다.
보안 영역에서 특히 그렇다. QA의 목표는 취약점을 전부 찾는 것이 아니라
명백한 것을 놓치지 않는 것 이고, 그 결과로 "우리 서비스에 전문 진단이
필요하다"는 논거를 만드는 것이다. XSS 확인은 입력란에 <b>test</b> 를
넣어보는 것으로 시작한다 — 5분짜리 점검으로 심각도 최상 결함을 잡을 수
있다면 안 할 이유가 없다.
레슨 (14개)
- 중급약 20분
비기능 테스트란 무엇인가: 기능이 맞는 것과 충분한 것은 다르다
"잘 동작한다"와 "빠르고 안전하고 누구나 쓸 수 있다"는 서로 다른 질문이다. 비기능 테스트의 다섯 축을 개관하며 이 모듈의 지도를 그린다.
- 중급약 20분
성능 테스트의 종류: 부하·스트레스·스파이크·내구성
"성능 테스트"라는 말은 뭉뚱그려 쓰이지만, 실제로는 서로 다른 질문에 답하는 네 가지 테스트가 있다. 각각의 목적과 차이를 이해한다.
- 중급약 25분
k6로 부하 테스트 만들고 결과 해석하기
k6로 실제 부하 테스트 스크립트를 작성하고, 응답 시간·에러율 같은 결과 지표를 읽어 "이 시스템이 정말 괜찮은지" 판단하는 법을 익힌다.
- 중급약 20분
Core Web Vitals: 사용자가 실제로 체감하는 프런트엔드 성능
서버 응답이 빨라도 화면이 버벅이면 느리게 느껴진다. 구글이 정의한 세 가지 지표로 프런트엔드 성능을 사용자 경험 관점에서 측정하는 법을 익힌다.
- 중급약 25분
보안 테스트 기초: OWASP Top 10으로 보는 흔한 취약점
보안 전문가가 아니어도, 가장 흔하게 반복되는 취약점 유형을 알면 QA가 최소한의 안전망 역할을 할 수 있다. OWASP Top 10의 대표 항목들을 이해한다.
- 중급약 20분
SAST·DAST·SCA: 자동화된 보안 검사 도구 세 가지
사람이 코드를 하나하나 읽지 않아도, 자동화된 도구가 보안 취약점의 상당수를 미리 걸러낼 수 있다. 세 도구가 각각 무엇을, 언제 검사하는지 구분한다.
- 중급약 25분
웹 접근성 테스트: WCAG 기준과 스크린 리더 확인하기
마우스를 못 쓰거나 화면을 못 보는 사용자도 서비스를 쓸 수 있어야 한다. WCAG의 핵심 원칙과, 코드 없이도 QA가 직접 확인할 수 있는 접근성 점검 방법을 익힌다.
- 중급약 20분
시각적 회귀와 호환성 테스트: 화면이 의도대로, 모든 곳에서 보이는가
기능은 멀쩡해도 레이아웃이 깨지거나 특정 브라우저에서만 이상하게 보일 수 있다. 스크린샷 비교로 시각적 변화를 자동 감지하는 법과, 호환성 테스트의 현실적 범위를 정리하며 이 모듈을 마무리한다.
- 중급약 22분
JMeter로 성능 테스트하기: GUI 기반 부하 테스트와 k6의 차이
코드를 몰라도 화면 클릭만으로 부하 테스트를 만들 수 있는 JMeter의 핵심 구성요소를 익히고, 언제 k6 대신 JMeter를 선택해야 하는지 판단 기준을 세운다.
- 중급약 22분
SQL Injection 직접 확인하기: 신호를 읽고 심각도를 판단하는 법
레슨 5에서 배운 인젝션 개념을 실제로 손으로 시도해본다. 대표적인 테스트 입력값과 에러 메시지에서 취약점 신호를 읽는 법, 그리고 발견했을 때 어떻게 리포트할지 익힌다.
- 중급약 22분
사용성 테스트(Usability Testing) — 되긴 되는데 아무도 못 쓰는 화면
기능이 정확히 동작해도, 실제 사용자가 헤매거나 포기한다면 그건 결함이다. 사용성을 측정 가능한 기준으로 만들고, 알파·베타 테스트로 실제 사용자 반응을 확인하는 법을 익힌다.
- 중급약 22분
OWASP ZAP과 Burp Suite로 DAST 실행하기
레슨 6에서 개념으로 배운 DAST를 실제 도구로 실행해본다. 자동 스캔이 무엇을 하는지, 그리고 그 결과를 QA가 왜 그대로 믿으면 안 되는지 익힌다.
- 중급약 20분
SQLmap으로 SQL Injection 탐지 자동화하기
레슨 10에서 손으로 하나씩 시도했던 페이로드를, SQLmap은 수백 가지 변형으로 자동 반복하며 데이터베이스 종류까지 알아낸다. 도구가 무엇을 대신해주고, 사람은 무엇을 여전히 판단해야 하는지 구분한다.
- 중급약 28분
XSS·CSRF·세션 관리 직접 확인하기: 화면에서 잡을 수 있는 취약점
SQL 인젝션에 이어 QA가 직접 확인할 수 있는 세 가지다. 스크립트가 실행되는지, 요청이 위조되는지, 로그아웃이 진짜 로그아웃인지 손으로 확인하는 법을 익힌다.