첫 번째 불안정한 테스트 사례는 페이지에 표시되는 ‘land’와 ‘sea’ 팀 이름의 순서가 비결정적으로 나타나 테스트가 실패하는 문제였습니다. 이는 formatted_teams_helper
에서 기본 팀(primary team)이 명시적으로 설정되지 않아 발생하는 순서 문제였습니다. Chad는 초기에는 헬퍼 코드 자체를 수정하여 정렬을 강제하는 방안을 고려했으나, 기본 팀이 먼저 표시되어야 하는 비즈니스 로직을 보존하기 위해 테스트를 더 견고하게 작성하는 방향으로 선회했습니다. 즉, primary_team
속성을 명확히 설정하도록 테스트를 개선함으로써 순서 문제를 해결했습니다. 이 과정에서 AI 에이전트들은 처음에는 헬퍼 함수의 정렬을 제안했지만, 기본 팀의 순서 보존이라는 추가적인 맥락을 제공하자 테스트 수정 방향으로 전환하여 동일한 해결책에 도달했습니다.
두 번째 사례는 동일한 시작 시간을 가진 이벤트들의 표시 순서가 비결정적이어서 발생하는 불안정한 테스트였습니다. SummitPresenter#schedule
메서드에서 order_by_start_time
만으로는 동일 시간대 이벤트의 순서를 보장할 수 없다는 것이 문제의 핵심이었습니다. 해결책은 쿼리에 id
와 같은 보조 정렬 기준을 추가하여 항상 결정적인 순서를 보장하도록 하는 것이었습니다. 이 사례는 AI 에이전트가 초기 진단에서 정확한 원인(동일 시작 시간)을 파악했음에도, 화면 스크롤 문제로 인해 사용자가 이를 즉시 인지하지 못했던 흥미로운 상황을 보여주며, AI의 진단이 때로는 사용자보다 정확할 수 있음을 시사했습니다.
세 번째 사례는 백그라운드 작업 큐잉과 관련된 불안정한 테스트였습니다. 이 테스트는 특정 조건(Freshworks account ID, 도메인 존재, 스팸 아님, 일정 기간 이전에 처리됨)을 만족하는 기회(opportunity)에 대해서만 작업이 큐에 추가되어야 함을 검증했습니다. 문제는 distinct on
절과 데이터베이스의 자동 증가 ID가 결합되어, 테스트에서 예상한 특정 기회 객체가 아닌 다른 기회 객체가 큐에 추가될 수 있다는 점이었습니다. 해결책은 큐에 추가된 작업의 인수를 검사하여 Freshworks account ID
를 기준으로 일치 여부를 확인하는 방식으로 테스트를 개선하는 것이었습니다. 이는 객체 참조 대신 실제 비즈니스 속성을 기반으로 검증하는 것이 불안정한 테스트를 방지하는 데 효과적임을 보여줍니다.