ソフトウェアの品質を学びまくる

ソフトウェアの品質、ソフトウェアテストなどについて学んだことを記録するブログです。

「IoTのテスト:5つの大きな課題をどう乗り越えるか」 #IoTテストアドカレ(20)

はじめに

 この記事は、IoTのテストに関するネットの記事を読んでいく、「IoTテスト アドベントカレンダー」の20日目です。19日目はコチラ。一体いつから・・・、アドベントカレンダーは12月25日に完結すると錯覚していた?

kzsuzuki.hatenablog.com

プロファイル

  • タイトル: 『IoT testing: How to overcome 5 big challenges』
  • 著者: TechBeacon
  • 参照サイト: TechBeacon

ポイント

 IoTの時代には、効果的なテストが重要である。Iotデバイスのテストにおける考慮事項を述べる。

IoTプラットフォームが多い

 デバイスのハードウェアとソフトウェアが多彩すぎて、すべての組み合わせをテストすることはほとんど不可能。エンドユーザの情報を集め、どのデバイスとソフトウェアが使われているかを理解したうえで、最もよく使われる組み合わせを中心にテストする。

テストする通信プロトコルが多い

 現在のIoTデバイスでは、コントローラとやり取りするための様々な通信プロトコルを使っている。MQTT、XMPP、CoAPなどがよく使われており、それぞれ長所と短所がある。
 テスト設計は、IoTデバイスがどのようなプロトコルAPIを使っているかに依存する。テストツールはそれらを利用できるものでなければならない。

攻撃されるポイントとセキュリティ上の脅威が増える

 IoTデバイスの70%以上が、セキュリティ上の脆弱性を抱えているとされる。開発者やテスターは、パスワードポリシーをはじめとするセキュリティの問題にも注意を払う必要がある。

IoTアプリケーション、デバイスが多様になる

 テスターは、しっかりしたテスト戦略を持ち、アーキテクチャを理解し、デバイスとソフトウェアが適切なバージョンに設定されていることを確実にしておく必要がある。

 システムがサードパーティーのサービスを使っていれば、そのサービスの変更によりテストが失敗する可能性がある。サードパーティーのサービスが利用できない場合、サービスの仮想化を使うことで実際のサービスへの依存性を排除することができる。仮想化を行うツールがカスタマイズ可能なものであれば、様々な状況のレスポンスをテストできる。

データの高速化と負荷の増加が巨大になる

 WiFiチャネルの高負荷、信頼性の低いネットワークハードウェア、低速で一貫性のないインターネット接続など、ネットワーク状態は、デバイスの性能に重大な影響を持つ。様々なネットワーク条件でテストし、データを失うことなく適切なレスポンスができることを確認しなければならない。そのために、ソフトウェア的に様々なネットワーク状態をエミュレートするためのネットワーク仮想化を利用する。

 またテスト中は、CPU使用率やメモリ使用率のようなシステムのメトリクスをモニタする必要がある。ただIoTデバイスは、デスクトップアプリケーションのようにユーザの操作によって起動・テストされるとは限らないので、どのデバイスが利用されているのか、どのように振る舞うのかを把握する必要がある。

所感

 プラットフォームの組み合わせ、プロトコル、セキュリティ、性能など、これまでの資料でも言及されたポイントが整理されていてわかりやすいですね。

 21日目はコチラです。(いつの日か公開されます)

kzsuzuki.hatenablog.com