3.7K Views
March 14, 23
スライド概要
JaSST'23 Tokyo
https://www.jasst.jp/symposium/jasst23tokyo.html
2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp
公開 ミューテーションテストの取り組み ヤフー株式会社 UX推進本部プロダクト品質推進部 片山 浩 ©︎ Yahoo Japan
公開 このセッションについて 昨年10月に、単体テストの品質改善の取り組みとして、ミューテー ションテストを導入しました。このセッションでは、ミューテーション テストの導入の流れとその結果、及び将来的な展望をお話しします。 ©︎ Yahoo Japan
公開 自己紹介 片山 浩 ヤフー株式会社 サービステスト支援チーム 2018年から社内のテスト支援の活動開始 趣味:ランニング ©︎ Yahoo Japan 3
公開 本日の流れ 1. チームの紹介 2. ミューテーションテスト導入の背景 3. ミューテーションテストとは? 4. ミューテーションテストの流れ 5. 導入結果 6. 今後の展望 ©︎ Yahoo Japan 4
公開 チームの紹介 ©︎ Yahoo Japan 5
公開 チームの紹介 サービステストチーム 市場不具合を減らすことを目的に、テスト相談があった サービス・プロダクトに対して現場支援を行う 相談ベースの現場支援 市場不具合を減らす ©︎ Yahoo Japan 6
公開 ミューテーションテスト導入の背景 ©︎ Yahoo Japan 7
公開 ミューテーションテスト導入の背景 テスト支援活動の変化 相談ベースから全社横断の現場支援へ切り替え ©︎ Yahoo Japan 8
公開 ミューテーションテスト導入の背景 テスト状況の把握 サービス・プロダクトへアンケートを実施 86%がテストに課題があると回答 アンケート実施数 169 回答数 129 76% ©︎ Yahoo Japan 課題あり 111 86% 9
公開 ミューテーションテスト導入の背景 テスト改善の提案と合意 経営層へ報告し、テスト品質改善を提案 ⚫ 重大事故を一定以下にする ⚫ 2サービスでパイロット運用 全社横断の改善 テスト支援チーム 結果報告と改善提案 経営層 市場不具合を減らすには、上流で品質担保を行うことが重要で あるため、全社横断で単体テストの品質改善を優先的に行う ©︎ Yahoo Japan 10
公開 ミューテーションテスト導入の背景 ミューテーションテストの導入 単体テストの改善をするために、 C1カバレッジとその確 からしさを可視化する手法である「ミューテーションテ スト」を導入することにした C0(命令網羅)カバレッジとしていないのは、全ての分岐が正しく処理され ることが確認できない(意味のあるテストにならない)からである。 ©︎ Yahoo Japan 11
公開 ミューテーションテストとは? ©︎ Yahoo Japan 12
公開 ミューテーションテストとは? 単体テストを全て通ったソースコードの一部を自動でエラー コードに書き換え、単体テストの品質を可視化する手法 問題のないテストケース 自動でバグを埋め込む バグが仕込まれているので 単体テストは失敗してOK 実行 ミューテーション実行前 実行 実行 ソースコード 失敗 単体テスト 問題のあるテストケース ソースコード 成功 単体テスト 自動でバグを埋め込む 網羅すべきコードが網羅して いなかったり、境界値が考慮 されていません 実行 ソースコード 成功 ©︎ Yahoo Japan 単体テスト 13
公開 ミューテーションテストとは? バグの埋め込み例 example1 example2 example3 if (a < b){ // do something } if (a == b){ // do something } if (a == b){ // do something } if (a <= b){ // do something } if (a != b){ // do something } if (true){ // do something } ©︎ Yahoo Japan 14
公開 ミューテーションテストの流れ ©︎ Yahoo Japan 15
公開 ミューテーションテストの流れ ミューテーションテストの流れ • 実施の目的 • ミューテーションテスト の説明 • 今後の流れを確認 開始 • 対象リポジトリへ実施 • 改善施策を確認 • 開発者で運用 • 2週間に1度進捗確認 2週間 ©︎ Yahoo Japan 1ヶ月 16
公開 ミューテーションテストの流れ 開発ルール ©︎ Yahoo Japan 17
公開 導入後の結果 ©︎ Yahoo Japan 18
公開 導入後の結果 カバレッジの改善 1. ミューテーションカバレッジの改善 2. C1カバレッジの改善 ©︎ Yahoo Japan 19
公開 導入後の結果 実行時間の改善 並列処理と差分実行に より、さらに時間短縮 オプション設定で 約半分に時間短縮 ©︎ Yahoo Japan 20
公開 今後の展望 ©︎ Yahoo Japan 21
公開 今後の展望 他サービス・プロダクトへの横展開 成功事例を増やす 関係者と合意を取って、スケール化を進める ©︎ Yahoo Japan 22
公開 今後の展望 ミューテーションテストの効果測定 半年〜1年、新規開発行数に対して市場不具 合数を取る ©︎ Yahoo Japan 23
公開 ©︎ Yahoo Japan