# Sample 앱 테스트

아래 영상을 통해 샘플 앱 설치 방법을 확인하실 수 있으며, 샘플앱 SDK는 github 페이지에서 확인 가능합니다.

* [github 바로가기](https://github.com/onycom-imqa/IMQA_AOS_SAMPLE/blob/main/README.md)

{% embed url="<https://www.youtube.com/watch?v=IZ2Aptlrk6k>" %}

### IMQA Sample 앱을 이용하여 서비스 연동하기

* [\[AOS\] SDK 설치하기](https://docs.imqa.io/imqa-guide/installation/android/mpm-sdk-install)

#### 1. Project gradle 설정

Project Root에 위치한 build.gradle에 다음과 같이 buildscript를 추가합니다.

```groovy
buildscript {
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath 'io.imqa:imqa-mpm-injector:2.25.8'
    }
}
```

#### 2. App Gradle 설정

App에 있는 build.gradle 에 다음과 같이 imqa라이브러리 dependency를 추가 후 gradle action을 추가합니다.

```groovy
dependencies {
    implementation 'io.imqa:imqa-core:2.27.5'
    implementation 'io.imqa:imqa-mpm-client:2.27.9'
    implementation 'io.imqa:imqa-crash-client:2.27.5'
}


io.imqa.IMQAPlugin imqaPlugin = new io.imqa.IMQAPlugin()
imqaPlugin.init(project)
new io.imqa.injector.GJavacAction(project.name).setConfiguration(project)
android.applicationVariants.all { variant ->
    variant.javaCompile.doLast { task ->
        new io.imqa.injector.CompileAction(
                io.imqa.injector.util.BuildOption.BUILD_LOCATION_TYPE.javacClasses,
                project.name,
                io.imqa.injector.GJavacAction.convertBuildType(variant.getBuildType()),
                io.imqa.injector.GJavacAction.makeFlavor("imqa", variant)
        ).execute(task)
    }
}
```

\* kotlin의 경우 설정이 다를 수 있으니 설치 가이드를 꼭 참고하세요. \[[설치 가이드 보기](https://docs.imqa.io/imqa-guide/installation/mpm-sdk-install#kotlin-dsl)]

#### 3. application 설정

Android Application에 IMQA Agent 코드를 삽입합니다.

```java
io.imqa.mpm.IMQAMpmAgent.getInstance()
       .setOption(imqaOption) // MPM 의 동작 방식을 정하는 옵션을 설정합니다.
       .setContext(this, "") // Application Context 를 초기화 합니다.
       .setProjectKey(projectKey) // IMQA MPM Client 의 Project Key 를 설정합니다.
       .init();
```

이 때 샘플 앱에서는 다음과 같이 프로젝트 키만 넣도록 되어 있습니다.

> imqa.android.sample.App.java

```java
SharedPreferences pref = getSharedPreferences("IMQA_SampleConfig", MODE_PRIVATE);
String serverUrl = pref.getString("serverUrl","http://collector.imqa.io");
String crashServerUrl = pref.getString("crashServerUrl","http://collector.imqa.io");
String projectKey = pref.getString("projectKey","<프로젝트 키를 넣어주세요>");
```

프로젝트를 생성하여 발급받은 프로젝트 를 projectKey 코드에 넣어주세요. 프로젝트 키 삽입 후 앱을 빌드하여 `Run` 하면 다음과 같이 앱이 실행됩니다.

<img src="https://3726060384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzFyCopc6yAp3UcEYW6la%2Fuploads%2FhwZaTstsmMCFdhrohdNy%2F68747470733a2f2f696d71612e696f2f7468656d652f726573706f6e736976655f6f6e79636f6d2f696e636c7564652f696d672f616f735f73616d706c655f30302e706e67.png?alt=media&#x26;token=b900803e-913d-4b1c-a504-8f64e9c316bb" alt="" data-size="original">

### 기본 사용방법

IMQA는 성능 데이터를 수집 후 수집 주기에 따라 데이터를 전송하거나, 앱이 재기동 되는 시점에 데이터를 전송합니다. 데이터를 생성 후(앱을 사용 후) 설정된 수집 주기만큼 기다리거나, 앱을 껐다 켜면 앱이 IMQA 수집 서버로 전송됩니다.

#### MPM Activity

MPM Activity에서는 기본적으로 화면 로딩시간, 네트워크 응답시간을 테스트할 수 있는 기능이 있습니다.

![](https://3726060384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzFyCopc6yAp3UcEYW6la%2Fuploads%2FWrYQOLkJYleFhTKfnR9o%2F68747470733a2f2f696d71612e696f2f7468656d652f726573706f6e736976655f6f6e79636f6d2f696e636c7564652f696d672f616f735f73616d706c655f30312e706e67.png?alt=media\&token=e9ed9d18-fbc5-46f0-88c4-7cbcbe255dc5)

* **Make Network**: 네트워크 응답을 생성합니다.
* **Show Slow Activity**: 기본적으로 메뉴 버튼을 누르면 화면 로딩시간이 측정되나, 'Show Slow Activity' 클릭하면 강제로 화면을 늦게 로딩시킵니다. 화면을 늦게 로딩시키는 기능이기 때문에 'Show Slow Activity' 기능을 누르면 약 5초동안 화면 로딩이 되면서 이벤트가 동작하지 않습니다.
* MPM Activity를 통해 수집된 데이터는 서비스 콘솔을 통해 확인할 수 있으며 다음 페이지에서 상세한 설명을 제공하고 있습니다. \[[자세히 보기](https://docs.imqa.io/imqa-guide/user-guide/mpm)]

#### Crash Activity

Crash Activity에서는 Crash를 발생시키고, ANR를 발생시켜보는 테스트 기능이 있습니다.

![](https://3726060384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzFyCopc6yAp3UcEYW6la%2Fuploads%2Fiktts1tt9tzSrMtTsXUT%2F68747470733a2f2f696d71612e696f2f7468656d652f726573706f6e736976655f6f6e79636f6d2f696e636c7564652f696d672f616f735f73616d706c655f30322e706e67.png?alt=media\&token=a18a5791-6f10-4436-922e-74ae527447eb)

* **Make Crash**: Crash를 발생시킵니다. 앱이 꺼집니다.
* **Show Slow Activity**: ANR(Application Not Responding)을 발생시킵니다. ANR이 발생하는 15초동안 아무런 이벤트가 입력되지 않습니다
* Crash Activity를 통해 수집된 데이터는 서비스 콘솔을 통해 확인할 수 있으며 다음 페이지에서 상세한 설명을 제공하고 있습니다. \[[자세히 보기](https://docs.imqa.io/imqa-guide/user-guide/crash)]

#### Webview Activity

Webview Activity에서는 IMQA Webview Agent가 이미 적용되어 있는 [imqa.io](https://imqa.io/) 페이지를 통해 웹뷰 성능 데이터를 수집합니다.

![](https://3726060384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzFyCopc6yAp3UcEYW6la%2Fuploads%2FqiVGvUdNlN6URbD90iXY%2F68747470733a2f2f696d71612e696f2f7468656d652f726573706f6e736976655f6f6e79636f6d2f696e636c7564652f696d672f616f735f73616d706c655f30332e706e67.png?alt=media\&token=c4559867-3e59-4615-a5fe-40a914fdda82)

* IMQA Webview Agent는 앱이 아닌 웹 페이지에 js파일을 삽입해야 하며, 자세한 설치 가이드는 다음 문서에 있습니다. \[[설치 가이드 보기](https://docs.imqa.io/imqa-guide/installation/mpm-sdk-setting#mpm-webview-guide)]

#### Setting Activity

Setting Activity에서는 서버 설정, Project Key 변경과 같은 기능이 제공됩니다.

![](https://3726060384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzFyCopc6yAp3UcEYW6la%2Fuploads%2F6szpqTiJCXqMOLKcTIwg%2F68747470733a2f2f696d71612e696f2f7468656d652f726573706f6e736976655f6f6e79636f6d2f696e636c7564652f696d672f616f735f73616d706c655f30342e706e67.png?alt=media\&token=0a2c6fbc-ff6f-4fee-8af0-be97741e0118)
