Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GeekLive_長期運用_安定リリースのための自動実機テスト__1_.pptx.pdf

akatsukinewgrad
May 19, 2022
590

 GeekLive_長期運用_安定リリースのための自動実機テスト__1_.pptx.pdf

akatsukinewgrad

May 19, 2022
Tweet

Transcript

  1. 長期運用・安定リリースのた
    めの自動実機テスト

    小山@アカツキ(サーバーサイドエンジニア)

    View Slide

  2. 自己紹介
    なまえ: 小山竜之介
    しごと: いい感じにするエンジニア
    おかし: たべっ子どうぶつ
    クライアント QA × エンジニアリング
    2018/04 2018/09 2019/08 2021/11
    サーバー
    QA ×
    エンジニアリング

    View Slide

  3. 話すこと
    ● 長期運用していくとリグレッションテストが大変!

    ● 安定リリースのためには自動テストが必須!

    ● 実機テストでの自動リグレッションテストも大変だけど必須!


    View Slide

  4. 長期運用の課題

    View Slide

  5. プロジェクトの目標
    10年後も続くプロダクト

    View Slide

  6. 長期運用の課題
    機能のリリースにはリグレッションテストが不可欠
    機能数に比例してリグレッションテスト項目は増加する
    つまり、機能を開発するたびにリリースにかかるコストは大きくなる
    開発 テスト 開発 テスト
    テスト
    開発 テスト
    テスト
    開発
    テスト
    テスト

    View Slide

  7. 実機手動リグレッションテスト
    実機での手動リグレッションテストは 現在 27機能 6508項目 30人日↑
    → コストが高いためバージョンリリースの最後に1度だけ
    また、回数を増やすことが難しいため1つのバージョンに含まれる機能が多くなる
    → 価値の提供が遅れる一因に (このバージョンに乗せられないなら次は2ヶ月後 とか)
    自動化することで
    早期に発見、頻繁に修正(シフトレフト) → 工数削減・素早い開発

    早くリリース、頻繁に改善(シフトライト) → ユーザーの満足度向上

    View Slide

  8. リグレッションテスト

    自動テスト

    実機テスト

    View Slide

  9. 長期運用とリグレッションテスト
    ❌ 新しい不具合を発見する
    ⭕ 今ある機能の劣化を防ぐ
    リグレッションテストを省略 = 基本機能を損なう重大な欠陥のリスク
    機能の数 ≒ リグレッションテストの項目数 ≒ 1回あたりのリリースにかかるコスト
    運用が長くなるほどリリースにかかるコストが増える
    リグレッションテスト(regression testing)
    ソフトウェアの変更されていない領域で欠陥が混入している、もしくは露呈していることを検出するための、変更
    関連のテストの一種。

    View Slide

  10. 安定リリースと自動テスト
    自動化のメリット・効果
    ● 実行時のコスト削減
    ● 実行時の時間短縮
    ● 実行時の正確性の担保 など
    自動化のデメリット・注意点
    ● 自動化時にコスト
    ● 保守にコスト(変更への追従)
    ● コード通りにしかテストしない など
    何度も実行し、内容変更の少ないテストが自動化に向いている(なんでも自動化すればいいってもんでもない )
    → リグレッションテスト
    また、人的リソース・時間を考慮しなくて良くなるので早期に何度でも実行できる
    → 問題を早期発見し手戻りを防げる
    自動化することでコストを減らし安定したリリースが可能になる

    View Slide

  11. 実機テストと自動テスト
    単体・統合テストは機能実装と同時にテストコードが書かれ、都度自
    動実行される(ことが多い)
    実機テストの自動化はコストが高く、速度も遅い
    (なんでも自動化すればいいってもんでもない )
    自動化に向いているテスト内容に絞って取り組む必要がある
    実機(End to End)テスト
    アプリのフローを最初から最後までテストする(ユーザー⇄スマートフォン⇄サーバー)
    システム全体の統合とデータの整合性を検証する(クライアント・サーバー・マスター)
    単体テスト
    統合テスト
    実機
    手動テスト
    自動テストの効率的な比率
    費用: 高い
    速度: 遅い
    費用: 安い
    速度: 早い

    View Slide

  12. ちょっとだけ技術的な話

    View Slide

  13. ゲームの難しいところ
    ボタンやテキストを取得したい!
    でも出力されるのはレンダリングエンジンによって描画されたただのピクセル
    (要素をツリーから選択 みたいなことはできない)
    →画像認識ベースになる(遅い、動きに弱い…)

    View Slide

  14. CIに組み込む
    ビルドするよ テストするよ 通知するよ
    シンプル!!
    でも意外と考えること多い(実行環境、連携方法、セキュリティ・・・)

    View Slide

  15. まとめ

    View Slide

  16. まとめ
    ● 長期運用していくとリグレッションテストが大変!

    ● 安定リリースのためには自動テストが必須!

    ● 実機テストでの自動リグレッションテストも大変だけど必須!


    View Slide