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
810
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
100
成果発表資料.pdf
akatsukinewgrad
0
1.8k
広大なフィールドを気持ちよく駆け抜けるための技術.pdf
akatsukinewgrad
0
450
正規表現とReDoS.pdf
akatsukinewgrad
0
460
Unityで大量のオブジェクト_を吹き飛ばしたい.pdf
akatsukinewgrad
0
470
新卒2年目が思う1年目の学び.pdf
akatsukinewgrad
0
430
障害訓練の取り組みについて.pdf
akatsukinewgrad
0
530
7分でわかるアカツキゲームス
akatsukinewgrad
0
470
Bitcoinだけでスマートコントラクト.pdf
akatsukinewgrad
1
730
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
VelocityConf: Rendering Performance Case Studies
addyosmani
325
24k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
It's Worth the Effort
3n
183
27k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
228
52k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
328
21k
Why You Should Never Use an ORM
jnunemaker
PRO
53
9k
Facilitating Awesome Meetings
lara
49
6k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
41
9.2k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
32
1.8k
The Language of Interfaces
destraynor
154
24k
The Cult of Friendly URLs
andyhume
78
6k
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に組み込む ビルドするよ テストするよ 通知するよ シンプル!! でも意外と考えること多い(実行環境、連携方法、セキュリティ・・・)
まとめ
まとめ • 長期運用していくとリグレッションテストが大変! • 安定リリースのためには自動テストが必須! • 実機テストでの自動リグレッションテストも大変だけど必須!