54
検索 検索 検索 検索基盤開発のたの 基盤開発のたの 基盤開発のたの 基盤開発のたの 結合環境の自動化 結合環境の自動化 結合環境の自動化 結合環境の自動化 Jun/18/2013 荻野 荻野 荻野 荻野 恒太郎 恒太郎 恒太郎 恒太郎, , 松本 松本 松本 松本 幹 , 鵜飼 鵜飼 鵜飼 鵜飼 大志 大志 大志 大志 Search Platform Group, Search Section, Big Data Department, Rakuten Inc. http://www.rakuten.co.jp/

【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

Embed Size (px)

DESCRIPTION

6月18日、CROOZ株式会社主催の第6回テックヒルズ 「Let’s study Jenkins~さまざまなケーススタディ~」で発表した、「検索基盤開発のための結合テスト自動化」の資料です。

Citation preview

Page 1: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

検索検索検索検索基盤開発のための基盤開発のための基盤開発のための基盤開発のための結合テスト環境の自動化結合テスト環境の自動化結合テスト環境の自動化結合テスト環境の自動化

Jun/18/2013

荻野荻野荻野荻野 恒太郎恒太郎恒太郎恒太郎, アビジートアビジートアビジートアビジート パランデパランデパランデパランデ, 松本松本松本松本 幹幹幹幹, 鵜飼鵜飼鵜飼鵜飼 大志大志大志大志

Search Platform Group, Search Section, Big Data Department, Rakuten Inc.

http://www.rakuten.co.jp/

Page 2: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

2

自己紹介自己紹介自己紹介自己紹介

氏名氏名氏名氏名 荻野恒太郎

所属所属所属所属 ビッグデータ部サーチプラットフォーム開発グループ

業務業務業務業務 - グローバルサーチプラットフォーム(GSP)のサーチコンポーネント周りの設計・開発・品質検証

- Jenkinsもももも使って

結合テスト環境の自動化

Page 3: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

3

結合テストの自動化結合テストの自動化結合テストの自動化結合テストの自動化

①①①①背景背景背景背景

Page 4: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

4

ソフトウェア開発のソフトウェア開発のソフトウェア開発のソフトウェア開発の困難困難困難困難なポイントなポイントなポイントなポイント

Page 5: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

5

ソフトウェアの結合ソフトウェアの結合ソフトウェアの結合ソフトウェアの結合

コンポーネントA

コンポーネントA

コンポーネントB

コンポーネントB

コンポーネントC

コンポーネントC

pullpulluseuse

コンポーネントD

コンポーネントD

pushpush

コンポーネントE

コンポーネントE

useuse

Developer 2Developer 2 Developer 2Developer 2

Developer 2Developer 2 Developer 2Developer 2

Developer 2Developer 2

Page 6: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

6

ソフトウェアの結合ソフトウェアの結合ソフトウェアの結合ソフトウェアの結合

コンポーネントA

コンポーネントA

コンポーネントB

コンポーネントB

コンポーネントC

コンポーネントC

pullpulluseuse

コンポーネントD

コンポーネントD

pushpush

コンポーネントE

コンポーネントE

useuse

Developer 2Developer 2 Developer 2Developer 2

Developer 2Developer 2 Developer 2Developer 2

Developer 2Developer 2

1つのつのつのつのソフトウェアソフトウェアソフトウェアソフトウェア

Page 7: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

7

ソフトウェアの結合ソフトウェアの結合ソフトウェアの結合ソフトウェアの結合

コンポーネントA

コンポーネントA

コンポーネントB

コンポーネントB

コンポーネントC

コンポーネントC

pullpulluseuse

コンポーネントD

コンポーネントD

pushpush

コンポーネントE

コンポーネントE

useuse

Developer 2Developer 2 Developer 2Developer 2

Developer 2Developer 2 Developer 2Developer 2

Developer 2Developer 2

仮説:Eへの影響がない仮説:Eへの影響がない

Page 8: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

8

ソフトウェアの結合ソフトウェアの結合ソフトウェアの結合ソフトウェアの結合

コンポーネントA

コンポーネントA

コンポーネントB

コンポーネントB

コンポーネントC

コンポーネントC

pullpulluseuse

コンポーネントD

コンポーネントD

pushpush

コンポーネントE

コンポーネントE

useuse

Developer 2Developer 2 Developer 2Developer 2

Developer 2Developer 2 Developer 2Developer 2

Developer 2Developer 2

仮説:Dのスキーマに変更がない

仮説:Dのスキーマに変更がない

Page 9: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

9

ソフトウェアの結合ソフトウェアの結合ソフトウェアの結合ソフトウェアの結合

コンポーネントA

コンポーネントA

コンポーネントB

コンポーネントB

コンポーネントC

コンポーネントC

pullpulluseuse

コンポーネントD

コンポーネントD

pushpush

コンポーネントE

コンポーネントE

useuse

Developer 2Developer 2 Developer 2Developer 2

Developer 2Developer 2 Developer 2Developer 2

Developer 2Developer 2

仮説:Cには異常なデータは

含まれない

仮説:Cには異常なデータは

含まれない

Page 10: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

10

ソフトウェアの結合ソフトウェアの結合ソフトウェアの結合ソフトウェアの結合

コンポーネントA

コンポーネントA

コンポーネントB

コンポーネントB

コンポーネントC

コンポーネントC

pullpulluseuse

コンポーネントD

コンポーネントD

pushpush

コンポーネントE

コンポーネントE

useuse

Developer 2Developer 2 Developer 2Developer 2

Developer 2Developer 2 Developer 2Developer 2

Developer 2Developer 2

仮説:Bにはバグがない!仮説:Bには

バグがない!

Page 11: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

11

コンポーネントの結合コンポーネントの結合コンポーネントの結合コンポーネントの結合====

仮説の検証仮説の検証仮説の検証仮説の検証

Page 12: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

12

結合の開発期間に占める割合結合の開発期間に占める割合結合の開発期間に占める割合結合の開発期間に占める割合

CI導入前

開発50%

結合33%

QA17%

プロジェクト中のそれぞれのフェーズの期間割合プロジェクト中のそれぞれのフェーズの期間割合プロジェクト中のそれぞれのフェーズの期間割合プロジェクト中のそれぞれのフェーズの期間割合

仮説仮説仮説仮説の検証は高コストの検証は高コストの検証は高コストの検証は高コスト

Page 13: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

13

開発者は多くの開発者は多くの開発者は多くの開発者は多くの仮説仮説仮説仮説を抱えているを抱えているを抱えているを抱えている

“Continuous Integration”, Paul M. Duvall [2006]

Page 14: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

14

Continuous Integration

ローカルでのソースコードの変更単体テストの追加

ローカルでのソースコードの変更単体テストの追加

ソースコードのマージ、テストの実行、変更のコミット

ソースコードのマージ、テストの実行、変更のコミット

コミットビルド(ビルド&自動テスト)、自動デプロイ

コミットビルド(ビルド&自動テスト)、自動デプロイ

2次ビルド(結合テスト、性能テスト等)

2次ビルド(結合テスト、性能テスト等)

http://martinfowler.com/]

Page 15: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

15

Continuous Integration

ローカルでのソースコードの変更単体テストの追加

ローカルでのソースコードの変更単体テストの追加

ソースコードのマージ、テストの実行、変更のコミット

ソースコードのマージ、テストの実行、変更のコミット

コミットビルド(ビルド&自動テスト)、自動デプロイ

コミットビルド(ビルド&自動テスト)、自動デプロイ

2次ビルド(結合テスト)

2次ビルド(結合テスト)

Page 16: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

16

結合テスト結合テスト結合テスト結合テストのののの自動化自動化自動化自動化????

Page 17: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

17

結合テスト結合テスト結合テスト結合テストのののの自動化自動化自動化自動化????

Page 18: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

18

テストテストテストテストの性質の性質の性質の性質

単体テスト 結合テスト

対象コンポーネント

1 複数

コスト 低 高

対象機能 単純 複雑

可用性可用性

完全性完全性

検索精度検索精度

ドキュメント登録ドキュメント登録

クエリクエリ

サーチでの例)

Page 19: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

19

単体テスト 結合テスト

対象コンポーネント

1 複数

コスト 低 高

対象機能 単純 複雑

テストテストテストテストの性質の性質の性質の性質

可用性可用性

完全性完全性

検索精度検索精度

ドキュメント登録ドキュメント登録

クエリクエリ

サーチでの例)

3000件以上の3000件以上の3000件以上の3000件以上のテストケーステストケーステストケーステストケース

3000件以上の3000件以上の3000件以上の3000件以上のテストケーステストケーステストケーステストケース

Page 20: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

20

結合テスト結合テスト結合テスト結合テストのののの自動化自動化自動化自動化????

Page 21: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

21

テスト実行のコストテスト実行のコストテスト実行のコストテスト実行のコスト

テストケース数テストケース数テストケース数テストケース数

Total cost (man-hour)

Manual

Automation

テスト実行のコスト

Page 22: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

22

テストケース数テストケース数テストケース数テストケース数

Total cost (man-hour)

Manual

Automation

テスト実行のコストテスト実行のコストテスト実行のコストテスト実行のコスト

テスト実行のコスト毎日毎日毎日毎日大規模な大規模な大規模な大規模なテストケーステストケーステストケーステストケースをををを実行可能実行可能実行可能実行可能

毎日毎日毎日毎日大規模な大規模な大規模な大規模なテストケーステストケーステストケーステストケースをををを実行可能実行可能実行可能実行可能

Page 23: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

23

結合テストの自動化結合テストの自動化結合テストの自動化結合テストの自動化

結合テストの自動化結合テストの自動化結合テストの自動化結合テストの自動化結合テストの自動化結合テストの自動化結合テストの自動化結合テストの自動化

ユーザーにユーザーにユーザーにユーザーに高付加高付加高付加高付加価値価値価値価値を提を提を提を提供する供する供する供する

“仮説仮説仮説仮説”のののの常時検証常時検証常時検証常時検証

ユーザーにユーザーにユーザーにユーザーに高付加高付加高付加高付加価値価値価値価値を提を提を提を提供する供する供する供する

“仮説仮説仮説仮説”のののの常時検証常時検証常時検証常時検証=

Page 24: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

24

結合テストの自動化結合テストの自動化結合テストの自動化結合テストの自動化

②②②②課題課題課題課題

Page 25: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

25

結合テスト結合テスト結合テスト結合テスト自動化に自動化に自動化に自動化に向けての向けての向けての向けての課題課題課題課題

課題① テストの複雑さ

課題② テストの実装コスト

課題③ テストの実行時間

課題④ テスト結果の再現性

Page 26: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

26

課題① テストの複雑さ

・テストの基本に則り品質を・テストの基本に則り品質を・テストの基本に則り品質を・テストの基本に則り品質を積み上げる積み上げる積み上げる積み上げる

・複雑な内部状態のテストは・複雑な内部状態のテストは・複雑な内部状態のテストは・複雑な内部状態のテストはUT・・・・CTでででで

・結合テストは原則・結合テストは原則・結合テストは原則・結合テストは原則ブラックボックステストブラックボックステストブラックボックステストブラックボックステスト

・テストの基本に則り品質を・テストの基本に則り品質を・テストの基本に則り品質を・テストの基本に則り品質を積み上げる積み上げる積み上げる積み上げる

・複雑な内部状態のテストは・複雑な内部状態のテストは・複雑な内部状態のテストは・複雑な内部状態のテストはUT・・・・CTでででで

・結合テストは原則・結合テストは原則・結合テストは原則・結合テストは原則ブラックボックステストブラックボックステストブラックボックステストブラックボックステスト

Page 27: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

27

課題② テストの実装コスト

・テストフレームワークを開発・テストフレームワークを開発・テストフレームワークを開発・テストフレームワークを開発- シナリオベースでシナリオベースでシナリオベースでシナリオベースで

テストケースを表現テストケースを表現テストケースを表現テストケースを表現- 仕様変更に対しての保守性仕様変更に対しての保守性仕様変更に対しての保守性仕様変更に対しての保守性

・テストフレームワークを開発・テストフレームワークを開発・テストフレームワークを開発・テストフレームワークを開発- シナリオベースでシナリオベースでシナリオベースでシナリオベースで

テストケースを表現テストケースを表現テストケースを表現テストケースを表現- 仕様変更に対しての保守性仕様変更に対しての保守性仕様変更に対しての保守性仕様変更に対しての保守性

Page 28: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

28

課題③ テストの実行時間

・・・・コミットビルドでコミットビルドでコミットビルドでコミットビルドで10分の分の分の分のSmoke Test

・結合テストのテストジョブは・結合テストのテストジョブは・結合テストのテストジョブは・結合テストのテストジョブは1時間で分割時間で分割時間で分割時間で分割

・・・・50台のテスト環境でスケール台のテスト環境でスケール台のテスト環境でスケール台のテスト環境でスケール

・・・・コミットビルドでコミットビルドでコミットビルドでコミットビルドで10分の分の分の分のSmoke Test

・結合テストのテストジョブは・結合テストのテストジョブは・結合テストのテストジョブは・結合テストのテストジョブは1時間で分割時間で分割時間で分割時間で分割

・・・・50台のテスト環境でスケール台のテスト環境でスケール台のテスト環境でスケール台のテスト環境でスケール

Page 29: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

29

Smoke Test

Page 30: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

30

Smoke Test

実行時間とカバレッジのバランス・ 実行時間は10分・ End to End のテスト

ドキュメント登録/削除,

日本語処理、平行性等

Page 31: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

31

複数の複数の複数の複数のExecutor

Page 32: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

32

複数の複数の複数の複数のExecutor

複数のExecutorを配置し、並列にテストジョブを実行

Page 33: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

33

複数の複数の複数の複数のExecutor

複数のExecutorを配置し、並列にテストジョブを実行

1時間を超えるテストジョブは分割

Page 34: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

34

重要なテスト重要なテスト重要なテスト重要なテストを優先して実行を優先して実行を優先して実行を優先して実行

Priority Sorter Pluginにて、jobの優先度を指定

Page 35: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

35

重要なテスト重要なテスト重要なテスト重要なテストを優先して実行を優先して実行を優先して実行を優先して実行

Priority Sorter Pluginにて、jobの優先度を指定

Page 36: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

36

課題④ テスト結果の再現性

・・・・ 原因:原因:原因:原因:- 環境差異環境差異環境差異環境差異- 連続したテスト実行のための連続したテスト実行のための連続したテスト実行のための連続したテスト実行のためのシステムの状態差異システムの状態差異システムの状態差異システムの状態差異

・・・・ 解決方法解決方法解決方法解決方法クリーンアップクリーンアップクリーンアップクリーンアップ + インストールインストールインストールインストール

・・・・ 原因:原因:原因:原因:- 環境差異環境差異環境差異環境差異- 連続したテスト実行のための連続したテスト実行のための連続したテスト実行のための連続したテスト実行のためのシステムの状態差異システムの状態差異システムの状態差異システムの状態差異

・・・・ 解決方法解決方法解決方法解決方法クリーンアップクリーンアップクリーンアップクリーンアップ + インストールインストールインストールインストール

Page 37: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

37

結合テスト自動化の課題と解決方法結合テスト自動化の課題と解決方法結合テスト自動化の課題と解決方法結合テスト自動化の課題と解決方法

課題課題課題課題 解決方法解決方法解決方法解決方法結合テストの複雑さ ・品質の積み上げ

・結合テストではブラックボックステスト

テストの実装コストが高い

・シナリオベースで記述可能なフレームワーク

テストの実行時間が長い

・10分のSmoke Test

・1時間毎にジョブを分割・50台の環境でスケール

テスト結果の再現性 ・クリーンアップ + インストール

Page 38: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

38

結合テストの自動化結合テストの自動化結合テストの自動化結合テストの自動化

③③③③開発プロセス開発プロセス開発プロセス開発プロセス

Page 39: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

開発プロセス

開発

GIT

merge

UT/CT

Smoke

TestIT1 IT2

Smoke Test

Pass

Pass

バージョン

Pass

Yes

No No

ST

UT&ビルド

Yes

Pass

開発開発開発開発

Yes

No

clone

手動手動手動手動システムテストシステムテストシステムテストシステムテスト

リリース

結合結合結合結合テストテストテストテスト

ビルドビルドビルドビルド

Page 40: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

開発プロセス

開発

GIT

merge

UT/CT

Smoke

TestIT1 IT2

Smoke Test

Pass

Pass

バージョン

Pass

Yes

No No

ST

UT&ビルド

Yes

Pass

開発開発開発開発

Yes

No

clone

手動手動手動手動システムテストシステムテストシステムテストシステムテスト

リリース

結合結合結合結合テストテストテストテスト

ビルドビルドビルドビルド

{

“cassandra”:“2.4.0-20130228.125411-258.jar”,

“indexer”:“2.4.0-20130227.134019-53.jar”,

;.

}

Page 41: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

41

結合テストの自動化結合テストの自動化結合テストの自動化結合テストの自動化

④効果④効果④効果④効果

Page 42: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

42

CI導入の効果導入の効果導入の効果導入の効果

CI導入前

開発50%

結合33%

QA17%

プロジェクト中のそれぞれのフェーズプロジェクト中のそれぞれのフェーズプロジェクト中のそれぞれのフェーズプロジェクト中のそれぞれのフェーズの期間の割合の期間の割合の期間の割合の期間の割合

結合テスト自動化後

結合

0%

QA

17%

開発

83%

Page 43: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

43

Nu

mb

er

of

issu

es

IT2 CT

DevelopmentDevelopment QAQA

発見が期待されるテストタイプごとの積算発見バグ数発見が期待されるテストタイプごとの積算発見バグ数発見が期待されるテストタイプごとの積算発見バグ数発見が期待されるテストタイプごとの積算発見バグ数

Page 44: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

44

Nu

mb

er

of

issu

es

IT2 CT

DevelopmentDevelopment QAQA

結合バグを開発初期から発見結合バグを開発初期から発見結合バグを開発初期から発見結合バグを開発初期から発見結合バグを開発初期から発見結合バグを開発初期から発見結合バグを開発初期から発見結合バグを開発初期から発見

発見が期待されるテストタイプごとの積算発見バグ数発見が期待されるテストタイプごとの積算発見バグ数発見が期待されるテストタイプごとの積算発見バグ数発見が期待されるテストタイプごとの積算発見バグ数

Page 45: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

45

2013

-02-

10

2013

-02-

24

2013

-03-

10

2013

-03-

24

2013

-04-

07

Num

ber

of

issu

es

IT2 availability

IT2 field type

IT2 synonym

IT2 join

IT2 gateway

IT2 Search-API indexing/search

IT2 smoke

DevelopmentDevelopment QAQA

テストタイプごとの積算発見バグ数テストタイプごとの積算発見バグ数テストタイプごとの積算発見バグ数テストタイプごとの積算発見バグ数

Page 46: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

46

2013

-02-

10

2013

-02-

24

2013

-03-

10

2013

-03-

24

2013

-04-

07

Num

ber

of

issu

es

IT2 availability

IT2 field type

IT2 synonym

IT2 join

IT2 gateway

IT2 Search-API indexing/search

IT2 smoke

DevelopmentDevelopment QAQA

テストタイプごとの積算発見バグ数テストタイプごとの積算発見バグ数テストタイプごとの積算発見バグ数テストタイプごとの積算発見バグ数

QA期間はサービス期間はサービス期間はサービス期間はサービスのののの高度な高度な高度な高度な付加価値のテスト付加価値のテスト付加価値のテスト付加価値のテストに集中に集中に集中に集中QA期間はサービス期間はサービス期間はサービス期間はサービスのののの高度な高度な高度な高度な付加価値のテスト付加価値のテスト付加価値のテスト付加価値のテストに集中に集中に集中に集中

Page 47: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

47

コミットビルドとしてのコミットビルドとしてのコミットビルドとしてのコミットビルドとしてのSmoke Testの重要性の重要性の重要性の重要性

Page 48: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

48

コミットビルドとしてのコミットビルドとしてのコミットビルドとしてのコミットビルドとしてのSmoke Testの重要性の重要性の重要性の重要性

6%のバグがのバグがのバグがのバグがSmoke Testで発見で発見で発見で発見6%のバグがのバグがのバグがのバグがSmoke Testで発見で発見で発見で発見

Page 49: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

49

コミットビルドとしてのコミットビルドとしてのコミットビルドとしてのコミットビルドとしてのSmoke Testの重要性の重要性の重要性の重要性

バグ発見数バグ発見数バグ発見数バグ発見数 / テスト実行時間テスト実行時間テスト実行時間テスト実行時間

Page 50: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

50

コミットビルドとしてのコミットビルドとしてのコミットビルドとしてのコミットビルドとしてのSmoke Testの重要性の重要性の重要性の重要性

バグ発見数バグ発見数バグ発見数バグ発見数 / テスト実行時間テスト実行時間テスト実行時間テスト実行時間

効果的な効果的な効果的な効果的なSmoke Testをををを実行する事実行する事実行する事実行する事が重要が重要が重要が重要

効果的な効果的な効果的な効果的なSmoke Testをををを実行する事実行する事実行する事実行する事が重要が重要が重要が重要

Page 51: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

結合テストの自動化の効果の大きさ結合テストの自動化の効果の大きさ結合テストの自動化の効果の大きさ結合テストの自動化の効果の大きさ

効果効果効果効果 大大大大 効果効果効果効果 小小小小対象プロダクトの

寿命長い 短い

開発中のコンポーネント数

多い 少ない

要求・仕様・設計の変更頻度

多い 少ない

Page 52: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

52

結合テストの自動化結合テストの自動化結合テストの自動化結合テストの自動化

⑤まとめ⑤まとめ⑤まとめ⑤まとめ

Page 53: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

53

まとめまとめまとめまとめ

結合テストの自動化結合テストの自動化結合テストの自動化結合テストの自動化結合テストの自動化結合テストの自動化結合テストの自動化結合テストの自動化

・・・・ 結合の検証までを自動化結合の検証までを自動化結合の検証までを自動化結合の検証までを自動化→仮説仮説仮説仮説の検証を効率化の検証を効率化の検証を効率化の検証を効率化

・・・・ 結合バグを早期に発見結合バグを早期に発見結合バグを早期に発見結合バグを早期に発見→ユーザーに付加価値ユーザーに付加価値ユーザーに付加価値ユーザーに付加価値をををを

提供する機能提供する機能提供する機能提供する機能の検証の検証の検証の検証

・・・・ 結合の検証までを自動化結合の検証までを自動化結合の検証までを自動化結合の検証までを自動化→仮説仮説仮説仮説の検証を効率化の検証を効率化の検証を効率化の検証を効率化

・・・・ 結合バグを早期に発見結合バグを早期に発見結合バグを早期に発見結合バグを早期に発見→ユーザーに付加価値ユーザーに付加価値ユーザーに付加価値ユーザーに付加価値をををを

提供する機能提供する機能提供する機能提供する機能の検証の検証の検証の検証=

Page 54: 【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化

54

Automation

you