Slide 1

Slide 1 text

長期運用・安定リリースのた めの自動実機テスト
 小山@アカツキ(サーバーサイドエンジニア)

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

話すこと ● 長期運用していくとリグレッションテストが大変!
 ● 安定リリースのためには自動テストが必須!
 ● 実機テストでの自動リグレッションテストも大変だけど必須!


Slide 4

Slide 4 text

長期運用の課題

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

リグレッションテスト ✖ 自動テスト ✖ 実機テスト

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

ちょっとだけ技術的な話

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

まとめ

Slide 16

Slide 16 text

まとめ ● 長期運用していくとリグレッションテストが大変!
 ● 安定リリースのためには自動テストが必須!
 ● 実機テストでの自動リグレッションテストも大変だけど必須!