More Related Content
Similar to 「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム (20)
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
- 25. Build
• オートテストクライアントとJenkinsの使い分け
– オートテストクライアント
• 利用者(テスト協力者)が扱いやすい
– 利用PCで実行状態がわかる
– 起動前と終了後の処理を正しく行う
• 開発の空き時間での運用
– Jenkinsからの実行
• オートテスト管理者が扱いやすい
– より複雑なオートテスト制御を行う
• 24時間稼働している前提での運用
【テストケース設定の自動化】 Jenkins上でのサブシナリオのテスト
24時間稼働している前提での運用
開発の空き時間での運用
サブシナリオのテスト
• 1つ30分~2時間程度のサ
ブシナリオが50以上
• 全サブシナリオを効率的に
実行したい
- 28. Build
• おまけ:制御用パイプラインスクリプト概要
【テストケース設定の自動化】 Jenkins上でのサブシナリオのテスト
stage(テスト設定エクセルのロード) {
// テスト設定エクセルには1ケース1行で実行用パラメータが記載されている
// オートテスト用リポジトリからファイル一式を更新
// エクセル⇒csvに変換、読み込み
}
stage(テスト名) {
while(!executed) {
// 実行可能なノードの検索
def c = Jenkins.instance.computers.find { it.isOnline() } // 実際はラベル条件などもチェック
def idleExecutors = c.executors.findAll { it.isIdle() }
// パラメータを渡してオートテストジョブを実行
build job: 'AutotestJob', parameters: [string(name: 'AUTO_INPUT_FILE', value: auto_input_file), string(name: 'SAVE_DATA', value: save_data_file),
(中略), [$class: 'LabelParameterValue', name: 'RUN_ON', label: c.getDisplayName()]], propagate: false, wait: false
// 実行できるまでスリープしながらループ
sleep 30
}
}
// 1周終わったら次のジョブを呼び出す
build job: 'Autotest_Master_Pipeline', propagate: false, wait: false
- 30. QA
【エラー検知の自動化】
• エラー検知の種類
– 例外(アプリケーションエラー)
– ASSERT
• 例外と同じくエラー扱い
– WARNING
• 開発モードは継続可能
• テストではエラー扱い
– テスト結果分析
• どこでもログ分析で進行不能等を見える化
適切なアサーションを大量に入れる
どこでもログ分析の詳細は
『無料で始める! 「龍が如く」を面白くするための
高速デバッグログ分析と自動化』
http://jasst.jp/symposium/jasst18tokyo/pdf/D4.pdf
©SEGA
- 41. Build
• 再現確認のための実行
– セーブデータ、リプレイ用スクリプト
– 実行用Jenkinsジョブを呼びだす
– 複数回実行する(タイムアウト付き)
• 実行結果をRedmineチケットに反映
– 同じエラーが発生
• 対象チケットの「自動再現」項目を「はい」
⇒ 開発者:再現用データを使って確認可能(詳細は修正編)
– エラーが発生しない
⇒ 開発者:「再現しなかった」という情報と共に調査
【再現確認の自動化】Jenkinsと連携
- 47. QA
• 優先度と重要度の違い
– 優先度
• 修正を急ぐ必要性
– 高:多くの場所に影響がある
– 低:特定の条件がそろわないと起きない/再現率が低い
– 重要度
• バグの重大性
– 高:アプリケーションエラーで強制終了
– 低:誤字脱字などの表記ミス
» ただし権利表記や製品基準に関わる誤字は重要度高
【優先度・重要度の決定の自動化】
- 52. Build
• 簡単な考察
– ここでの結論
• 方向性は悪くなかったが、
こういうことができる前提としてエラー登録の仕組みと運用が整っ
ている
– 機械学習導入の労力
• 機能の実装(今回はやってみた)
• 結果の検証、調整(今回は途中まで)
• 学習を繰り返しながら運用(今回取り組まず)
【修正担当者決定の自動化】機械学習
⇒ 今回はASSERTマクロ機能(後述)の拡張という別手段で解決
ルールで解決可能な場合はルールに沿った仕組みの方が費用対効果は高い
- 76. QA
代表的な自動化機能の適用件数
ゲームタイトル どこでもバグ報告 コンバート予約 エラー送信 全自動化
龍が如く 維新! 9,338 未計測 未計測 -
龍が如く0 誓いの場所 6,316 7,930 621 -
龍が如く 極 1,931 4,013 未計測 -
龍が如く6 命の詩。 18,529 18,101 8,102 -
龍が如く 極2 10,487 9,836 8,645 -
北斗が如く 8,676 8,096 16,532 -
JUDGE EYES:死神の遺言 15,253 13,457 16,930 -
龍が如く7 光と闇の行方 20,478 19,131 29,242 250
いずれかの恩恵をうけてバグ作業フローが効率化!
- 80. QA Build
• 「龍が如く」の高速デバッグ術 ~そびえ立つバグの山を踏破するための弾丸ワークフロー~
– http://jasst.jp/symposium/jasst16tokyo/pdf/E2.pdf
• 無料で始める! 「龍が如く」を面白くするための 高速デバッグログ分析と自動化
– http://www.jasst.jp/symposium/jasst18tokyo/pdf/D4.pdf
• 「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成
の取り組みについて
– https://www.slideshare.net/SEGADevTech/7-234572005
関連資料
- 81. QA Build
• 社内ヘルプデスクをAIで! フューチャーアーキテクト開発者ブログ
– https://future-architect.github.io/articles/20171005/
• GDC 2018 - Tools Tutorial Day: Tools to Reduce Open Bug Count at Media Molecule
– https://www.gdcvault.com/play/1025439/Tools-Tutorial-Day-Tools-to
– https://www.gdcvault.com/play/1025013/Tools-Tutorial-Day-Tools-to
参考文献