Rose
Rose
🎻 루키 파트너
🚀 SNS 챌린지 달성자

Flutter 앱 안정화-flutter 자동화 test/codex 코드 리뷰

소개

Flutter로 개발한 루틴헬퍼 앱의 안정화를 시도했습니다.

다양한 기기 사이즈를 지원할 수 있게 테스트를 추가하고,

테스트 결과 나온 에러 로그를 넣고 클로드 코드로 버그 픽스,

마지막으로 codex로 코드 리뷰를 했습니다.

진행 방법

이런 bottom overflow가 여러 화면에서, 또 특정 화면 사이즈에서 발생하더라구요.
(화면마다 에러가 발생하는 화면 사이즈도 달랐습니다.😂 )

그래서 이 부분을 안정화했습니다.

그런데, 화면 사이즈는 제각각이고, 그 화면 사이즈를 다 변경해가면서,

여러 화면을 제가 다 테스트할 수는 없기 때문에 Flutter 자동화 테스트를 썼어요.

위젯테스트하고 통합테스트를 작성했습니다.

flutter test

로 위젯테스트를 실행하고,

flutter test integration_test

로 통합테스트를 실행했습니다.

위젯테스트는 단일 UI를 대상으로 UI 상태를 테스트하는 것이고,

통합테스트는 여러 UI간의 상호작용 시 에러 여부를 테스트하는 것입니다.

(단일 UI만 테스트하니까 퀘스트를 등록한 이후에 퀘스트 카드에 발생하는 overflow가 테스트가 안되더라구요.. 😅 )

두 테스트 자동화 코드에는 자주 쓰이는 화면 사이즈를 모두 넣어서

그 화면 사이즈를 하나씩 적용해서 순서대로 모두 테스트하도록 했어요.

const List<Size> _testSizes = <Size>[
  //Error cases
  Size(732, 412),
  Size(740, 360),
  Size(745, 353),
  Size(720, 540),
  Size(731, 411),
  // Legacy/low-res phones (landscape)
  Size(800, 480), // WVGA
  Size(854, 480), // FWVGA
  Size(960, 540), // qHD
  Size(658, 320), // S9+
  // 7" tablets and small tablets (landscape)
  Size(1024, 600), // WSVGA
  Size(1280, 720), // HD
  Size(1280, 800), // WXGA (7-8" tablets)
  // Common laptop-like aspect used by some tablets
  Size(1366, 768),

  // HD+ tall phones in landscape
  Size(1440, 720), // 18:9
  Size(1520, 720), // 19:9 variants
  Size(1600, 720), // 20:9 variants
  // Full HD phones (landscape)
  Size(1920, 1080), // FHD 16:9
  Size(2160, 1080), // 18:9 FHD+
  Size(2220, 1080), // Galaxy S8 class
  Size(2240, 1080), // 19:9
  Size(2280, 1080), // 19:9
  Size(2310, 1080), // 19.5:9
  Size(2340, 1080), // 19.5:9
  Size(2400, 1080), // 20:9
  // QHD / QHD+ class (landscape)
  Size(2560, 1440), // QHD 16:9
  Size(3200, 1440), // QHD 16:9
  Size(3840, 2160), // 4K UHD
  Size(2960, 1440), // 18.5:9
  Size(3040, 1440), // 19:9
  Size(3120, 1440), // 19.5:9
  // Tablets common (landscape)
  Size(1920, 1200), // WUXGA 10.1"
  Size(2000, 1200), // 10.95" class (modern Android tablets)
  Size(2560, 1600), // WQXGA 10.1-10.5"
  // Foldables (inner displays, landscape)
  Size(2208, 1768), // Galaxy Z Fold (inner)
  Size(2176, 1812), // Galaxy Z Fold5 (inner)
  Size(2208, 1840), // Pixel Fold (inner)
  // Ultra-wide/taller modern phones in landscape
  Size(2460, 1080),
  Size(2640, 1080),
  Size(3088, 1440),
];

flutter test는 커서의 터미널 창에서 실행했습니다.

Flutter 테스트 환경에서 그냥 실행 후 에러가 있으면 로그를 줍니다.

단어 '필터 테스트'가있는 파이썬 스크립트의 스크린 샷

flutter test integration_test는 실제 윈도우 앱을 띄운 후에 테스트하더라구요.
(이걸 하려고 Visual Studio까지 평가판으로 설치해야 했어요.)

앱 화면에는 아무 것도 안 보이지만, 실행하면서 에러가 나면 로그를 줍니다.

에러 로그는 클로드 코드에 줘서 버그를 수정했습니다.

sub agent로 overflow fix 하는 Agent를 만들어서 썼어요.

(커서가 너무 비싸져서, 자꾸 요금 결제를 시키길래,

커서에 코덱스와 클로드 코드 익스텐션을 설치해서 두 개로 작업했습니다.

왼쪽에서는 코덱스, 오른쪽에서는 클로드 코드로 작업해요. 😍 )

어두운 방에서 코드 편집기의 스크린 샷

Codex Extension은 이겁니다.

그 결과 이렇게 깔끔해졌네요.

행복하게 git push를 하고, Codex로 코드 리뷰를 시도해 봤습니다.

Pull Request에서 이렇게 comment 하면 됩니다.

결과는 이렇습니다.

Merge까지 완료했습니다. 아, 기분이 상큼하네요. 😀

결과와 배운 점

개발한 앱을 안정화하면서 주변 사람들이 써 보도록 설치해줬는데, 조금 더 개선할 점이 나왔습니다.

(키보드를 개발해야 겠어요. 가로 화면에서 띄우면 휴대폰 키보드가 화면을 다 가려버립니다.😂 )

그 외 자잘한 것들 수정해서, 곧 안드로이드 스토어에 올려보렵니다.
(커밍쑨~)

3
6개의 답글
지피터스 뉴스레터

이번 주 AI, 딱 쓸 것만

매주 월요일 아침,
읽고 바로 써먹을 AI 소식만