キーワード駆動テストツール RedwoodHQ の紹介

  • 26
    Like
  • 0
    Comment
More than 1 year has passed since last update.

キーワード駆動テストの実装は?

一部の界隈で盛り上がっておりISO/IEC/IEEE FDIS 29119-5 Software and systems engineering -- Software testing -- Part 5: Keyword-driven testingとしても策定中のキーワード駆動テストですが、実装されたツールとなるとHPのUFTRanorexといった高価な商用ツールがほとんどでなかなか実際にどんなものかを体験された方はいらっしゃらないのではないでしょうか?

JUnitがコンポーネントテストの自動化を普及させ、Seleniumがシステムテストの自動化を普及させたように、技術の普及には多くの技術者が無料で簡単に試せしかも実際に使えるOSSが不可欠だと思います。

キーワード駆動テストツールにもそのような存在がないかと探してみたところ結構いけるんじゃないかと思うツールがありましたので試してみました。

RedwoodHQ

RedwoodHQはOSSで開発されている(https://github.com/dmolchanenko/RedwoodHQ)Webベースの自動テストツールプラットフォームです。以下のような機能があります。

  • 任意の深さのネストが可能なキーワード (アクション) の定義
  • アクションの実装としてJava/Groovy/C#他のスクリプトを利用可能 (WebDriver互換)
  • 補助ツールのLooking GlassでSelenium WebDriverベースのコードのキャプチャ&リプレイが可能
  • アクションの実装として既存のJUnit/TestNGのテストコードをインポート可能
  • スクリプトはGitでバージョン管理され、リモートのGitHubと連携も可能
  • エージェントによりMac/Linuxで実行可能
  • マルチスレッドで多重実行が可能

キーワードを任意の深さでネストできることにより、ISO 29119-5で解説されているdomain layer keywordsとtest interface layer keywords(下図)の分離と合成が容易にできるのがExcelベースのOpen2Testに比べてありがたいです。

ISO 29119-5におけるキーワード駆動のレイヤ
iso.png

また、Ranorexのキーワード駆動テストのアーキテクチャと同じく込み入ったキーワード(RedwoodHQの用語ではアクション)はJavaやGroovyなどのプログラミング言語かつ慣れたWebDriverでそのまま書けるのでワークシート上で分岐やループを伴った込み入った処理を書く苦行のようなことは避けられます(というよりそのようなキーワードはありません)。

実際使ってみた感想

Getting Started with RedwoodHQに沿って操作していけば一通りの機能を学べるのですが嵌まったところがいくつかあります。

部品となるアクションの精度を高める必要がある

要素へのフォーカスをスクリプトの追加する必要があった例
redwoodhq2.png

クリック後に画面書き換えが発生し適切な要素を待つためにLinkTextで待ちを入れる必要があった例 (本来はtest interface layer keywordsのアクションに隠蔽すべき)
redwoodhq1.png

Selenium WebDriverは要素がDOM上にあっても画面上で最終的に見えてないと(レンダリングの対象内にないと)クリックできないという良く嵌まるパターンがありますがRedwoodHQでも最終的にはWebDriverを使っているので同じような対処が必要です。故に実際にdomain layer keywordsだけを使ってテストケースを作成できるようにtest interface layer keywordsとなるアクションは画面の解像度や要素の表示非表示、非同期処理などに耐えきれる変化に強い部品とする必要があります。標準でインストールされているWebDriverのラッパーには不十分な部分がありましたので実運用ではある程度部品をもっと堅牢に作り込む必要があります。

やっぱり実装が分かるエンジニアが必要

RedwoodHQではクリックする要素が見つからなかった場合などプリミティブな失敗でもアクションのネストで失敗した場所を表示してくれますが、最終的にはWebDriverの例外に行き着いてしまうのでWebDriverや対象のアプリケーションの実装技術に詳しいエンジニアは障害解析やアクションの保守も含めて不可欠です。堅牢なアクションを作ってもオブジェクトの認識の失敗や非同期処理のミスは必ず発生してしまうので、「一度test interface layer keywordsの基盤を構築したら後はテクニカルなエンジニアはいらない」とはならないことに注意しましょう。

まとめ

RedwoodHQはインタフェースも分かりやすく商用ツール並みに使いやすい割には基盤技術はSelenium WebDriverとツールにロックインされず既存の資産も使える優れたキーワード駆動テストツールだと思います。

また、https://github.com/dmolchanenko/RedwoodHQにて開発中のコードも完全に公開されているので、内製でキーワード駆動テストツールを作ろうとした場合にも非常に参考なるのではないかと思います。

私はISO 29119-5のリファレンスアーキテクチャを読むまではキーワード駆動テストについて正直懐疑的なところがあったのですが、RedwoodHQのような優れたリファレンスインプリメンテーションもOSSで使用できるようになってきたのでニーズと用途が合えば積極的に使ってフィードバックしていけたら良いなと思います。簡単に使えるツールなのでみなさまも是非お試し頂けると幸いです。