[Problem Solving] 테스트 코드를 이용한 인증 로직 개선

 

UI 개발을 하면서 불필요하게 사용되는 시간을 아끼고 개발 생산성을 향상시키고자 한 노력을 작성하고자 합니다.

UI 개발을 하면서 불필요하게 사용되는 시간을 아끼고 개발 생산성을 향상시키고자 한 노력을 작성하고자 합니다.

1. 목표

DaouOffice 앱에서 인증 및 재인증 과정에서 빈번하게 이슈가 발생하였으며, 이를 근본적으로 해결하자는 요구가 제기되었다.
따라서 인증 과정의 오류를 최소화하고, 신뢰성을 높이기 위해 철저한 테스트 및 코드 검증을 목표로 하였다.

2. 이유

DaouOffice는 B2B 기반 그룹웨어 서비스로, 한 계정이 보유한 다양한 설정값이 존재한다.
이러한 다수의 설정값 조합으로 인해 예상치 못한 오류가 발생할 가능성이 높았다.
특히 인증 및 재인증 과정에서 설정값에 따른 변수를 충분히 고려하지 못한 것이 주요 원인이었다.
따라서 모든 설정값 조합을 철저히 검증할 수 있는 테스트 환경을 구축할 필요가 있었다.

3. 실행

1. 인증 과정 분석

  • 인증 과정에서 호출되는 API 약 9개와 response로 전달되는 약 106개의 프로퍼티를 정리하였다.

2. 테스트 코드 작성

  • 106개 프로퍼티를 기반으로 유의미한 조합을 도출하여 약 500가지의 테스트 케이스를 정의하였다.
  • 예상 가능한 모든 설정값 조합을 테스트할 수 있도록 테스트 범위를 설정하였다.

3. Test Double을 활용한 테스트 환경 구축

  • Mock과 Stub을 이용하여 테스트를 위한 Test Double 객체를 구성하였다.
  • given - when - then 패턴을 기반으로 테스트 코드를 체계적으로 작성하였다.

4. 코드 커버리지 분석 도구 개발

  • 테스트 코드의 신뢰성을 높이기 위해 코드 커버리지 분석 도구를 구현하였다.
  • macOS에서 실행 가능한 SwiftUI 기반의 코드 커버리지 분석 도구를 개발하여, 테스트 코드의 적용 범위를 정량적으로 평가할 수 있도록 하였다.

4. 결과

  • 월간 평균 12건 발생하던 인증 관련 이슈가 1건으로 감소하였다.
  • 사전에 정의된 500여 개의 인증 테스트 케이스를 활용하여, 사용자의 정보만으로 문제의 원인을 빠르게 추적할 수 있게 되었다.
  • 코드 커버리지 분석 도구를 활용하여 테스트 신뢰도를 높이고, 향후 추가 인증 로직에도 검증 체계를 지속적으로 적용할 수 있도록 개선하였다.