JavaベースのWebアプリケーション開発におけるテストを自動化する基礎技術

基幹システムのWeb化が進むなか、富士通研究所とFujitsu Laboratories of America, Incは、形式検証技術を用いてJavaベースのシステム開発におけるテストを自動化し、実用規模の業務アプリケーションの品質向上に貢献する基礎技術を開発しました。
Javaベースの開発も検証作業は人手が中心に
インターネット技術の普及に伴い、受注管理システムや物品管理システムなど、企業内の基幹業務システムをJavaベースのWebアプリケーションとして構築する企業が急増しています。ビジネスの急速な変化に伴い、基幹業務システムはますます大規模化/複雑化すると同時に、開発期間は短くなり、ソフトウェアの品質保証が大きな課題となっています。
システム開発において、システムが業務仕様書通りに動作するかどうかを確認する検証作業は、品質を保証するうえで非常に重要な工程です。しかしながら、Javaベースの開発ツールはさまざま登場しているものの、依然人手による作業が大きなウェートを占めています。
これまでの検証作業ではまず、開発者が業務仕様を参照しながら検証項目を抽出し、それらの項目を確認するための詳細な手順(テストシナリオ)とテストデータを作成します。そうして作成されたテストシナリオとテストデータを想定しうる限り組み合わせてテストを実施し、結果を確認してエラーや不具合があれば修正する、という作業を繰り返し、最終的なテスト報告書を作成します。
こうした一連の作業のほとんどが人手による作業のため、テストシナリオ作成時の検証項目の考慮漏れ、実施/確認時のミス、担当者による判断のムラなどが発生してしまいます。

事実、稼働後のシステムでは、1,000ステップあたり0.122件の障害が残存するとされています(注1)。したがって、20万ステップを超える一般的な基幹システムでは、20を超える個所に障害が残存することになります。システムのオープン化が進み、マルチベンダー環境のシステム開発においては、より多くの専門知識が必要とされるため、従来の検証作業では属人化がなくなることはありません。
このような状況のもと、JavaベースのWebアプリケーションにおいてもソフトウェアの品質保証は大きな課題になっており、テスト技術の進化が求められていました。
ミッションクリティカルなシステムの開発で利用されてきた形式検証技術への注目
富士通研究所は、ソフトウェアの品質を高水準で均一化するための研究開発を進めるなかで、「形式手法」を用いた形式検証技術(注2)に着目しました。
形式手法は、数学的手段を用いてソフトウェアの正しさを保証する技術です。1970年代に登場し、NASA火星探索機など、ミッションクリティカルなシステムの検証に利用されてきました。それが近年、機能安全規格(ISO/IEC 61508(注3))や情報セキュリティ評価規格(ISO/IEC15408(注4))において、高レベル認定の要件として形式手法の利用が推奨・必須とされるなど、国際的に注目されるようになりました。国内においても2006年、情報システム障害の社会的影響が深刻化する状況を受け、経済産業省が策定した「情報システムの信頼性向上に関するガイドライン」において、形式手法の活用が推奨されています。
形式検証技術の適用はこれまで、前述の火星探索機を始めとした小規模な組み込みソフトウェアでした。最近では、WindowsデバイスドライバやFelica ICチップの検証において、形式検証技術を用いた検証ツールが使用されています。しかし業務系アプリケーションにおいては、その規模の大きさが課題となり、形式検証技術の利用は進んでいませんでした。
世界初、Java PathFinderを利用した形式検証技術を業務系に適用
そこで富士通研究所とFujitsu Laboratories of America, Incは、独自の技術を組み合わせて既存の形式検証技術を発展させることで、組み込みソフトウェアよりはるかに規模の大きい業務系アプリケーションへの適用を実現し、検証作業を自動化する技術を開発しました。
既存の形式検証技術には、NASA Ames Research Center(注5)が開発したオープンソースの検証ツール「Java PathFinder(注6)」を採用しました。このJava PathFinderは、Javaベースのプログラムをモデル検査するためのツールで、コンピュータを用いた網羅的な検証の自動化が可能です。
富士通研究所とFujitsu Laboratories of America, Incは、NASA Ames Research Centerと協調して同ツールの機能強化をおこなう一方で、同ツールに実装可能な基礎技術を独自に開発しました。形式検証技術を実用規模の業務系アプリケーションのプログラム検証に適用した事例は、この技術が世界で初めてとなります。以下に特長を示します。

人手によるテストシナリオ作成が不要
自然言語で記述された業務仕様書を、演算式を用いた論理的な記述に書き換えることにより、形式検証が可能な状態にします。この技術では、これをもとに網羅的なテストシナリオを想定してプログラムを自動的に動作させ、業務仕様書の通り動作しているかを確認するため、開発者によるテストシナリオの作成は不要です。
ここでは富士通のJavaベースのWebアプリケーション開発のフレームワークに準拠したアプリケーションを対象とすることで自動化を実現することができました。

膨大なステップ数から業務処理部のみを切り出して単独検証
JavaベースのWebアプリケーションの機能を「画面処理」「業務処理」「データベース処理」の3つに分割し、業務処理部のみを抽出して検証します。業務処理は、ステップ数では全体の3割程度ですが、障害発生率は全体の8割を占めるとも言われ、バグの集中しやすい処理です。
この技術では、プログラム内のJavaの記述をもとに業務処理部のみを切り出すことによって検証範囲を限定し、膨大なステップ数の業務系アプリケーションへの適用を可能にしています。

Javaベースの開発検証でテストデータ作成が不要
業務上の重要な変数については、入力バリエーションの検証にテストデータを用いず変数をそのまま実行することができます。これにより、業務仕様上には現れないが、プログラム中の条件を網羅するために必要な入力を再現することが可能となり、従来のテスト技術では発見が困難な障害も検出できるようになります。
Javaベース開発によるテストの自動化と品質保証の研究
この技術を14,683ステップのJavaプログラムに適用しておこなった実験では、30個程度のテストシナリオを用いて人手で検証していた一機能に対して、1,000個以上のテストシナリオに相当する、網羅的な検証をおこなうことができました。また、Javaベースの開発におけるテスト工数の30~50パーセントを占めるテスト実行と結果確認を自動化できることも同時に確認しました。
形式検証技術を用いたこの技術は、既存システムの品質を損なわず追加機能が業務仕様書通りに動作するかの確認にも活用することが可能で、新規システム開発はもちろん、機能拡張の開発においてもその効果が期待されています。
現在、処理のスピード化、業務仕様書の書き換えに使用するエディタやテスト報告書の機能充実などの研究開発が進んでいます。富士通研究所では、この技術が富士通社内の開発現場において非常に有効であると考え、今後ますます増えていくJavaベースのWebアプリケーション開発への社内本格適用に向けて、研究開発に注力していきます。
注記
- (注1)1,000ステップあたり0.122件の障害とは :
- 「ソフトウェア開発データ白書2007」(独立行政法人 情報処理推進機構 ソフトウェア・エンジニアリング・センター 著)による。「ステップ」は、プログラムの規模を示す数値。
- (注2)形式検証技術とは :
- ソフトウェアの正しさを数学的な手段で証明する手法。
- (注3)ISO/IEC 61508とは :
- 電気・電子・プログラマブル電子の機能安全に関する国際規格。
- (注4) ISO/IEC 15408とは :
- IT製品の情報セキュリティを評価するための国際規格。
- (注5)NASA Ames Research Centerとは :
- Director S. Pete Worden、本社 米国カリフォルニア州、航空から情報技術まで幅広く手がけるNASA(米国航空宇宙局)の研究所。(NASA Ames Research Center Home)
- (注6)Java PathFinderとは :
- Javaを対象とする検証(モデル検査)ツール。
[2009年4月1日 公開]
ジャーナル最新のテーマ
お客様の声をお聞かせください

富士通ジャーナルに掲載している記事やコンテンツについてのご意見・ご感想を、ぜひお寄せください。
お寄せいただいたご意見・ご感想については、富士通からの回答をお約束するものではありません。ご了承ください。
なお、富士通からのご回答を必要とするお問い合わせについては、
富士通ジャーナルに関するお問い合わせをご利用ください。





