본문으로 이동
토스ㅣSLASH 21 - 테스트 커버리지 100%
컨퍼런스

토스ㅣSLASH 21 - 테스트 커버리지 100%

SLASH 토스 · YouTube

원문 보기

AI 핵심 요약

Kotlin과 Spring WebFlux로 금융 정보를 제공하는 서버를 개발하며, 테스트 커버리지 100%가 현실적인지 확인하기 위해 약 50%에서 시작해 두 달 동안 테스트를 보강했다. JaCoCo 커버리지를 빌드 조건으로 걸어 100%를 유지했고, 테스트가 느려지자 애플리케이션 컨텍스트 로딩과 무거운 목킹을 줄이고 병렬 실행을 적용해 실행 시간을 개선했다. 높은 커버리지는 배포와 리팩터링에 대한 부담을 낮췄지만, 테스트 자체의 오류나 요구사항 오해까지 막지는 못했다. 이를 보완하기 위해 PIT 변이 테스트, 테스트에서 스펙 문서를 생성하는 도구, Pact 기반 컨슈머 주도 계약 테스트를 검토하거나 적용한 경험을 공유했다.

  • 커버리지 기준을 빌드 실패 조건으로 설정하면 개발자의 의지에만 기대지 않고 높은 수준을 유지할 수 있다.
  • 테스트가 느려지면 프로파일러로 병목을 찾고, 불필요한 애플리케이션 컨텍스트 로딩과 무거운 목킹을 줄여라.
  • Kotlin의 엘비스 연산자처럼 컴파일러가 추가 바이트코드를 만드는 문법은 인스트럭션 커버리지에서 예상 밖의 미커버 분기를 만들 수 있다.
  • 라인·인스트럭션 커버리지가 높아도 테스트가 충분하다는 뜻은 아니므로, 변이 테스트와 컨슈머 주도 계약 테스트로 빈틈을 보완할 수 있다.

소개

Kotlin으로 작성한 스프링 프레임워크 기반 서버 애플리케이션의 테스트 커버리지. 그것을 100%까지 올리고 1년 6개월 동안 유지하면서 배운 점과 테스트 개선 방법에 대한 고민을 공유합니다. 이응준 / 토스뱅크 Server Developer 토스 개발자 컨퍼런스 SLASH에 대한 자세한 정보는 👉🏻 https://toss.im/slash-21 컨퍼런스 및 세션에 대한 문의는 👉🏻 slash@toss.im #토스 #개발자컨퍼런스 #SLASH

비슷한 학습 자료

컨퍼런스 SLASH

매일 45만 개의 테스트를 가장 빠르고, 매끄럽게 처리하는 방법은 무엇일까요? Playwright로 구축한 토스페이먼츠의 테스트 자동화 플랫폼을 소개합니다. 박정웅 / Node.js Developer 토스 개발자 컨퍼런스 SLASH에 대한 자세한 정보는 👉🏻 https://toss.im/slash-24 컨퍼런스 및 세션에 대한 문의는 👉🏻 slash@toss.im 토스에 합류하고 싶다면 👉🏻 https://toss.im/career/jobs #토스 #개발자컨퍼런스 #SLASH #SLASH24 #nodejs #playwright #토스페이먼츠 유의 사항 *본 발표자료의 저작권은 연사에 있으며, 저작권자의 사전 서면 동의 없이 자료의 일부 또는 전부를 이용하거나 배포할 수 없습니다. *또한 해당 자료를 복제하여 SLASH 행사 홈페이지를 제외한 온라인상에 게재하는 행위는 연사가 동의한 저작권 및 배포전송권에 위배됩니다. *토스가 다루는 모든 개인정보는 고객에게...

프론트엔드 소프트웨어 테스트

컨퍼런스 SLASH

’연결’의 가치는 서비스 그리고 사용자에게 얼마나 큰 편익을 줄 수 있을까요? 프로그램에 대한 섬세한 관찰을, 서비스 안정성과 품질 향상으로 연결한 과정을 소개합니다. 구태진 / 토스 Server Developer 발표 자료 👉🏻 https://bit.ly/3NggaUU 토스 개발자 컨퍼런스 SLASH에 대한 자세한 정보는 👉🏻 https://bit.ly/43kW3tO 컨퍼런스 및 세션에 대한 문의는 👉🏻 slash@toss.im 토스에 합류하고 싶다면 👉🏻 https://toss.im/career/jobs #pinpoint #kotlincoroutine #serverdeveloper #토스 #개발자컨퍼런스 #SLASH *본 발표자료의 저작권은 연사에 있으며, 저작권자의 사전 서면 동의 없이 자료의 일부 또는 전부를 이용하거나 배포할 수 없습니다. *또한 해당 자료를 복제하여 SLASH 행사 홈페이지를 제외한 온라인상에 게재하는 행위는 연사가 동의한...

백엔드 개발 도구

컨퍼런스 SLASH

우리가 만드는 코드가 처음부터 완벽할 수는 없습니다. 하지만 서비스가 폭발적으로 성장하려고 할 때 발목을 잡아선 안 되죠. 하루 이틀 운영되고 끝인 게 아닌, 오래 살아 있을 수 있는 좋은 소프트웨어는 어떤 모습일까요? 김재민 / 토스 Server Developer 발표 자료 👉🏻 https://bit.ly/3QkUCWs 토스 개발자 컨퍼런스 SLASH에 대한 자세한 정보는 👉🏻 https://toss.im/slash-22 컨퍼런스 및 세션에 대한 문의는 👉🏻 slash@toss.im #토스 #개발자컨퍼런스 #SLASH

개발 · 프로그래밍 기타

컨퍼런스 SLASH

서버 인프라를 효과적으로 트러블 슈팅할 수 있도록 노력한 경험과 모니터링 인프라를 운영한 경험을 공유합니다. 이재성 / 토스 DevOps Engineer 토스 개발자 컨퍼런스 SLASH에 대한 자세한 정보는 👉🏻 https://toss.im/slash-21​ 컨퍼런스 및 세션에 대한 문의는 👉🏻 slash@toss.im #토스​ #개발자컨퍼런스​ #SLASH

데브옵스 · 인프라

컨퍼런스 SLASH

Active-Active 데이터센터 운영, Kubernetes와 Istio Service Mesh 운영, API-Gateway, Kafka, Redis, Monitoring Stack 등 토스에서 사용하는 전반적인 기술과 시스템 구성을 공유합니다. 이항령 / 토스 Server Platform Team Leader 토스 개발자 컨퍼런스 SLASH에 대한 자세한 정보는 👉🏻 https://toss.im/slash-21​ 컨퍼런스 및 세션에 대한 문의는 👉🏻 slash@toss.im #토스​ #개발자컨퍼런스​ #SLASH

백엔드 데이터베이스 데브옵스 · 인프라

컨퍼런스 SLASH

토스에서 경험한 사이트 신뢰성 엔지니어링 사례를 공유합니다. 조규희 / 토스 Site Reliability Engineer 토스 개발자 컨퍼런스 SLASH에 대한 자세한 정보는 👉🏻 https://toss.im/slash-21 컨퍼런스 및 세션에 대한 문의는 👉🏻 slash@toss.im #토스 #개발자컨퍼런스 #SLASH

데브옵스 · 인프라