# ApiTest

API 자동화 테스트 도입기
서비스 장애와 문제 분석 어느 날, 프로덕션 서버의 서비스 오류 알람이 우수수 올라왔다. 백업 서버와 프로덕션 서버의 배치가 중복으로 실행되는, 즉, 예약작업이 두 번 실행되는 사고가 발생했다. 원인은 백업 서버용 코드 변경과 데브옵스 팀에서 백업 환경 변경을 동시에 진행해서였다. 인프라 개선 중에 삭제되지 않은 백업 서버 인스턴스가 있었고, 해당 인스턴스는 코드 변경 사항이 적용되지 않았다. 이에 따라 방어 코드가 정상적으로 동작하지 않았고, 백업 서버에서 외부 실 서버로 요청을 보냈다. 그 장애가 다른 내부 서비스들에 전파가 되었고, 데이터를 원상 복구하기 위해서 영향받은 팀별로 수 시간에 걸친 복구 작업을 해야 했다. 심지어 일부 엔드 유저 경험까지 영향을 미쳐서 후속 처리까지 포함하여 수일의 복구시간이 들었다. ... 그렇게 몇 주 정도 뒤에, 이번에는 특정 시간 동안 전송한 모든 요청이 실패했다. 원인을 분석하니, 타임아웃 설정의 단위가 잘못 지정되어, 초 단위로

Httpfile 간단 API테스트 도구
출처:https://youtu.be/drwc2dF3u7I > API 테스트를 쉽게 할수있는 도구를 소개합니다. 이번에도 API 프로젝트를 생성합니다. Api 테스트를 위한것임으로 간단하게 동작되는 API를 작성하겠습니다. 단순 CRUD만 하는 API 입니다. 이제 준비된 API를 테스트 하기 위해서 Docs폴더를 만들고 확장자가 http 라는 단순 파일을 만들겠습니다. 이 파일에 이와 같이 rooturl 해당 API URL을 설정하고 이렇게 Get을 호출하면 (이때 왼쪽 ▶ 를 누르세요) 
쉽게 끝나지 않았던 API 테스트를 진행해본 후기...
이전부터 안건을 진행하면서, API응답값에 대해서도 체크를 한다던지, 검색기능 같은 경우에는 UI확인을 하지 않고 API테스트 하고 비정기배포를 진행했던 경험이 있는데요, 이번에 회사에서 2개 안건에서 별도의 API 테스트 기간을 정하고 API를 수행하였습니다. API 테스트를 수행하면서 느낀점을 기록으로 남깁니다.. 매우 성공적일 줄 알았지만 아니었다. API 테스트도 UI테스트와 개념적으로는 큰 차이는 없었습니다. 정의된 스펙대로 동작하는지를 확인하고 정의된 파라미터를 넘겼을 때, API문서와 동일한 필드들로 구성된 레스폰스인지 정의되지 않은 파라미터에 대한 동작에 대해 확인하고 응답값에 대해 추가로 ad-hoc 테스트를 진행 합니다. 이렇게 기재해놓으니 참 쉬워보이긴 하는데..ㅎ..ㅎㅎ.. 
Swagger 란? 무엇인고?
🤔 Swagger 란? Swagger란 개발한 Rest API를 편리하게 문서화 해주고, 이를 통해서 관리 및 제 3의 사용자가 편리하게 API를 호출해보고 테스트 할 수 있는 프로젝트 이다. Spring Boot에서는 간단하게 springfox-boot-starter 를 gradle dependencies에 추가 함으로 사용할 수 있다. 다만, 주의할 점은 운영환경과 같은 외부에 노출되면 안되는 곳에서 사용할 땐 주의 해야 한다. 사용해보자. ✅ 디펜던시 설정 ✅ 컨트롤러 하나 만들고 ✅ 이제 TalendAPI를 사용하여 Test하지 않고 localhost:8080/swagger-ui/로 들어가면됨 
REST Client 설치[Talend ApI Tester]
일반적인 홈페이지의 URI로 요청하는 방식은 GET 방식이다. 다른 요청을 보내고 Test 하려면 REST Client를 써야한다. Talend API Tester 추가 구글 크롬 웹 스토어 에서 talend API를 검색해서 확장프로그램 추가해 주자. 구글서버에 요청해 보자 ![](https://images.velog.io/images/stpn94/post/df076737-eed2-4535-854e-481f2cc48e34/%EC%9