Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
GeekLive_長期運用_安定リリースのための自動実機テスト__1_.pptx.pdf
Search
akatsukinewgrad
May 19, 2022
0
840
GeekLive_長期運用_安定リリースのための自動実機テスト__1_.pptx.pdf
akatsukinewgrad
May 19, 2022
Tweet
Share
More Decks by akatsukinewgrad
See All by akatsukinewgrad
2023/1/25_QAテスター meet up!
akatsukinewgrad
0
110
成果発表資料.pdf
akatsukinewgrad
0
1.9k
広大なフィールドを気持ちよく駆け抜けるための技術.pdf
akatsukinewgrad
0
480
正規表現とReDoS.pdf
akatsukinewgrad
0
470
Unityで大量のオブジェクト_を吹き飛ばしたい.pdf
akatsukinewgrad
0
500
新卒2年目が思う1年目の学び.pdf
akatsukinewgrad
0
450
障害訓練の取り組みについて.pdf
akatsukinewgrad
0
580
7分でわかるアカツキゲームス
akatsukinewgrad
0
490
Bitcoinだけでスマートコントラクト.pdf
akatsukinewgrad
1
760
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
Code Review Best Practice
trishagee
65
17k
Building Adaptive Systems
keathley
38
2.3k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
29
2k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
1.2k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
VelocityConf: Rendering Performance Case Studies
addyosmani
326
24k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
127
18k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
28
4.4k
GitHub's CSS Performance
jonrohan
1030
460k
Transcript
長期運用・安定リリースのた めの自動実機テスト 小山@アカツキ(サーバーサイドエンジニア)
自己紹介 なまえ: 小山竜之介 しごと: いい感じにするエンジニア おかし: たべっ子どうぶつ クライアント QA ×
エンジニアリング 2018/04 2018/09 2019/08 2021/11 サーバー QA × エンジニアリング
話すこと • 長期運用していくとリグレッションテストが大変! • 安定リリースのためには自動テストが必須! • 実機テストでの自動リグレッションテストも大変だけど必須!
長期運用の課題
プロジェクトの目標 10年後も続くプロダクト
長期運用の課題 機能のリリースにはリグレッションテストが不可欠 機能数に比例してリグレッションテスト項目は増加する つまり、機能を開発するたびにリリースにかかるコストは大きくなる 開発 テスト 開発 テスト テスト 開発
テスト テスト 開発 テスト テスト
実機手動リグレッションテスト 実機での手動リグレッションテストは 現在 27機能 6508項目 30人日↑ → コストが高いためバージョンリリースの最後に1度だけ また、回数を増やすことが難しいため1つのバージョンに含まれる機能が多くなる →
価値の提供が遅れる一因に (このバージョンに乗せられないなら次は2ヶ月後 とか) 自動化することで 早期に発見、頻繁に修正(シフトレフト) → 工数削減・素早い開発 早くリリース、頻繁に改善(シフトライト) → ユーザーの満足度向上
リグレッションテスト ✖ 自動テスト ✖ 実機テスト
長期運用とリグレッションテスト ❌ 新しい不具合を発見する ⭕ 今ある機能の劣化を防ぐ リグレッションテストを省略 = 基本機能を損なう重大な欠陥のリスク 機能の数 ≒
リグレッションテストの項目数 ≒ 1回あたりのリリースにかかるコスト 運用が長くなるほどリリースにかかるコストが増える リグレッションテスト(regression testing) ソフトウェアの変更されていない領域で欠陥が混入している、もしくは露呈していることを検出するための、変更 関連のテストの一種。
安定リリースと自動テスト 自動化のメリット・効果 • 実行時のコスト削減 • 実行時の時間短縮 • 実行時の正確性の担保 など 自動化のデメリット・注意点
• 自動化時にコスト • 保守にコスト(変更への追従) • コード通りにしかテストしない など 何度も実行し、内容変更の少ないテストが自動化に向いている(なんでも自動化すればいいってもんでもない ) → リグレッションテスト また、人的リソース・時間を考慮しなくて良くなるので早期に何度でも実行できる → 問題を早期発見し手戻りを防げる 自動化することでコストを減らし安定したリリースが可能になる
実機テストと自動テスト 単体・統合テストは機能実装と同時にテストコードが書かれ、都度自 動実行される(ことが多い) 実機テストの自動化はコストが高く、速度も遅い (なんでも自動化すればいいってもんでもない ) 自動化に向いているテスト内容に絞って取り組む必要がある 実機(End to End)テスト
アプリのフローを最初から最後までテストする(ユーザー⇄スマートフォン⇄サーバー) システム全体の統合とデータの整合性を検証する(クライアント・サーバー・マスター) 単体テスト 統合テスト 実機 手動テスト 自動テストの効率的な比率 費用: 高い 速度: 遅い 費用: 安い 速度: 早い
ちょっとだけ技術的な話
ゲームの難しいところ ボタンやテキストを取得したい! でも出力されるのはレンダリングエンジンによって描画されたただのピクセル (要素をツリーから選択 みたいなことはできない) →画像認識ベースになる(遅い、動きに弱い…)
CIに組み込む ビルドするよ テストするよ 通知するよ シンプル!! でも意外と考えること多い(実行環境、連携方法、セキュリティ・・・)
まとめ
まとめ • 長期運用していくとリグレッションテストが大変! • 安定リリースのためには自動テストが必須! • 実機テストでの自動リグレッションテストも大変だけど必須!