26
アジャイルテスティング ー テストの全体像を共有する ー Scrum Alliance Regional Gathering Tokyo 2013 技術トークス

SGT2013 技術トークス「アジャイルテスティング」

Embed Size (px)

Citation preview

アジャイルテスティング

ー テストの全体像を共有する ー

Scrum Alliance Regional Gathering Tokyo 2013 技術トークス

細谷 泰夫 @yasuohosotani

スクラム道関西

従来の開発でのテスト

要求分析

方式設計

詳細設計

実装

単体テスト

結合テスト

システムテスト

市場に不具合を流出させない 最後の砦

・目的

目標の品質であることを確認可能なテストを開発する。

目標の品質を達成すること

・手段

テストを実施し、欠陥を是正する。

テストの積み上げ

電話/FAX 3階

2階

1階

PC HUB Wifi/LANコンバータ

PC

Wifiルータ ケーブルモデム

ゲーム機 PC

タブレット

スマートフォン

ゲーム機

Wifiアクセスポイント PC

ソフトウェアとしても構造や振る舞いなどの要素が組み合わされている

l 品質の高い要素で全体が構成されていることが重要

l 小さい粒度での品質を高めていきそれを組み合わせ徐々に粒度を大きくしていく

アジャイル開発では?

l いつ、どのような品質を達成するか?

l どのような粒度のテストを行うか?

ポイント

l いつ、どのような品質を達成するか?

l どのような粒度のテストを行うか?

ポイント

a)スプリントでの成果物は出荷 可能か判断することができる b)出荷に必要なプロセスを経て 製品を出荷する プロジェクトによって、bに必要な作業量は大きく異なる。

いつ誰からフィードバックを得るか?

いつどのようなテストを行うか?

イテレーション イテレーション イテレーション イテレーション

イテレーション毎のテスト

出荷のためのテスト

イテレーション イテレーション イテレーション イテレーション

どの時点でどのような品質を狙うかを考えることが大切。

フィードバックの範囲 広い

狭い

多い 少ない

リリース回数

自動化の範囲を可能な 限り広げるないと実現困難

頻繁にリリースするための 自動化が必要。 市場にリリースするための プロセスの自動化が少なくて も実施可能

市場にリリースするための 作業は大きい

市場にリリースするための 作業は小さい

市場にリリースするための 作業は大きい

l いつ、どのような品質を達成するか?

l どのような粒度のテストを行うか?

ポイント

テスト自動化ピラミッド

UI  

Service

Unit  

「Succeeding  With  Agile」 Mike  Cohn  

機能テスト

単体テスト

パフォーマンステスト  負荷テスト  セキュリティテスト  「~性」テスト

探索テスト  シナリオ  ユーザビリティテスト  UAT(ユーザ受け入れテスト)  アルファ/ベータ

支援

製品

批評

ビジネス面

技術面

自動と手動

自動

手動

ツール

出典:実践アジャイルテスト(翔泳社)  

アジャイルテストの四象限

ソフトウェアテストの分野では?

テストレベル(test level): 系統的にまとめ、管理していくテストの活動のグループ。各テストレベルはプロジェクトの特定の責 務と対応付けができる。テストレベルの例には、コンポーネントテスト、統合テスト、システムテスト、受け入れテストがある。

ISTQB(International Software Testing Qualification Board)では、 Test Levelという用語が定義されている

JSTQB(h=p://jstqb.jp/index.html)用語集より

コンテキストの収集

ü アジャイルプロセス協議会テスト・レビューWGでメンバーのアジャイル開発でのテストの経験を収集。

ü 「何に対して」「どんなことを」「どんな方法で」テストしたか?

テストの粒度を共有する テストの粒度 機能性 信頼性 使用性 効率性 保守性 移植性

クラス 自動 レビュー レビュー ― レビュー ―

API 自動 レビュー レビュー 自動 レビュー ―

画面 手動 ― 手動 ― ― ―

ユーザストーリ   自動/手動 手動 手動 手動 ― ―

システム全体 ― 手動 手動 手動 ― ―

プロトコル 自動 レビュー レビュー 自動 レビュー ―

テストの粒度を共有する テストの粒度 機能性 信頼性 使用性 効率性 保守性 移植性

クラス 自動 レビュー レビュー ― レビュー ―

API 自動 レビュー レビュー 自動 レビュー ―

画面 手動 ― 手動 ― ― ―

ユーザストーリ   自動/手動 手動 手動 手動 ― ―

システム全体 ― 手動 手動 手動 ― ―

プロトコル 自動 レビュー レビュー 自動 レビュー ―

プロジェクト毎に  テストの粒度を検討する

どの粒度でどのようなテストを開発する  かを検討する  

テストの粒度 機能性 信頼性 使用性 効率性 保守性 移植性

クラス 自動 レビュー レビュー ― レビュー ―

API 自動 レビュー レビュー 自動 レビュー ―

画面 手動 ― 手動 ― ― ―

ユーザストーリ   自動/手動 手動 手動 手動 ― ―

システム全体 ― 手動 手動 手動 ― ―

プロトコル 自動 レビュー レビュー 自動 レビュー ―

TDD

CI

特殊な試験機

他にも、「どうやってレビューするか?」「どうやってテスト設計するか?」  「どうやってテスト実装、実施をするか?」など、アジャイルプラクティスに限らず色々  な要素をどう組み合わせるかを考える。

「最後の砦」の役割の テストでも、作っている ものの品質が悪ければ、 砦を突破されたり、 維持に膨大なコストが かかる。

「最後の砦」を「日常の風景」に変えていくために何ができるか?