ミューテーションテストの取り組み

3.3K Views

March 14, 23

スライド概要

JaSST'23 Tokyo
https://www.jasst.jp/symposium/jasst23tokyo.html

profile-image

2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

公開 ミューテーションテストの取り組み ヤフー株式会社 UX推進本部プロダクト品質推進部 片山 浩 ©︎ Yahoo Japan

2.

公開 このセッションについて 昨年10月に、単体テストの品質改善の取り組みとして、ミューテー ションテストを導入しました。このセッションでは、ミューテーション テストの導入の流れとその結果、及び将来的な展望をお話しします。 ©︎ Yahoo Japan

3.

公開 自己紹介  片山 浩  ヤフー株式会社  サービステスト支援チーム  2018年から社内のテスト支援の活動開始  趣味:ランニング ©︎ Yahoo Japan 3

4.

公開 本日の流れ 1. チームの紹介 2. ミューテーションテスト導入の背景 3. ミューテーションテストとは? 4. ミューテーションテストの流れ 5. 導入結果 6. 今後の展望 ©︎ Yahoo Japan 4

5.

公開 チームの紹介 ©︎ Yahoo Japan 5

6.

公開 チームの紹介 サービステストチーム 市場不具合を減らすことを目的に、テスト相談があった サービス・プロダクトに対して現場支援を行う 相談ベースの現場支援 市場不具合を減らす ©︎ Yahoo Japan 6

7.

公開 ミューテーションテスト導入の背景 ©︎ Yahoo Japan 7

8.

公開 ミューテーションテスト導入の背景 テスト支援活動の変化 相談ベースから全社横断の現場支援へ切り替え ©︎ Yahoo Japan 8

9.

公開 ミューテーションテスト導入の背景 テスト状況の把握 サービス・プロダクトへアンケートを実施 86%がテストに課題があると回答 アンケート実施数 169 回答数 129 76% ©︎ Yahoo Japan 課題あり 111 86% 9

10.

公開 ミューテーションテスト導入の背景 テスト改善の提案と合意 経営層へ報告し、テスト品質改善を提案 ⚫ 重大事故を一定以下にする ⚫ 2サービスでパイロット運用 全社横断の改善 テスト支援チーム 結果報告と改善提案 経営層 市場不具合を減らすには、上流で品質担保を行うことが重要で あるため、全社横断で単体テストの品質改善を優先的に行う ©︎ Yahoo Japan 10

11.

公開 ミューテーションテスト導入の背景 ミューテーションテストの導入 単体テストの改善をするために、 C1カバレッジとその確 からしさを可視化する手法である「ミューテーションテ スト」を導入することにした C0(命令網羅)カバレッジとしていないのは、全ての分岐が正しく処理され ることが確認できない(意味のあるテストにならない)からである。 ©︎ Yahoo Japan 11

12.

公開 ミューテーションテストとは? ©︎ Yahoo Japan 12

13.

公開 ミューテーションテストとは? 単体テストを全て通ったソースコードの一部を自動でエラー コードに書き換え、単体テストの品質を可視化する手法 問題のないテストケース 自動でバグを埋め込む バグが仕込まれているので 単体テストは失敗してOK 実行 ミューテーション実行前 実行 実行 ソースコード 失敗 単体テスト 問題のあるテストケース ソースコード 成功 単体テスト 自動でバグを埋め込む 網羅すべきコードが網羅して いなかったり、境界値が考慮 されていません 実行 ソースコード 成功 ©︎ Yahoo Japan 単体テスト 13

14.

公開 ミューテーションテストとは? バグの埋め込み例 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

15.

公開 ミューテーションテストの流れ ©︎ Yahoo Japan 15

16.

公開 ミューテーションテストの流れ ミューテーションテストの流れ • 実施の目的 • ミューテーションテスト の説明 • 今後の流れを確認 開始 • 対象リポジトリへ実施 • 改善施策を確認 • 開発者で運用 • 2週間に1度進捗確認 2週間 ©︎ Yahoo Japan 1ヶ月 16

17.

公開 ミューテーションテストの流れ 開発ルール ©︎ Yahoo Japan 17

18.

公開 導入後の結果 ©︎ Yahoo Japan 18

19.

公開 導入後の結果 カバレッジの改善 1. ミューテーションカバレッジの改善 2. C1カバレッジの改善 ©︎ Yahoo Japan 19

20.

公開 導入後の結果 実行時間の改善 並列処理と差分実行に より、さらに時間短縮 オプション設定で 約半分に時間短縮 ©︎ Yahoo Japan 20

21.

公開 今後の展望 ©︎ Yahoo Japan 21

22.

公開 今後の展望 他サービス・プロダクトへの横展開  成功事例を増やす  関係者と合意を取って、スケール化を進める ©︎ Yahoo Japan 22

23.

公開 今後の展望 ミューテーションテストの効果測定  半年〜1年、新規開発行数に対して市場不具 合数を取る ©︎ Yahoo Japan 23

24.

公開 ©︎ Yahoo Japan