상세 컨텐츠

본문 제목

[Flutter] Testing, Debugging, DevTools

notes

by 서울의볼 2024. 5. 3. 04:57

본문

4.8.1)

- unit test: single function, method, class

- widget test: single widget

- integration test: a complete app or a large part

- 를 테스트 함. code coverage 활용하면 수치화도 가능함.

- 모든 브랜치 커밋 푸시 단위로 자동 테스트하면 queue에 job이 너무 쌓이니까 PR 올라온 거만 workflow 실행할 것 추천.

- TDD 테스트 주도 개발이 여러 장점이 있지만 생산성 저하가 큰 단점임. 그래서 안전성이 상당히 중요한 개발이나 서비스 보단 모듈 개발(채팅, 동영상플레이어, 사진 편집기 등)에 더 적합하다 함.

- BDD 이런거도 있음,, Given When Then으로 시나리오 기반 테스트 케이스 작성하는 거래.

 

4.8.2)

- unit test 목표는 다양한 conditions에 대한 로직의 정확도를 검증.

- 유닛테스트가 서버 api 또는 db로부터 데이터 fetch 해야하는 경우 Mockito를 활용하여 목업 데이터를 생성하여 테스트 실행 가능. node에서도 mock 데이터 만들어서 했었음.

 

4.8.3)

- widget test의 목적은 UI look과 interaction이 예상대로 작동하는지 검증.

- flutter_test 패키지 사용함.

 

4.8.4)

- integration test 목표는 예상대로 실제 앱이 작동하는지 검증하는 것.

- golden toolkit 패키지 참고.

 

4.9.1)

- breakpoints는 중단점을 잡는 것인데, 안드로이드 스튜디오 기준으로 아래의 디버그로 실행을 해야함:

- step into: bp 다음 라인으로 이동하고, 함수가 있으면 함수 내부로 이동

- step over: 함수 실행은 하지만 내부로 이동하진 않음

- step out: 현재 함수의 리턴으로 이동

- flutter lint 적용 적극 권장함.

 

4.9.2-3)

- logging 패키지 사용법.

- Sentry 소개. (모니터링 플랫폼)

- 3rd Party 'logger' package 소개. (로그가 어디서 찍힌 건지 바로 보이기에 아주 편함)

- Network Log는 http 통신이 많다면 적용 추천. 개발 하면서 응답값이 어떻게 나오는지 바로 확인하면서 개발 가능. insomnia같은 api client 느낌인 듯.

- alice 패키지 소개해줌.

 

4.10.1)

- DevTools를 강사는 잘 사용 안함. 한다면 성능개선 목적의 Frames 체크, 메모리 이슈 체크, 인스펙터(레이아웃 이슈 디버깅할 때) 등으로 씀.

- hot reload, hot restart가 강력해서 자주 사용할 일이 없다 함.

 

4.10.2)

- Performance view 소개. profile로 실행해야 함.

 

4.10.3)

- CPU profiler 소개. 이건 강사도 안써봤다 함 (위 두 개 devtools 빼고).

 

4.10.4) 메모리 관련 개념적인 설명이 주를 이룸. CS 기초가 필요하고 고차원적인 개념인 듯 함.

- Memory view 소개.

- 클래스 객체(object)를 생성하면, 메모리 heap 영역에 할당되고, object가 더이상 사용되지 않으면 메모리에서 해지됨 (garbage collector)

- root object는 앱 내 모든 객체가 root object를 레퍼런스함. 근데 이런 레퍼런싱을 끊게되면 garbage collector(gc)가 메모리에서 해지하는 시그널이 됨. => object가 unreachable한 상태가 됐다고 표현함.

- retaining path가 하나라도 있으면 reachable한 것.

- shallow size vs retained size 설명.

- 어찌됐든 GC가 모든 memory leak을 방지할 수 없기에 감시하기 위해 있는 게 memory view임.

 

4.10.5)

- Network View 소개.

- 유용할 것으로 생각한다 함. 특히 웹소켓 활용시.

- 네트워크 연결할 때부터 찍힌다 함.

 

4.10.6)

- Logging View 소개. 상당히 디테일하게 모든 이벤트가 찍힌다 함. 근데, 꼭 필요한가?는 잘 모르겠다 함.

 

4.10.7)

- App size tool 소개. 말그대로 앱 사이즈(용량)를 분석하는 툴임.

 

 

 

출처: 패스트캠퍼스

관련글 더보기