이럴 땐 이렇게! 크래시편

모바일 앱에서 발생하는 모든 에러를 관리하는 방법! 지금 바로 확인해 보세요!

작성일 2022년 05월 17일

안녕하세요, IMQA입니다.

모바일 앱에서 발생하는 다양한 에러! 여러분들은 어떻게 관리하고 계시나요?

이럴 땐 이렇게! 시리즈에서는 모바일 앱에서 자주 발생하는 에러를 IMQA의 어떤 기능을 통해 어떻게 해결할 수 있는지 소개해 드립니다. 목차는 아래와 같이 구성되어 있으며 추후 빈번히 발생하는 에러들을 분석하여 추가할 예정이랍니다.

첫 번째 시간인 이번 시간에는 크래시 편을 준비해 보았습니다. (IMQA Crash만 가진 유일한 기능도 소개해 드리니 끝까지 읽어보시길 바랍니다!)

  1. 이럴 땐 이렇게! 크래시편
  2. 이럴 땐 이렇게! 화면 로딩시간편

모바일 앱에서 발생하는 다양한 에러

모바일 앱에서 발생하는 에러는 무수히 많습니다. 앱이 갑자기 종료되는 현상부터 로그인이나 인증, 결제 에러, 화면이 하얗게 변하는 백화 현상까지 종류 또한 다양합니다.


크래시 솔루션으로 모든 에러를 관리할 수 있을까요?

모든 앱 개발자는 에러가 발생하지 않기를 원하지만 한 번도 그것을 발생시켜보지 않은 개발자는 없을 것입니다. 그렇기 때문에 대부분의 기업에서는 에러 발생 여부를 빠르게 파악하고 해결하기 위해 크래시 솔루션을 사용합니다. 그렇다면 크래시 솔루션을 사용하면 모든 에러를 관리할 수 있을까요?

위와 같은 현상은 모바일 앱에서 흔히 발생하는 에러입니다. 이것은 크래시일까요? 일반 에러일까요?

모바일 앱에서 발생하는 에러는 로그인이나 인증 문제 등 대부분 기능 에러입니다. 하지만 크래시 솔루션으로는 위와 같은 현상을 확인할 수 없는데요. 앱이 비정상적으로 종료되었을 때만 에러 정보를 수집하기 때문입니다. 그렇기 때문에 우리가 앱을 사용하면서 겪는 대부분의 에러에 대해선 정보를 수집하지 않아 사용자 경험이 개선되지 않습니다.

결국 위 현상 중 첫 번째만이 비정상 종료된 에러로 크래시 솔루션으로 확인할 수 있습니다. 그 외 에러는 앱이 갑자기 종료된 경우가 아니기 때문에 크래시 솔루션에서는 확인할 수 없고, 성능 저하로 인해 장애가 발생한 것이 아니기 때문에 성능 모니터링으로도 확인할 수 없습니다.

그렇다면 크래시 솔루션으로 수집되지 않은 에러는 어떻게 관리해야 할까요?


IMQA는 커스텀 에러를 통해 빠짐없이 관리할 수 있습니다

크래시 솔루션은 일반적으로 에러를 크게 ANR(응답 없음)과 크래시로 구분합니다. 그래서 앱이 응답이 없거나 비정상 종료하였을 때만 에러 정보를 수집하기 때문에 모든 에러를 관리할 수 없습니다. 그러나 IMQA는 크래시를 앱의 비정상적 종료와 그 외 에러로 분류하고 IMQA 커스텀 에러 설정을 통해 수집하고 관리할 수 있습니다. 이것은 IMQA에서만 제공하는 독자적인 기술입니다.

최근 들어 많이 발생하는 에러로 예를 들어볼까요? 이커머스 앱에서 결제를 할 때 카드 정보를 입력하지 않아도 되는 간편결제를 많이 이용하죠. 하지만 간편 결제의 경우 앱 내에서 진행하는 것이 아닌 새 창의 띄어 외부 앱에서 진행되기 때문에 에러가 발생해도 크래시에서는 수집이 되지 않습니다. IMQA Crash는 이런 경우 IMQA 커스텀 에러 설정을 통해 따로 관리할 수 있습니다.

결론적으로 IMQA Crash는 ANR + 크래시(앱 비정상 종료, 그 외 에러)로 구분하여 앱에서 발생하는 모든 에러를 놓치지 않고 관리할 수 있습니다.


커스텀 에러는 어떻게 설정할까요?

IMQA Crash는 크래시 솔루션에서는 수집되지 않지만 담당자와 사용자가 에러라고 생각하는 부분도 크래시로 수집할 수 있습니다. IMQA에서는 이것을 커스텀 에러라고 합니다.
그렇다면 커스텀 에러는 어떻게 설정할까요?

1. 외부 앱에서 발생하는 에러코드를 Crash로 만들기
외부 앱에서 크래시 또는 실패가 났을 경우 실패의 result를 code로 반환 받아, 해당 code를 Crash에서 관리할 수 있습니다.

2. [iOS] 커스텀 에러 만들기
2.1. 커스텀 에러 보내기
IMQA Crash는 원하는 커스텀 Error 를 직접 생성하여 보낼 수 있는데요. 각종 네트워크 에러나 수집하고 싶은 Error를 NSError를 통해 저희 서버에 직접 보내 트레킹 할 수 있습니다. NSError에 errorWithDomain과 외부앱에서 받은 응답코드를 code에 넣어줍니다.

  • Objective-C 설정 방법

AppDelegate.m

#import <IMQACrashAgent/IMQACrash.h>

NSError* custom_error = [NSError errorWithDomain:@"커스텀 에러명" code:300 userInfo:NULL];
[IMQACrash notifyError:custom_error];
  • Swift 설정 방법

AppDelegate.swift

let custom_error = NSError(domain: "커스텀 에러명", code: 300, userInfo: nil)IMQACrash.notifyError(custom_error)

2.2. 커스텀 에러 확인하기
해당 에러 발생 시 IMQA Crash 대시보드에서 실시간으로 에러 정보를 확인할 수 있습니다.

3. [AOS] 커스텀 에러 만들기
3.1. 커스텀 에러 발생
IMQA Crash Agent에서는 다음과 같은 사용자 정의 에러를 수집할 수 있습니다. Exception 객체와 함께 특정 태그, 에러의 등급을 지정할 수 있습니다. Exception을 확장하여 비즈니스별, 또는 코드가 아닌 Exception별 Crash를 관리하도록 만드는것을 추천합니다.

IMQACrashAgent.SendException(new SamplePaymentException("결제오류"), "결제오류 -200", ErrorRank.Major);

에러 랭크의 경우 별도로 정해져있지는 않으며 앱의 구성에 따라 변경하여 사용가능합니다. 장애 코드에 따라 Rank를 구분하여 Crash의 중요도를 관리할 수 있습니다.

3.2. 커스텀 에러 확인하기
해당 에러 발생 시 IMQA Crash 대시보드에서 실시간으로 에러 정보를 확인할 수 있습니다.

쉽고 간단한 커스텀 에러 설정으로 모바일 앱에서 발생하는 모든 에러를 수집하고 관리할 수 있습니다.


이번 시간에는 크래시 솔루션으로 확인할 수 없는 크래시 이외의 에러를 어떻게 관리할 수 있는지 IMQA를 통해 알아보았습니다. 커스텀 에러 설정은 IMQA Crash를 이용 중이시라면 누구나 사용하실 수 있으니 아래로 연락 주시면 더욱 자세히 설명해 드리겠습니다.

이어지는 다음 시간에는 모바일 앱에서 가장 많이 발생하는 화면이 느린 현상, 버벅거리는 현상을 어떻게 관리하는지 알아보겠습니다.

Share on

Tags

IMQA 뉴스레터 구독하기

국내외 다양한 기술 소식을 선별하여 매월 전달해드립니다. IMQA 뉴스레터를 통해 기술 이야기를 함께해보세요.

구독하기