> For the complete documentation index, see [llms.txt](https://taewoongs-organization.gitbook.io/jtwjs-dev-wiki/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://taewoongs-organization.gitbook.io/jtwjs-dev-wiki/dev_note/testing/undefined-5.md).

# 기능 테스트 종류

### 스모크 테스트 (Smoke Testing)

* 본격적인 테스트를 하기전 기본적인 기능이 정상 동작하는지, 테스팅 할만한 가치가 있는 빌드인지 확인하기 위한 것
* 서비스의 가장 기본적이고 핵심적인 기능들이 정상 동작하는지 **빠르고 간단하게 검증**

### 회귀 테스트(Regression Testing)

* 기능을 추가하거나 수정하였을때 **변경된 코드에 의해 발생하는 오류가 없는지** 확인하기 위해 **반복해서 테스트**하는 것
* 자신이 작성한 코드를 절대 믿지말고 꼼꼼히 테스트하는것이 핵심
* 전체 기능을 테스트를 수행 하는게 이상적이지만 제품이 커질수록 테스트할 대상이 많아 비용이 증가하여 프로젝트의 상황과 현재 리소스 상황을 고려해서 타협
* 변경 대상 위주로 테스팅을 진행하거나 서비스 핵심 기능 위주로 우선순위를 정해 N개에 대한 테스팅을 진행

### 기능 테스팅은 어떤걸 해야하나?

#### 프론트엔드 - UI Testing

* 깨진 링크가 없는지
* 버튼 클릭이 잘되는지
* 서버로 request가 잘 전달 되는지
* Form 검증 -> 정상/비정상 데이터 삽입
* 상황마다 적절한 에러메시지가 뜨는지 확인

#### 백엔드 - API Testing

* 응답 구조 확인
* 에러 핸들링이 잘 되어있는지 확인
* 잘못된 입력 데이터를 넣었을 때
  * 양수 값을 입력해야할 때 0원, -1000원을 입력한다면
* 특정 API에 대해 호출 권한이 없는 사용자로부터 API 호출이 일어날 때 어떤 현상이 일어나는지 (401, 403)
* 보안 테스팅
