0½0Õ0È0¦0§0¢tÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド...

50
継続的システムテストについての 理解を深めるための 開発とバグのメトリクスの分析 2015/09/18 荻野 恒太郎 [email protected] Test Engineering Team Service Support Section Group Core Service Department http://www.rakuten.co.jp/ ソフトウェア品質シンポジウム2015

Upload: doanque

Post on 03-Apr-2018

220 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

継続的システムテストについての

理解を深めるための

開発とバグのメトリクスの分析 2015/09/18 荻野 恒太郎 [email protected] Test Engineering Team Service Support Section Group Core Service Department http://www.rakuten.co.jp/

ソフトウェア品質シンポジウム2015

Page 2: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

2

アジェンダ

バックグラウンド

メトリクス

分析①

分析②

分析③

まとめと今後の課題

ソフトウェア品質シンポジウム2015

Page 3: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

3

バックグラウンド

メトリクス

分析①

分析②

分析③

まとめと今後の課題

ソフトウェア品質シンポジウム2015

Page 4: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

4

(ST) 設計 実装

システムテスト(ST)

分析

背景①:開発プロセスの変化とシステムテスト

設計

実装

要求(スコープ)

自動化前 自動化後

時間

要求(スコープ) 時間

分析

•ウォーターフォールからアジャイルへ 平鍋 健児, ”ソフトウェア工学の分岐点における、アジャイルの役割” SS2010.

•早期からのシステムテストの実施 永田 敦, “アジャイル開発における品質保証部門によるシステムテストの アフ ゚ローチ” JASPIC2013.

•継続的システムテスト 荻野ら, ”システムテスト自動化による大規模分散検索プラットフォームの

開発工程改善” JaSST’ Tokyo 2014.

自動化により

システムテストを日次で実行

Page 5: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

5

背景②:継続的システムテストのメリット

テスト自動化に関する通説•品質と、コストとデリバリーはトレードオフ

→品質保証が開発プロセスから独立している事を仮定

継続的システムテスト •自動化する事でシステムテストを開発プロセスに取り込む事が可能

Page 6: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

6

背景②:継続的システムテストのメリット

システムテストを開発プロセスに取り込む

JaSST’14 Tokyoの発表より

Page 7: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

7

背景②:継続的システムテストのメリット

バグ修正日数が改善

JaSST’14 Tokyoの発表より

Page 8: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

8

背景②:継続的システムテストのメリット

テスト自動化に関する通説•品質と、コストとデリバリーはトレードオフ

→品質保証が開発プロセスから独立している事を仮定

継続的システムテスト •自動化する事でシステムテストを開発プロセスに取り込む事が可能

バグ修正日数が減少

= コストとデリバリーも改善

Page 9: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

9

本発表の目的と手法

目的: 継続的システムテスト環境下での

開発とシステムテストへの理解を深める事

手法: 開発、プロダクトとバグのメトリクスの分析

疑問①: 自動化されたシステムテストは質が低い?

疑問②: システムテストを開発プロセスに取り込むって?

疑問③: 開発をうまく進めるのに必要な工夫は?

システムテスト自動化への疑問

ソフトウェア品質シンポジウム2015

Page 10: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

10

継続的システムテストの

“ありのままの姿”

ソフトウェア品質シンポジウム2015

Page 11: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

11

バックグラウンド

メトリクス

分析①

分析②

分析③

まとめと今後の課題

ソフトウェア品質シンポジウム2015

Page 12: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

12

分析対象のメトリクス

開発メトリクス

日次の • コミット数• コミットサイズ

開発者

コミットソースコードレポジトリ

ビルド

テスト

バグ

レポート

プロダクトメトリクス

日次の • LOC •変更ファイル数•変更LOC •追加ファイル数•追加LOC •削除ファイル数•削除LOC •変更なしファイル数•無変更LOC

バグメトリクス

日次の •検出バグ数

ソフトウェア品質シンポジウム2015

Page 13: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

13

メトリクスの収集方法

グループ メトリクス名 収集方法 単位

開発メトリクス 日次のコミット数 git log (*1) 回数

日次のコミットサイズ git log (*2) 行数

プロダクトメトリクス 日次のLOC cloc (*3) 行数

日次の変更LOC

日次の追加LOC

日次の削除LOC

日次の変更無しLOC

cloc –diff (*4) 行数

日次の変更ファイル

日次の追加ファイル

日次の削除ファイル

日次の変更なしファイル

cloc –diff (*4) ファイル数

バグメトリクス 日次のプロダクトの

検出バグ数

- システムテストで発見されたバグ-バグ票の作成日で集計-同じ欠陥に由来するモノは新しい方を削除

回数

(*1) https://www.atlassian.com/ja/git/tutorial/git-basics#!log

(*2) コメント等を含む

(*3) http://cloc.sourceforge.net/

(*3)(*4) 開発言語はJava。コメント等を含まない

ソフトウェア品質シンポジウム2015

Page 14: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

14

分析対象のメトリクス(2013年度1/28~10/23)

0

5000

10000

15000

20000

25000

0

5

10

15

20

25

30

35

Commit

Commit size

0

50

100

150

200

一日のコミット数

コミット数とコミットサイズ 日次のコミット数の分布

1日で見つかった検出バグ数

0

50

100

150

200

250

0 1 2 3 4 5

日次の検出バグ数の分布

変更

LOC

追加

LOC

削除

LOC

0

1000

2000

0

1000

2000

0

1000

2000

LOC

時間

時間

コミット数コミットサイズ

行数

頻度

頻度

Page 15: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

15

分析対象の開発プロジェクトの開発フェーズ

大きな

機能要件 システム

リファクタリング断続的な

小さな要件 受け入れ

テスト受け入れ

テスト

•継続的な開発とテストが特徴

0

200

400

600

800

1000

1200

1400

0

10

20

30

40

50

60

70

80

90

累積検出バグ数

累積コミット数

A B C

開発フェーズ 検出バグ数

コミット数

99日間 100日間 84日間

Page 16: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

16

継続的システムテストの特徴について考察

従来のシステムテスト 継続的システムテスト

STの位置 実装の後 実装と平行して同時

役割 品質の門番 (品質の門番) リグレッションテスト

テストの追加 信頼度成長曲線を

見ながらテスト工程で

ユーザーストーリーとコードカバレッジを見ながら実装工程で

テスト期間中のコード変更

バグ修正のみ ある

リファクタリング 少ない 多い

Page 17: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

17

バックグラウンド

メトリクス

分析①

分析②

分析③

まとめと今後の課題

ソフトウェア品質シンポジウム2015

Page 18: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

18

分析①: 自動化されたシステムテストの評価

3月 5月 7月 9月

累積検出バグ数

A B C

•我々の開発プロセスを逐次的なミニウォーターフォールと考えバグとテスト追加の安定している下記のA,B,C3点で計測

疑問①: 自動化されたシステムテストは質が低い?

分析①の目的 分析対象のプロジェクトのテストの質を調べるため

テスト密度とバグ密度で業界標準と比較

Page 19: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

19

分析①:自動化されたシステムテストの評価

(*1) ”ソフトウェア開発データ白書 2012-2013

定量データ分析で分かる開発の最新動向”より

0

10

20

30

40

50

新規開発 改良開発

0

0.5

1

1.5

2

新規開発 改良開発

評価指標 •バグ密度とテスト密度• IPAが提供する業界標準の値と比較 (*1)

-最小値、P25, 中央値、P75, 最大値→ P25 ~ P75の区間が一つの目安

-主要言語Javaの値を使用-新規開発と改良開発

テスト密度 バグ密度

テスト密度= テストケース数

÷ KLOC

バグ密度

= 検出バグ数

÷ KLOC

IPAが提供する業界標準の値

Page 20: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

20

分析①:テスト密度の業界標準との比較

考察: - テスト件数は規模に対して標準的- テスト密度が継続して上昇

→ フレームワークやDSLの完成後テスト追加が容易に- Cの期間ではテスト密度が若干業界標準より高い

→ システムテストの件数やカバレッジのための指標が必要

0

10

20

30

40

50

A B C0

10

20

30

40

50

新規開発 改良開発

テスト密度

業界標準 本プロジェクト

(18.64)

(28.71)

(38.76)

Page 21: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

21

分析①:バグ密度の業界標準との比較

考察: -断続的な小さい要件のBの期間で小さいバグ密度-機能追加のないシステムのリファクタリングのCの期間でもバグを検出

→ リファクタリングによるリグレッションを自動テストが検出-全体を通し業界標準のバグ密度

→バグカーブが収束するようなリグレッションテストと推察

0

0.5

1

1.5

2

新規開発 改良開発

0

0.5

1

1.5

2

A B C

バグ密度

業界標準 本プロジェクト

(0.74)

(0.08)

(0.31)

Page 22: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

22

バックグラウンド

メトリクス

分析①

分析②

分析③

まとめと今後の課題

ソフトウェア品質シンポジウム2015

Page 23: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

23

分析②:開発メトリクスとバグの関係

開発メトリクス

コミット ソースコードレポジトリ

バグ

レポート

プロダクトメトリクス バグメトリクス

ビルド

テスト

先行研究: プロダクトメトリクスとバグの関係を評価 - S Syedら, “Open Source, Agile and reliability Measures”, ISQI, 2009

-下村ら, “ソフトウェアメトリクスを用いた単体テストの品質リスク評価”, SQiP2013.

疑問②: システムテストを開発プロセスに取り込むって?

分析②の目的 プロダクトメトリクスだけでなく、開発メトリクスも

バグの見つかり方と関係があるか調査する事

Page 24: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

24

分析②:開発メトリクスとバグの関係

開発メトリクス プロダクトメトリクス バグメトリクス

分析手法 •バグメトリクスとの相関を調査

- 日次の開発メトリクス、プロダクトメトリクス- 週次の積算開発メトリクス、プロダクトメトリクス

時間

コミット数

時間

変更

LO

C

時間

検出バグ数

時間

コミット数

日次データ

週次の

積算データ

時間 検出バグ数

時間

変更

LO

C

Page 25: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

25

分析②:日次データでの相関

グループ 説明変数 相関係数

開発メトリクス コミット数コミットサイズ

0.19

0.06

プロダクトメトリクス 変更LOC

追加LOC

削除LOC

無変更LOC

変更ファイル

追加ファイル

削除ファイル

変更なしファイル

0.36

0.17

0.19

-0.17

0.20

-0.09

0.06

-0.19

0

2

4

6

0 20 40コミット数

検出バグ数

コミット数と検出バグ数の散布図

600

700

800

900

0

20

40

60

80

100

累積バグ数

変更無しファイル数

累積検出バグ数と変更無しファイル数の

時系列データ

考察: -すべてのメトリクスで相関は弱い→結合バグ発見までの潜在期間- ファイルに変更を加えない事には意味がある?

累積検出バグ数

変更無しファイル数

Page 26: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

26

分析②:週次の積算データでの相関

グループ 説明変数 相関係数

開発メトリクス 週次コミット数

週次コミットサイズ

0.47

0.33

プロダクトメトリクス 週次変更LOC

週次追加LOC

週次削除LOC

週次無変更LOC

週次変更ファイル

週次追加ファイル

週次削除ファイル

週次変更なしファイル

0.56

0.42

0.61

-0.29

0.66

0.20

0.33

-0.31

0

5

10

15

0 100 200

積算変更ファイル数と

検出バグ数の散布図

積算変更ファイル数

検出バグ数

0

5

10

15

100以上 100以下

積算変更ファイルの

層別分析による検出バグ数

検出バグ数

考察: -開発メトリクスも中程度の相関があるがプロダクトメトリクスより弱い-積算変更ファイル数が一番高い相関

100未満

Page 27: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

27

バックグラウンド

メトリクス

分析①

分析②

分析③

まとめと今後の課題

ソフトウェア品質シンポジウム2015

Page 28: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

28

分析③:バグ曲線が緩やかに収束しなかった理由の考察

信頼度成長曲線 • テスト時間と発見した欠陥数に着目。潜在障害数を予測。

【ソフトウェア信頼性モデル, 山田茂, 1994】

継続的システムテスト 従来のシステムテスト

分析 設計 実装 システムテスト従来の開発工程

継続的システムテストの

開発工程

時間

累積検出バグ数

疑問③: 開発をうまく進めるのに必要な工夫は?

分析③の目的 継続的システムテスト環境下で早くバグを見つけるには?

バグ曲線が緩やかに収束しなかった理由を考察

Page 29: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

29

分析③:継続的システムテストでのバグ曲線

0

10

20

30

40

50

60

70

80

90

検出バグ数

時間

A B

C

•一定の傾きでバグが増えている• フェーズの終了とともに急速に収束

累積検出バグ数

Page 30: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

30

0

20

40

60

80

100

分析③:バグ曲線が緩やかに収束しなかった理由の考察

累積コミット数

時間

0

20

40

60

80

100

0 200 400 600 800 1000

A B

C

分析手法① •累積コミット数に対するバグ曲線による分析

A B

C

(検出バグ数

) (検出バグ数

)

Page 31: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

31

0

20

40

60

80

100

分析③:バグ曲線が緩やかに収束しなかった理由の考察 (検出バグ数

)

時間

0

20

40

60

80

100

0 200 400 600 800 1000

A B

C

分析手法① •累積コミット数に対するバグ曲線による分析

考察: - A,B,C開発期間は同じ位コミット数が大きく異なる

-時間を横軸にとるとフェーズ終了前で急に収束

- コミットを横軸によるとなだらかに収束

-小さい収束が大きな収束

A B

C

(検出バグ数

)

累積コミット数

Page 32: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

32

0

20

40

60

80

100

分析③:バグ曲線が緩やかに収束しなかった理由の考察 (検出バグ数

)

時間

0

20

40

60

80

100

0 200 400 600 800 1000

A B

C

分析手法① •累積コミット数に対するバグ曲線による分析

A B

C

(検出バグ数

)

累積コミット数

考察: - A,B,C開発期間は同じ位コミット数が大きく異なる

-時間を横軸にとるとフェーズ終了前で急に収束

- コミットを横軸によるとなだらかに収束

-小さい収束が大きな収束

Page 33: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

33

0

20

40

60

80

100

分析③:バグ曲線が緩やかに収束しなかった理由の考察 (検出バグ数

)

時間

0

20

40

60

80

100

0 200 400 600 800 1000

A B

C

分析手法① •累積コミット数に対するバグ曲線による分析

A B

C

(検出バグ数

)

累積コミット数

考察: - A,B,C開発期間は同じ位コミット数が大きく異なる

-時間を横軸にとるとフェーズ終了前で急に収束

- コミットを横軸によるとなだらかに収束

-小さい収束が大きな収束

Page 34: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

34

0

20

40

60

80

100

分析③:バグ曲線が緩やかに収束しなかった理由の考察 (検出バグ数

)

時間

0

20

40

60

80

100

0 200 400 600 800 1000

A B

C

分析手法① •累積コミット数に対するバグ曲線による分析

A B

C

(検出バグ数

)

累積コミット数

考察: - A,B,C開発期間は同じ位コミット数が大きく異なる

-時間を横軸にとるとフェーズ終了前で急に収束

- コミットを横軸によるとなだらかに収束

-小さい収束が大きな収束

Page 35: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

35

0

20

40

60

80

100

分析③:バグ曲線が緩やかに収束しなかった理由の考察 (検出バグ数

)

時間

0

20

40

60

80

100

0 200 400 600 800 1000

A B

C

分析手法① •累積コミット数に対するバグ曲線による分析

A B

C

(検出バグ数

)

累積コミット数

考察: - A,B,C開発期間は同じ位コミット数が大きく異なる

-時間を横軸にとるとフェーズ終了前で急に収束

- コミットを横軸によるとなだらかに収束

-小さい収束が大きな収束

→ コミットに含まれるバグの減少を示唆

Page 36: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

36

0

20

40

60

80

100

分析③:バグ曲線が緩やかに収束しなかった理由の考察 (検出バグ数

)

時間

0

20

40

60

80

100

0 200 400 600 800 1000

A B

C

分析手法① •累積コミット数に対するバグ曲線による分析

A B

C

(検出バグ数

)

累積コミット数

考察: - A,B,C開発期間は同じ位コミット数が大きく異なる

-時間を横軸にとるとフェーズ終了前で急に収束

- コミットを横軸によるとなだらかに収束

-小さい収束が大きな収束

→ コミットに含まれるバグの減少を示唆

Page 37: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

37

0

20

40

60

80

100

分析③:バグ曲線が緩やかに収束しなかった理由の考察 (検出バグ数

)

時間

0

20

40

60

80

100

0 200 400 600 800 1000

A B

C

分析手法① •累積コミット数に対するバグ曲線による分析

A B

C

(検出バグ数

)

累積コミット数

考察: - A,B,C開発期間は同じ位コミット数が大きく異なる

-時間を横軸にとるとフェーズ終了前で急に収束

- コミットを横軸によるとなだらかに収束

-小さい収束が大きな収束

→ コミットに含まれるバグの減少を示唆

→開発者がコミット直後にバグに気づき修正

Page 38: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

38

分析③:バグ曲線が緩やかに収束しなかった理由の考察

コミット数

0

20

40

60

80

100

0 200 400 600 800 1000

累積バグ

累積バグ in スモークテスト

累積バグ in その他テスト

A

B

C

分析手法② • テスト種別ごとのバグ曲線による分析

(検出バグ数

)

バージョン

スモークテスト

その他テスト

システムテスト累積検出バグ数

累積検出バグ数 in スモークテスト

累積検出バグ数 in その他テスト

Page 39: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

39

分析③:バグ曲線が緩やかに収束しなかった理由の考察

コミット数

0

20

40

60

80

100

0 200 400 600 800 1000

累積バグ

累積バグ in スモークテスト

累積バグ in その他テスト A

B

C

分析手法② • テスト種別ごとのバグ曲線による分析

考察: - スモークテストを壊すようなコミットがAの期間では一度に集中- Cでは2回 (見つかったバグの数はともに10)

- Cではスモークテストが収束した後、すぐに全体も収束

(検出バグ数

)

バージョン

スモークテスト

その他テスト

システムテスト

A

累積検出バグ数

累積検出バグ数 in スモークテスト

累積検出バグ数 in その他テスト

Page 40: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

40

分析③:バグ曲線が緩やかに収束しなかった理由の考察

コミット数

0

20

40

60

80

100

0 200 400 600 800 1000

累積バグ

累積バグ in スモークテスト

累積バグ in その他テスト A

B

C

分析手法② • テスト種別ごとのバグ曲線による分析

考察: - スモークテストを壊すようなコミットがAの期間では一度に集中- Cでは2回 (見つかったバグの数はともに10)

- Cではスモークテストが収束した後、すぐに全体も収束

(検出バグ数

)

バージョン

スモークテスト

その他テスト

システムテスト

A

累積検出バグ数

累積検出バグ数 in スモークテスト

累積検出バグ数 in その他テスト

Page 41: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

41

分析③:バグ曲線が緩やかに収束しなかった理由の考察

コミット数

0

20

40

60

80

100

0 200 400 600 800 1000

累積バグ

累積バグ in スモークテスト

累積バグ in その他テスト A

B

C

分析手法② • テスト種別ごとのバグ曲線による分析

考察: - スモークテストを壊すようなコミットがAの期間では一度に集中- Cでは2回 (見つかったバグの数はともに10)

- Cではスモークテストが収束した後、すぐに全体も収束

(検出バグ数

)

バージョン

スモークテスト

その他テスト

システムテスト

A

累積検出バグ数

累積検出バグ数 in スモークテスト

累積検出バグ数 in その他テスト

Page 42: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

42

分析③:バグ曲線が緩やかに収束しなかった理由の考察

コミット数

0

20

40

60

80

100

0 200 400 600 800 1000

累積バグ

累積バグ in スモークテスト

累積バグ in その他テスト A

B

C

分析手法② • テスト種別ごとのバグ曲線による分析

考察: - スモークテストを壊すようなコミットがAの期間では一度に集中- Cでは2回 (見つかったバグの数はともに10)

- Cではスモークテストが収束した後、すぐに全体も収束

(検出バグ数

)

バージョン

スモークテスト

その他テスト

システムテスト

A

累積検出バグ数

累積検出バグ数 in スモークテスト

累積検出バグ数 in その他テスト

Page 43: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

43

分析③:バグ曲線が緩やかに収束しなかった理由の考察

コミット数

0

20

40

60

80

100

0 200 400 600 800 1000

累積バグ

累積バグ in スモークテスト

累積バグ in その他テスト A

B

C

分析手法② • テスト種別ごとのバグ曲線による分析

考察: - スモークテストを壊すようなコミットがAの期間では一度に集中- Cでは2回 (見つかったバグの数はともに10)

- Cではスモークテストが収束した後、すぐに全体も収束→ スモークテストを壊すような開発をイテレーションで分割コミットを小規模化し、バグを早期に発見、修正出来る

(検出バグ数

)

バージョン

スモークテスト

その他テスト

システムテスト

A

累積検出バグ数

累積検出バグ数 in スモークテスト

累積検出バグ数 in その他テスト

Page 44: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

44

バックグラウンド

メトリクス

分析①

分析②

分析③

まとめと今後の課題

ソフトウェア品質シンポジウム2015

Page 45: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

45

まとめ:システムテスト自動化に関する疑問

まとめ: 継続的システムテストへの理解を深めるため

開発、プロダクトとバグのメトリクスの分析

疑問①: 自動化されたシステムテストは質が低い?

疑問②: システムテストを開発プロセスに取り込むって?

疑問③: 開発をうまく進めるのに必要な工夫は?

Page 46: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

46

まとめ:疑問①への答え

答え(分析①より): 自動化されたシステムテストは“質が低い”と

いう事はない

• ただし、自動化した環境ではテスト密度は上がりやすいので、システムテストのカバレッジの指標が必要

0

50

A B C

テスト密度

疑問①: 自動化されたシステムテストは質が低い?

ソフトウェア品質シンポジウム2015

Page 47: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

47

まとめ:疑問②への答え

答え(分析②より): システムテストを開発プロセスに取り込むとプロダクトメトリクスだけでなく開発メトリクスもバグの発見の仕方と関係

•バグの混入のされ方は、変更無しファイル数や変更したファイル数等と関係

0

5

10

15

100以上 100以下

積算変更ファイルの

層別分析による検出バグ数

検出バグ数

疑問②: システムテストを開発プロセスに取り込むって?

ソフトウェア品質シンポジウム2015

Page 48: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

48

答え(分析③より): 自動化した環境では開発者に早期に

フィードバックする事が重要

• コミットのタイプが機能追加からバグ修正へ• スモークテストを失敗させるようなコミットをイテレーションで分割する事でバグを早期に発見する事が出来る

まとめ:疑問③への答え

コミット数

0

50

100

0 500 1000

(検出バグ数

)

疑問③: 開発をうまく進めるのに必要な工夫は?

ソフトウェア品質シンポジウム2015

Page 49: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

49

今後の課題

• システムテストの評価指標→継続的システムテスト下でのテストの改善

- テストケースの優先順位付け- テストの作り過ぎを防ぐ

•開発メトリクスの品質管理への利用•開発プロセスと品質保証の相互作用的な変化

ソフトウェア品質シンポジウム2015

Page 50: 0½0Õ0È0¦0§0¢TÁ ê0·0ó0Ý0¸0¦0à2015 継続的システ … バックグラウンド メトリクス 分析 ① 分析 ② 分析③ まとめと今後の課題 0½0Õ0È0

50

Long live testing

ソフトウェア品質シンポジウム2015