메뉴

임시 메일과 테스트 환경: 메일 캡처 방법

테스트에서 외부 메일 서비스에 기대지 않고 발송된 편지를 직접 받아 검사하는 방법과, 병렬 실행에서 흔들리지 않게 만드는 요령을 정리합니다.

게시일

  • 테스트 자동화
  • 메일 수신

테스트에서 실제 메일 서비스를 거치는 일은 결과가 매번 달라지는 시험을 만드는 지름길입니다. 대신 발송된 편지를 우리가 통제하는 곳으로 받아 두고, 시험이 그것을 직접 읽게 만들 수 있습니다. 이 글은 그 구조를 왜 쓰는지와 어디서 흔들리는지를 다룹니다.

외부 메일 서비스에 기대면 왜 불안한가요?

첫째, 시험 결과가 우리 손 밖의 사정에 좌우됩니다. 상대 서비스가 느리면 시험이 느려지고, 잠시 막히면 이유 없이 실패합니다. 실패 원인이 우리 코드에 있는지 남의 서버에 있는지 구분할 수 없으면, 시험은 신뢰를 잃고 사람들은 빨간 표시를 무시하기 시작합니다.

둘째, 남의 수신함에 시험 편지가 쌓입니다. 실제 주소를 쓰면 시험용 편지가 진짜 사용자의 편지와 섞이고, 개발자 컴퓨터에 남은 인증 링크가 나중에 진짜 계정을 건드릴 수도 있습니다.

셋째, 시험을 돌리려면 인터넷이 필요합니다. 비행기 안이나 사내망이 막힌 환경에서 돌릴 수 없는 시험은 결국 돌리지 않게 됩니다.

넷째, 같은 시험을 여러 번 돌릴 때 이력이 남지 않습니다. 외부 서비스의 수신함에서는 보낸 사람도, 도착 시각도, 본문 형식도 우리가 마음대로 볼 수 없습니다.

편지를 우리 쪽으로 받는 방법

가장 단순한 방법은 보내는 쪽이 바라보는 수신 지점을 바꾸는 것입니다. 프로그램의 설정에서 메일 발송 지점을 우리가 띄운 수신기로 돌려놓으면, 편지는 밖으로 나가지 않고 우리 컴퓨터 안에서 끝납니다. 받은 편지는 파일로 남거나 메모리에 쌓이고, 시험은 그 목록을 읽습니다.

이렇게 하면 인터넷이 없어도 시험이 돌아가고, 편지 하나가 도착하기까지 기다릴 필요도 없습니다. 대신 확인해야 할 것은 우리 서버의 발송 코드가 아니라 편지의 내용과 흐름입니다. 발송 실패 처리나 재시도 같은 바깥 경로의 문제는 이 방식으로는 잡히지 않으므로, 그 부분은 별도의 시험으로 나눠 두는 편이 좋습니다.

일부러 실패를 만들어 보는 시험도 필요합니다. 수신 지점을 꺼 두고 발송을 시도하면, 실패를 알아채는지와 사용자에게 어떤 안내가 가는지를 확인할 수 있습니다. 성공 경로만 시험한 발송 코드는 운영에서 처음 실패를 만납니다.

수신 지점을 쓰는 방식에는 한 가지 주의할 점이 더 있습니다. 편지가 정말로 밖으로 나가지 않는다는 것을 확인해야 합니다. 설정이 한 군데라도 남아 있으면 시험 편지가 실제 주소로 발송되고, 그 사실을 아무도 모르는 채 지나갑니다. 수신기를 켠 상태에서 목록이 비어 있는지 먼저 보고, 발송 뒤에 그 목록에 편지가 들어왔는지 확인하는 순서를 지키면 이 사고를 막을 수 있습니다.

실제 주소를 쓰는 시험과 어떻게 나누나요?

모든 시험을 가짜 수신으로 돌릴 수는 없습니다. 가끔은 진짜 메일 서비스를 거쳐야만 알 수 있는 것이 있습니다. 예를 들어 발송 영역의 인증 설정이 제대로 붙었는지, 큰 첨부가 거절되지 않는지는 실제 경로를 거쳐야 보입니다.

그래서 시험을 두 층으로 나눕니다. 대부분의 시험은 우리 쪽 수신기로 돌리고, 실제 경로를 확인하는 시험은 따로 표시해 두고 자주 돌리지 않습니다. 이렇게 하면 일상적인 시험은 빠르고 안정적으로 유지되고, 실제 경로의 문제는 정해진 시점에 확인됩니다.

어느 쪽에 무엇을 넣을지 정하는 기준도 단순합니다. 우리 코드가 만든 내용을 확인하는 일은 우리 쪽 수신기로 충분하고, 우리 손을 떠난 뒤의 일을 확인하는 일은 실제 경로가 필요합니다. 이 경계를 흐리게 두면, 매일 돌리는 시험에 실제 경로가 섞여 들어와 결과가 들쭉날쭉해집니다.

우리 도구에서는 어떻게 확인하나요?

임시 메일은 발송된 편지가 실제로 어떤 모습으로 도착하는지 눈으로 확인하고 싶을 때 쓸 수 있습니다. 주소를 하나 만들고 그 주소로 편지를 보내면, 받은편지함에서 제목과 본문과 첨부 목록을 그대로 볼 수 있습니다. 시험이 읽어 낼 형식을 정하기 전에, 사람이 먼저 결과를 보는 단계로 적합합니다.

여기서 만드는 주소는 시험과 확인을 위한 것이며, 실제 사람의 신원이나 연락 수단으로 쓸 수 없습니다.

자동화에 넣을 때는 이 화면을 사람이 열어 보는 단계를 전제로 삼지 마세요. 시험은 스스로 값을 읽어 내야 하고, 사람은 실패했을 때만 개입해야 합니다.

국가와 지역 설정도 함께 시험합니다

같은 발송 코드라도 지역 설정에 따라 결과가 달라집니다. 국가별 주소 형식에서 다루는 표기 규칙이 지역마다 다르기 때문에, 여러 지역을 대상으로 한다면 지역별로 한 번씩은 같은 시나리오를 돌려 보는 편이 좋습니다. 언어 설정에 따라 편지의 문구와 날짜 표기가 달라지는 것도 함께 확인해야 합니다.

개발자를 위한 메모: 병렬 실행과 실패 조사

  • 주소를 하나만 두고 여러 시험을 동시에 돌리면 서로의 편지를 가져갑니다. 시험마다 주소를 나누고, 주소를 그 시험의 식별자로 씁니다.
  • 수신기를 여러 시험 인스턴스가 함께 쓰면 어느 인스턴스가 어느 편지를 받을지 알 수 없습니다. 인스턴스마다 자기 수신기를 두거나, 주소로 편지를 걸러 내는 규칙을 둡니다.
  • 편지를 고를 때 목록의 첫 번째를 집지 않습니다. 보낸 사람이나 제목 같은 고정된 조건으로 고릅니다.
  • 실패한 시험은 원본 편지를 그대로 남깁니다. 요약만 남기면 나중에 원인을 찾을 수 없습니다.
  • 보관한 편지는 일정 기간이 지나면 지웁니다. 시험용 값이라도 그대로 쌓이면 관리 대상이 됩니다.
  • 발송 코드가 수신 지점을 설정에서 읽게 만듭니다. 주소를 코드에 박아 두면 환경을 옮길 때마다 고쳐야 합니다. 확인 메일의 코드를 읽어 내는 단계는 인증 코드 자동화에서 이어집니다.
  • 수신 목록을 비우는 시점을 정합니다. 시험 시작 전에 비우면 이전 실행의 편지가 섞이지 않습니다.
  • 편지 본문의 형식이 바뀌면 시험이 먼저 실패하게 만듭니다. 조용히 다른 값을 읽는 것이 가장 나쁜 결과입니다.

다음 단계

지금 시험 중에 외부 주소로 편지를 보내는 것이 있다면, 그 부분만 먼저 우리 쪽 수신기로 바꿔 보세요. 바꾼 뒤에는 발송 코드가 실패를 제대로 알리는지도 한 번 확인해 두는 편이 좋습니다. 사람이 눈으로 결과를 보고 싶다면 임시 메일에서 주소를 만들어 같은 편지를 보내 보시길 권합니다.

이어 읽기

임시 메일 (일회용 이메일·10분 메일) 관련 글