Software Symposium 2017
探索的テストにおける不具合発見率向上に向けた取り組み
株式会社LIFULL 中野直樹
Copyright © 2017 Naoki Nakano All Rights Reserved.

探索的テストの導入の経緯
現在、弊社では自社のウェブサービスを開発・運営しており、社内外で様々な開発プロジェクトが稼働中である。また、開発プロセスはプロジェクト（チーム）で決定する方針である。
QAがテストサポートとして参加するプロジェクトの中で、以下のような課題を持つプロジェクトが複数存在していたた
め、課題解決に向けて探索的テストの導入を行った。
 プロトタイプ開発でテストベースが不足している 短納期でマニュアルテストが十分か確認することが困難
Copyright © 2017 Naoki Nakano All Rights Reserved.

探索的テストの様々なスタイル
探索的テストに関する技術的な知見は、様々な形で存在しているが、どれも似て非なるスタイルが定義されていることがわかった。
名前キーワード

Cem Kaner••••••*1

テストのスタイル
学習する
設計の定義シナリオ設計
実行
解釈

名前キーワードJamesWhittaker•
•••

設計
慎重な観察
多様な考え
ツアー•••••

テスト設計
慎重な観察
クリティカルシンキング
多様な考え
豊富な資源

*3James Bach
*4ElisabethHendrickson
*2

••••

テスト設計＆テスト実施
学習ステアリング（舵取り）チャーター*1 Cem Kaner, J.D., Ph.D.: A Tutorial in Exploratory Testing http://www.kaner.com/pdfs/QAIExploring.pdf*2 Elisabeth Hendrickson Explore It!: Reduce Risk and Increase Confidence with Exploratory Testing ,2013*3 James A. Whittaker; Exploratory Software Testing: Tips, Tricks, Tours, and Techniques to Guide TestDesign, 2009
*4 James Bach Exploratory Testing Explained http://www.satisfice.com/articles/et‐article.pdf

Copyright © 2017 Naoki Nakano All Rights Reserved.

探索的テスト導入後の課題
 探索的テストを効率的に進める為に技術や経験が必要
 テスト担当者間のバグ発見数にばらつきがある
探索的テストのバグ発見の精度を向上させたい

Copyright © 2017 Naoki Nakano All Rights Reserved.

チャーターの活用 探索的テストの属人性を減らし、汎用的な技術として扱えるように探索的テストのスタイルの中から効果的なものに絞っていく方針で検討を行った
 チャーター(*5)を使用することで、テストの観点をあらかじめ整理することができる点や、共有や再利用可能な点からバグ発見数のばらつきを抑える効果があると考えた
 チャーターには、「ユーザーマニュアル」、「テスト観点」、「ユースケース」、「過去プロジェクトの不具合情報」などを利用することがあるが、何を使用するかなどは、テスト開始前にチーム内検討を行うこととした*5 Elisabeth Hendrickson 2013 Explorer It!

Copyright © 2017 Naoki Nakano All Rights Reserved.

チャーターエレメントの作成
チャーターの中でも過去プロジェクトの不具合情報はチャーターとして有用であることがわかった。
ただし、活用にあたり以下の課題があげられた。
 情報収集に時間がかかる
 不具合情報は情報が細かすぎる 情報が沢山あった場合に選定する必要がある

Copyright © 2017 Naoki Nakano All Rights Reserved.

チャーターエレメントの作成
 「過去プロジェクトの不具合情報」をテストプロジェクトのテスト成果物（バグ票）や本番で発生した障害管理票などから切り離して、チャーター作成専用のインプット資料（チャーターエレメント）として管理することにした新しいバグの知見（バグ票や、障害管理票）

Copyright © 2017 Naoki Nakano All Rights Reserved.

チャーターエレメント

チャーターエレメントの作成例
チャーターエレメント

バグ・障害管理票【概要】
詳細画面の○○欄の金額が四捨五入されておらず、端数が切り捨てられて表示される【手順】1.Top画面から一覧画面へ遷移
2. 一覧画面で検索実行後、詳細へ遷移
3.詳細画面で金額欄を確認【期待値】
SQLで××テーブルの値を確認するか、一覧画面の○○欄の金額でも確認が可能【発生原因】
・
不具合情報からドメイ・ン情報を排除し、再現できる抽象度で抽出

PC・スマートフォン ブラウザ
【検索】・・
・・同一のデータを異なる画面で照会した場合の値の差異

・・・・観点B
・観点C

Copyright © 2017 Naoki Nakano All Rights Reserved.

チャーターエレメント使用時のイメージ
A機能用チャーター
テストベース・テスト観点A’
・テスト観点C’

A機能仕様書チャーターエレメント
・テスト観点A・テスト観点B
・テスト観点C・テスト観点D
・テスト観点E
・・
・

A機能仕様書の内容を踏まえ
A機能用チャーターを作成

B機能用チャーター
テストベース
B機能仕様書・テスト観点A’’
・テスト観点B’・テスト観点D’

B機能仕様書の内容を踏まえB機能用チャーターを作成
Copyright © 2017 Naoki Nakano All Rights Reserved.

チャーターエレメントの管理フローのイメージ

Copyright © 2017 Naoki Nakano All Rights Reserved.

チャーターエレメントの管理のポイント
 ドメイン情報を排除し抽象度の高い状態で保存
 復元できる範囲で抽象化をとどめる
 元となる情報（不具合、障害情報の一部）を参考情報として別資料として作成し、チャーターエレメントからリンクさせて、すぐに閲覧できるようにする
チャーターエレメント
・テスト観点A・テスト観点B
・テスト観点C・テスト観点D

新しいバグの知見（バグ票や、障害管理票）

テスト観点Dのチャーターエレメント
補足情報

情報をリンク
新しいテスト観点Dを追加

Copyright © 2017 Naoki Nakano All Rights Reserved.

・障害、バグ事象・再現方法、テスト手順
・発生原因
・プロダクトリスク

チャーターエレメントの管理のポイント
 定期的にメンテナンスを行う
 追加する際、MECEになるように全体の整合性を確認
テスト観点間の粒度は均等か？
チャーターエレメント
・テスト観点A・テスト観点B
・テスト観点C・テスト観点D
・テスト観点E

新しいバグの知見（バグ票や、障害管理票）

新しいテスト観点Eを追加
Copyright © 2017 Naoki Nakano All Rights Reserved.

不要になる（または合成できるような）観点はないか？

チャーターエレメントの管理のポイント
 チャーターエレメントの情報はデバイスと機能特性（CRUDなど）で分類するデバイス、プラットフォームでチャーターを分ける
チャーターエレメント
バッチ

チャーターエレメント
スマホアプリチャーターエレメント
PC・スマートフォン（ウェブブラウザ）

チャーターエレメント
PC・スマートフォン（ウェブブラウザ）■ ログイン
‐ 観点1
‐ 観点2
・
■ 一覧照会・■ 詳細照会
・
■ 登録・
■ 更新
・・

Copyright © 2017 Naoki Nakano All Rights Reserved.

機能特性で情報を分けるチャーターエレメントの管理のポイント
チャーターエレメント
PC・スマートフォン ブラウザ
【検索】
・・・

バグ・障害管理票
元の不具合情報にリンクして閲覧できるように管理・同一のデータを異なる画面で照会した場合の値の差異

・・・・観点B・観点C【概要】
詳細画面の金額の四捨五入されておらず切り捨てられて表示される【手順】
1.Top画面から一覧画面へ遷移
2. 一覧画面で検索実行後、詳細へ遷移
3.詳細画面で金額欄を確認【期待値】
SQLでhogeテーブルの値を確認（一覧画面の金額でも確認可能）【発生原因】
・・

Copyright © 2017 Naoki Nakano All Rights Reserved.

チャーターエレメントの効果検証 チャーターエレメント効果として以下の2点において評価を行った
 若手テスター とベテランテスター の不具合発見数の比較
 若手テスター とベテランテスター の重大欠陥発見数の比較
(*6)

(*7)

(*6)

(*7)

*6：テスト業務の経験が2年未満のテスター*7：テスト業務の経験が5年以上のテスター

Copyright © 2017 Naoki Nakano All Rights Reserved.

効果検証：不具合発見数の比較
 若手テスターとベテランテスター各2名で実施
 チャーターエレメントの使用有無で2回ずつテスト
チャーター
エレメント

不具合発見数新人

不具合発見数比率

ベテラン

1回目

なし

52%

2回目

なし

46%

48%
54%

新人

ベテラン

90%
80%
70%
60%
50%
40%
30%

3回目

あり

4回目

あり

33%

67%

20%

80%

20%

0%

10%
1

2

チャーターエレメントなし

Copyright © 2017 Naoki Nakano All Rights Reserved.

3

4

チャーターエレメントあり

効果検証：重大欠陥発見数の比較
 若手テスターとベテランテスター各2名で実施
 チャーターエレメント有無毎に異なるテストアイテムに2回ずつテスト
チャーター
エレメント

不具合発見数新人

重大欠陥発見比率

ベテラン

1回目

なし

43%

2回目

なし

21%

57%
79%

新人

ベテラン

90%
80%
70%
60%
50%
40%
30%

3回目

あり

4回目

あり

40%

60%

20%

50%

50%

0%

10%
1

2

チャーターエレメントなし

Copyright © 2017 Naoki Nakano All Rights Reserved.

34チャーターエレメントあり

検証結果考察 不具合発見数はよりバラつく結果となった
 重大欠陥発見数の比率はチャーターエレメントがあった場合の方がバラつきが少ないケースがあった
不具合発見数比率

新人

ベテラン

重大欠陥発見比率

90%

90%

80%

80%

70%

70%

60%

60%

50%

50%

40%

40%

30%

30%

20%

20%

10%

10%

0%

新人

ベテラン

0%
1

2

チャーターエレメントなし

34チャーターエレメントあり

1

2

チャーターエレメントなし

Copyright © 2017 Naoki Nakano All Rights Reserved.

34チャーターエレメントあり

今後の課題 チャーターエレメントのデータベース化（タグやメタデータなどを検討） 効果検証の目的でサンプリング数を増やす
 チャーターエレメントの作成（抽象化）ルールを明確にする

Copyright © 2017 Naoki Nakano All Rights Reserved.