本連載第一回から四回において、順序組み合わせテストとIDAU法について説明してきましたが、第五回以降の連載では湯本が確立したテスト手法であるIDAU法の応用研究について武田から説明したいと思います。第五回ではIDAU法のテストプロセスをツール実装し検証した研究について、第六回ではIDAU法をソースコードレベルのテストに適用するために独自の拡張を加えたCode Based IDAU法(CB-IDAU)の研究について、第七回ではCB-IDAUをバグ予測モデルのメトリクスとして応用したグラフ解析モデルについて連載していく予定です。
IDAU法のテストプロセスのおさらい
湯本の研究により、IDAU法は順序組み合わせやデータとその操作に着目したテストケース抽出技法として理論が確立され有効性も実証されました。この新しいテスト技法を実際のソフトウェアテストの現場で有効に利用する手段として、必要なインプット情報を与えれば、IDAUのテストプロセスに従い、自動的にテストケース候補を出力するテストツールの実装が有効な手段となります。またツール化により多くのソフトウェアテストに対する適用検証が可能になり、新たな研究課題の発見が期待できます。そのため、IDAU法の応用研究の最初のステップとして、IDAU法のテストツール実装を行いました。ツール実装するにあたり、まずはIDAU法のテストプロセスと実行/適用のための前提条件/制約事項について、論理的に正しく理解する必要があります。以下にこれまでの連載でも述べたれてきたIDAU法のテストプロセスについて整理します。
1.設計ドキュメントから変更が発生する機能P{Ta}、影響を受ける機能S{Ta}、関連するデータDsを抽出する。
2.拡張CRUD図を利用して各機能のデータ操作がCRUDの何れに該当するか確認する。
3.CRUD Matrixを利用してテストケースとして抽出するか否かを判定する。
4.テストケース抽出
IDAUテストツール実装
先行研究であるIDAU法の検証では、航空チケット予約システムのワークフロー情報がインプット資料として与えられましたが、今回、ツール実装の動作確認用としてAWS上にIDAU法と親和性が高いブラウザからマイクロサービスとKey-Value Storeを用いたRestfulなAPIサービスのプロトタイプを作成して実装を行いました。APIは発行するクライアントはJavaScriptを持つHTMLスクリプトをS3上にホスティングし、APIの処理にはAPI-Gateway、マイクロサービスとしてLambda、Key-ValueストアとしてDynamo-DBを利用した、以下のような簡易なシステムをツール実装のためのプロトタイプとして作成しました。さらに、このシステムの構成情報をYamlで記述することで、自然言語の仕様書ベースではなく、Yamlフォーマットのシステム構成情報を構文解析することにより、自動でIDAU法に必要な、全機能とデータ操作種別のCRUD情報をプログラムで自動解析しました。
図4のシステムをAWSに構築するための記載したYamlファイルを、IDAU法のインプット情報である機能仕様書と見立てて、Yamlファイルの構文解析による、IDAU法を用いた自動テストケース抽出ツールをPynthonにて実装しました。以下に、実際のJupyter note bookの出力を基にプロセスを記載します。
1.Yamlファイルを構文解析して、システム内に構成される機能であるマイクロサービスの実装仕様を表しているAPI-GatewayのRestfulのメソッド属性を解析することで、マイクロサービスの各機能がデータストアであるDynamo DBに対して、Create, Update, Read, Deleteのどの属性の処理を実施しているかを把握する。
2.Yamlを構文解析した結果から、全機能組み合わせに対する拡張CRUD図を作成する。
3.CRUD Matrixを抽出ルールとして実装し、各テスト実行の順序組み合わせがテストケースとし抽出されるべきか判定を行う。
4.テストケース抽出を出力する。
テスト対象と検証
実装したツールの検証を行うために、IDAU法を適用可能な前提条件を満たすテスト対象となるシステムを準備する必要があります。今回の研究では、下図8に示すTomcatのアプリケーションサーバを管理する、管理ウェブクライアントをテスト対象としました。
TomcatはJavaのアプリケーションサーバ実装のソフトウェアです。Tomcatをアプリケーションサーバとして利用する場合、Javaで実装したウェブアプリケーションのアーカイブファイルである、WarというファイルをTomcat Application Serverの特定のディレクトリに配置するDeployや、アプリケーションサーバや、アプリケーションのStart/Stop、不要になったアプリのDeleteなど、Warファイルに対する様々な操作が必要になります。Warファイルをデータ、管理ウェブクライアントのオペレーションをデータに対する操作、それらのステータスがTomcatアプリケーションサーバとして保持されている状態は、IDAU法の論文で定義された下図9のIDAUの適用モデルに類似していることが分かります。
また、IDAU法を適用するには、データに対する操作がCRUDにおける、どの操作に該当するのかを簡単に把握できる必要があります。Tomcatの操作の定義は自然言語で各メソッド実装のJavaDocに記載されており、各操作はCRUD操作に容易にマッピングすることが可能です。以下にそのイメージを記載します。
表1 操作とCRUDの関係
ID | API仕様 | CRUD |
---|---|---|
1 | list – List the context paths of all currently installed web applications for this virtual host. Each context will be listed with the following format path:status: sessions. Where path is the context path. Status is either running or stopped. Sessions are the number of active Sessions. |
R |
2 | deploy – Install and start a new web application attached to context path /xxx, based on the contents of the web application archive found at the specified URL. |
C |
3 | reload – Reload the Java classes and resources for the application at the specified path. |
U |
4 | resources – Enumerate the available global JNDI resources, optionally limited to those of the specified type (fully qualified Java class name), if available. |
R |
5 | server – Display system OS and JVM properties. |
C |
6 | sessions – Deprecated. Use expire. |
R |
7 | expire – List session idle time information about the web application attached to context path /xxx for this virtual host. |
D |
8 | start – Start the web application attached to context path /xxx for this virtual host. |
U |
9 | stop – Stop the web application attached to context path /xxx for this virtual host. |
U |
10 | undeploy – Shutdown and remove the web application attached to context path /xxx for this virtual host and remove the underlying WAR file or document base directory. |
D |
11 | findLeak | R |
12 | vminfo – Write some VM info. |
R |
13 | thread dump – Write a JVM thread dump. |
C |
続きを読むにはログインが必要です。
ご利用は無料ですので、ぜひご登録ください。