yfj2’s Automatic Web Test Related Blog

yfj2のWEBテスト自動化に関わるブログ

【入門】JavaFX+Geb+Spockでキーワード駆動テスト作成ツールを作ろう(1)

【入門】JavaFX+Geb+Spockでキーワード駆動テスト作成ツールを作ろう(1)

著者:ふじさわゆうき

更新日:2015/06/14

記事概要

「キーワード駆動テスト」が、自動テストの目指す一つの理想となっています。しかしながら、「キーワード駆動テストってどのように作成すればいいの?」と具体的な実装に落とそうとすると、サンプルになるソースコードがなかなかみつかりません。そこで、当ブログでは、キーワード駆動テスト作成のクライアントとして「JavaFX」、自動化言語として「Geb」、テストフレームワークとして「spock」を使って、「キーワード駆動テスト」作成ツールの完成を目指します

そもそもキーワード駆動テストって何?

本記事では「キーワード駆動スクリプトで記述されたテストケース群」と定義します。

下記、表は、テストスクリプトのレベルを示すもので、
「キーワード駆動スクリプト」は、最上位のスクリプトの記述レベルを用いたテストです。

●テストを自動実行するための5つのスクリプティング技法

LV 技法 概要
1 リニア キャプチャーリプレイツールで操作を記録することで自動生成されたスクリプトを、ほとんどそのまま使うものです。1つのテストケースが1つのテストスクリプトに対応するため、テストケースの数が10倍になればスクリプトの数も10倍と、「線形に(リニアに)」増加してしまいます
2 構造化 分岐・反復といった、プログラミングの基本的な構造を使ってスクリプトを表現することで、スクリプトの保守性・可読性を向上させることができます。リニアスクリプトや構造化スクリプティングのアプローチでは、複数のテストケースに共通の操作(たとえばログイン/ログアウト、特定の画面への遷移など)に対応するスクリプトがテストケースごとに現れるため、操作に変更が発生した場合、そのすべてを修正する必要があります
3 共有スクリプト テストケース間で重複して現れるスクリプトを部品として切り出し、それらを複数のテストケースから呼び出すことで、テストスクリプトの保守性や可読性をさらに向上させることができます。また、部品同士を組み合わせた新しいテストケースを組み立てることもできるので、リニアスクリプトが抱えていた「線形」の問題から逃れられることになります
4 データ駆動 スクリプトとデータを分離します。これによって、「手順は同じだが、入力する値は異なる」テストケースを、1つのスクリプトと複数のデータのセットで実現することができます
5 キーワード駆動 スクリプトの部品化、スクリプトとデータの分離を行った上で、さらにそれらの部品を、自然言語に近い「キーワード」として抽象化します。ドメインエキスパートやテストエンジニアは、それらのキーワードを使うことで、スクリプトの内部構造を意識せずに自動テストケースを記述できるようになります

●出典:『システムテスト自動化 標準ガイド』の第3章 ~ テストを自動化するスクリプティング技法の最新事情と取り組みの事例 , http://bit.ly/1JN5g2S

キーワード駆動テストツールの概要(案)

今後、変えるかもしれないけど、とりあえず全体像を設計してみました。

f:id:yfj2:20150614221952p:plain

次回

次は、JavaFXの開発環境構築について記事を書きたいと思います。