キーワード駆動システムテスト
チュートリアル
Rev.2019.11.28
目次
チュートリアルの概要 .......................................................................................................1
Step 1 概要.........................................................................................................................................................................................1
Step 2 目的と達成目標ついて...................................................................................................................................................2
Step 3 言葉の説明..........................................................................................................................................................................2
自動テストの基礎.............................................................................................................3
Step 1 システムテストとは............................................................................................................................................................3
Step 2 自動テストとは....................................................................................................................................................................3
システムアーキテクチャと品質特性 ...................................................................................4
Step 1 システムアーキテクチャ .................................................................................................................................................4
Step 2 自動テストとシステムアーキテクチャ .......................................................................................................................5
例題(電卓)演習 ..............................................................................................................6
Step 1 テスト対象.............................................................................................................................................................................6
Step 2 テスト観点から見たシステムの特徴(注意点).....................................................................................................7
Step 3 「テストスクリプト作成」視点から要求.......................................................................................................................8
Step 4 「テストスクリプトの実行」視点から要求..................................................................................................................9
Step 5 「自動テストの運用」視点から要求..........................................................................................................................10
Step 6 自動テストの方針............................................................................................................................................................11
Step 7 ルールについて ...............................................................................................................................................................12
Step 8 ルールの書き方...............................................................................................................................................................12
Step 9 テストスクリプトに関するルール...............................................................................................................................13
Step 10 自動テストに関するルール.........................................................................................................................................14
演習の回答例................................................................................................................15
Step 1 テスト観点から見たシステムの特徴(注意点)...................................................................................................15
Step 2 「テストスクリプト作成」視点から要求.....................................................................................................................15
Step 3 「テストスクリプトの実行」視点から要求................................................................................................................16
Step 4 「自動テストの運用」視点から要求..........................................................................................................................16
Step 5 自動テストの方針............................................................................................................................................................17
キーワード駆動テストの演習...........................................................................................18
Step 1 キーワード駆動とは .......................................................................................................................................................18
Step 2 キーワード駆動の目的.................................................................................................................................................18
Step 3 キーワードの構成...........................................................................................................................................................18
Step 4 共通キーワードの洗い出し.........................................................................................................................................19
Step 5 手動テストシナリオ例....................................................................................................................................................19
Step 6 キーワード駆動システムの構造例..........................................................................................................................20
Step 7 共通キーワードの定義.................................................................................................................................................21
Step 8 情報取得キーワードの定義.......................................................................................................................................22
Step 9 テストケースの作成........................................................................................................................................................23
Step 10 専用のキーワードの定義............................................................................................................................................24
Step 11 キーワード以外の記述.................................................................................................................................................24
Step 12 キーワード駆動テストの利点・欠点.........................................................................................................................25
1
チュートリアルの概要
はじめに
ここでは、「キーワード駆動を利用したシステムテスト自動化」チュートリアルの目指す方向、出発点と到着点
を確認します。主な内容は以下の通りです。
ステップ 主な内容
概要 チュートリアルの概要と予定
目的・達成目標 本チュートリアルに期待すること
言葉の説明 本チュートリアルで使用する言葉の説明
Step 1 概要
① チュートリアルの概要
テスト自動化において、テストコードの作成コストや保守性の悪化、テスト記述の可読性の悪さなどの問題が
発生することがあります。この対処方法の一つがキーワード駆動テストです。本チュートリアルでは、自動テス
トの考え方とキーワード駆動テストの考え方について説明します。
② チュートリアルのアジェンダ
内容
1 自動テストの基礎
2 ステムアーキテクチャと品質特性
3 Web 電卓を例にした演習
4 キーワード駆動テストの演習
③ チュートリアルの進め方
本チュートリアルを有意義なものとするために、講義だけではなく、演習を行ないながら進めます。積極的な
参加をお願いします。
2
Step 2 目的と達成目標ついて
① 目的
本チュートリアルの目的は、システムテストの自動化の中でキーワード駆動の使いどころや使い方について、修
得することです。また、システムテストを自動化する上で注意すべきことを理解することです。
② 達成目標
・ システムテストの自動化について理解する
・ システムテスト自動化のアーキテクチャを理解する
・ キーワード駆動による自動テストシステムについて理解する
③ あなたがつかみたいと思うことについて書いてください。また、その理由も書いてください。
つかみたいと思うこと
その理由
Step 3 言葉の説明
チュートリアルで使用する言葉について説明します。この説明は、一般的な定義と異なるものもあります
がご了承ください。
① テストケース
テストケースとは、テストの前条件・操作(入力)・期待結果・後条件を組み合わせたものです。
② テストシナリオ
テストの操作(入力)の流れを具体な例で記述したものです。
③ テストスクリプト
テストの手順をスクリプト言語で記述したものです。
④ テストコード
テストシナリオを自動で実行するために記述したコードです。特定のルールに則って記述します。テストコード
は、プログラム言語以外で記述されることもあります。通常、テストケース・テストシナリオに対応します。
⑤ テストセット
一つ以上のテストケースの集まりです。
⑥ テストランナー
テストコードを実行するためにスクリプト等で記述されたものです。本チュートリアルでは、複数のテストシナリ
オをグループ化して、特定のグループのシナリオを実行するためのものをテストランナーと呼びます。
⑦ テスト運用スクリプト
テストセットを実行し、運用するためのスクリプトです。
3
自動テストの基礎
Step 1 システムテストとは
① システムテストとは
システムテストとは、システム全体が正しく動作することを確認するテストです。したがって、システムテストは、
End to End(端から端まで)で行われます。
② システムテストの例
1. 運用テスト
実運用に近い環境で、実際に運用するテスト
2. 操作性テスト
利用ユーザー視点で、操作を行うテスト
3. 構成テスト
様々な構成パターンでのテスト
4. マニュアルテスト
マニュアル通りに操作して問題なく動作することを確認するテスト
5. 回帰テスト
今回のリリースと前回のリリースで動作が同じことを確認するテスト
Step 2 自動テストとは
① 自動テストとは
自動テストとは、各種ツールなどを使用してシステム化されたテストです。したがって、自動テストの環境を構
築することは、自動テストのシステムを開発することと同じです。
② 自動テストの対象
すべてのシステムテストを自動化の対象にすることは、得策ではありません。自動化するシステムテストは、繰
り返し実行する必要があるものが効果的です。主に、回帰テストが対象となります。
③ 自動テストの保守性
回帰テストは、システムやシステムが利用するミドルウェアなどに変更が発生した時に、その変更が現状の機
能について悪い影響が出ていないことを確認するために行います。
システムの変更が頻繁に行われるような場合、何度もテストを実行することが必要になるため、自動テストは非
常に有効です。しかし、システムの変更に対応するために自動テストの対応コストが大きいと、即時性や有効
性が下がってしまいます。
④ DRY 原則「Don’t Repeat Yourself」
自動テストは、ソフトウェアです。したがって、ソフトウェア開発の原則が有効です。
DRY の法則をテストコードに適応した場合、テストコードから重複をなくすことになります。そのためには、バリ
エーションが必要な部分と必要がない部分に分けることが重要です。重複をなくすことで効率性や保守性を
高くすることになります。
参考:https://www.infoq.com/jp/news/2012/05/DRY-code-duplication-coupling
4
システムアーキテクチャと品質特性
Step 1 システムアーキテクチャ
システムが統一された品質を達成するためには、システムとして求められる品質特性と対象(ステークホルダ)
を明確にする必要があります。また、複数のメンバー間で統一された品質を達成するために、具体的な方策
を用意する必要があります。この品質特性を強制するために定義するものがシステムアーキテクチャです。品
質特性を強制する方法には、システムの構造で強制する方法やルールなどで強制する方法があります。以
下のような作業によって、システムアーキテクチャの設計(定義)を行います。
・ システムが達成すべき品質特性のリストアップ
・ 品質特性を具体化し、目的やゴールを定義する
この時、定義に合っているか違反しているかを判定可能にすることが重要です。
・ 品質特性を分析する
・ システムアーキテクチャを複数のビューや設計方針で定義する
品質特性の代表的なものには以下のような項目があります。
・ パフォーマンス(性能・速度)
・ 安全性
・ 信頼性
・ 可用性(Availability)
・ 堅牢性(セキュリティ)
・ ユーザービリティー(使いやすさ)
・ 拡張性
機能の拡張や変更が容易である
5
Step 2 自動テストとシステムアーキテクチャ
自動テストは、複数のプログラムから構成されるシステムです。自動テストを効率的に運用する性などを実現
するためには、システムアーキテクチャを設計することが重要です。また、自動テストでは、対象となるシステ
ムの機能強化や適応領域の拡張などを行うことが多く、必要に応じてシステムアーキテクチャの定義を改善
することが効果的です。
① 自動テストのシステム構成
自動テストは、テスト対象システムと自動テストシステムの二つの対を成すシステムから構成されます。良い自
動テストを実現するためには、二つのシステムに対して、試験性(テスト容易性)を実現する必要があります。
② 3 つのサブシステム
自動テストシステムでは、テストスクリプトの作成、テストスクリプトの実行、自動テストの運用の3つの異なった
側面があります。これらは担当者が異なることもあります。自動テストへの要求を明確にする手順で、これらの
側面ごとに作業を進めることで、より明確な要求を定義することができます。
6
例題(電卓)演習
Step 1 テスト対象
テスト対象は、以下の 2 種類の電卓アプリです。
通常の電卓と同じ動作をするもの。
演算子に数学の優先順位があるもの。
この二つのテスト対象は、同じ操作を行った場合、答えが異なります。
例えば、画面のボタンを以下の様に操作した場合です。
「1 を押す、+を押す、2 を押す、×を押す、1 を押す、0 を押す、=を押す」
一つ目の電卓の回答は30で、二つ目の電卓の回答は 21 となります。
7
Step 2 テスト観点から見たシステムの特徴(注意点)
テスト観点からテスト対象のシステムの特徴(注意点)を記述してください。
① 特徴:
② 特徴:
③ 特徴:
④ 特徴:
ポイント
テストの観点からシステムの特徴(注意点)を洗い出します。自動テストは、テストの一つであるため、テストを効率
的に進めるためには、必須の作業です。
一般に、以下の様な項目について、特徴の洗い出しを行います。
・ テスト対象のシステム数(プロダクト数)
・ 機能の分類や数
・ システムの入力と出力の形式(画面やファイルなど)
・ システムの更新予定(スケジュール)
・ テスト対象のシステムの増減
・ 連携する外部システムの有無と内容
電卓の例題では、仕様の異なる 2 つのシステムが対象であることが大きな注意点です。異なる仕様のシステムに
対して、同じテストスクリプトを利用するために、キーワード駆動を採用する例となります。
また、今後テスト対象が増えても、テストスクリプトは修正せずに利用できることも目的にしています。
8
Step 3 「テストスクリプト作成」視点から要求
「テストスクリプト作成」の視点から要求を記述してください。
① 要求:
② 要求:
③ 要求:
④ 要求:
⑤ 要求:
ポイント
自動テストを作成する前に、要求を明確します。まずは、「テストスクリプト作成」の観点で要求を明確にします。
一般に、以下の様な項目や観点について、要求を定義します。
・ どのようなテストスクリプトを作成するのか(種類)
・ いつからテストスクリプトの作成を開始するか(作成時にシステムは動作しているか?)
自動テストでは、テストスクリプトの作成時に対象のシステムが動作しているかどうかは重要なポイントです。
対象のシステムが動作する前に一部のテストについてでも作成することで、テストの早期稼働や作業の平
準化など様々なメリットがあります。
・ だれがテストスクリプトを作成するか
・ テストスクリプトの体裁と記述方法
テストスクリプトをマークダウン形式やスプレッドシート形式にすることで、テスト仕様書と一体化することやプ
ログラミング経験のないメンバーでも作成することが可能となります。このように、記述方法を明確にすること
は重要なポイントです。
・ テストスクリプトの保守性
システムの機能拡張が頻繁な場合、テストスクリプトの修正コストが増大すると、テストの運用がシステム更
新に間に間に合わないということになり、自動化のメリットが損なわれてしまいます。
9
Step 4 「テストスクリプトの実行」視点から要求
「テストスクリプトの実行」の視点から要求を記述してください。
① 要求:
② 要求:
③ 要求:
ポイント
「テストスクリプトの実行」の観点で要求を明確にします。
一般に、以下の様な項目や観点について、要求を定義します。
・ テストスクリプトを実行するシステムはどのようにして開発するのか
テストスクリプトの記述方法によりますが、マークダウン形式などで記述する場合、解釈してテスト対象のシ
ステムを操作するシステムを開発する必要があります。一般的には、ゼロから開発するのではなく、
Selenium などを利用して開発します。
・ テストデータはどのように準備するのか
多くのシステムでは、テストデータをどのように準備して、テスト時に再構築することが重要になります。
・ テストスクリプトの成否を判定はどのように行うのか
テストスクリプト内に判定処理を記述する場合と実行結果により判定する方法があります。要求に応じて、
判定方法を使い分ける必要があります。
・ テストを実行する環境はどのようなものがあるのか
一般的にシステムテストは、テストデータのセットアップなどのテストを実行するための準備に時間が掛かり
ます。例えば、コンテナ技術などを利用することで、テストを実行するトータル時間の短縮などをはかること
ができます。
・ テストの並列実行について
テストケースが増えてくると、全てのテストのトータル実行時間が長くなります。これを短くする方法の一つが
並列実行です。並列実行することで、劇的な実行時間の短縮ができる場合もあります。
10
Step 5 「自動テストの運用」視点から要求
「自動テストの運用」の視点から要求を記述してください。
① 要求:
② 要求:
③ 要求:
ポイント
「自動テストの運用」の観点で要求を明確にします。運用の要求は、運用後にシステムテストの有効点が明確に
なるため、運用と共に変更することになります。最初は、限られた範囲の要求にとどめて、少しずつ範囲を広げる
ことがお勧めです。
一般に、以下の様な項目や観点について、要求を定義します。
・ いつテストスクリプトを実行するのか(何をトリガーとして、どれのテストスクリプトを実行する)
システムの変更や OS やブラウザなどの動作環境のバージョンアップなど、様々なことがシステムテストを実
行するトリガーとなります。
一般にシステムテストは実行時間が長くなるため、実行に関する方針を決める必要があります。
・ だれがテストスクリプトを実行するのか
システムテストの実行は、一般に何らかのシステムを利用します。しかし、運用自体にはコストが掛かるため、
誰が実行するか明確にする必要があります。担当を決めないとエラーが発生していることを見逃すようなこ
とが起こりがちです。
・ テスト実行結果をどのようにフィードバッグするのか(フィードバッグする情報は)
テストは何らかの原因で失敗することがあります。実行時間が長くなるような失敗もあります。これらの失敗
を開発担当者に素早くフィードバッグすることが重要です。一般的に、フィードバッグが遅くなると、比例し
て問題の解決時間が長くなるなります。実行後のフィードバッグ方法を決めることで、無駄なコストと時間を
なくすことができます。
11
Step 6 自動テストの方針
自動テストの方針を記述してください。
① 方針:
対応する品質特性:
② 方針:
対応する品質特性:
③ 方針:
対応する品質特性:
ポイント
方針は、関係者が同じ目標を共有するためのものです。「頑張ろう」の様な人によって解釈が異なるものは論外
ですが、より具体的なルールは別途用意することになるので、「自動テストは回帰テストの一部として利用し、デグ
レードの防止に役立てる」程度が良いでしょう。また、実際の業務プロセスにどのように組み込むかを決めることは
重要なので、運用の観点でも方針を決めると良いです。
また、方針に関連する品質特性を明確にすることで、方針の具体性が明確になるので明記することをお勧めしま
す。自動テストに関連する品質特性で代表的なものには、以下の様なものがあります。
・ 試験性
・ 確実性
・ 保守性
・ 理解性
・ 一貫性
12
Step 7 ルールについて
方針に沿って実際に作業を行うために、ルールを決めます。ルールは、効率的に作業を進めるためや関係
者によって作業のズレが発生しないようにするために定義します。また、後からチームに参加したメンバ
ーがスムーズに作業に参加する助けにもなります。
ルールについて
項目 ○
そのルールは、判断基準が明確である。(ルールを守っているか)
そのルールは、主体(開発者、検査者など)を明示している。
そのルールは、主体の目的が明確になっている。
そのルールは、適応場面が明確になっている。
そのルールには、制約も書かれている。
そのルールが守られているかだれでも判断することができる。
Step 8 ルールの書き方
以下のポイントを意識してルールを書くことが大切です。
ルールに名前を付ける。
チーム内でルールを共有するために、名前を付けましょう。
ルールの主体を明確にする。
ルールの目的(問題)を明確にする。
どのような目的を達成するためのルールなのか、あるいはどのような問題を解決するためのルールなのかを
書きましょう。
ルールを適応する状況を明確にする。
ルールの優先順位を明確にする。
ポイント
自動テストでは、キーワード駆動の採用やテストスクリプトをマークダウン形式で作成することは、ルールとなりま
す。
良いルールは、ルールの記述を読込まなくても自然とルールに従って作業を進めるものです。ルール集の様なも
のを作成するかどうかはプロジェクトによって異なります。
関係者間で合意が必要な場合や作業が進んだ時に衝突が起きそうな場合は、ルール集を作成し合意形成を明
示的に行う方が良い場合があります。
13
Step 9 テストスクリプトに関するルール
自動テストの方針を実現するために具体的なルールは以下の通りです。
「テストスクリプトの作成」に関するルールを記述してください。
ルール1 名前:
ルール2 名前:
ルール3 名前:
ルール4 名前:
ルール5 名前:
ルールに優先順位がある場合は、優先順位と理由を記述してください。
優先順位ルール1:
優先順位ルール2:
優先順位ルール3:
14
Step 10 自動テストに関するルール
「テストスクリプトの実行」に関するルールを記述してください。
ルール1 名前:
ルール2 名前:
ルール3 名前:
「自動テストの運用」に関するルールを記述してください。
ルール1 名前:
ルール2 名前:
ルール2 名前:
ルールに優先順位がある場合は、優先順位と理由を記述してください。
優先順位ルール1:
優先順位ルール2:
優先順位ルール3:
15
演習の回答例
Step 1 テスト観点から見たシステムの特徴(注意点)
テスト観点からテスト対象のシステムの特徴(注意点)は以下の通りです。
① テスト対象のシステム数(プロダクト数)
仕様が異なる二つのシステム。
② 機能の分類や数
四則演算に関する機能は二つのシステムで共通。
関数計算に関する機能は、片方のシステムのみ。
③ システムの更新予定(スケジュール)
非定期に更新が行われる。
④ 連携する外部システムの有無と内容
なし
⑤ その他の特徴:テスト対象のシステムが増える
今後要求に応じて、テスト対象のシステムが増える予定あり。
Step 2 「テストスクリプト作成」視点から要求
「テストスクリプト作成」の視点からのプロジェクトでの要求などは以下の通りです。
① どのようなテストスクリプトを作成するのか(種類)
「四則演算テストスクリプト」
四則演算に関するテストスクリプトは、基本機能として全てのシステムで動作する。
テストの内容は、計算処理のみで画面の崩れなどは検査対象外とする。
「関数電卓テストスクリプト」
関数計算に関するテストスクリプトは、関数電卓用のシステムのみで動作する。
「個別電卓テストスクリプト」
個別システム専用のテストスクリプトを用意する。
② だれがテストスクリプトを作成するか
プロジェクト関係者の全員。
③ いつからテストスクリプトの作成を開始するか(作成時にシステムは稼働しているか?)
四則演算テストについては、対象システムが稼働していない時点から作成する。
関数電卓テストについては、対象システムの仕様が確定後作成する。
個別機能テストについては、対象システムが動作するようになってから作成する。
16
④ テストスクリプトの体裁と記述方法
テストスクリプトはテスト対象システムのドメインの言葉を利用して記述する
可読性の高いテストスクリプトとし、テスト仕様書の一つとして利用可能なものとする
⑤ テストスクリプトの安定性
「四則演算テストスクリプト」については、新しいテスト対象が増えての修正せずに利用できる
Step 3 「テストスクリプトの実行」視点から要求
「テストスクリプトの実行」の視点からプロジェクトでの要求などは以下の通りです。
① テストスクリプトを実行するシステムはどのようにして開発するのか
スクリプトの実行システムは、基盤部分と各システム部分を分割する。
基盤部分は、自動化経験のあるチームが開発する。
個別システムに対応する部分は、テスト対象システムの検査を担当するチームで開発を行う。
テストシステムの保守は、各チームが継続して行う。
② テストデータはどのように準備するのか
テストデータは必要なし。
③ テストスクリプトの成否を判定はどのように行うのか
テストスクリプト内に判定に関する記述を行う。
④ テストを実行する環境はどのようなものがあるのか
専用のテスト用の仮想マシンを用意して実行を行う。
⑤ テストの並列実行について
複数のテストの実行環境で、並列して実行できるようにする。
Step 4 「自動テストの運用」視点から要求
「自動テストの運用」の視点からのプロジェクトでの要求は以下の通りです。
① だれがテストスクリプトを実行するのか
ディリーで夜間の特定の時間に実行する。
必要な場合は、任意のタイミングで実行することも可能とする。
② いつテストスクリプトを実行するのか(何をトリガーとして、どれのテストスクリプトを実行する)
システムの更新時に実行する
ブラウザのバージョンアップ時に実行する
③ テスト実行結果をどのようにフィードバッグするのか(フィードバッグする情報は)
テストの実行とテスト結果の表示は、チーム作業のワークスペース(ウェブ)に実行ごとに表示する
17
Step 5 自動テストの方針
自動テストの方針は以下の通りです。
① 方針:基本機能回帰テストについて、自動化を行う
対応する品質特性:確実性、保守性
② 方針:自動テストを開発プロセスに組み込む
対応する品質特性:試験性、プロセスの連続性
③ 方針:テストスクリプトをテスト仕様書の一つとする
対応する品質特性:理解性、一貫性
18
キーワード駆動テストの演習
Step 1 キーワード駆動とは
キーワード駆動とは、論理的なキーワードを用いて記述されたテストケースをツールが解釈し、自動テス
トを実行する手法のことです。キーワードの粒度や構成は、自動テストの目的や行いたいテストの内容に
よって決定されます。本演習でのキーワードの定義は、ひとつの例です。
Step 2 キーワード駆動の目的
自動テストにキーワード駆動を導入する主たる目的は、以下の項目になります。
1. テストケースの作成を容易
仕様書に記述されている言葉をキーワードとして採用することで、チームメンバーであれば、誰でも作成
することができるようになります。
2. テストケースの保守性を高く
対象のシステムが変更されても、少ない工数でテストケースを再利用することができます。また、テストケ
ースを変更せずに利用することが可能な場合もあります。
3. 対象システムの開発と独立して作成が可能
実際に動作するシステムがなくてもテストケースを作成することが可能となります。
一般的に、キーワードには、以下の様な種類のものを用意します。
1. システムを操作する
システムに対して、値の入力などのを行う機能をキーワードとして用意します。
2. 判定を行う
テストの成功と失敗を判定するための機能をキーワードとしてい用意します。
3. テストを支援する
テスト実行中に、システムの状態などを取得したする機能をキーワードとしてい用意します。この機能は、
テストがエラーとなった場合の原因調査などを効率化するためのものです。
Step 3 キーワードの構成
今回の演習では、キーワード部分の表の構成は、以下の通りとします。
1. キーワード(必須)
機能をキーワードとして定義します。
2. 対象(省略可)
キーワードで操作する対象を指定します。
3. パラメータ(省略可)
キーワードごとに定義されたパラメータです。
4. コメント(省略可)
処理がエラーになった場合などに参考にするコメントです。操作などには、影響しません。
19
Step 4 共通キーワードの洗い出し
例題の電卓アプリでは、次の Step の様なシステムに依存しないテストシナリオがありました。このテストシナリオを
利用してシステムに依存しないキーワード駆動テストを作成することとしました。このテストシナリオからキーワード
となりそうな名詞を洗い出して記述してください。
自動テストのキーワードには、操作するためのキーワードと判定するためのキーワード及びテストの実行に関する
情報を取得するキーワードがあります。テストシナリオから操作と判定に関するキーワードを洗い出します。
キーワード候補 説明
Step 5 手動テストシナリオ例
以下は、システムに依存しないテストシナリオの一部です。システムに依存しないように、具体的な操作手順では
なく、検査者が解釈して実際の操作を行うことを前提に記述しています。ただ、検査内容については、検査者が
ことなっても同等の検査が行えるような記述となっています。
① 加算のテストシナリオ
1: テスト対象のブラウザを起動する
2: テスト対象の URL を入力する
3: 1+2 の操作を行う
4: 結果が 3 であることを確認する
5: 結果をクリアする
6: 1+0 の操作を行う
7: 結果が 1 であることを確認する
8: 結果をクリアする
9: 1+(-2)の操作を行う
10: 結果が-1 であることを確認する
② 減算のテストシナリオ
1: テスト対象のブラウザを起動する
2: テスト対象の URL を入力する
3: 1-2 の操作を行う
4: 結果が-1 であることを確認する
5: 結果をクリアする
6: 1-0 の操作を行う
7: 結果が 1 であることを確認する
8: 結果をクリアする
9: 2-1 の操作を行う
10: 結果が-1 であることを確認する
11: 結果をクリアする
12: 1-(-2)の操作を行う
13: 結果が 3 であることを確認する
20
Step 6 キーワード駆動システムの構造例
キーワード駆動を理解しやすくするために、キーワード駆動システムの構造を例示します。
この例のポイントは、テストスクリプトの読込と制御を行う Runner クラスと各システムを動作させる
Driver クラスから構成れていることです。
Runner から Driver クラスの基底クラスを利用することで、個別の Driver を隠ぺいしています。この構
造によって、新しい Driverga 増えた場合でも、Runner の修正は必要なくなります。
① クラス図
② シーケンス図
21
Step 7 共通キーワードの定義
システムの変更や異なる複数のシステムで共有できるテストケースを作成するためのキーワードを定義してくださ
い。
① 操作のキーワード
キーワード:
パラメータの説明:
キーワード:
パラメータの説明:
キーワード:
パラメータの説明:
② 判定のキーワード
キーワード:
パラメータの説明:
キーワード:
パラメータの説明:
ポイント
共通となるキーワードを定義する場合、対象システムの仕様変更などでテストスプリントの書換えを最低限にする
ことが重要です。システムの仕様変更などは各システム単位に作成する Driver を書き換えることで対応すること
を最初に検討します。
また、全てのテストスクリプトにまったく同じ記述をするようなキーワードは定義せず、Runner で行うを検討します。
例えば、起動する Web システムの URL は、Runner への引数などとすることで、システムが異なっても同じテス
トスクリプトを使用することが可能となります。
22
Step 8 情報取得キーワードの定義
テストの実行に関する情報を取得するキーワードを定義してください。また、それ以外で原因追及に有効なキー
ワードがあれば定義してください。
① 情報取得キーワード
キーワード:
パラメータの説明:
キーワード:
パラメータの説明:
キーワード:
パラメータの説明:
② その他のキーワード
キーワード:
パラメータの説明:
キーワード:
パラメータの説明:
ポイント
テストを実行した場合、テストが失敗で終了する場合があります。この時、単にテストが失敗しただけでは、失敗の
原因を特定することが難しい場合があります。そこで失敗の原因を素早く見つけるために、様々な情報を取得す
るキーワードを用意することがあります。
23
Step 9 テストケースの作成
テストケースを作成してください。テストケースは、上から順次実行されます。
テスト内容:
キーワード 対象 引数 コメント
テスト内容:
キーワード 対象 引数 コメント
テスト内容:
キーワード 対象 引数 コメント
24
Step 10 専用のキーワードの定義
関数も使用できる Web 関数電卓用専用のキーワードを定義します。
① キーワード
キーワード:
パラメータの説明:
キーワード:
パラメータの説明:
キーワード:
パラメータの説明:
② テストケースの作成
テスト内容:
キーワード 対象 引数 コメント
テスト内容:
キーワード 対象 引数 コメント
25
Step 11 キーワード以外の記述
テストスクリプトをマークダウン形式で作成する目的は、テスト仕様書としても利用することです。具体的には、テス
トの目的やテスト内容などです。それ以外にも、テストデータがある場合は、対象とするテストデータのパターン名
などを記述することもあります。キーワード以外でテストスクリプトに記述すると良いと思うものを記述してください。
① キーワード以外の記述
説明:
② キーワード以外の記述
説明:
③ キーワード以外の記述
説明:
ポイント
テストスクリプトが多くなった場合などで、全てのテストを実行することが時間的な制約なので難しくなる場合があり
ます。このような時には、その時のテスト目的に合ったテストスクリプトだけを実行することで対応します。テストスク
リプトの選択の入力になるような記述について、検討してください。
26
Step 12 キーワード駆動テストの利点・欠点
キーワード駆動テストの利点と欠点について記述してください。
利点
欠点
自動テストで発生する問題について
自動テストでは、テスト対象のシステムの処理が終了するのを待つことが要求されます。しかし、待ち続けるとテス
トが止まってしまいます。また、キーワードとして「待ち」を用意して待ち時間を指定することも可能ですが、これで
は実行対象のシステムの動作に合わせて調整することになります。これは保守コストの増加となります。また、十
分な待ち時間を設定すると実行時間が遅くなります。これも避けたいところです。この様な場合は、自動テストを
実行するシステムが対象の状態の確認と徐々に長くなる様な待ち処理を一定回数繰り返す方法があります。この
回数を超えた場合は、テストを失敗とします。あるいは、特定の状態になることが明白であれば、キーワードを追
加することも検討します。
日付や時間に関する問題も自動テストでは重要です。具体的には、今日の日付を入力するテストスクリプトを書く
場合、入力値をどうするか検討する必要があります。テストスクリプトの記述に特別なルールを用意することを検
討します。
自動テストを運用するといろいろな問題に直面することが多々あります。これに対応するためには、日々の運用の
なかで、システムの改善が必要になります。時には、テスト対象のシステムに自動テストの観点で問題があれば、
変更することを検討することも範囲に入れるべきです。テスト対象を開発しているチームの協力があると、効率的
にテストの自動化を進めることができます。自動テストは、開発チームにも多くの恩恵があるため積極的な参加を
最初からコミットすることを検討してください。

Keyword test

  • 1.
  • 2.
    目次 チュートリアルの概要 .......................................................................................................1 Step 1概要.........................................................................................................................................................................................1 Step 2 目的と達成目標ついて...................................................................................................................................................2 Step 3 言葉の説明..........................................................................................................................................................................2 自動テストの基礎.............................................................................................................3 Step 1 システムテストとは............................................................................................................................................................3 Step 2 自動テストとは....................................................................................................................................................................3 システムアーキテクチャと品質特性 ...................................................................................4 Step 1 システムアーキテクチャ .................................................................................................................................................4 Step 2 自動テストとシステムアーキテクチャ .......................................................................................................................5 例題(電卓)演習 ..............................................................................................................6 Step 1 テスト対象.............................................................................................................................................................................6 Step 2 テスト観点から見たシステムの特徴(注意点).....................................................................................................7 Step 3 「テストスクリプト作成」視点から要求.......................................................................................................................8 Step 4 「テストスクリプトの実行」視点から要求..................................................................................................................9 Step 5 「自動テストの運用」視点から要求..........................................................................................................................10 Step 6 自動テストの方針............................................................................................................................................................11 Step 7 ルールについて ...............................................................................................................................................................12 Step 8 ルールの書き方...............................................................................................................................................................12 Step 9 テストスクリプトに関するルール...............................................................................................................................13 Step 10 自動テストに関するルール.........................................................................................................................................14 演習の回答例................................................................................................................15 Step 1 テスト観点から見たシステムの特徴(注意点)...................................................................................................15 Step 2 「テストスクリプト作成」視点から要求.....................................................................................................................15 Step 3 「テストスクリプトの実行」視点から要求................................................................................................................16 Step 4 「自動テストの運用」視点から要求..........................................................................................................................16 Step 5 自動テストの方針............................................................................................................................................................17
  • 3.
    キーワード駆動テストの演習...........................................................................................18 Step 1 キーワード駆動とは.......................................................................................................................................................18 Step 2 キーワード駆動の目的.................................................................................................................................................18 Step 3 キーワードの構成...........................................................................................................................................................18 Step 4 共通キーワードの洗い出し.........................................................................................................................................19 Step 5 手動テストシナリオ例....................................................................................................................................................19 Step 6 キーワード駆動システムの構造例..........................................................................................................................20 Step 7 共通キーワードの定義.................................................................................................................................................21 Step 8 情報取得キーワードの定義.......................................................................................................................................22 Step 9 テストケースの作成........................................................................................................................................................23 Step 10 専用のキーワードの定義............................................................................................................................................24 Step 11 キーワード以外の記述.................................................................................................................................................24 Step 12 キーワード駆動テストの利点・欠点.........................................................................................................................25
  • 4.
    1 チュートリアルの概要 はじめに ここでは、「キーワード駆動を利用したシステムテスト自動化」チュートリアルの目指す方向、出発点と到着点 を確認します。主な内容は以下の通りです。 ステップ 主な内容 概要 チュートリアルの概要と予定 目的・達成目標本チュートリアルに期待すること 言葉の説明 本チュートリアルで使用する言葉の説明 Step 1 概要 ① チュートリアルの概要 テスト自動化において、テストコードの作成コストや保守性の悪化、テスト記述の可読性の悪さなどの問題が 発生することがあります。この対処方法の一つがキーワード駆動テストです。本チュートリアルでは、自動テス トの考え方とキーワード駆動テストの考え方について説明します。 ② チュートリアルのアジェンダ 内容 1 自動テストの基礎 2 ステムアーキテクチャと品質特性 3 Web 電卓を例にした演習 4 キーワード駆動テストの演習 ③ チュートリアルの進め方 本チュートリアルを有意義なものとするために、講義だけではなく、演習を行ないながら進めます。積極的な 参加をお願いします。
  • 5.
    2 Step 2 目的と達成目標ついて ①目的 本チュートリアルの目的は、システムテストの自動化の中でキーワード駆動の使いどころや使い方について、修 得することです。また、システムテストを自動化する上で注意すべきことを理解することです。 ② 達成目標 ・ システムテストの自動化について理解する ・ システムテスト自動化のアーキテクチャを理解する ・ キーワード駆動による自動テストシステムについて理解する ③ あなたがつかみたいと思うことについて書いてください。また、その理由も書いてください。 つかみたいと思うこと その理由 Step 3 言葉の説明 チュートリアルで使用する言葉について説明します。この説明は、一般的な定義と異なるものもあります がご了承ください。 ① テストケース テストケースとは、テストの前条件・操作(入力)・期待結果・後条件を組み合わせたものです。 ② テストシナリオ テストの操作(入力)の流れを具体な例で記述したものです。 ③ テストスクリプト テストの手順をスクリプト言語で記述したものです。 ④ テストコード テストシナリオを自動で実行するために記述したコードです。特定のルールに則って記述します。テストコード は、プログラム言語以外で記述されることもあります。通常、テストケース・テストシナリオに対応します。 ⑤ テストセット 一つ以上のテストケースの集まりです。 ⑥ テストランナー テストコードを実行するためにスクリプト等で記述されたものです。本チュートリアルでは、複数のテストシナリ オをグループ化して、特定のグループのシナリオを実行するためのものをテストランナーと呼びます。 ⑦ テスト運用スクリプト テストセットを実行し、運用するためのスクリプトです。
  • 6.
    3 自動テストの基礎 Step 1 システムテストとは ①システムテストとは システムテストとは、システム全体が正しく動作することを確認するテストです。したがって、システムテストは、 End to End(端から端まで)で行われます。 ② システムテストの例 1. 運用テスト 実運用に近い環境で、実際に運用するテスト 2. 操作性テスト 利用ユーザー視点で、操作を行うテスト 3. 構成テスト 様々な構成パターンでのテスト 4. マニュアルテスト マニュアル通りに操作して問題なく動作することを確認するテスト 5. 回帰テスト 今回のリリースと前回のリリースで動作が同じことを確認するテスト Step 2 自動テストとは ① 自動テストとは 自動テストとは、各種ツールなどを使用してシステム化されたテストです。したがって、自動テストの環境を構 築することは、自動テストのシステムを開発することと同じです。 ② 自動テストの対象 すべてのシステムテストを自動化の対象にすることは、得策ではありません。自動化するシステムテストは、繰 り返し実行する必要があるものが効果的です。主に、回帰テストが対象となります。 ③ 自動テストの保守性 回帰テストは、システムやシステムが利用するミドルウェアなどに変更が発生した時に、その変更が現状の機 能について悪い影響が出ていないことを確認するために行います。 システムの変更が頻繁に行われるような場合、何度もテストを実行することが必要になるため、自動テストは非 常に有効です。しかし、システムの変更に対応するために自動テストの対応コストが大きいと、即時性や有効 性が下がってしまいます。 ④ DRY 原則「Don’t Repeat Yourself」 自動テストは、ソフトウェアです。したがって、ソフトウェア開発の原則が有効です。 DRY の法則をテストコードに適応した場合、テストコードから重複をなくすことになります。そのためには、バリ エーションが必要な部分と必要がない部分に分けることが重要です。重複をなくすことで効率性や保守性を 高くすることになります。 参考:https://www.infoq.com/jp/news/2012/05/DRY-code-duplication-coupling
  • 7.
    4 システムアーキテクチャと品質特性 Step 1 システムアーキテクチャ システムが統一された品質を達成するためには、システムとして求められる品質特性と対象(ステークホルダ) を明確にする必要があります。また、複数のメンバー間で統一された品質を達成するために、具体的な方策 を用意する必要があります。この品質特性を強制するために定義するものがシステムアーキテクチャです。品 質特性を強制する方法には、システムの構造で強制する方法やルールなどで強制する方法があります。以 下のような作業によって、システムアーキテクチャの設計(定義)を行います。 ・システムが達成すべき品質特性のリストアップ ・ 品質特性を具体化し、目的やゴールを定義する この時、定義に合っているか違反しているかを判定可能にすることが重要です。 ・ 品質特性を分析する ・ システムアーキテクチャを複数のビューや設計方針で定義する 品質特性の代表的なものには以下のような項目があります。 ・ パフォーマンス(性能・速度) ・ 安全性 ・ 信頼性 ・ 可用性(Availability) ・ 堅牢性(セキュリティ) ・ ユーザービリティー(使いやすさ) ・ 拡張性 機能の拡張や変更が容易である
  • 8.
    5 Step 2 自動テストとシステムアーキテクチャ 自動テストは、複数のプログラムから構成されるシステムです。自動テストを効率的に運用する性などを実現 するためには、システムアーキテクチャを設計することが重要です。また、自動テストでは、対象となるシステ ムの機能強化や適応領域の拡張などを行うことが多く、必要に応じてシステムアーキテクチャの定義を改善 することが効果的です。 ①自動テストのシステム構成 自動テストは、テスト対象システムと自動テストシステムの二つの対を成すシステムから構成されます。良い自 動テストを実現するためには、二つのシステムに対して、試験性(テスト容易性)を実現する必要があります。 ② 3 つのサブシステム 自動テストシステムでは、テストスクリプトの作成、テストスクリプトの実行、自動テストの運用の3つの異なった 側面があります。これらは担当者が異なることもあります。自動テストへの要求を明確にする手順で、これらの 側面ごとに作業を進めることで、より明確な要求を定義することができます。
  • 9.
    6 例題(電卓)演習 Step 1 テスト対象 テスト対象は、以下の2 種類の電卓アプリです。 通常の電卓と同じ動作をするもの。 演算子に数学の優先順位があるもの。 この二つのテスト対象は、同じ操作を行った場合、答えが異なります。 例えば、画面のボタンを以下の様に操作した場合です。 「1 を押す、+を押す、2 を押す、×を押す、1 を押す、0 を押す、=を押す」 一つ目の電卓の回答は30で、二つ目の電卓の回答は 21 となります。
  • 10.
    7 Step 2 テスト観点から見たシステムの特徴(注意点) テスト観点からテスト対象のシステムの特徴(注意点)を記述してください。 ①特徴: ② 特徴: ③ 特徴: ④ 特徴: ポイント テストの観点からシステムの特徴(注意点)を洗い出します。自動テストは、テストの一つであるため、テストを効率 的に進めるためには、必須の作業です。 一般に、以下の様な項目について、特徴の洗い出しを行います。 ・ テスト対象のシステム数(プロダクト数) ・ 機能の分類や数 ・ システムの入力と出力の形式(画面やファイルなど) ・ システムの更新予定(スケジュール) ・ テスト対象のシステムの増減 ・ 連携する外部システムの有無と内容 電卓の例題では、仕様の異なる 2 つのシステムが対象であることが大きな注意点です。異なる仕様のシステムに 対して、同じテストスクリプトを利用するために、キーワード駆動を採用する例となります。 また、今後テスト対象が増えても、テストスクリプトは修正せずに利用できることも目的にしています。
  • 11.
    8 Step 3 「テストスクリプト作成」視点から要求 「テストスクリプト作成」の視点から要求を記述してください。 ①要求: ② 要求: ③ 要求: ④ 要求: ⑤ 要求: ポイント 自動テストを作成する前に、要求を明確します。まずは、「テストスクリプト作成」の観点で要求を明確にします。 一般に、以下の様な項目や観点について、要求を定義します。 ・ どのようなテストスクリプトを作成するのか(種類) ・ いつからテストスクリプトの作成を開始するか(作成時にシステムは動作しているか?) 自動テストでは、テストスクリプトの作成時に対象のシステムが動作しているかどうかは重要なポイントです。 対象のシステムが動作する前に一部のテストについてでも作成することで、テストの早期稼働や作業の平 準化など様々なメリットがあります。 ・ だれがテストスクリプトを作成するか ・ テストスクリプトの体裁と記述方法 テストスクリプトをマークダウン形式やスプレッドシート形式にすることで、テスト仕様書と一体化することやプ ログラミング経験のないメンバーでも作成することが可能となります。このように、記述方法を明確にすること は重要なポイントです。 ・ テストスクリプトの保守性 システムの機能拡張が頻繁な場合、テストスクリプトの修正コストが増大すると、テストの運用がシステム更 新に間に間に合わないということになり、自動化のメリットが損なわれてしまいます。
  • 12.
    9 Step 4 「テストスクリプトの実行」視点から要求 「テストスクリプトの実行」の視点から要求を記述してください。 ①要求: ② 要求: ③ 要求: ポイント 「テストスクリプトの実行」の観点で要求を明確にします。 一般に、以下の様な項目や観点について、要求を定義します。 ・ テストスクリプトを実行するシステムはどのようにして開発するのか テストスクリプトの記述方法によりますが、マークダウン形式などで記述する場合、解釈してテスト対象のシ ステムを操作するシステムを開発する必要があります。一般的には、ゼロから開発するのではなく、 Selenium などを利用して開発します。 ・ テストデータはどのように準備するのか 多くのシステムでは、テストデータをどのように準備して、テスト時に再構築することが重要になります。 ・ テストスクリプトの成否を判定はどのように行うのか テストスクリプト内に判定処理を記述する場合と実行結果により判定する方法があります。要求に応じて、 判定方法を使い分ける必要があります。 ・ テストを実行する環境はどのようなものがあるのか 一般的にシステムテストは、テストデータのセットアップなどのテストを実行するための準備に時間が掛かり ます。例えば、コンテナ技術などを利用することで、テストを実行するトータル時間の短縮などをはかること ができます。 ・ テストの並列実行について テストケースが増えてくると、全てのテストのトータル実行時間が長くなります。これを短くする方法の一つが 並列実行です。並列実行することで、劇的な実行時間の短縮ができる場合もあります。
  • 13.
    10 Step 5 「自動テストの運用」視点から要求 「自動テストの運用」の視点から要求を記述してください。 ①要求: ② 要求: ③ 要求: ポイント 「自動テストの運用」の観点で要求を明確にします。運用の要求は、運用後にシステムテストの有効点が明確に なるため、運用と共に変更することになります。最初は、限られた範囲の要求にとどめて、少しずつ範囲を広げる ことがお勧めです。 一般に、以下の様な項目や観点について、要求を定義します。 ・ いつテストスクリプトを実行するのか(何をトリガーとして、どれのテストスクリプトを実行する) システムの変更や OS やブラウザなどの動作環境のバージョンアップなど、様々なことがシステムテストを実 行するトリガーとなります。 一般にシステムテストは実行時間が長くなるため、実行に関する方針を決める必要があります。 ・ だれがテストスクリプトを実行するのか システムテストの実行は、一般に何らかのシステムを利用します。しかし、運用自体にはコストが掛かるため、 誰が実行するか明確にする必要があります。担当を決めないとエラーが発生していることを見逃すようなこ とが起こりがちです。 ・ テスト実行結果をどのようにフィードバッグするのか(フィードバッグする情報は) テストは何らかの原因で失敗することがあります。実行時間が長くなるような失敗もあります。これらの失敗 を開発担当者に素早くフィードバッグすることが重要です。一般的に、フィードバッグが遅くなると、比例し て問題の解決時間が長くなるなります。実行後のフィードバッグ方法を決めることで、無駄なコストと時間を なくすことができます。
  • 14.
    11 Step 6 自動テストの方針 自動テストの方針を記述してください。 ①方針: 対応する品質特性: ② 方針: 対応する品質特性: ③ 方針: 対応する品質特性: ポイント 方針は、関係者が同じ目標を共有するためのものです。「頑張ろう」の様な人によって解釈が異なるものは論外 ですが、より具体的なルールは別途用意することになるので、「自動テストは回帰テストの一部として利用し、デグ レードの防止に役立てる」程度が良いでしょう。また、実際の業務プロセスにどのように組み込むかを決めることは 重要なので、運用の観点でも方針を決めると良いです。 また、方針に関連する品質特性を明確にすることで、方針の具体性が明確になるので明記することをお勧めしま す。自動テストに関連する品質特性で代表的なものには、以下の様なものがあります。 ・ 試験性 ・ 確実性 ・ 保守性 ・ 理解性 ・ 一貫性
  • 15.
    12 Step 7 ルールについて 方針に沿って実際に作業を行うために、ルールを決めます。ルールは、効率的に作業を進めるためや関係 者によって作業のズレが発生しないようにするために定義します。また、後からチームに参加したメンバ ーがスムーズに作業に参加する助けにもなります。 ルールについて 項目○ そのルールは、判断基準が明確である。(ルールを守っているか) そのルールは、主体(開発者、検査者など)を明示している。 そのルールは、主体の目的が明確になっている。 そのルールは、適応場面が明確になっている。 そのルールには、制約も書かれている。 そのルールが守られているかだれでも判断することができる。 Step 8 ルールの書き方 以下のポイントを意識してルールを書くことが大切です。 ルールに名前を付ける。 チーム内でルールを共有するために、名前を付けましょう。 ルールの主体を明確にする。 ルールの目的(問題)を明確にする。 どのような目的を達成するためのルールなのか、あるいはどのような問題を解決するためのルールなのかを 書きましょう。 ルールを適応する状況を明確にする。 ルールの優先順位を明確にする。 ポイント 自動テストでは、キーワード駆動の採用やテストスクリプトをマークダウン形式で作成することは、ルールとなりま す。 良いルールは、ルールの記述を読込まなくても自然とルールに従って作業を進めるものです。ルール集の様なも のを作成するかどうかはプロジェクトによって異なります。 関係者間で合意が必要な場合や作業が進んだ時に衝突が起きそうな場合は、ルール集を作成し合意形成を明 示的に行う方が良い場合があります。
  • 16.
    13 Step 9 テストスクリプトに関するルール 自動テストの方針を実現するために具体的なルールは以下の通りです。 「テストスクリプトの作成」に関するルールを記述してください。 ルール1名前: ルール2 名前: ルール3 名前: ルール4 名前: ルール5 名前: ルールに優先順位がある場合は、優先順位と理由を記述してください。 優先順位ルール1: 優先順位ルール2: 優先順位ルール3:
  • 17.
    14 Step 10 自動テストに関するルール 「テストスクリプトの実行」に関するルールを記述してください。 ルール1名前: ルール2 名前: ルール3 名前: 「自動テストの運用」に関するルールを記述してください。 ルール1 名前: ルール2 名前: ルール2 名前: ルールに優先順位がある場合は、優先順位と理由を記述してください。 優先順位ルール1: 優先順位ルール2: 優先順位ルール3:
  • 18.
    15 演習の回答例 Step 1 テスト観点から見たシステムの特徴(注意点) テスト観点からテスト対象のシステムの特徴(注意点)は以下の通りです。 ①テスト対象のシステム数(プロダクト数) 仕様が異なる二つのシステム。 ② 機能の分類や数 四則演算に関する機能は二つのシステムで共通。 関数計算に関する機能は、片方のシステムのみ。 ③ システムの更新予定(スケジュール) 非定期に更新が行われる。 ④ 連携する外部システムの有無と内容 なし ⑤ その他の特徴:テスト対象のシステムが増える 今後要求に応じて、テスト対象のシステムが増える予定あり。 Step 2 「テストスクリプト作成」視点から要求 「テストスクリプト作成」の視点からのプロジェクトでの要求などは以下の通りです。 ① どのようなテストスクリプトを作成するのか(種類) 「四則演算テストスクリプト」 四則演算に関するテストスクリプトは、基本機能として全てのシステムで動作する。 テストの内容は、計算処理のみで画面の崩れなどは検査対象外とする。 「関数電卓テストスクリプト」 関数計算に関するテストスクリプトは、関数電卓用のシステムのみで動作する。 「個別電卓テストスクリプト」 個別システム専用のテストスクリプトを用意する。 ② だれがテストスクリプトを作成するか プロジェクト関係者の全員。 ③ いつからテストスクリプトの作成を開始するか(作成時にシステムは稼働しているか?) 四則演算テストについては、対象システムが稼働していない時点から作成する。 関数電卓テストについては、対象システムの仕様が確定後作成する。 個別機能テストについては、対象システムが動作するようになってから作成する。
  • 19.
    16 ④ テストスクリプトの体裁と記述方法 テストスクリプトはテスト対象システムのドメインの言葉を利用して記述する 可読性の高いテストスクリプトとし、テスト仕様書の一つとして利用可能なものとする ⑤ テストスクリプトの安定性 「四則演算テストスクリプト」については、新しいテスト対象が増えての修正せずに利用できる Step3 「テストスクリプトの実行」視点から要求 「テストスクリプトの実行」の視点からプロジェクトでの要求などは以下の通りです。 ① テストスクリプトを実行するシステムはどのようにして開発するのか スクリプトの実行システムは、基盤部分と各システム部分を分割する。 基盤部分は、自動化経験のあるチームが開発する。 個別システムに対応する部分は、テスト対象システムの検査を担当するチームで開発を行う。 テストシステムの保守は、各チームが継続して行う。 ② テストデータはどのように準備するのか テストデータは必要なし。 ③ テストスクリプトの成否を判定はどのように行うのか テストスクリプト内に判定に関する記述を行う。 ④ テストを実行する環境はどのようなものがあるのか 専用のテスト用の仮想マシンを用意して実行を行う。 ⑤ テストの並列実行について 複数のテストの実行環境で、並列して実行できるようにする。 Step 4 「自動テストの運用」視点から要求 「自動テストの運用」の視点からのプロジェクトでの要求は以下の通りです。 ① だれがテストスクリプトを実行するのか ディリーで夜間の特定の時間に実行する。 必要な場合は、任意のタイミングで実行することも可能とする。 ② いつテストスクリプトを実行するのか(何をトリガーとして、どれのテストスクリプトを実行する) システムの更新時に実行する ブラウザのバージョンアップ時に実行する ③ テスト実行結果をどのようにフィードバッグするのか(フィードバッグする情報は) テストの実行とテスト結果の表示は、チーム作業のワークスペース(ウェブ)に実行ごとに表示する
  • 20.
    17 Step 5 自動テストの方針 自動テストの方針は以下の通りです。 ①方針:基本機能回帰テストについて、自動化を行う 対応する品質特性:確実性、保守性 ② 方針:自動テストを開発プロセスに組み込む 対応する品質特性:試験性、プロセスの連続性 ③ 方針:テストスクリプトをテスト仕様書の一つとする 対応する品質特性:理解性、一貫性
  • 21.
    18 キーワード駆動テストの演習 Step 1 キーワード駆動とは キーワード駆動とは、論理的なキーワードを用いて記述されたテストケースをツールが解釈し、自動テス トを実行する手法のことです。キーワードの粒度や構成は、自動テストの目的や行いたいテストの内容に よって決定されます。本演習でのキーワードの定義は、ひとつの例です。 Step2 キーワード駆動の目的 自動テストにキーワード駆動を導入する主たる目的は、以下の項目になります。 1. テストケースの作成を容易 仕様書に記述されている言葉をキーワードとして採用することで、チームメンバーであれば、誰でも作成 することができるようになります。 2. テストケースの保守性を高く 対象のシステムが変更されても、少ない工数でテストケースを再利用することができます。また、テストケ ースを変更せずに利用することが可能な場合もあります。 3. 対象システムの開発と独立して作成が可能 実際に動作するシステムがなくてもテストケースを作成することが可能となります。 一般的に、キーワードには、以下の様な種類のものを用意します。 1. システムを操作する システムに対して、値の入力などのを行う機能をキーワードとして用意します。 2. 判定を行う テストの成功と失敗を判定するための機能をキーワードとしてい用意します。 3. テストを支援する テスト実行中に、システムの状態などを取得したする機能をキーワードとしてい用意します。この機能は、 テストがエラーとなった場合の原因調査などを効率化するためのものです。 Step 3 キーワードの構成 今回の演習では、キーワード部分の表の構成は、以下の通りとします。 1. キーワード(必須) 機能をキーワードとして定義します。 2. 対象(省略可) キーワードで操作する対象を指定します。 3. パラメータ(省略可) キーワードごとに定義されたパラメータです。 4. コメント(省略可) 処理がエラーになった場合などに参考にするコメントです。操作などには、影響しません。
  • 22.
    19 Step 4 共通キーワードの洗い出し 例題の電卓アプリでは、次のStep の様なシステムに依存しないテストシナリオがありました。このテストシナリオを 利用してシステムに依存しないキーワード駆動テストを作成することとしました。このテストシナリオからキーワード となりそうな名詞を洗い出して記述してください。 自動テストのキーワードには、操作するためのキーワードと判定するためのキーワード及びテストの実行に関する 情報を取得するキーワードがあります。テストシナリオから操作と判定に関するキーワードを洗い出します。 キーワード候補 説明 Step 5 手動テストシナリオ例 以下は、システムに依存しないテストシナリオの一部です。システムに依存しないように、具体的な操作手順では なく、検査者が解釈して実際の操作を行うことを前提に記述しています。ただ、検査内容については、検査者が ことなっても同等の検査が行えるような記述となっています。 ① 加算のテストシナリオ 1: テスト対象のブラウザを起動する 2: テスト対象の URL を入力する 3: 1+2 の操作を行う 4: 結果が 3 であることを確認する 5: 結果をクリアする 6: 1+0 の操作を行う 7: 結果が 1 であることを確認する 8: 結果をクリアする 9: 1+(-2)の操作を行う 10: 結果が-1 であることを確認する ② 減算のテストシナリオ 1: テスト対象のブラウザを起動する 2: テスト対象の URL を入力する 3: 1-2 の操作を行う 4: 結果が-1 であることを確認する 5: 結果をクリアする 6: 1-0 の操作を行う 7: 結果が 1 であることを確認する 8: 結果をクリアする 9: 2-1 の操作を行う 10: 結果が-1 であることを確認する 11: 結果をクリアする 12: 1-(-2)の操作を行う 13: 結果が 3 であることを確認する
  • 23.
    20 Step 6 キーワード駆動システムの構造例 キーワード駆動を理解しやすくするために、キーワード駆動システムの構造を例示します。 この例のポイントは、テストスクリプトの読込と制御を行うRunner クラスと各システムを動作させる Driver クラスから構成れていることです。 Runner から Driver クラスの基底クラスを利用することで、個別の Driver を隠ぺいしています。この構 造によって、新しい Driverga 増えた場合でも、Runner の修正は必要なくなります。 ① クラス図 ② シーケンス図
  • 24.
    21 Step 7 共通キーワードの定義 システムの変更や異なる複数のシステムで共有できるテストケースを作成するためのキーワードを定義してくださ い。 ①操作のキーワード キーワード: パラメータの説明: キーワード: パラメータの説明: キーワード: パラメータの説明: ② 判定のキーワード キーワード: パラメータの説明: キーワード: パラメータの説明: ポイント 共通となるキーワードを定義する場合、対象システムの仕様変更などでテストスプリントの書換えを最低限にする ことが重要です。システムの仕様変更などは各システム単位に作成する Driver を書き換えることで対応すること を最初に検討します。 また、全てのテストスクリプトにまったく同じ記述をするようなキーワードは定義せず、Runner で行うを検討します。 例えば、起動する Web システムの URL は、Runner への引数などとすることで、システムが異なっても同じテス トスクリプトを使用することが可能となります。
  • 25.
    22 Step 8 情報取得キーワードの定義 テストの実行に関する情報を取得するキーワードを定義してください。また、それ以外で原因追及に有効なキー ワードがあれば定義してください。 ①情報取得キーワード キーワード: パラメータの説明: キーワード: パラメータの説明: キーワード: パラメータの説明: ② その他のキーワード キーワード: パラメータの説明: キーワード: パラメータの説明: ポイント テストを実行した場合、テストが失敗で終了する場合があります。この時、単にテストが失敗しただけでは、失敗の 原因を特定することが難しい場合があります。そこで失敗の原因を素早く見つけるために、様々な情報を取得す るキーワードを用意することがあります。
  • 26.
    23 Step 9 テストケースの作成 テストケースを作成してください。テストケースは、上から順次実行されます。 テスト内容: キーワード対象 引数 コメント テスト内容: キーワード 対象 引数 コメント テスト内容: キーワード 対象 引数 コメント
  • 27.
    24 Step 10 専用のキーワードの定義 関数も使用できるWeb 関数電卓用専用のキーワードを定義します。 ① キーワード キーワード: パラメータの説明: キーワード: パラメータの説明: キーワード: パラメータの説明: ② テストケースの作成 テスト内容: キーワード 対象 引数 コメント テスト内容: キーワード 対象 引数 コメント
  • 28.
    25 Step 11 キーワード以外の記述 テストスクリプトをマークダウン形式で作成する目的は、テスト仕様書としても利用することです。具体的には、テス トの目的やテスト内容などです。それ以外にも、テストデータがある場合は、対象とするテストデータのパターン名 などを記述することもあります。キーワード以外でテストスクリプトに記述すると良いと思うものを記述してください。 ①キーワード以外の記述 説明: ② キーワード以外の記述 説明: ③ キーワード以外の記述 説明: ポイント テストスクリプトが多くなった場合などで、全てのテストを実行することが時間的な制約なので難しくなる場合があり ます。このような時には、その時のテスト目的に合ったテストスクリプトだけを実行することで対応します。テストスク リプトの選択の入力になるような記述について、検討してください。
  • 29.
    26 Step 12 キーワード駆動テストの利点・欠点 キーワード駆動テストの利点と欠点について記述してください。 利点 欠点 自動テストで発生する問題について 自動テストでは、テスト対象のシステムの処理が終了するのを待つことが要求されます。しかし、待ち続けるとテス トが止まってしまいます。また、キーワードとして「待ち」を用意して待ち時間を指定することも可能ですが、これで は実行対象のシステムの動作に合わせて調整することになります。これは保守コストの増加となります。また、十 分な待ち時間を設定すると実行時間が遅くなります。これも避けたいところです。この様な場合は、自動テストを 実行するシステムが対象の状態の確認と徐々に長くなる様な待ち処理を一定回数繰り返す方法があります。この 回数を超えた場合は、テストを失敗とします。あるいは、特定の状態になることが明白であれば、キーワードを追 加することも検討します。 日付や時間に関する問題も自動テストでは重要です。具体的には、今日の日付を入力するテストスクリプトを書く 場合、入力値をどうするか検討する必要があります。テストスクリプトの記述に特別なルールを用意することを検 討します。 自動テストを運用するといろいろな問題に直面することが多々あります。これに対応するためには、日々の運用の なかで、システムの改善が必要になります。時には、テスト対象のシステムに自動テストの観点で問題があれば、 変更することを検討することも範囲に入れるべきです。テスト対象を開発しているチームの協力があると、効率的 にテストの自動化を進めることができます。自動テストは、開発チームにも多くの恩恵があるため積極的な参加を 最初からコミットすることを検討してください。