개요
Flutter에서 앱을 개발할 때, 테스트 코드를 작성하고 이를 실행하여 서비스의 안정성을 높이게 됩니다. 하지만, 프로젝트의 규모가 커지면 테스트 코드량도 많아지게 되고, 이에 따라 테스트 코드를 실행하는데 걸리는 시간도 증가하게 됩니다.
이번 블로그 포스트에서는 concurrency
옵션을 사용하여 테스트 코드를 병렬로 실행하여 테스트 속도를 개선하는 방법에 대해서 알아보도록 하겠습니다.
concurency 옵션
Flutter에서 test를 실행할 때 concurrency
옵션을 사용하여 테스트 코드를 병렬로 실행할 수 있습니다. 이를 통해 테스트 코드를 실행하는데 걸리는 시간을 줄일 수 있습니다.
다음 명령어를 실행하면 Flutter의 test 명령어에서 사용할 수 있는 옵션을 확인할 수 있습니다.
flutter test -h
여러 옵션중에 다음과 같이 concurrency
옵션을 확인할 수 있습니다.
-j, --concurrency=<jobs>
The number of concurrent test processes to run. This will be ignored when running integration tests.
공식 문서에서도 concurrency
옵션을 확인할 수 있습니다.
- 공식 문서: Test concurrency
코어 수 확인
Flutter의 Test 명령어는 기본적으로 호스트 CPU 코어의 절반을 사용하도록 설정되어 있습니다.
Test suites run concurrently by default, using half of the host’s CPU cores.
그러므로 머신의 코어 수의 절반 이하를 concurrency
옵션에 설정하면 concurrency
옵션을 설정하지 않고 실행할 때 보다 성능이 떨어질 수 있습니다.
그러므로 현재 머신의 코어수를 확인하고, 적절한 코어수를 설정할 필요가 있습니다. 다음 명령어를 실행하면 머신의 코어 수를 확인할 수 있습니다.
nproc --all
테스트 실행 속도 비교
concurrency
옵션을 통해 어느정도 테스트 코드 실행 속도가 향상되는지 확인해 봅시다. Flutter 프로젝트에서 다음 명령어를 사용하여 테스트 코드를 실행해 봅니다.
flutter test
그럼 다음과 같이 테스트 코드가 실행된 후, 테스트 코드를 실행하는데 걸린 시간을 확인할 수 있습니다.
02:10 +657: All tests passed!
concurrency
옵션없이 테스트 코드를 실행하면 2분10초
걸리는 것을 확인할 수 있습니다. 이제 다음과 같이 concurrency
옵션을 사용하여 테스트 코드를 실행해 봅니다.
flutter test --concurrency=$(nproc --all)
그럼 다음과 같이 테스트 코드가 실행된 후, 테스트 코드를 실행하는데 걸린 시간을 확인할 수 있습니다.
02:02 +657: All tests passed!
concurrency
옵션을 사용하면 8초
정도 테스트 코드를 실행하는데 걸리는 시간이 단축되는 것을 확인할 수 있습니다.
GitHub Actions에서 테스트 실행 속도 비교
제 경우는 로컬 머신의 성능(12 cores)이 워낙 좋아서 큰 효과를 확인할 수 없지만, CI/CD
환경에서는 좀 더 큰 효과를 확인할 수 있습니다. GitHub Actions
에서 concurrency
옵션을 사용하지 않고 테스트 코드를 실행한 경우, 다음과 같이 7분
정도 걸리는 것을 확인할 수 있습니다.
GitHub Actions
에서 concurrency
옵션을 사용하여 테스트 코드를 실행한 경우, 다음과 같이 4분
정도 걸리는 것을 확인할 수 있습니다.
완료
이것으로 Flutter
의 테스트에서 concurrency
옵션을 사용하여 테스트 속도를 개선하는 방법에 대해서 알아보았습니다. 아직 concurrency
옵션을 사용하고 있지 않다면, concurrency
옵션을 추가하여 테스트 속도를 개선해 보시기 바랍니다.
제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!
앱 홍보
Deku
가 개발한 앱을 한번 사용해보세요.Deku
가 개발한 앱은 Flutter로 개발되었습니다.관심있으신 분들은 앱을 다운로드하여 사용해 주시면 정말 감사하겠습니다.