브라우저에서의 API 테스트

package tobyspring.hello;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    @GetMapping("/hello")
    public String hello(String name) {
        return "Hello " + name;
    }
}

앞서 작성한 Hello 컨트롤러를 브라우저에서 간단하게 테스트 해봤다.

Hell 라는 URL 로 시작하는 경로 뒤에 Query String 으로 name 이라는 파라미터를 주고 파라미터 값이 Hello 라는 문자열 뒤에 붙어 리턴 되어 화면 상에 보이는 것을 확인함으로써 우리가 만든 컨트롤러의 기능이 기대한 대로 정상적으로 동작한다와 같은 테스트를 하긴 했는데, 과연 우리가 만드는 웹 컨트롤러의 기능을 이렇게 브라우저 화면을 통해서만 테스트 가능한지와 이걸로 충분한지 생각해봐야 할 것.

API 의 모든 기능을 테스트

API 테스트를 하는 방법이 브라우저를 이용하는 방법도 있지만, 이보다는 사실 좀 더 세밀하게 테스트 해야 될 경우가 있다.

웹 애플리케이션은 기본적으로 웹 클라이언트에서 전달하는 HTTP 요청, 리퀘스트를 받아서 다이나믹한 컨텐츠를 생성하고 그걸 HTTP Response 응답으로 리턴하는 그런 기능을 수행하는데 이 요청과 응답이 우리가 생각한대로 바르게 전달되고 기능을 수행한 뒤에 응답이 만들어지는가 하는 이 모든 과정을 다 살펴봐야만 API 의 모든 기능을 테스트했다고 볼 수 있다.

웹브라우저 도구를 통한 API 테스트

HTTP API 를 테스트하는데 우리가 사용하는 도구들이 많이 있는데 흔히 사용할 수 있는 것 중 하나가 웹 브라우저에서 웹 브라우저 도구를 이용하는 것. 크롬의 개발자 도구를 열어보면 여기서 어떤 요청을 보내고 화면에 출력하는 작업을 수행할 때 실제로 어떤 요청을 갖고 어떤 헤더값이 전달되고 헤더값을 받았는지 바디가 어떻게 오고 그 타입이 무엇인지와 같은 추가적인 정보들을 확인할 수 있다. Chrome DevTools 참고

웹브라우저 도구를 통해 API 테스트 하는 법

이런 상세한 정보들이 우리가 애플리케이션을 만들 때 이 컨틀로러 API 를 호출할 때 기대했던 것인지, 그 기대했던 대로 동작하는지까지 확인하는게 필요하다.

물론 크롬브라우저로 테스트도 가능하지만 생각보다 사용에 불편할 수 있다. 그래서 보통 많이 사용하는 것들 중 하나가 커맨드 라인에서 쓸 수 있는 도구들을 이용한다.

HTTP 요청을 만들고 응답을 확인하는데 사용하는 도구