Published on

๐Ÿ˜Š 2023๋…„ 8์›” ํšŒ๊ณ 

Authors
  • avatar
    Name
    ์ตœ์˜์ค€ (Youngjun Choi)
    Twitter
  • launchApp
  • assertVisible: Search and Explore

2.์ž๋™ํ™” ๋ช…๋ น์–ด

flashlight test --bundleId com.twitter.android \ // ์‹คํ–‰ํ•  ์•ฑ์˜ bundle Id --testCommand "maestro test twitter.yaml" \ // ์‹คํ–‰ํ•  e2e yaml ํŒŒ์ผ --duration 10000 \ // ์ธก์ • ์‹œ๊ฐ„ --resultsFilePath results.json // ๊ฒฐ๊ณผ ๋ณด๊ณ ์„œ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹


\*\* ์•ฑ์˜ bundle Id๋Š” `npx @perf-profiler/profiler getCurrentApp` ๋ฅผ ํ†ตํ•ด์„œ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

3.๊ฒฐ๊ณผ ๋ณด๊ธฐ

flashlight report results.json


์ž๋™ํ™” ๋ฐฉ์‹์„ ๋ณด๋ฉด์„œ ์ข€ ๋” ๊ฐ๊ด€ํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๊ณ  e2e ํ…Œ์ŠคํŠธ๋ฅผ ํ™•์žฅํ•จ์œผ๋กœ์จ ๊ฐ ์Šคํฌ๋ฆฐ์— ๋Œ€ํ•œ ์„ฑ๋Šฅ์„ ๋” ์ž˜ ์ธก์ •ํ•  ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ๋ž€ ๊ธฐ๋Œ€๊ฐ์ด ์ƒ๊ฒผ๋‹ค.

#### 4. CI์™€ ์—ฐ๋™

์œ„์˜ ์ž๋™ํ™” script๋ฅผ AWS Device Farm์˜ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ๊ฐ€์ƒ ํ™˜๊ฒฝ๊ณผ์˜ ์—ฐ๊ฒฐ ๊ธฐ๋Šฅ์„ ์†Œ๊ฐœํ–ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด์„œ ํ”„๋กœ์ ํŠธ์˜ CI๊ณผ์ •์—์„œ ์„ฑ๋Šฅ ์ธก์ •์„ ์ž๋™ํ™” ํ•จ์œผ๋กœ์จ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ฆฌํฌํŒ…์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ ๊ธฐ๋Œ€๊ฐ๋„ ์ƒ๊ฒผ๋‹ค.

#### 5. Cloud ํ™˜๊ฒฝ

๋งˆ์ง€๋ง‰ apk๋ฅผ ์˜ฌ๋ฆฌ๊ณ  ์›ํ•˜๋Š” e2eํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์„œ ์„ฑ๋Šฅ์„ ๊ฐ€์ƒํ™˜๊ฒฝ์—์„œ ์ธก์ •ํ•ด์ฃผ๋Š” ์ž์ฒด ์„œ๋น„์Šค๋ฅผ ์†Œ๊ฐœํ–ˆ๋‹ค.

์‚ฌ์ดํŠธ ์ฃผ์†Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ ์„ฑ๋Šฅ ์ธก์ •์ด ๋๋‚˜๊ฒŒ ๋˜๋ฉด ์ด๋ฉ”์ผ๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด ์˜์ƒ์œผ๋กœ ๋‚˜ํƒ€๋‚œ๋‹ค.

FPS, RAM/CPU ์‚ฌ์šฉ๋Ÿ‰ ๋“ฑ์ด ๊ทธ๋ž˜ํ”„๋กœ ๋‚˜ํƒ€๋‚˜์ง€๋ฉฐ ์˜์ƒ๊ณผ ํ•จ๊ป˜ ์—ฐ๋™๋˜์–ด ์žˆ์–ด ์–ด๋А ์ง€์ ์—์„œ ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ์ง€ ๋“ฑ์„ ํ•œ๋ˆˆ์— ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

[Cloud ์ธก์ • ์‚ฌ์ดํŠธ](https://app.flashlight.dev/)

<img src="https://github.com/choi2021/choi2021.github.io/assets/80830981/a727c5ed-1bb8-45ef-bcc5-945929008d4c" width="800"/>

[๋‹น์‹œ ๊ณต์œ ํ–ˆ๋˜ ์šฐ๋ฆฌ ์•ฑ์˜ ์ธก์ • ๊ฒฐ๊ณผ]

<table>
  <tr>
    <th>์ „์ฒด ์ ์ˆ˜</th>
  </tr>
  <tr>
    <td>
    <img src="https://github.com/choi2021/choi2021.github.io/assets/80830981/e0eea30c-05b9-4c5a-8da4-6c932e6341a2" width="800" />
    </td>
  </tr>
  <tr>
    <th>FPS</th>
  </tr>
  <tr>
    <td><img src="https://github.com/choi2021/choi2021.github.io/assets/80830981/c2a00cf1-52a2-4d48-9a7a-602e105c4cfc" width="800" />
    </td>
  </tr>
  <tr>
    <th>CPU ์‚ฌ์šฉ๋Ÿ‰</th>
  </tr>
  <tr>
    <td><img src="https://github.com/choi2021/choi2021.github.io/assets/80830981/d6231d9e-9712-4dd3-9972-1d03568dadb8" width="800" />
    </td>
  </tr>
  <tr>
    <th>์Šค๋ ˆ๋“œ ๋ณ„ CPU ์‚ฌ์šฉ๋Ÿ‰</th>
  </tr>
  <tr>
    <td><img src="https://github.com/choi2021/choi2021.github.io/assets/80830981/ccb10691-fdcf-4577-b7fe-c442c6e5b707" width="800" />
    </td>
  </tr>
  <tr>
    <th>RAM ์‚ฌ์šฉ๋Ÿ‰</th>
  </tr>
  <tr>
    <td><img src="https://github.com/choi2021/choi2021.github.io/assets/80830981/f0d89756-9649-43f8-bf46-8c0fdcedb066" width="800" />
    </td>
  </tr>
</table>

์‚ฌ์–‘์ด ์•„์ฃผ ๋‚ฎ์€ ๊ธฐ๊ธฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ ์ˆ˜๋Š” ๋‚ฎ์ง€๋งŒ ์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ฐœ์„ ๋˜์—ˆ๋Š”์ง€๋ฅผ ๋ณด๋Š”๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•„ ๋ณด์˜€๋‹ค.

๋ฐœํ‘œ๋‚ด์šฉ์— ๋Œ€ํ•ด์„œ ์ฑ•ํ„ฐ์› ๋ถ„๋“ค์ด ๊ธ์ •์ ์œผ๋กœ ๋“ค์–ด์ฃผ์…จ๊ณ  ์„ฑ๋Šฅ ๊ฐœ์„  ์—…๋ฌด๋ฅผ ๋งก์€ ์ฑ•ํ„ฐ์› ๋ถ„๋“ค๊ป˜์„œ ์ง์ ‘ ์ข€ ๋” ์กฐ์‚ฌํ•˜์‹œ๊ณ  flash light๋ฅผ ์ด์šฉํ•ด ์„ฑ๋Šฅ ์ธก์ •ํ•˜๋Š” ์ผ๊ฐ์— ์ ๊ทน์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค. ์กฐ์‚ฌํ•œ ๋‚ด์šฉ์ด ์‹ค์ œ๋กœ ์˜๋ฏธ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ์œผ๋Š”๋ฐ ๋„์›€์ด ๋˜๊ณ  ์žˆ๋‹ค๋Š” ์ ์— ๊ธฐ๋ปค๊ณ  ๊ณ„์†ํ•ด์„œ ๊ธฐ์ˆ  ์„ธ์…˜๋“ค์— ๋Œ€ํ•ด ๊ด€์‹ฌ์„ ๊ฐ–๊ฒŒ ๋˜๋Š” ์ข‹์€ ๊ณ„๊ธฐ๊ฐ€ ๋˜์—ˆ๋‹ค.

### ๋งˆ์น˜๋ฉฐ

8์›” ํ•œ๋‹ฌ์€ ์ฑ•ํ„ฐ์—…๋ฌด๊ฐ€ ์ฃผ๋กœ ๋˜์—ˆ๋˜ ๋งŒํผ ๊ธฐ๋Šฅ์„ ์ƒˆ๋กญ๊ฒŒ ๊ฐœ๋ฐœํ•˜๋Š” ์ž‘์—…์€ ์ ์—ˆ๋‹ค. ์ฑ•ํ„ฐ์— ๊ธฐ์—ฌํ•˜๋Š” ์ž‘์—…์„ ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์ฆ๊ฑฐ์› ์ง€๋งŒ ์—๋Ÿฌ์™€ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด์„œ ๊ธฐ์กด์— ์Œ“์—ฌ์žˆ๋˜ ๋กœ๊ทธ๋“ค์„ ๋ณด๋ฉฐ ์•ฑ์ด ๊ฐ•์ œ๋กœ ์ข…๋ฃŒ๋˜๊ฑฐ๋‚˜ ํ™”์ดํŠธ์Šคํฌ๋ฆฐ์ด ์™œ ๋œจ๋Š”์ง€ ์žฌํ˜„ํ•˜๊ธฐ ์–ด๋ ค์›Œ ํ•˜๋ฃจ ์ข…์ผ ๋กœ๊ทธ๋“ค๋งŒ ๋ณด๋‹ค๊ฐ€ ์ง€๋‚˜๊ฐ€๊ธฐ๋„ ํ•˜๊ณ , ํ•„์š”ํ•œ ๋กœ๊ทธ๋ฅผ ๋ถ„๋ฅ˜ํ•˜๊ธฐ๋ณด๋‹ค ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์Œ“์ด๊ณ  ์žˆ๋Š” ๋กœ๊ทธ๋“ค์„ ๋จผ์ € ์ œ๊ฑฐํ•˜๊ฒŒ ๋˜๊ธฐ๋„ ํ•˜๋ฉด์„œ ์ง„ํ–‰ ๋ฐฉํ–ฅ์ด ์ค‘๊ฐ„์ค‘๊ฐ„ ๋ฐ”๋€Œ๊ธฐ๋„ ํ–ˆ๋‹ค. ์ˆœ๊ฐ„ ์ˆœ๊ฐ„ ํ•˜๋ฃจ๋ฅผ ๋Œ์•„๋ณด๋ฉด์„œ `๋‚ด๊ฐ€ ์˜๋ฏธ์žˆ๋Š” ์ž‘์—…์„ ํ•˜๋Š” ๊ฑธ๊นŒ, ๋‚ด๊ฐ€ ์ž˜๋ชปํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹๊นŒ` ๊ณ ๋ฏผ์ด ๋˜๊ธฐ๋„ ํ–ˆ์ง€๋งŒ ์ฑ•ํ„ฐ์›๋“ค์˜ ๊ฒฉ๋ ค์— ํž˜์„ ๋ฐ›์•„ ์ง„ํ–‰ํ–ˆ๋˜ ํ•œ๋‹ฌ์ด์—ˆ๋‹ค.

์—๋Ÿฌ/ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ผ๋Š” ์ผ์ด ๋‹น์žฅ ๋ˆˆ์— ๋ณด์ด๋Š” ์„ฑ๊ณผ๊ฐ€ ์ ์€ ์ผ์ด์ง€๋งŒ ๋‚ด๊ฐ€ ํ•˜๋Š” ์ž‘์—…์„ ํ†ตํ•ด์„œ ๋ˆ„๊ตฐ๊ฐ€ ๊ฒช๊ณ  ์žˆ๋Š” ์—๋Ÿฌ๋“ค์„ ๋ง‰์œผ๋ฉด์„œ ์•ˆ์ •์„ฑ์„ ๋†’์—ฌ ๋” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•˜๊ณ  ๋” ํž˜๋‚ด์„œ ์ง„ํ–‰ํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ˜ผ์ž์„œ ๋™๋™๋Œ€๊ธฐ ๋ณด๋‹ค ๊ฐ ๋„๋ฉ”์ธ์„ ์ž˜ ์•„์‹œ๋Š” ๋ถ„๋“ค๊ป˜ ์ ๊ทน์ ์œผ๋กœ ๋„์›€์„ ์ฒญํ•จ์œผ๋กœ์จ ๋” ํšจ์œจ์ ์œผ๋กœ ์ผํ•ด 9์›”๊นŒ์ง€ 3๋ถ„๊ธฐ๋ฅผ ์ž˜ ๋งˆ๋ฌด๋ฆฌํ•ด๋ณด๋ คํ•œ๋‹ค.