このブログについて

ソフトウェア開発におけるエラーの予防やプロジェクト管理、品質管理を支援するParasoft製品のTIPSなどを、国内総販売代理店テクマトリックスのサポートスタッフが紹介しています。

2014年12月12日金曜日

第1回:Webアプリのテスト自動化は、なぜ失敗するのか?

世の中には、Webアプリケーションの機能テストおよび、システムテストの自動化をサポートするツールが存在します。しかし、これらのツールを使用しても、テストの自動化が上手く運用できなかった方が多いのではないでしょうか?

問題は、「テストシナリオのメンテナンスの難しさ」にあり、問題に対して、以下の課題が挙げられます。
今回は、これらの課題に対する対策について、紹介します。


  課題1 : 画面の構成が変わるたびに、シナリオを修正する必要がある

  課題2 : 画面数や、ブラウザのサポート数に比例して、テストシナリオの数や長さが大きくなる

  課題3 : テストシナリオがコード(Javaなど)で管理される場合、運用できる人が限定される

  課題4 : テストを行うための環境(DBの初期化、システムの更新)が必要となる


-------------------------------------------------------------------------------------------------------
 ◆◇◆   画面の構成が変わるたびに、シナリオを修正する必要がある   ◆◇◆
-------------------------------------------------------------------------------------------------------

◆ 課題
開発の中で、画面構成の変更の度に、テストシナリオの修正が必要となる場合、修正に手間がかかり、テスト自動化の恩恵が受けられなくなります。

一般的にテストツールを使用した場合、Webの操作は、HTMLの要素(または、XPath)で制御されますが、画面構成の変更の度に、この要素を修正するには、効率的とは言えません。



◆ 原因
画面構成の変更により、HTMLの要素が変わることで、テストツールで制御していた要素が特定できなくなります。このようなケースは、XPathでオペレーションが記録された場合も、同様に起こります。

以下は、画面構成によって、属性値が変わった(「ショッピングカートに入れる」 ⇒ 「ショッピングカートに追加」)ことにより、ボタンがクリックできなくなります。



◆ 対策
要素を一意の情報で制御することで、画面の構成に変更があったとしても、テストシナリオを修正することなくテストを継続できます。

以下のように、要素の属性にid(または、name)を指定することで、画面の構成要素を一意の情報で制御できます。


テストツールを使用し、テスト自動化を行うためには、ただテストシナリオを作成して、実行すれば良いだけではなく、テストの自動化を想定したアプリケーションを設計することも重要となってきます。


◆ テストツールによる対策!
以下、SOAtestのテストツールを使用した、対策方法についてご紹介します。

※ 静的解析ルールによる、HTMLの属性値の確認が可能!
WebアプリケーションのHTMLの要素に対して、idおよび、name属性が一意の値として振られているかをチェックするためのルールを使用し、確認を行うことができます。



保守性レポートによる、テストシナリオの確認が可能!
テストツールによって生成されたテストシナリオに対して、画面構成の変更により、テストシナリオが動作しなくなる可能性がある箇所をレポートします。




次回予告
-----------------
次回は、2つ目の課題である『画面数や、ブラウザのサポート数に比例して、テストシナリオの数や長さが大きくなる』の対策について紹介します。


 体験版ダウンロード
-----------------------------
http://www.techmatrix.co.jp/quality/download/index.html#soatest