brunch

You can make anything
by writing

C.S.Lewis

by 호뎡 Sep 03. 2024

실제 사용자 없이 기능을 실행하고 테스트하는 방법

사용자 인터페이스가 깔끔하고 멋질수록  그 속을 의심하라


여러분, 되로 주고 말로 받는다는 말 많이 들어보셨죠?


작은 것을 제공하면 크게 돌려받는다는 의미를 내포하고 있는데요,

여기서는 주고받는 것이 물품으로 비유되고 있지만 다른 것도 충분히 들어갈 수 있지 않을까요?


뭐 칭찬과 같은 언어적 표현이나

용서, 자비, 공감 등 감정적 표현도 돌려받을 수 있겠구요.


어떤 신호나 데이터(?)도 이에 해당할 수 있지 않을까요? 약간 무리수를 두는 것 같긴 한데....


작은 신호 하나만 보내면

생각보다 많은 양의 데이터를 전달받을 수 있잖아요!


어떤 데이터를 요청(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 도구 혹은 파이프라인이라고 할까요?

도구라는 게 내 것으로 의식되기도.... 하고 사용하기 편해서 저도 좋아하지만


이왕이면 아날로그식 업무가 조금 더 호감이 가시는 분들도 계시지 않으신가요?

저도 마찬가지지만 뭐든 정확한 걸 좀 더 선호하는 느낌이랄까?


시대에 맞춰서 여러 솔루션들도 범용성을 잠시 놔두고 정밀도에 대해 신경 써야 하지 않을까 생각됩니다.

뭐 미천한 제 의견입니다 ><


작가의 이전글 SW테스트 무한루프에 빠졌다면 (Automation)
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari