SlideShare ist ein Scribd-Unternehmen logo
1 von 9
Downloaden Sie, um offline zu lesen
キーワード駆動テスト
演習テキスト
Rev.2021.5.06
目次
キーワード駆動の自動テスト演習 Web 電卓.....................................................................1
Step 1 キーワード駆動とは ......................................................................................................................................................1
Step 2 Web 電卓用とテストケースの構成 ..........................................................................................................................2
Step 3 キーワードの定義..........................................................................................................................................................3
Step 4 テストケース例 ................................................................................................................................................................3
Step 5 演習1 新しいキーワードの定義 ............................................................................................................................4
Step 6 演習2 論理的なキーワードの導入.......................................................................................................................5
Step 7 キーワード駆動システムの構造例 .........................................................................................................................6
Step 8 まとめ:キーワード駆動テストの利点・欠点.........................................................................................................7
1
キーワード駆動の自動テスト演習 Web 電卓
Step 1 キーワード駆動とは1
自動テストにキーワード駆動を導入する主たる目的は、以下の項目になります。
1. テストケース2
の作成が容易
仕様書に記述されている言葉をキーワードとして採用することで、チームメンバーであれば、誰でも作成
することができるようになります。
2. テストケースの保守性を高く
対象のシステムが変更されても、少ない工数でテストケースを再利用することができます。また、テストケ
ースを変更せずに利用することが可能な場合もあります。
3. 対象システムの開発と独立して作成が可能
実際に動作するシステムがない状況や環境でもテストケースを作成することができるようになります。
一般的に、キーワードには、以下の様なものを用意します。
1. システムを操作する
システムに対して、値の入力などを行う機能をキーワードとして用意します。
2. 判定を行う
テストの成功と失敗を判定するための機能をキーワードとして用意します。
3. テストを支援する
テスト実行中に、システムの状態などを取得する機能をキーワードとして用意します。この機能は、テスト
がエラーとなった場合の原因調査などを効率化するためのものです。
一般的に、キーワード駆動の自動テストは以下の様な構造となります。
1 実際のプロジェクトでは、プロジェクトの目的や特徴に合わせて自動テストの目的を定義します。
2 本テキストでは、テストケースとは自動テストスクリプトとほぼ同意です。
2
Step 2 Web 電卓用とテストケースの構成
テスト対象は、以下の 2 種類の電卓アプリです。(以下の電卓アプリは無料公開されています)
通常の電卓と同じ動作をするもの。
演算子に数学の優先順位があるもの。
Web 電卓用のキーワード駆動テストで利用するテストケースの形式を定義します。
本演習では、テストケースをテキストファイルで記述します。テストケースのキーワード部分は、マークダウン記法
の表形式を採用します。キーワード部分の表の構成は、以下の通りとします。
1. キーワード
機能をキーワードとして定義します。
2. 対象
キーワードで操作する対象を指定します。
3. 引数
キーワードごとに定義された引数です。
4. コメント
処理がエラーとなった場合などに参考にするコメントです。操作などには、影響しません。
【目的】
「二種類のアプリで、テストケースが
共通で利用できるようにする。
」
「今後、これ以外のアプリが増えるこ
とが想定される」ことを今回は理由と
しています。
3
Step 3 キーワードの定義
以下のキーワードを定義しました。
① 操作のキーワード
キーワード:オールクリア
対象:なし
引数:使用しない
キーワード:ボタン操作
対象:ボタン名
数字や四則演算を定義する
引数:使用しない
② 判定のキーワード
キーワード:表示確認
対象:使用しない
引数:判定を行う文字列
フォーマットされて表示された文字列を指定する
Step 4 テストケース例
以下はテストケースの例です。
テスト内容:足し算の計算
キーワード 対象 引数 コメント
オールクリア
ボタン操作 1
ボタン操作 +
ボタン操作 2
ボタン操作 =
表示確認 3
補足:テストを支援するキーワード
キーワードを定義する場合、対象システムの仕様変更などでテストケースの書換えを最低限にすることが重要で
す。
また、テストを実行した場合、テストが失敗で終了する場合があります。この時、単にテストが失敗しただけでは、
失敗の原因を特定することが難しい場合があります。そこで失敗の原因を素早く見つけるために、様々な情報を
取得するキーワードを用意します。例えば、「画面保存」や「使用メモリ状況」などです。
HTML の ID ではなく、ボタン名で指定することで、異なった
Web アプリでも使用できるテストケースになります。
また、テストケースの可読性も上がります。
論理的な「オールクリア」というキーワードにより、操作が明
確になり、異なった Web アプリでも利用できるようになりま
す。
4
Step 5 演習1 新しいキーワードの定義
割り算のテストで、ゼロ割のテストケースを記述することにしました。アプリケーションによって、エラーの表示方法
が異なります。そこで、新しいキーワードを定義することにしました。可読性などにも考慮して、新しいキーワードを
定義してください。
① エラーのキーワードを定義してください。
キーワード:
対象:
引数:
② キーワード定義で考慮したことを記述してください。
③ 定義したキーワードを使用してテストケースを記述してください。
テストケースは、上から順次実行されます。
テスト内容:
キーワード 対象 引数 コメント
補足:キーワードの粒度について
一般的に、簡単さと自由はトレードオブの関係にあります。システムテストに当てはめると、以下のようになります。
① 簡単:テストケースを簡単に書ける。
(論理性が高い)
② 自由:テストケースを自由に書ける。
(具体性が高い)
簡単に書けるようにキーワードを定義すると、多くのメンバーがテストケースを短時間で作成できるようになります。
また、細かい操作について自由に書けるようにキーワードを定義すると、さまざまなテストが作成できるようになり
ますが、テストケースの作成時間は長くなります。また、具体的に記述することで、テストケースの保守コストが増
加する傾向にあります。
自動化したシステムテストの目的や維持方法、作成者や作成時期などを考慮してキーワードの粒度を決めると効
果的です。ただ、最初に全てを想定することは難しいので、比較的単純なキーワードを定義して、テストケースの
作成と運用を経験して、改善を繰り返すことが最も良い方法です。
複数の粒度や種類のキーワードを用意する場合は、名前空間的なルールを導入して、「名前空間.キーワード」
のようにする場合もあります。
5
Step 6 演習2 論理的なキーワードの導入
電卓の仕様が異なることで、同じテストケースが使用できないことが分かりました。
テスト内容:足し算と掛け算を組み合わせた計算
キーワード 対象 引数 コメント
クリア
ボタン操作 1
ボタン操作 +
ボタン操作 2
ボタン操作 *
ボタン操作 3
ボタン操作 =
表示確認
共通で利用できるテストケースを増やすために、「足し算」「掛け算」などのキーワード3を追加することにしました。
これらのキーワードの引数は、クエリ文字列(URL パラメーター)形式を採用しました。「値1」に一つ目の値を「値
2」に二つ目の値を指定します。また、値1を省略した時は現在の値が使用されます。4
テスト内容:足し算と掛け算を行う計算
キーワード 対象 引数 コメント
クリア
足し算 値 1=1&値 2=2
表示確認 3
掛け算 値 2=3
表示確認 9
① 今回のキーワード追加について、メリットとデメリットを記述してください。
3 キーワードの有効性の確認には、バグの再現性などで行うことができます。
4 値入力後に、=ボタンを操作することで処理を実現しています。
キー操作の順番に計算する電卓では、
「9」
掛け算が優先される電卓では「7」
上記のテストケースに似ていますが、
厳密には異なるテストケースです。
6
Step 7 キーワード駆動システムの構造例
キーワード駆動を理解しやすくするために、キーワード駆動システムの構造を例示します。
この例のポイントは、テストケース(テストスクリプト)の読込と制御を行う Runner クラスと、各システムを動作させる
Driver クラスから構成れていることです。
Runner から Driver クラスの基底クラスを利用することで、個別の Driver を隠ぺいしています。この構造によっ
て、新しい Driver が増えた場合でも、Runner の修正は必要なくなります。
クラス図
シーケンス図
キーワードによる動作。
対象から実際の Element の決定。
などを行う
7
Step 8 まとめ:キーワード駆動テストの利点・欠点
自動テストシステムで、キーワード駆動を採用する利点には、以下のものがあります。
① システムの開発とテストケースの作成の依存関係を無くすことができる
システム開発の初期段階からテストケースを作成することができます。
② ドメインの言葉でテストケースを記述することができる
仕様定義の一部としてテストケースを記述することができます。テストケースをマークダウン形式のテキストファ
イルで記述することも可能です。
③ テストケースの変更コストを抑えることができる
システムの変更をドライバー部分で吸収することでテストケースの変更コストが少なくなります。
④ テストケースの自動生成を行うことができる
テストケースがシンプルな場合、テンプレートとキーワードの組み合わせを用意することで、ペアワイズ法など
を応用してテストケースの自動生成ができるケースもあります。
ペアワイズ法(オールペア法)は、ソフトウェアのバグの多くが 1 つまたは 2 つの因子の組み合わせによって
発生しているという事実に基づいてテストケースを限定する手法です。PICT という、フリーソフトをマイクロソフ
トが公開しています。
自動テストシステムで、キーワード駆動を採用する欠点には、以下のものがあります。
キーワード駆動システムの開発コストが高い
キーワード駆動システムを開発する必要があります。キーワード駆動システムは、対象システム単位に作成す
る必要があります。しかし、システムがテストしやすくなっていることで、トータルコストを抑えることができます。
システム開発技術が必要となる
手動検査では、システム開発技術は必要ない場合もあります。自動テストシステムの開発は、システム開発の
技術が必要となります。キーワード駆動基盤は、フリーソフトなどの利用が可能ですが、キーワード駆動システ
ムは専用のシステムを開発する必要があります。
採用するキーワードは、キーワード駆動テストによって達成したい目的によって異なります。目的に合わ
せて、最適なキーワードを採用します。
自動テストで発生する問題について
日付や時間に関する問題も自動テストでは重要です。具体的には、今日の日付を入力するテストケースを書く場
合、入力値をどうするか検討する必要があります。このような場合、テストケースの記述に特別なルール(例えば、
システム変数)を用意することを検討します。
自動テストを運用するといろいろな問題に直面することが多々あります。これに対応するためには、日々の運用の
なかで、自動テストシステムの改善が必要になります。時には、テスト対象のシステムに自動テストの観点で問題
があれば、変更することが有効な場合もあります。
テスト対象を開発しているチームの協力があると、効率的にテストの自動化を進めることができます。自動テストは、
開発チームにも多くの恩恵があるため積極的な参加を最初からコミットすることを検討してください。

Weitere ähnliche Inhalte

Was ist angesagt?

PostgreSQL 12 Beta 1 New Features with Examples (Japanese)
PostgreSQL 12 Beta 1 New Features  with Examples (Japanese)PostgreSQL 12 Beta 1 New Features  with Examples (Japanese)
PostgreSQL 12 Beta 1 New Features with Examples (Japanese)Noriyoshi Shinoda
 
PostgreSQL 14 Beta1 New Features with Examples (Japanese)
PostgreSQL 14 Beta1 New Features with Examples (Japanese)PostgreSQL 14 Beta1 New Features with Examples (Japanese)
PostgreSQL 14 Beta1 New Features with Examples (Japanese)Noriyoshi Shinoda
 
Windows azure stepbystep_tutorialguide
Windows azure stepbystep_tutorialguideWindows azure stepbystep_tutorialguide
Windows azure stepbystep_tutorialguideYoshida Yuri
 
OpenStack環境構築手順書 Havana版 バージョン2.2
OpenStack環境構築手順書 Havana版 バージョン2.2OpenStack環境構築手順書 Havana版 バージョン2.2
OpenStack環境構築手順書 Havana版 バージョン2.2VirtualTech Japan Inc.
 
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版Hiroyuki Ohnaka
 
Unspsc product classification process and samples
Unspsc product classification process and samples Unspsc product classification process and samples
Unspsc product classification process and samples Indra kumar
 

Was ist angesagt? (6)

PostgreSQL 12 Beta 1 New Features with Examples (Japanese)
PostgreSQL 12 Beta 1 New Features  with Examples (Japanese)PostgreSQL 12 Beta 1 New Features  with Examples (Japanese)
PostgreSQL 12 Beta 1 New Features with Examples (Japanese)
 
PostgreSQL 14 Beta1 New Features with Examples (Japanese)
PostgreSQL 14 Beta1 New Features with Examples (Japanese)PostgreSQL 14 Beta1 New Features with Examples (Japanese)
PostgreSQL 14 Beta1 New Features with Examples (Japanese)
 
Windows azure stepbystep_tutorialguide
Windows azure stepbystep_tutorialguideWindows azure stepbystep_tutorialguide
Windows azure stepbystep_tutorialguide
 
OpenStack環境構築手順書 Havana版 バージョン2.2
OpenStack環境構築手順書 Havana版 バージョン2.2OpenStack環境構築手順書 Havana版 バージョン2.2
OpenStack環境構築手順書 Havana版 バージョン2.2
 
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
 
Unspsc product classification process and samples
Unspsc product classification process and samples Unspsc product classification process and samples
Unspsc product classification process and samples
 

Ähnlich wie Keyword driventestexercisetext.20210506

コーディング規約_Scratch編_v1.1
コーディング規約_Scratch編_v1.1コーディング規約_Scratch編_v1.1
コーディング規約_Scratch編_v1.1satoshi59
 
Linux+PHPを学んで日程調整アプリを作ろう①
Linux+PHPを学んで日程調整アプリを作ろう①Linux+PHPを学んで日程調整アプリを作ろう①
Linux+PHPを学んで日程調整アプリを作ろう①Aina Hara
 
コーディング規約「Scratch編」v1.0
コーディング規約「Scratch編」v1.0コーディング規約「Scratch編」v1.0
コーディング規約「Scratch編」v1.0satoshi59
 
Automation Anywhere Enterprise Client 11.3.2 簡易インストール手順書
Automation Anywhere Enterprise Client 11.3.2 簡易インストール手順書Automation Anywhere Enterprise Client 11.3.2 簡易インストール手順書
Automation Anywhere Enterprise Client 11.3.2 簡易インストール手順書Automation Anywhere Japan
 
今日から始めるWeb面接!~Interview Maker操作マニュアル~
今日から始めるWeb面接!~Interview Maker操作マニュアル~今日から始めるWeb面接!~Interview Maker操作マニュアル~
今日から始めるWeb面接!~Interview Maker操作マニュアル~Ayaka Takagi
 
今日から始めるWeb面接!~Interview Maker操作マニュアル~
今日から始めるWeb面接!~Interview Maker操作マニュアル~今日から始めるWeb面接!~Interview Maker操作マニュアル~
今日から始めるWeb面接!~Interview Maker操作マニュアル~Ayaka Takagi
 
今日から始めるWeb面接!~Interview Maker操作マニュアル~
今日から始めるWeb面接!~Interview Maker操作マニュアル~今日から始めるWeb面接!~Interview Maker操作マニュアル~
今日から始めるWeb面接!~Interview Maker操作マニュアル~Ayaka Takagi
 
[修士論文] 入力支援機能を備えた日本語表記による初学者向けプログラミング学習環境の構築
[修士論文] 入力支援機能を備えた日本語表記による初学者向けプログラミング学習環境の構築[修士論文] 入力支援機能を備えた日本語表記による初学者向けプログラミング学習環境の構築
[修士論文] 入力支援機能を備えた日本語表記による初学者向けプログラミング学習環境の構築Ryota Nakamura
 
kintone university 02.AD編 第7版 サンプル
kintone university 02.AD編 第7版 サンプルkintone university 02.AD編 第7版 サンプル
kintone university 02.AD編 第7版 サンプルYudai Shibuya
 
Reactive extensions入門v0.1
Reactive extensions入門v0.1Reactive extensions入門v0.1
Reactive extensions入門v0.1一希 大田
 
学部卒業論文
学部卒業論文学部卒業論文
学部卒業論文n-yuki
 
Rの拡張を書く (R 2.15.2)
Rの拡張を書く (R 2.15.2)Rの拡張を書く (R 2.15.2)
Rの拡張を書く (R 2.15.2)itoyan110
 
PostgreSQL 11 New Features With Examples (Japanese)
PostgreSQL 11 New Features With Examples (Japanese)PostgreSQL 11 New Features With Examples (Japanese)
PostgreSQL 11 New Features With Examples (Japanese)Noriyoshi Shinoda
 
【お客様向け】Sansan連携機能 導入手順
【お客様向け】Sansan連携機能 導入手順【お客様向け】Sansan連携機能 導入手順
【お客様向け】Sansan連携機能 導入手順e-sales-support
 
VeeamとExaGridの検証レポート(2023年 12月)ショートバージョン
VeeamとExaGridの検証レポート(2023年 12月)ショートバージョンVeeamとExaGridの検証レポート(2023年 12月)ショートバージョン
VeeamとExaGridの検証レポート(2023年 12月)ショートバージョン株式会社クライム
 
00_O365_SecureConfigurationAlignment_JP_v1.0.pdf
00_O365_SecureConfigurationAlignment_JP_v1.0.pdf00_O365_SecureConfigurationAlignment_JP_v1.0.pdf
00_O365_SecureConfigurationAlignment_JP_v1.0.pdfHisaho Nakata
 
20211221 jasst nano_test automation operation
20211221 jasst nano_test automation operation20211221 jasst nano_test automation operation
20211221 jasst nano_test automation operationSadaaki Emura
 
WebSocket Chat App Hands On on Microsoft Azure
WebSocket Chat App Hands On on Microsoft AzureWebSocket Chat App Hands On on Microsoft Azure
WebSocket Chat App Hands On on Microsoft AzureYoshio Terada
 

Ähnlich wie Keyword driventestexercisetext.20210506 (20)

Tour
TourTour
Tour
 
コーディング規約_Scratch編_v1.1
コーディング規約_Scratch編_v1.1コーディング規約_Scratch編_v1.1
コーディング規約_Scratch編_v1.1
 
Linux+PHPを学んで日程調整アプリを作ろう①
Linux+PHPを学んで日程調整アプリを作ろう①Linux+PHPを学んで日程調整アプリを作ろう①
Linux+PHPを学んで日程調整アプリを作ろう①
 
コーディング規約「Scratch編」v1.0
コーディング規約「Scratch編」v1.0コーディング規約「Scratch編」v1.0
コーディング規約「Scratch編」v1.0
 
Automation Anywhere Enterprise Client 11.3.2 簡易インストール手順書
Automation Anywhere Enterprise Client 11.3.2 簡易インストール手順書Automation Anywhere Enterprise Client 11.3.2 簡易インストール手順書
Automation Anywhere Enterprise Client 11.3.2 簡易インストール手順書
 
今日から始めるWeb面接!~Interview Maker操作マニュアル~
今日から始めるWeb面接!~Interview Maker操作マニュアル~今日から始めるWeb面接!~Interview Maker操作マニュアル~
今日から始めるWeb面接!~Interview Maker操作マニュアル~
 
今日から始めるWeb面接!~Interview Maker操作マニュアル~
今日から始めるWeb面接!~Interview Maker操作マニュアル~今日から始めるWeb面接!~Interview Maker操作マニュアル~
今日から始めるWeb面接!~Interview Maker操作マニュアル~
 
今日から始めるWeb面接!~Interview Maker操作マニュアル~
今日から始めるWeb面接!~Interview Maker操作マニュアル~今日から始めるWeb面接!~Interview Maker操作マニュアル~
今日から始めるWeb面接!~Interview Maker操作マニュアル~
 
[修士論文] 入力支援機能を備えた日本語表記による初学者向けプログラミング学習環境の構築
[修士論文] 入力支援機能を備えた日本語表記による初学者向けプログラミング学習環境の構築[修士論文] 入力支援機能を備えた日本語表記による初学者向けプログラミング学習環境の構築
[修士論文] 入力支援機能を備えた日本語表記による初学者向けプログラミング学習環境の構築
 
kintone university 02.AD編 第7版 サンプル
kintone university 02.AD編 第7版 サンプルkintone university 02.AD編 第7版 サンプル
kintone university 02.AD編 第7版 サンプル
 
Install guide ja_jp
Install guide ja_jpInstall guide ja_jp
Install guide ja_jp
 
Reactive extensions入門v0.1
Reactive extensions入門v0.1Reactive extensions入門v0.1
Reactive extensions入門v0.1
 
学部卒業論文
学部卒業論文学部卒業論文
学部卒業論文
 
Rの拡張を書く (R 2.15.2)
Rの拡張を書く (R 2.15.2)Rの拡張を書く (R 2.15.2)
Rの拡張を書く (R 2.15.2)
 
PostgreSQL 11 New Features With Examples (Japanese)
PostgreSQL 11 New Features With Examples (Japanese)PostgreSQL 11 New Features With Examples (Japanese)
PostgreSQL 11 New Features With Examples (Japanese)
 
【お客様向け】Sansan連携機能 導入手順
【お客様向け】Sansan連携機能 導入手順【お客様向け】Sansan連携機能 導入手順
【お客様向け】Sansan連携機能 導入手順
 
VeeamとExaGridの検証レポート(2023年 12月)ショートバージョン
VeeamとExaGridの検証レポート(2023年 12月)ショートバージョンVeeamとExaGridの検証レポート(2023年 12月)ショートバージョン
VeeamとExaGridの検証レポート(2023年 12月)ショートバージョン
 
00_O365_SecureConfigurationAlignment_JP_v1.0.pdf
00_O365_SecureConfigurationAlignment_JP_v1.0.pdf00_O365_SecureConfigurationAlignment_JP_v1.0.pdf
00_O365_SecureConfigurationAlignment_JP_v1.0.pdf
 
20211221 jasst nano_test automation operation
20211221 jasst nano_test automation operation20211221 jasst nano_test automation operation
20211221 jasst nano_test automation operation
 
WebSocket Chat App Hands On on Microsoft Azure
WebSocket Chat App Hands On on Microsoft AzureWebSocket Chat App Hands On on Microsoft Azure
WebSocket Chat App Hands On on Microsoft Azure
 

Mehr von Toru Koido

Automated testingindevopsstrategy.20210506
Automated testingindevopsstrategy.20210506Automated testingindevopsstrategy.20210506
Automated testingindevopsstrategy.20210506Toru Koido
 
Keyword System Test
Keyword System TestKeyword System Test
Keyword System TestToru Koido
 
自動テストの品質とテストパターン
自動テストの品質とテストパターン自動テストの品質とテストパターン
自動テストの品質とテストパターンToru Koido
 
設計品質とアーキテクチャ
設計品質とアーキテクチャ設計品質とアーキテクチャ
設計品質とアーキテクチャToru Koido
 
キーワード駆動によるシステムテストの自動化について 2015
キーワード駆動によるシステムテストの自動化について 2015キーワード駆動によるシステムテストの自動化について 2015
キーワード駆動によるシステムテストの自動化について 2015Toru Koido
 
テスト自動化とアーキテクチャ
テスト自動化とアーキテクチャテスト自動化とアーキテクチャ
テスト自動化とアーキテクチャToru Koido
 
アジャイル開発におけるシステムテストの自動化
アジャイル開発におけるシステムテストの自動化アジャイル開発におけるシステムテストの自動化
アジャイル開発におけるシステムテストの自動化Toru Koido
 
オブジェクト指向設計の原則
オブジェクト指向設計の原則オブジェクト指向設計の原則
オブジェクト指向設計の原則Toru Koido
 

Mehr von Toru Koido (12)

Automated testingindevopsstrategy.20210506
Automated testingindevopsstrategy.20210506Automated testingindevopsstrategy.20210506
Automated testingindevopsstrategy.20210506
 
Keyword System Test
Keyword System TestKeyword System Test
Keyword System Test
 
自動テストの品質とテストパターン
自動テストの品質とテストパターン自動テストの品質とテストパターン
自動テストの品質とテストパターン
 
設計品質とアーキテクチャ
設計品質とアーキテクチャ設計品質とアーキテクチャ
設計品質とアーキテクチャ
 
キーワード駆動によるシステムテストの自動化について 2015
キーワード駆動によるシステムテストの自動化について 2015キーワード駆動によるシステムテストの自動化について 2015
キーワード駆動によるシステムテストの自動化について 2015
 
テスト自動化とアーキテクチャ
テスト自動化とアーキテクチャテスト自動化とアーキテクチャ
テスト自動化とアーキテクチャ
 
Xp2 2014版
Xp2 2014版Xp2 2014版
Xp2 2014版
 
Xp2 2013版
Xp2 2013版Xp2 2013版
Xp2 2013版
 
アジャイル開発におけるシステムテストの自動化
アジャイル開発におけるシステムテストの自動化アジャイル開発におけるシステムテストの自動化
アジャイル開発におけるシステムテストの自動化
 
オブジェクト指向設計の原則
オブジェクト指向設計の原則オブジェクト指向設計の原則
オブジェクト指向設計の原則
 
Xp2
Xp2Xp2
Xp2
 
Xp2
Xp2Xp2
Xp2
 

Keyword driventestexercisetext.20210506

  • 2. 目次 キーワード駆動の自動テスト演習 Web 電卓.....................................................................1 Step 1 キーワード駆動とは ......................................................................................................................................................1 Step 2 Web 電卓用とテストケースの構成 ..........................................................................................................................2 Step 3 キーワードの定義..........................................................................................................................................................3 Step 4 テストケース例 ................................................................................................................................................................3 Step 5 演習1 新しいキーワードの定義 ............................................................................................................................4 Step 6 演習2 論理的なキーワードの導入.......................................................................................................................5 Step 7 キーワード駆動システムの構造例 .........................................................................................................................6 Step 8 まとめ:キーワード駆動テストの利点・欠点.........................................................................................................7
  • 3. 1 キーワード駆動の自動テスト演習 Web 電卓 Step 1 キーワード駆動とは1 自動テストにキーワード駆動を導入する主たる目的は、以下の項目になります。 1. テストケース2 の作成が容易 仕様書に記述されている言葉をキーワードとして採用することで、チームメンバーであれば、誰でも作成 することができるようになります。 2. テストケースの保守性を高く 対象のシステムが変更されても、少ない工数でテストケースを再利用することができます。また、テストケ ースを変更せずに利用することが可能な場合もあります。 3. 対象システムの開発と独立して作成が可能 実際に動作するシステムがない状況や環境でもテストケースを作成することができるようになります。 一般的に、キーワードには、以下の様なものを用意します。 1. システムを操作する システムに対して、値の入力などを行う機能をキーワードとして用意します。 2. 判定を行う テストの成功と失敗を判定するための機能をキーワードとして用意します。 3. テストを支援する テスト実行中に、システムの状態などを取得する機能をキーワードとして用意します。この機能は、テスト がエラーとなった場合の原因調査などを効率化するためのものです。 一般的に、キーワード駆動の自動テストは以下の様な構造となります。 1 実際のプロジェクトでは、プロジェクトの目的や特徴に合わせて自動テストの目的を定義します。 2 本テキストでは、テストケースとは自動テストスクリプトとほぼ同意です。
  • 4. 2 Step 2 Web 電卓用とテストケースの構成 テスト対象は、以下の 2 種類の電卓アプリです。(以下の電卓アプリは無料公開されています) 通常の電卓と同じ動作をするもの。 演算子に数学の優先順位があるもの。 Web 電卓用のキーワード駆動テストで利用するテストケースの形式を定義します。 本演習では、テストケースをテキストファイルで記述します。テストケースのキーワード部分は、マークダウン記法 の表形式を採用します。キーワード部分の表の構成は、以下の通りとします。 1. キーワード 機能をキーワードとして定義します。 2. 対象 キーワードで操作する対象を指定します。 3. 引数 キーワードごとに定義された引数です。 4. コメント 処理がエラーとなった場合などに参考にするコメントです。操作などには、影響しません。 【目的】 「二種類のアプリで、テストケースが 共通で利用できるようにする。 」 「今後、これ以外のアプリが増えるこ とが想定される」ことを今回は理由と しています。
  • 5. 3 Step 3 キーワードの定義 以下のキーワードを定義しました。 ① 操作のキーワード キーワード:オールクリア 対象:なし 引数:使用しない キーワード:ボタン操作 対象:ボタン名 数字や四則演算を定義する 引数:使用しない ② 判定のキーワード キーワード:表示確認 対象:使用しない 引数:判定を行う文字列 フォーマットされて表示された文字列を指定する Step 4 テストケース例 以下はテストケースの例です。 テスト内容:足し算の計算 キーワード 対象 引数 コメント オールクリア ボタン操作 1 ボタン操作 + ボタン操作 2 ボタン操作 = 表示確認 3 補足:テストを支援するキーワード キーワードを定義する場合、対象システムの仕様変更などでテストケースの書換えを最低限にすることが重要で す。 また、テストを実行した場合、テストが失敗で終了する場合があります。この時、単にテストが失敗しただけでは、 失敗の原因を特定することが難しい場合があります。そこで失敗の原因を素早く見つけるために、様々な情報を 取得するキーワードを用意します。例えば、「画面保存」や「使用メモリ状況」などです。 HTML の ID ではなく、ボタン名で指定することで、異なった Web アプリでも使用できるテストケースになります。 また、テストケースの可読性も上がります。 論理的な「オールクリア」というキーワードにより、操作が明 確になり、異なった Web アプリでも利用できるようになりま す。
  • 6. 4 Step 5 演習1 新しいキーワードの定義 割り算のテストで、ゼロ割のテストケースを記述することにしました。アプリケーションによって、エラーの表示方法 が異なります。そこで、新しいキーワードを定義することにしました。可読性などにも考慮して、新しいキーワードを 定義してください。 ① エラーのキーワードを定義してください。 キーワード: 対象: 引数: ② キーワード定義で考慮したことを記述してください。 ③ 定義したキーワードを使用してテストケースを記述してください。 テストケースは、上から順次実行されます。 テスト内容: キーワード 対象 引数 コメント 補足:キーワードの粒度について 一般的に、簡単さと自由はトレードオブの関係にあります。システムテストに当てはめると、以下のようになります。 ① 簡単:テストケースを簡単に書ける。 (論理性が高い) ② 自由:テストケースを自由に書ける。 (具体性が高い) 簡単に書けるようにキーワードを定義すると、多くのメンバーがテストケースを短時間で作成できるようになります。 また、細かい操作について自由に書けるようにキーワードを定義すると、さまざまなテストが作成できるようになり ますが、テストケースの作成時間は長くなります。また、具体的に記述することで、テストケースの保守コストが増 加する傾向にあります。 自動化したシステムテストの目的や維持方法、作成者や作成時期などを考慮してキーワードの粒度を決めると効 果的です。ただ、最初に全てを想定することは難しいので、比較的単純なキーワードを定義して、テストケースの 作成と運用を経験して、改善を繰り返すことが最も良い方法です。 複数の粒度や種類のキーワードを用意する場合は、名前空間的なルールを導入して、「名前空間.キーワード」 のようにする場合もあります。
  • 7. 5 Step 6 演習2 論理的なキーワードの導入 電卓の仕様が異なることで、同じテストケースが使用できないことが分かりました。 テスト内容:足し算と掛け算を組み合わせた計算 キーワード 対象 引数 コメント クリア ボタン操作 1 ボタン操作 + ボタン操作 2 ボタン操作 * ボタン操作 3 ボタン操作 = 表示確認 共通で利用できるテストケースを増やすために、「足し算」「掛け算」などのキーワード3を追加することにしました。 これらのキーワードの引数は、クエリ文字列(URL パラメーター)形式を採用しました。「値1」に一つ目の値を「値 2」に二つ目の値を指定します。また、値1を省略した時は現在の値が使用されます。4 テスト内容:足し算と掛け算を行う計算 キーワード 対象 引数 コメント クリア 足し算 値 1=1&値 2=2 表示確認 3 掛け算 値 2=3 表示確認 9 ① 今回のキーワード追加について、メリットとデメリットを記述してください。 3 キーワードの有効性の確認には、バグの再現性などで行うことができます。 4 値入力後に、=ボタンを操作することで処理を実現しています。 キー操作の順番に計算する電卓では、 「9」 掛け算が優先される電卓では「7」 上記のテストケースに似ていますが、 厳密には異なるテストケースです。
  • 8. 6 Step 7 キーワード駆動システムの構造例 キーワード駆動を理解しやすくするために、キーワード駆動システムの構造を例示します。 この例のポイントは、テストケース(テストスクリプト)の読込と制御を行う Runner クラスと、各システムを動作させる Driver クラスから構成れていることです。 Runner から Driver クラスの基底クラスを利用することで、個別の Driver を隠ぺいしています。この構造によっ て、新しい Driver が増えた場合でも、Runner の修正は必要なくなります。 クラス図 シーケンス図 キーワードによる動作。 対象から実際の Element の決定。 などを行う
  • 9. 7 Step 8 まとめ:キーワード駆動テストの利点・欠点 自動テストシステムで、キーワード駆動を採用する利点には、以下のものがあります。 ① システムの開発とテストケースの作成の依存関係を無くすことができる システム開発の初期段階からテストケースを作成することができます。 ② ドメインの言葉でテストケースを記述することができる 仕様定義の一部としてテストケースを記述することができます。テストケースをマークダウン形式のテキストファ イルで記述することも可能です。 ③ テストケースの変更コストを抑えることができる システムの変更をドライバー部分で吸収することでテストケースの変更コストが少なくなります。 ④ テストケースの自動生成を行うことができる テストケースがシンプルな場合、テンプレートとキーワードの組み合わせを用意することで、ペアワイズ法など を応用してテストケースの自動生成ができるケースもあります。 ペアワイズ法(オールペア法)は、ソフトウェアのバグの多くが 1 つまたは 2 つの因子の組み合わせによって 発生しているという事実に基づいてテストケースを限定する手法です。PICT という、フリーソフトをマイクロソフ トが公開しています。 自動テストシステムで、キーワード駆動を採用する欠点には、以下のものがあります。 キーワード駆動システムの開発コストが高い キーワード駆動システムを開発する必要があります。キーワード駆動システムは、対象システム単位に作成す る必要があります。しかし、システムがテストしやすくなっていることで、トータルコストを抑えることができます。 システム開発技術が必要となる 手動検査では、システム開発技術は必要ない場合もあります。自動テストシステムの開発は、システム開発の 技術が必要となります。キーワード駆動基盤は、フリーソフトなどの利用が可能ですが、キーワード駆動システ ムは専用のシステムを開発する必要があります。 採用するキーワードは、キーワード駆動テストによって達成したい目的によって異なります。目的に合わ せて、最適なキーワードを採用します。 自動テストで発生する問題について 日付や時間に関する問題も自動テストでは重要です。具体的には、今日の日付を入力するテストケースを書く場 合、入力値をどうするか検討する必要があります。このような場合、テストケースの記述に特別なルール(例えば、 システム変数)を用意することを検討します。 自動テストを運用するといろいろな問題に直面することが多々あります。これに対応するためには、日々の運用の なかで、自動テストシステムの改善が必要になります。時には、テスト対象のシステムに自動テストの観点で問題 があれば、変更することが有効な場合もあります。 テスト対象を開発しているチームの協力があると、効率的にテストの自動化を進めることができます。自動テストは、 開発チームにも多くの恩恵があるため積極的な参加を最初からコミットすることを検討してください。