해피 패스

Happy Path

개념

사용자가 아무 문제도 만나지 않았을 때 흘러가는 기본 경로로, 시안과 기획서에 가장 먼저 그려지는 줄기입니다.

등장 배경

화면을 그리는 사람과 만드는 사람 사이에서 오래 반복되던 실랑이가 있었습니다. 시안에는 일이 잘 풀리는 경우만 그려져 있는데, 코드는 잘 풀리지 않는 경우까지 전부 정해 줘야 돌아간다는 점입니다.

페이지덱에서도 그랬습니다. 민서가 파일 첨부 화면을 세 장으로 그려 넘겼습니다. 파일을 고르고, 올라가는 막대가 차고, 문서 안에 붙는 장면입니다. 태오가 만들다가 물었습니다. 파일이 50메가를 넘으면 무엇을 보여 주는지, 올라가는 도중에 연결이 끊기면 처음부터 다시인지, 열람 권한만 있는 사람이 이 화면에 들어오면 어떻게 되는지. 셋 다 시안에 없었고 개발 일정에도 없었습니다.

이런 일이 반복되면서, 시안에 그려진 그 경로를 따로 부르는 말이 생겼습니다. 이름이 붙자 대화의 모양이 달라졌습니다. 전에는 무엇이 빠졌는지 하나씩 찾아내야 했지만, 이제는 시안을 받은 자리에서 이것이 해피 패스뿐인지 아닌지를 먼저 묻습니다. 빠진 것을 세는 일이 빠졌다는 사실을 확인하는 일보다 쉬워졌습니다.

작동 방식

한 과업을 끝내는 길에서 갈림길마다 잘 풀리는 쪽만 골라 이은 것이 해피 패스입니다. 로그인돼 있고, 권한이 있고, 입력이 규격에 맞고, 서버가 답하고, 잔액이 남아 있는 상태로 끝까지 갑니다.

그리는 순서는 네 단계입니다.

  1. 과업 하나와 그 과업이 끝났다고 할 상태를 정합니다. 문서를 공유한다면 끝난 상태는 상대가 링크를 받고 열 수 있게 된 시점입니다.
  2. 그 사이에 거치는 화면과 조작을 한 줄로 늘어놓습니다. 문서 열기, 공유 누르기, 상대 고르기, 권한 고르기, 보내기까지 다섯 칸입니다.
  3. 칸마다 참이어야 하는 전제를 적습니다. 로그인돼 있을 것, 이 문서의 주인일 것, 상대가 우리 서비스를 쓰고 있을 것, 요금제가 외부 공유를 허용할 것 같은 것들입니다.
  4. 적어 둔 전제를 하나씩 뒤집습니다. 뒤집은 결과가 나머지 경로이고, 대개 해피 패스 한 줄에 그런 갈래가 예닐곱 개씩 달립니다.

4번이 이 말이 일하는 자리입니다. 해피 패스 자체는 그리기 쉽고 빠뜨릴 일도 없습니다. 아무도 잘 풀리는 경우를 잊지 않기 때문입니다. 값어치는 그 한 줄을 기준선으로 놓고 벗어나는 경우를 세는 데서 나옵니다. 엣지 케이스는 드물게 생기지만 정의는 해 둬야 하는 경계 상황을 가리키는데, 기준선이 없으면 이것을 셀 수가 없습니다. 무엇에서 벗어났는지를 말할 수 없기 때문입니다.

벗어난 경우를 화면으로 옮기는 일은 UI 상태가 맡습니다. 같은 요소가 상황에 따라 달라지는 모습을 가리키는 말입니다. 전제가 깨지면 대개 오류 상태나 빈 상태가 그 자리를 채웁니다. 앞의 파일 첨부 화면이라면 용량 초과 안내, 연결 끊김 안내, 권한 없음 안내가 세 장 더 필요하다는 뜻입니다.

쓰이는 곳

이 말이 가장 자주 나오는 자리는 시안을 넘기고 받는 리뷰입니다. 받는 쪽이 해피 패스만 있는지를 묻고, 넘기는 쪽이 어디까지 그렸는지를 답합니다. 다음 순서로 개발 착수 전에 갈래를 세고, 인수 조건을 적을 때 그 갈래마다 한 줄씩 조건을 답니다. 인수 조건은 이 작업이 끝났다고 인정받기 위한 조건인데, 해피 패스만 적힌 인수 조건은 검수를 통과해도 사고가 남습니다.

품질 보증에서는 판정 기준으로 쓰입니다. 해피 패스가 막히면 그 기능은 출시할 수 없고, 해피 패스만 통과한 상태는 출시해도 된다는 뜻이 아니라 시험을 시작해도 된다는 뜻입니다. 테스트 목록은 대개 해피 패스 한 줄에서 갈라져 나온 갈래를 따라 적힙니다.

한 가지 함정은 보여 주는 자리에 있습니다. 시연과 영업 자리에서는 해피 패스만 돌립니다. 짧은 시간에 값어치를 보여야 하니 당연한 선택이지만, 보는 사람은 그 경로가 제품의 전부라고 읽습니다. 수아가 시연한 대로 따라 하던 고객이 첫 주에 권한 없음 안내를 만나면 시연에서 본 제품과 다른 제품을 쓰는 기분이 됩니다. 그래서 시연 대본을 짤 때 해피 패스에서 몇 발짝 벗어난 장면을 한두 개 섞어 두기도 합니다. 권한이 없는 사람이 링크를 열었을 때 무엇이 보이는지를 굳이 보여 주는 식입니다. 시연 시간이 늘지만 도입 첫 주에 돌아오는 질문이 줄어듭니다.

실무 용례

"이 시안 해피 패스만 있는데요. 50메가 넘는 파일 올리면 뭐가 뜨죠?"

잘 풀린 경우만 그려져 있으니 나머지 화면을 달라는 요구입니다.

"일단 해피 패스부터 뚫고 예외 처리는 다음 스프린트에 붙이죠."

기본 경로를 먼저 동작하게 만들고 갈래는 나중에 채우자는 일정 제안입니다.

"데모는 해피 패스로만 돌릴 테니까 권한 얘기는 그 뒤에 하죠."

시연에서는 잘 풀리는 경로만 보여 주겠다는 뜻입니다.

민서는 시안을 넘길 때 첫 장에 해피 패스를 한 줄로 깔고, 그 아래에 벗어나는 경우를 칸마다 붙여 둡니다. 용량 초과, 연결 끊김, 권한 없음처럼 이름만 적힌 칸도 있고 화면이 그려진 칸도 있습니다. 이름만 적힌 칸을 그대로 두는 것이 이 방식의 핵심입니다. 그려 넣지 못했다는 사실 자체를 태오가 보게 만들려는 것입니다.

전에는 이런 칸이 아예 없었고, 태오는 없는 화면을 스스로 정해 만들었습니다. 그렇게 만든 안내 문구가 화면마다 달라서 나중에 한 번에 손봐야 했습니다.

흔한 오해

해피 패스를 먼저 그리는 것 자체를 게으름으로 읽는 경우가 있습니다. 예외를 안 봤다는 증거처럼 보이기 때문입니다. 순서로는 오히려 맞습니다. 기준선이 있어야 벗어난 경우를 셀 수 있고, 처음부터 모든 갈래를 함께 그리면 어느 것이 주된 길인지 흐려집니다. 문제는 그리는 데 있지 않고 거기서 멈추는 데 있습니다. 멈춘 시안은 빠진 것을 말해 주지 않아서 개발자가 빠진 자리를 혼자 메우고, 그 결정이 시안에도 기획서에도 남지 않습니다.

해피 패스를 통과했으니 기능이 동작한다고 읽는 것도 흔합니다. 시험해 본 경로가 실제로 통과했으니 그렇게 보입니다. 하지만 사용자가 만나는 사고는 거의 전부 이 경로 밖에서 납니다. 첫 주에 들어오는 문의를 모아 보면 대개 권한, 용량, 중복, 끊긴 연결에 몰려 있습니다. 해피 패스 통과를 출시 기준으로 삼은 팀은 그 문의를 출시 뒤에 화면 만들기로 받습니다.

자주 헷갈리는 용어

용어무엇을 잘라 낸 것인가해피 패스와의 차이
태스크 플로우과업 하나만 남기고 나머지 과업을 잘라 냄자르는 기준이 범위입니다. 갈림길은 남아 있어서 실패하는 갈래도 그립니다. 해피 패스는 범위가 아니라 조건으로 자른 것이라 갈림길마다 잘 풀리는 쪽만 남습니다

같이 보면 좋은 페이지

마지막 업데이트 2026-09-16