ITpro Special
週間WEEKLY ITpro Special ITpro

ソフトウエア開発のテスト環境を自動化

ますます重要になるアプリの品質に
企業はどう応えるか

マイクロフォーカス 技術部シニアマネージャー 小林 純一 氏
マイクロフォーカス
技術部シニアマネージャー 小林 純一 氏

 「モバイルアプリのユーザーは総じておとなしい。アプリが動かなくても開発元にクレームをつけたりはしないが、そのまま無視されてしまう」とマイクロフォーカスの小林純一氏は意外な盲点を指摘する。普通ならば開発元に苦情として上がってくるはずの品質情報が届かないので、開発元は実感もなく、不具合への対応も取られないまま放置され、いつの間にか顧客が離れてしまうことがありえるというのだ。

 スマートフォンの普及を背景にしたモバイルアプリの拡大に加え、IoTやクラウドなどの環境を前提としたアプリの開発ニーズが高まっている。IoTでは、製造業だけでなく車載や農業などにも活用が広がりつつある。いずれの分野でも、開発するシステムは一つひとつのデバイスからデータを収集し、クラウド環境にビッグデータとして蓄積して、加工・活用するという枠組みだ。求められているのは、データを加工するプログラムだけでなく、デバイスから収集するネットワークや蓄積するデータベースなども含め、トータルで品質をコントロールすること。そのためには、ソフトウエア単体としてではなくシステム全体としてのテストが求められる。さらにIoTでは「プログラムが対話する相手はマシンであり、人がオペレーションすることを前提とした従来型のテストは通用しない」(小林氏)という課題もある。

 クラウドのアプリでは、エンドツーエンドのパフォーマンスだけでなく、各種の開発技術により複数のアプリを統合して作ったアプリに対するテストも必要になっている。具体的にはWebサービスによる他のアプリとの連携や、SOA(サービス指向アーキテクチャ)に基づいて組み合わされたアプリなどがこれに当たる。アプリの統合は年々複雑になっており、アプリの動作をテストする際には、各アプリ単体の機能だけでなく、アプリ間が正常に通信できるかどうかも確認しなければならない。これこそがモバイル時代・IoT時代におけるアプリ開発の最重要課題である。

開発過程のコラボレーションが重要に
課題解決に一連のテストソリューションを提供

 小林氏は「モバイルやIoTなどの新しいアプリの拡大で、開発の進め方も変わってきています」とワークスタイルの変革を示唆する。従来、開発プロジェクトチームは、各自の役割に従ってそれぞれの作業に最適なツールを使用していた。しかし、様々なデバイスやプラットフォームにまたがって機能を提供するモバイルやIoTのアプリでは、「開発プロジェクトチームがコラボレーションを促進しなければならなくなった」(小林氏)。

 コラボレーションのためには、テスト作業に使用するツールも同じものを使うことが求められる。さらに、テストツールのユーザーはテスト専門担当者(テスター)だけでなく、開発者や運用担当者も使うことになるため、使いやすさはもとより、コラボレーションを進めやすいものでなくてはならない。

 テスト手法も、エンドユーザーの視点でアプリケーションが必要な機能を提供しているかに重点が置かれるため、TDD(テスト駆動開発)やBDD(ビヘイビア駆動開発)にテスト手法をシフトする動きが始まっているという。

 また、開発者や運用担当者が一緒になってITインフラを改善していく開発手法である「DevOps」も、モバイルやIoTのアプリの拡大とともに注目されるようになった。DevOpsでは、開発者も運用担当者もテストが日々の業務の一部となる。同じツールを使い続けながら開発とテスト、フィードバックとリリースを繰り返し、ソフトの品質改善をリアルタイムで確認できる体制作りが求められているという。

 小林氏は、テストツールはこうしたソフト開発の現場の課題を踏まえることが重要と提言。マイクロフォーカスはそのための一連のテストソリューションを提供しているとした。

あらゆるブラウザー上での検証を
一つのテストケースで済ます

 同社は、システム開発をライフサイクルとして捉えたときの各フェーズに対応した製品を提供している。要件定義/管理ツールの「Caliber」、開発支援ツールの「DevPartner」、テストツールの「Silk Test」「Silk Performer」「Silk Central」、構成・変更管理ツールの「StarTeam」などである(図1)。

図1●マイクロフォーカスの開発関連製品の概要
図1●マイクロフォーカスの開発関連製品の概要
[画像のクリックで拡大表示]

 最初は、企画担当者や運用担当者が定義した要件を一元管理するためCaliberに登録する。次に、開発担当者が要件定義のデータを取り出しながら開発を進める。DevPartnerとSilk Testなどで開発とテストを繰り返しながら品質を高め、開発ライフサイクル全般はStarTeamなどで管理する。

 小林氏は今回これらの中から、テストソリューションに絞って同社の3製品を紹介した。Silk Testは機能テスト自動化ツールで、GUI上のマウス操作やキーボード操作をエミュレートして自動実行する機能を持つ。大きな特徴の一つが、モバイルも含む環境を想定したクロスブラウザーでのテスト機能だ。Internet ExplorerやEdge、FirefoxやSafariなど各種のブラウザーについて、スクリプトを作成してテストを行うことができる。一つのスクリプトを複数のブラウザーでも動かせるため、「テストケースを作る工数を大幅に削減できる」(小林氏)のがメリットだ。クロスブラウザーのテストツール「Selenium」のテクノロジーもラッピングしており、「高度な知識を必要とせずに Seleniumによるテスト自動化を可能とする」(小林氏)という。

 Silk Testのもう一つの特徴的な機能は、開発組織内で検証用に用意しているデバイスを共有可能にすることだ。モバイルアプリのテストでは、画面もOSも異なる多様なデバイスごとにテストする必要があるが、テストのたびに開発中のマシンにデバイスを一台一台つなぎ直すのは煩わしい。Silk Testでは一つのサーバーに多数のデバイスを接続した「デバイスラボ」を構築し、リモートでそのサーバーにアクセスすることで各デバイスでのテストが可能だ。デバイスラボをプライベートなネットワーク内に構築することで、セキュリティも確保できるという(図2)。

図2●デバイスラボの概要
図2●デバイスラボの概要
[画像のクリックで拡大表示]

Silk Performerは
高負荷状態を作り出してテスト

Silk Testが機能のテストを自動化するのに対し、Silk Performerは負荷テストを自動化する。サーバーに仮想的に負荷をかけてビジーな状態を作り出し、その時のデバイス上でのアプリの動作を検証することなどが可能だ。WebだけでなくSAPやOracleなど基幹業務で使われるアプリケーションにも対応する。高負荷の状態を再現するためにプロトコルをシミュレーションする機能を持っているため、デバイスが不特定多数になるIoTのような、APIに重きを置いたテストにも利用できるという。

 これらテストツールによるテストを要件に基づいて実行したり、見つかったバグを管理したりする機能を提供するのがSilk Centralだ。手動で行うテストも含めて一元管理が可能なツールで、要件やテスト項目を他のツールから取り込むこともできる。

 ソフトウエア開発の自動化は要件管理や構成管理などの面で先行して進んでいるが、小林氏は「テストの自動化も、開発プロセス自動化の一環として位置付けるべきでしょう」とその取り組みが重要なことを強調した。

お問い合わせ