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
950
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
130
成果発表資料.pdf
akatsukinewgrad
0
2k
広大なフィールドを気持ちよく駆け抜けるための技術.pdf
akatsukinewgrad
0
560
正規表現とReDoS.pdf
akatsukinewgrad
0
540
Unityで大量のオブジェクト_を吹き飛ばしたい.pdf
akatsukinewgrad
0
590
新卒2年目が思う1年目の学び.pdf
akatsukinewgrad
0
510
障害訓練の取り組みについて.pdf
akatsukinewgrad
0
690
7分でわかるアカツキゲームス
akatsukinewgrad
0
560
Bitcoinだけでスマートコントラクト.pdf
akatsukinewgrad
1
880
Featured
See All Featured
How to Think Like a Performance Engineer
csswizardry
24
1.7k
The Cost Of JavaScript in 2023
addyosmani
51
8.5k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.8k
How to train your dragon (web standard)
notwaldorf
94
6.1k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.2k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
710
Making Projects Easy
brettharned
116
6.3k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
181
53k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
138
34k
Done Done
chrislema
184
16k
Testing 201, or: Great Expectations
jmmastey
42
7.5k
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に組み込む ビルドするよ テストするよ 通知するよ シンプル!! でも意外と考えること多い(実行環境、連携方法、セキュリティ・・・)
まとめ
まとめ • 長期運用していくとリグレッションテストが大変! • 安定リリースのためには自動テストが必須! • 実機テストでの自動リグレッションテストも大変だけど必須!