3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ソフトウェアテストAdvent Calendar 2022

Day 3

キーワード駆動テスト、keyDriverを使ってみた

Last updated at Posted at 2022-12-02

概要

自動テストツールに喰わせるテストケースには、Cucumberで使われるGherkinで記述したものや、Gaugeで使われるMarkDownで記述したものなどありますが、
今回紹介するのは、テストで実行するアクションをテストケースに記述して利用するキーワード駆動のテストツールになります。
キーワード駆動っぽいテストができるツールを開発した話で見かけたツールをホテル予約サイトで試してみました。
宿泊の条件(人数や朝食の有無、オプションプランなど)で提示される合計金額が正しいかの検証です。

準備

JDK11での動作を確認しています。
ビルドされたjarファイルをここから入手します。ソースコードも公開されていますので、頑張ってビルドもできるかもしれません。
また、利用中のChromeに対応したWebDriverへのPathを通しておきます。
jarファイルとExcelに記述したテストケースとを、同じフォルダに置き、WindowsのPowerShellから、

java -jar keydriver-0.3.0.jar ホテル予約サイト.xlsx 

ビルドされたjarファイルが、keydriver0.3.0.jar の場合
テストを始める前に、ホテル予約サイト.xlsx を作成します。

テストケースの作成

現在利用可能なキーワードは、こちらに詳細があります。
今回テスト対象にした予約サイトは、Selenium練習用のサイトです。

  1. 予約フォームに、宿泊初日 / 連泊日数 / 宿泊人数 / オプションプラン / 代表者指名を入力
  2. 「次へ」ボタンを押す
  3. 合計金額の検証をする
    といったテスト内容としました。
    keyword001.png
    宿泊初日の入力を、最後に入力しているのは、カレンダーコントロールだったので、画面上の他の要素を隠してしまい、場合によっては、入力などの操作ができなくなってしまったことの回避策です。
    この程度のテストケース修正ならば、Gherkinで記述した場合も、さほど手間ではないですが、テスト実施したいことや、テストに至るまでの操作等をある程度まとめてキーワードにしておける点、キーワード駆動テストの恩恵を受けやすい気がします。テストコードの開発は発生しますが。
    今回テストに使ったキーワードは、以下のものだけです。
キーワード 利用箇所
open 予約サイトを開く
select セレクトメニューから、連泊数や宿泊人数を入力
input インプットボックスに文字入力
clear 入力前に、初期値をクリアする場合
click クリック操作
assert 画面上の文字列を検証

テスト対象やテスト内容に因っては、利用するキーワードは他にも使いたいものがあるかもしれません。筆者が会社員時代にネットワークカメラのWeb画面を検証していた時にも、同じようなキーワード駆動のテストを自作していましたが、対象となるハードウェア固有の機能に関係したキーワードが存在していました。

総括

紹介したツールは、今後の追加開発も予定されているようでした。
自動テストが普及するにつれて、自動テスト環境で使うデータやテストシナリオが、常にテストで有効なものに維持する労力は増えると考えます。
キーワードとして、テストコードからビジネルロジックを分離することで、そういった労力を軽減させることも見込める点、キーワード駆動の自動テスト環境が、効果的な手段の1つになるように感じます。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?