이번주에는 채팅기능에 유저 보상에 대한 팝업을 띄우는 작업을 위주로 진행했다.
현재 서비스에 sendbird를 활용하여 채팅기능이 구현되어있고, 좋지않은 유저 경험을 한 유저에게는 채팅방 진입 시 해당 보상 타입에 따라 다른 보상 안내 팝업을 보여주는 것이 목적이었다.
이번 에픽은 사이즈를 작게 나누기 위해 1. 허위 프로필로 적발된 유저로 인한 보상
을 먼저 작업하고 이어서 2. 상대로부터 응답이 없는 경우에 대한 보상
작업을 추가로 진행하였는데, 사실상 2번에 해당하는 내용도 1번 작업을 진행하면서 거의 마쳐둔 상태였고 보상에 대한 데이터만 어떤식으로 받게될지만 결정되면 쉽게 끝날것이라 예상한 에픽이었다.
그러나.. 이번에도....
예상치못한 변수 발생으로 인해 우당탕탕 그 자체가 되어버렸다.
sendbird 상태 업데이트와 관련하여 기존에 존재하던 에러들이 있었다.
이번 에픽은 상대유저가 허위 프로필일 경우 or 유저가 대화 열기에 재화를 소모했으나 상대로부터 일정시간 이상 답변을 얻지 못했거나 말도없이 대화를 나갔을 경우 보상을 안내하는 팝업을 보여주고 보상하기 버튼 클릭 시 보상을 지불하고 대화방을 종료시키는 작업만 추가하면 되는 내용이었다.
하지만 (아무도 몰랐던) 기존 sendbird 관련 이슈들이 있다보니까 작업을 하면서 계속해서 뭐지? 어? 음? 왜 안돼? 하고 이슈를 추적하는 시간이 압도적으로 길었고 그만큼 에픽 작업 기간이 늘어졌다. 했고 사실상 1, 2 두 에픽을 합쳐서 작업 기간은 2d정도 사용한 것 같은데 함께 작업한 백엔드 개발자분과 함께 나머지를 이슈 원인을 파악하고 해소하느라 작업 완료까지 일주일정도 걸린 것 같다.
우선 서버에서도 채팅방에 대한 상태값을 제대로 업데이트하고 있지 않은 상태였는데, 백엔드 개발자분도 이게 기발하게 안될 것 같으면서도 잘 돌아가고 있는 그런 상황이었다며 신기해했다.
그리고 sendbird + server가 따로 소통하고 sendbird + client, client + server가 소통하는 방식이 한가지 기능에 혼재되어 있다보니 데이터나 각종 액션에 대한 이벤트가 마음대로 잘 핸들링되지가 않아서 더 힘들었던 것 같다.
sendbird에서는 메세지 리스트와 채널 리스트 등을 가져와 사용하고 서버에서는 유저 정보와 대화방 정보를 가져와 참조하고 있고, 또 채팅방을 나가거나 들어갈 때에는 sendbird 채널에 입장하고 나가기 + 서버에 데이터상 관계 업데이트를 위해 해당 상태 업데이트를 서버에 알려주기 등등 하나의 액션에도 고려해야하는 부분이 많아 이슈 해소에 시간이 오래 걸릴 수밖에 없었다.
지난 에픽 회고에서 개인 액션 아이템으로 설정했던, "배포 전 테스트 & 롤백 & 배포 후 테스트 시나리오를 작성하기" 를 이번에 잘 실천했다.
1번 에픽에 한해서도 단순히 허위 프로필로 적발된 유저와 연결된 대화방은 대화 종료
상태가 되고, 안내 팝업이 보여진다
라는 간단해보이는 내용임에도 테스트해야하는 시나리오가 네 가지였고 시나리오 안에서 챙겨야하는 세부 단계와 디테일까지 더하면 더 많은 경우의 수가 생겼다.
이렇게나 단순해보이는 에픽임에도 불구하고 테스트 시나리오는 항상 단순하지 않다는 것을 저번 에픽에 이어 이번 에픽에서도 깨달았다.
테스트 시나리오
- A 대화 신청 → B 수락 → A 대화방 오픈(재화 사용) → B 악성유저 적발 → A 대화방에 허위유저 보상 안내 노출 (보상내역O)
- A 대화 신청 → B 수락 → B 대화방 오픈(재화 사용) → B 악성유저 적발 → A 대화방에 일반종료 안내 노출 (보상내역O)
- A 대화 신청 → B 수락 → A 대화방 오픈 → B 일반 종료 실행 → 일반종료 안내 노출 (보상내역X)
- A 대화 신청 → B 수락 → A 대화방 오픈 → B 허위유저 적발 → A 브레이즈 노티 수신
발생 시 크리티컬한 이슈
- 상대가 허위유저가 아님에도 불구하고 허위유저 적발로 인해 보상되었다는 안내가 뜬다. (4번 시나리오로 확인)
- 허위유저 적발로 인해 보상되었음에도 불구하고 해당 안내가 뜨지 않는다. (1, 2번 시나리오로 확인)
- 허위유저 적발로 인해 보상받았음에도 불구하고 스토어에 내역이 뜨지 않는다(보상되지 않음) (1, 2번 시나리오로 확인)
QA 엔지니어가 보신다면 더 많은 경우의 수가 치밀하게..? 나왔겠지만, 내가 생각할 수 있는 케이스에 대한 시나리오를 작성하고 안정적으로 작동하는지에 대한 테스트를 진행하는 것이 메이커로서 안정성을 챙기기 위한 필수 업무임을 한번 더 느꼈다.