사용자 인터페이스가 깔끔하고 멋질수록 그 속을 의심하라
여러분, 되로 주고 말로 받는다는 말 많이 들어보셨죠?
작은 것을 제공하면 크게 돌려받는다는 의미를 내포하고 있는데요,
여기서는 주고받는 것이 물품으로 비유되고 있지만 다른 것도 충분히 들어갈 수 있지 않을까요?
뭐 칭찬과 같은 언어적 표현이나
용서, 자비, 공감 등 감정적 표현도 돌려받을 수 있겠구요.
어떤 신호나 데이터(?)도 이에 해당할 수 있지 않을까요? 약간 무리수를 두는 것 같긴 한데....
작은 신호 하나만 보내면
생각보다 많은 양의 데이터를 전달받을 수 있잖아요!
어떤 데이터를 요청(request)한다면, 그다음 응답(response)을 통해 데이터를 가져옵니다.
시스템에서는 요청과 응답이 수없이 많이 이루어지고 있어요.
우리가 요청을 보낸다면, 어떻게 요청을 보내는 걸까요?
주로 사용자 인터페이스(UI)를 사용하죠?
좀 더 쉽게 말하자면 우리는 홈 버튼을 눌러서 메인페이지로 이동하기도 하고,
입력 또는 확인 버튼을 누르면 회원 가입이 완료된다던지, 검색을 하게 된다던지 버튼과 창을 이용하죠.
즉, 이들의 구성을 말하는 사용자 인터페이스를 통해 간접적으로 요청을 하게 됩니다!
이 데이터 요청이 원활히 이루어지기 위해 개발자들이 어떤 방식으로 응답할 것인지, 어떤 데이터로 응답할지 설계하게 되겠죠?
학생분들 혹시 postman 사용해 보신 적 있으신가요?
시스템에서 처리되는 여러 데이터 통신과 그 데이터들을 시연해 보고 가시적으로 보여주기도 하는 도구라고 보시면 좋을 거 같습니다..!
개발자분들 테스트하실 때 많이 사용해 보셨을 거예요
처참한 UI, 스크립트 없이(....) 개발할 때도 진짜 도움 많이 됩니다...! 제가 그랬었습니다
위 예시는 웹 페이지 자체를 그냥 로딩한 거나 다름없습니다!
사실 요청과 응답으로 전송되는 데이터 폼은 json이 가장 많을 거예요.
어떤 A라는 메소드의 요청과 호출 경로(url입니다)를 GET(POST) 옆에 입력한다면
A라는 메소드가 응답하는 데이터들을 볼 수 있는 것이죠!
이와 비슷한 여러 가지 도구들을 통해 API(주로 REST API)를 테스트해 보곤 합니다.
API가 특정 사용자 정보를 가져달라고 할 수도 있고
그냥 사용자를 생성해 달라고 할 수도 있죠.
(API가 데이터 통신의 의미를 가지고 있겠군요.)
이게 바로 요청과 응답의 데이터 교환이 원활한 지 체크하는 테스트가 되는 것이죠!
그래서 엔지니어 분들이 API 테스트를 진행한다고 표현하는 것 같습니다.
위와 같은 도구를 이용한다면
개발자분들은 http 통신 프로토콜 아니면 url로 전달하는 파라미터 값에 주시할 수 있고,
테스트 엔지니어 분들은 전달되는 API가 문제가 없는지, 데이터 또는 기능 중심으로 살펴볼 수 있겠군요.
이 표현이 아주 정확하다고 볼 수는 없지만, 요청은 주로 사용자 인터페이스 뒤에 있는 프론트 to 프론트
또는 프론트 to 백엔드 방향으로 진행되는 경우가 많습니다...!
반대로 응답을 어떻게 할 것인지 결정하는 곳은 프론트 to 프론트, 백엔드 to 프론트
백엔드에서 많이 결정하고 만들고 생성합니다.
백엔드가 서버(또는 데이터를 가지고 있는 곳)와 가장 긴밀하게 연결될 수 있기 때문이에요.
그냥 단순하게 예를 들자면, <code=3인 사용자의 성별을 알려줘>라고 요청을 보냈을 때,
정확하게 3번 유저의 성별을 수신하는지 테스트하는 겁니다.
어떤 요청에 알맞지 않은 값으로 응답을 한다거나, 응답은 왔는데 그 안에 데이터는 없고 빈 껍데기(...)인
상태로 응답이 오기도 하거든요...
예외 처리를 잘해놓는다면 괜찮을지 몰라도, 빈 껍데기 상태의 데이터는 사실 매우 매우 치명적인 문제로 번질 수가 있습니다.
테스트.... 해야겠죠? ㅎㅎ
해야 하는 건 알겠는데, 혼자서 api 호출하기를 일일이 하기 힘든 상황이라서
테스트하다가 지치는 상황이 발생했습니다...(^^);
그래서 조금 찾아보다가 알아낸 게 있는데요,
npm을 활용하는 겁니다..!
npm은 간단히 말하면 프로젝트 내에서 자주 사용하는 명령어를 스크립트로 정의하고 실행할 수 있는 기능을 제공한다고 합니다...!
스크립트나 명령어나.... 흠....
............
사실 필요해서 설치만 했지 더 알아봐야겠습니다....
흠흠 아무튼, 아래 사진 참고하시면 조금 이해가 쉬우시지 않을까요?
사실 npm(Node Package Manager) 아니라
Newman을 활용했다고 보는 게 맞는 것 같습니다!
이 Newman은 Postman을 통해 작성된 테스트를 자동화하여 반복적으로 실행할 수 있다고 해요!
처음 설명을 듣고는 이게 Postman과 연계되는 시스템인가...?라고 생각했습니다.
다만 그런 것보다는, 형체가 굉장히 모호하더라고요.
일단 사용자 인터페이스를 따로 제공하지 않기 때문에, 명령어를 적극 활용해야 합니다..!
<newman run ocr_collection.json>
이런 식으로
명령어로 API 호출을 Newman을 통해 실행할 수 있습니다.
커맨드라인에 명령어 한 줄로 api테스트를 할 수 있는 것이네요!
Postman의 UI를 따로 사용하지 않아도 된다는 장점 또한 있겠죠?
그리고 이 Newman의 활용을 위해서는 Node.js를 필수적으로 설치해야 하구요!
조금 더 사용방법을 배워보고 싶은 내용이더라구요.
확실히 업무 자동화 역량이 늘어나면서
사용할 수 있는 편리한 도구가 정말 많아진 것이 느껴지더라고요
테스트 자동화 솔루션들이 속속들이 등장하기 시작했고,
AI도 흡수하였는지 UI 포인트를 자동 인식해 주는 솔루션도 등장했다고 합니다..! 헉
생각보다 어려운 작업은 아닐 수도 있지만
이러한 업무 분야가 발달한 이유가 있지 않을까요?
이것을 CI/CD 도구 혹은 파이프라인이라고 할까요?
도구라는 게 내 것으로 의식되기도.... 하고 사용하기 편해서 저도 좋아하지만
이왕이면 아날로그식 업무가 조금 더 호감이 가시는 분들도 계시지 않으신가요?
저도 마찬가지지만 뭐든 정확한 걸 좀 더 선호하는 느낌이랄까?
시대에 맞춰서 여러 솔루션들도 범용성을 잠시 놔두고 정밀도에 대해 신경 써야 하지 않을까 생각됩니다.
뭐 미천한 제 의견입니다 ><