Upgrade to Pro — share decks privately, control downloads, hide ads and more …

조합이폭발하는디자인시스템이걸눈으로도테스트하라고요

Avatar for giljongyu giljongyu
October 25, 2026

 조합이폭발하는디자인시스템이걸눈으로도테스트하라고요

feconf2026

Avatar for giljongyu

giljongyu

October 25, 2026

Other Decks in Programming

Transcript

  1. 시각 회귀 테스트는 코드 변경 전과 후의 화면 스크린샷을 비교하여

    의도하지 않은 UI 디자인 변경이나 오류를 감지하는 테스트
  2. 시각 회귀 테스트는 코드 변경 전과 후의 화면 스크린샷을 비교하여

    의도하지 않은 UI 디자인 변경이나 오류를 감지하는 테스트
  3. 코드를 바꿨을 때 어떤 시각적 변경이 일어나는지 바로 알 수

    있어요 의도한 변경이라면 베이스라인을 업데이트하여 새로운 기준으로 만들어요 코드 수정으로 인해 UI의 의도치 않은 변화가 생기는 회귀 문제를 차단해요
  4. 느려요 테스트를 위해 실제 웹브라우저가 필요해요 스냅샷마다 격리된 환경을 제공하기

    위한 환경 설정 비용이 발생해요 화면이 안정화 될 때까지 기다렸다가 캡쳐해야 오탐이 안 생겨요 잘깨져요 사용자의 코드가 비결정적이면 매번 실행 결과가 달라져요 똑같은 코드도 실행 환경에 따라 미묘하게 결과물이 다르게 나와요 CDN 등의 외부 환경의 변화나 네트워크 환경에도 영향을 많이 받아요
  5. +약간의 휴리스틱 네트워크 요청이 N 초 동안 발생하지 않았다면 잠잠한건가?

    DOM의 변경이 N 초 동안 없으면 안정화된건가? 어느정도의 휴리스틱이 필요할 수 밖에 없어요
  6. vitest를 쓰면 샤딩, 병렬 워커 설정등이 따라와요 Storybook을 쓰면 추가

    코드 작성 없이 스냅샷 대상을 얻을 수 있어요
  7. 이런 일이 생기기 시작했어요 A B 개발자 A 엇 이거

    왜 시각 테스트에서 안 잡혔을까요? 개발자 B 이건 시각 테스트에서 검사하는 목록에 없는 케이스여서 안 잡힌 것 같아요
  8. “Program testing can be used to show the presence of

    bugs, but never to show their absence!” 프로그램 테스트는 버그가 존재함을 보여줄 수는 있지만, 버그가 없음을 보여줄 수는 없다.
  9. 모든 축의 값을 곱하면 Pseudo State ColorScheme color variant size

    4 2 7 3 3 startIcon endIcon fullWidth disabled loading 2 2 2 2 2 가능한 조합 4×2×7×3×3×2×2×2×2×2 16,128
  10. 페어와이즈 테스트 하면 되는거 아니에요? 소프트웨어의 결함은 대부분 1개 혹은

    2개의 매개변수의 상호작용에서 발생한다고 봐요 모든 두요소의 조합을 한번씩만 테스트해도 90% 이상의 결함을 발견할 수 있다. 조합하는 매개변수를 늘린 3-way, 4-way test 도 있어요
  11. 페어와이즈 기법을 적용하면 총 조합이 4로 줄어들어요 그러면서도 임의의 두

    속성에서 가능한 모든 값의 조합이 한번씩 등장하죠
  12. 전체 조합과 페어와이즈 전체 조합 2 16 페어 와이즈면 =

    65,536 = 총 조합이 늘어날 수록 페어 와이즈의 효과도 기하급수적으로 커져요 8
  13. 페어와이즈 테스트 하면 되는거 아니에요? 변인 하나만 추가 되어도 모든

    스냅샷이 재생성 되어 변경점을 알기 어려워요 시각적 변경이 중요한 축들의 전체 커버리지가 보장되는 게 더 중요했어요 중요한 시각적 변경을 담는 Props를 큐레이션 하는 작업은 여전히 중요했어요
  14. 가능한 조합을 모두 곱하는 대신 관심 있는 축끼리만 곱할 수

    있으면 어떨까? 개발자가 관심 있는 축만 잘 선언하면 시각 테스트용 화면이 알아서 생성되면 어떨까?
  15. 마치며 모든 선택에는 트레이드 오프가 있다. 테스트는 버그가 없음을 보여줄

    수는 없다. 무엇을 원하는지 모르면 좋은 테스트를 작성할 수 없다.