---
title: ミューテーションテストの取り組み
tags:  #jassttokyo  
author: [Yahoo!デベロッパーネットワーク](https://www.docswell.com/user/ydnjp)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/L73NX2WD75.jpg?width=480
description: JaSST&#039;23 Tokyo https://www.jasst.jp/symposium/jasst23tokyo.html
published: March 14, 23
canonical: https://www.docswell.com/s/ydnjp/Z3886V-2023-03-14-103016
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/L73NX2WD75.jpg)

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


# Page. 2

![Page Image](https://bcdn.docswell.com/page/87DW2ZK2JG.jpg)

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


# Page. 3

![Page Image](https://bcdn.docswell.com/page/VJP91DKLE8.jpg)

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


# Page. 4

![Page Image](https://bcdn.docswell.com/page/2EVMY1V6EQ.jpg)

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


# Page. 5

![Page Image](https://bcdn.docswell.com/page/57GG92L27L.jpg)

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


# Page. 6

![Page Image](https://bcdn.docswell.com/page/4EQXWPY97P.jpg)

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


# Page. 7

![Page Image](https://bcdn.docswell.com/page/KJ46KYZR71.jpg)

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


# Page. 8

![Page Image](https://bcdn.docswell.com/page/LE1VX6RV7G.jpg)

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


# Page. 9

![Page Image](https://bcdn.docswell.com/page/GEWLNW1372.jpg)

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


# Page. 10

![Page Image](https://bcdn.docswell.com/page/47ZM35PGE3.jpg)

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


# Page. 11

![Page Image](https://bcdn.docswell.com/page/YJ6NX9MQJV.jpg)

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


# Page. 12

![Page Image](https://bcdn.docswell.com/page/GJ55XNZ2J4.jpg)

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


# Page. 13

![Page Image](https://bcdn.docswell.com/page/9E2NX5R17R.jpg)

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


# Page. 14

![Page Image](https://bcdn.docswell.com/page/D7YP8KD47M.jpg)

公開
ミューテーションテストとは？
バグの埋め込み例
example1
example2
example3
if (a &lt; b){
// do something
}
if (a == b){
// do something
}
if (a == b){
// do something
}
if (a &lt;= b){
// do something
}
if (a != b){
// do something
}
if (true){
// do something
}
©︎ Yahoo Japan
14


# Page. 15

![Page Image](https://bcdn.docswell.com/page/VEN5QR66J8.jpg)

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


# Page. 16

![Page Image](https://bcdn.docswell.com/page/Y79YDMLRE3.jpg)

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


# Page. 17

![Page Image](https://bcdn.docswell.com/page/G7863LXGJD.jpg)

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


# Page. 18

![Page Image](https://bcdn.docswell.com/page/L7L9VL8XER.jpg)

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


# Page. 19

![Page Image](https://bcdn.docswell.com/page/4EMZGM637W.jpg)

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


# Page. 20

![Page Image](https://bcdn.docswell.com/page/PER6ZVPRJ9.jpg)

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


# Page. 21

![Page Image](https://bcdn.docswell.com/page/P7XM9Z3YJX.jpg)

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


# Page. 22

![Page Image](https://bcdn.docswell.com/page/37KGP8Y4ED.jpg)

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


# Page. 23

![Page Image](https://bcdn.docswell.com/page/LJ3NX29DJ5.jpg)

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


# Page. 24

![Page Image](https://bcdn.docswell.com/page/8JDW2ZG2EG.jpg)

公開
©︎ Yahoo Japan


