仮想ラボで実現するコスト効率の高いIoTデバイスのテスト

どんなに小さなIoTデバイスでも、利用される環境は複雑であり、開発時には把握しきれない可能性があります。実際のところ、初めてインターネットに接続されるデバイスに関するセキュリティ上の問題がすでに確認されています。以前の記事では、設計、開発、およびテストのためのサービス指向の利点について説明しました。この記事では、サービスベースのテストとサービス仮想化を次のステップ、つまり仮想ラボに発展させます。現実的なテストラボ環境を物理的に構築することは難しく、たとえ成功したとしても、システムテストの主要なボトルネックになります。仮想ラボではこのようなボトルネックが解消されるだけでなく、サービスベースのIoTデバイステストに新たなメリットがもたらされます。

多くのIoTデバイスは準備不足

最近の調査では、IoTアプリケーションの80%がセキュリティ上の欠陥についてテストされていないことが判明しました。Barr Groupの調査では、組込みデバイス開発者の56%がセキュリティ脆弱性を発見するためにソースコードをレビューしていないと回答し、37%は明確なコーディング標準がないと回答しました。このような数字は心強いと言えるようなものではなく、IoTデバイスのメーカーが品質、安全性、セキュリティをより真剣に考えなければならないことは明らかです。テストの自動化は、テストがより厳密に、一貫して、徹底的に行われるよう保証するための重要なステップの1つです。テスト、なかでもセキュリティ上の脆弱性のテストは、コストが高く複雑なものと見なされるため、短期間で済まされたり、おざなりにされることがよくあります。しかし、顧客(そして攻撃者)にIoTデバイスのセキュリティ テストを肩代わりさせるのは、高くつく誤りです。

仮想ラボの構成

現実のテストラボでは、IoTデバイスが動作する予定の環境に極めて近い環境を物理的に再現する必要がありますが、非常に精巧なラボであっても、現実的な環境にまで拡張することは困難です。仮想ラボはこの問題を解決します。仮想ラボは、利用が難しい(あるいは存在しない)依存先ハードウェアの代替という要求を超えてさらに進化しています。洗練されたサービス仮想化とともに、他の主要なテスト自動化ツールで使用します。

  • サービス仮想化は、完全なシステムテストを実行するために、テスト対象のデバイスに必要なすべての依存関係をシミュレートします。これには、デバイスによって使用されるすべての接続およびプロトコルで現実的な応答を返せることが含まれます。例えば、サービス仮想化は、IoTデバイスが通信するエンタープライズサーバーバックエンドをシミュレートし、定期的なセンサー読み取り値を提供することができます。同様に、仮想化はIoTデバイスを現実的な方法で制御することができます。
  • サービスおよびAPIテストは、テスト対象のデバイスが提供するサービス(および提供されるAPI)が完璧に実行されるように、デバイス駆動する方法を提供します。これらのテストは、自動化プラットフォームを介して操作して、必要に応じてパフォーマンスとセキュリティテストを実行できます。
  • 実行時モニタリングは、テスト対象デバイスでリアルタイムにエラーを検出し、重要なトレース情報をキャプチャします。たとえば、完成した製品で検出されずに残る可能性のあるメモリリークを早期かつ安価に検出し、解決できます。
  • テストラボの管理と分析は、仮想ラボの包括的な制御を提供します。一度仮想化されたラボは、必要に応じてセットアップ全体を複製し、テストの実行を自動化して繰り返すことができます。分析は、活動と成果の必要な要約を提供します。

エッジコンピューティングのIoTエコシステムを図1に示します。これは、組み込みIoTデバイスがデプロイされる典型的な環境を表しています。  センサーと制御デバイスは、エッジに情報を送信します。エッジは、情報を受信し、ロジックを使用してデバイスに応答したり、クラウドに情報を上げたりする一連のアプライアンスまたはアプリケーションです。クラウドには、その情報に基づいて行動するためのより高いレベルのロジックがあります。クラウドはマイクロサービス、データベースへの接続、追加のロジック、またはサードパーティサービスなどからなる、サービスのセットです。機能ブロックの複雑なウェブであり、図の右下に示されています。

図1:組込みデバイスがデプロイされる典型的なIoTエコシステム

IoTエコシステムでテストを行う場合、多くの層でテストが必要です。たとえば、ゲートウェイに導入された新しい機能をテストするには、ゲートウェイがセンサーから情報を受信できること、また構築されたビジネスロジックに従ってその情報を送信できることの検証などを行います。

この複雑なシステムを十分に検証するために、必要な依存関係をシミュレートする Parasoft Virtualize とテストを駆動する Parasoft SOAtest を使用して、入力をシミュレートします。これらのツールは、REST / HTTPのようなプロトコルであれ、または CoAP、XMPP、MQTT などのIoTで一般的なプロトコルであれ、ネットワーク上のデバイスからの現実的な呼び出しをシミュレートし、SOAtest から返された応答を検証することによって、テスト対象のデバイス(この例ではゲートウェイ)がクラウドサービスと適切に通信しているかを検証します。 下の図2は、テスト対象のエッジデバイス用に仮想ラボ環境を作成する方法の例を示しています。

外部からゲートウェイに情報を伝達する方法がある場合、それらの呼び出しもシミュレートできます。Parasoft Virtualize は、テスト環境を安定化し、SOAtest のテストデータを活用した要求に対して予測可能な応答を作成し、ゲートウェイとサービスを完全にテストできるように設計されています。

最後に、トップレベルのサービスがエッジに応答し、さらに他のセンサーや外部のアクターに通信が返される場合があります。そのような場合、入力から始まるフローがバックエンド システムに戻ってきていることを確認するのが重要である可能性があります。Parasoft Virtualize を使用して、エッジ(IoTデバイスまで)への受信をシミュレートし、その情報をSOAtestに中継して、コールがラウンドトリップし、IoTエコシステム内で期待されたとおりに動作したことを確認します。Parasoft VirtualizeとSOAtest を組み合わせることで、複雑なIoTエコシステムにおいても、環境全体をテストすることができます。

図2:ParasoftのVirtualizeおよびSOAtestツールの役割は、テスト中のエッジデバイス用の仮想ラボ環境を作成します

時間とコストを削減しながら品質とセキュリティを向上させる

通常のテスト環境は高価です。おそらく、おおかたの開発マネージャーの予想を超えるでしょう。voke Research の調査によると、プリプロダクションラボの平均投資額は1,200万ドルでした。時間に関しては、ラボをプロビジョニングする平均時間は18日で、設定にはさらに12~14日かかりました。これらのラボはセットアップに多くの時間と費用を要し、その後もアクセスが制限されているためテストのボトルネックとなります。さらに、物理ラボの日々の運用コストは膨大です。ほとんどの場合、テストスループットを向上させるために物理ラボを複製するのはコストがかかりすぎます。

以前の記事「サービス仮想化とは」では、仮想化のメリットは、テストデバイスへのアクセス(Access)と仮想化された依存先の振る舞い(Behavior)の改善によりコスト(Cost)を削減しテストのスピード(Speed)を上げること、とまとめました。同様の方法で、仮想IoTテストラボの利点を解説しましょう。

  • より良く、完全なテストによる品質の向上
    サービスベースのテストにより、主要なユースケースが実行され、完全であることが確認されます。自動化された性能テストは、負荷が高い状態での安定性と信頼性を保証します。さらに、実行時モニタリングにより、見つけにくいバグが検出され、追跡されます。
  • 不正なデータをシミュレートする自動侵入テストによるセキュリティの向上
    負荷テストによってサービス不能攻撃をシミュレートし、実行時モニタリングによってセキュリティ脆弱性を検出できます。テストを繰り返し実行できるため、各イテレーション、パッチ、またはリリースが全く同じ方法でテストされることを保証できます。さらに、テストの開発と操作(つまり、新しいテストの改善と作成)が簡単になります。
  • 完全なシステムテストに必要な高価な依存性の必要性を排除して、テスト時間、リスク、コストを削減
    自動化によって、手動テストでは不可能な再現性と一貫性がもたらされるだけでなく、より優れた完全なテストが提供されます。仮想ラボは、物理ラボのセットアップに必要なプロビジョニング時間を大幅に短縮し、トータルのテスト時間に影響を与えます。

まとめ

IoTデバイス開発の現況を考えると、開発プロセスとテストプロセスに変更を加える必要があります。テストの自動化は、コストとリスクを削減する確実なアプローチです。IoTデバイスの品質とセキュリティの向上を図るうえで、次の大きなステップとなるのは、サービスの仮想化、サービスベースのテスト、仮想ラボの管理、および実行時の監視を組み合わせた仮想ラボを使用することです。これにより、プロビジョニングと構成のコストが大幅に削減され、実行されるテストの品質が大幅に向上します。

(この記事は、開発元Parasoft社 Blog 「Cost-Effective Testing of IoT Devices with Virtual Labs」 2017年8月4日の翻訳記事です。)

Parasoft SOAtest/Virtualizeについて

APIのテスト自動化とサービス仮想化を1ツールで

SOAtest/Virtualizeは、APIの開発者/利用者に向けてテストの自動化とテスト環境の仮想化の2つの側面から開発を効率化します。SOAtest/Virtualizeは、APIのテストドライバーを提供し、開発中のAPIのテストを自動化する機能と、APIを利用するアプリケーションが必要とするAPIをスタブとして仮想化する機能を同梱して提供します。

Top