# 기능 테스트 종류

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

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

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

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

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

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

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

#### 백엔드 - API Testing

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://taewoongs-organization.gitbook.io/jtwjs-dev-wiki/dev_note/testing/undefined-5.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
