ANR(애플리케이션 응답 없음)은 일반적으로 앱이 예상치 못한 오류나 예외를 만나 강제 종료될 때 충돌이 발생한다는 점에서 충돌과 다릅니다. 반면 ANR은 앱이 응답하지 않지만 충돌이 발생하지 않은 경우에 발생합니다. 비유하자면, ANR 은 앱이 혼수 상태 (??)임을 의미하고, 충돌은 앱이 죽었음을 의미합니다(?).
ANR과 충돌은 모바일 테스트 중에 발생할 수 있는 두 가지 유형의 문제입니다.
ANR은 앱이 응답하지 않거나 정지되어 사용자 입력에 응답하지 않는 상황을 나타냅니다. 이는 기본 스레드를 차단하는 장기 실행 작업이나 앱이 응답하지 않게 만드는 앱 디자인이나 구현 문제 등 다양한 요인으로 인해 발생할 수 있습니다.
반면에 충돌은 앱이 예상치 못한 오류나 예외가 발생하여 강제로 종료되는 상황을 의미합니다. 이는 처리되지 않은 예외, null 포인터 참조, 앱 코드나 구성 문제 등 다양한 요인으로 인해 발생할 수 있습니다.
ANR 및 충돌을 테스트하기 위해 개발자와 테스터는 일반적으로 수동 테스트와 자동화된 테스트 도구를 조합하여 사용합니다. 수동 테스트에는 앱과 수동으로 상호 작용하고 앱이 예상대로 작동하는지 확인하는 작업이 포함되며, 자동화된 테스트에는 테스트 도구 및 프레임워크를 사용하여 앱에서 일련의 테스트를 자동으로 실행하는 작업이 포함됩니다.
ANR 및 충돌 문제를 식별하고 해결하려면 일반적으로 개발자와 테스터는 앱의 로그와 성능 데이터를 분석하여 문제의 근본 원인을 식별해야 합니다. 여기에는 시스템 로그 분석, 앱 성능 프로파일링, 문제의 원인을 식별하는 데 도움이 될 수 있는 패턴이나 추세 찾기가 포함될 수 있습니다.
전반적으로 ANR 문제는 사용자에게 불만을 안겨줄 수 있으며 앱의 사용자 경험에 부정적인 영향을 미칠 수 있습니다. 개발자와 테스터는 앱이 반응하고 안정적이며 다양한 조건에서 제대로 작동하는지 확인하기 위해 신중하게 앱을 테스트하고 디버그하는 것이 중요합니다.
ANR
충돌
Crashlytics 대시보드의 ANR 태그를 기반으로 Android 앱 디버깅
ANR 대 충돌 | 로그캣과 버그리포트