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

旧ブログからゆっくり移行中です。http://blog.livedoor.jp/prjmng/

「性能テストのいろは: IoTにどうアプローチするか」 #IoTテストアドカレ(6)

はじめに

 この記事は、IoTのテストに関するネットの記事を読んでいく、「IoTテスト アドベントカレンダー」の6日目です。5日目はコチラ。

kzsuzuki.hatenablog.com

プロファイル

  • タイトル: 『Performance Testing 101: How to Approach the Internet of Things』
  • 著者: Henrik Rexed
  • 参照サイト: Neotys

ポイント

 IoTアプリケーションに対する負荷テスト・性能テストは、これまでのWebアプリケーション・モバイルアプリケーションと大きく違うわけではないが、理解しておくべき点はある。

  • 増大する複雑さ: 「モノ」や、それを操作するためのスマートフォンなど、考慮に入れるデバイスの数が異なる
  • モノからのメッセージの記録: Webやモバイルのように、メッセージを記録しやすい形になっているとは限らない
  • 様々な使用状況: ユーザのインターネットへの接続状態が大きな意味を持つ。帯域幅や遅延、パケットロス、同時接続数なども考慮要

 温度・電力量・メモリ使用量の変化といったシステムの統計を注意深くモニターすることと、異なるネットワークレイヤー間のレスポンスタイムを測定することも必要。そのさい、Wiresharkのようなネットワークスニファーツールが必要になる。記録することができれば、それを生成することも可能である。

 以下のように進めることになる。

  1. 対象のオブジェクトのSLAを明確にする。
  2. サーバに対し一度に接続してくることが予測されるオブジェクトの数を踏まえて最大負荷を決める。
  3. テストケースを作るために典型的なユースケースとそうでないユースケースを定義する。
  4. アプリケーションが特別なプロトコルを使用しているかを確認し、それらのプロトコルに対して迅速かつ容易に性能テストを行うことのできるテストツールを選ぶ。

所感

 これまでにはなかった、「性能」の観点での記事です。モバイルやWebと本質的には変わらないものの、デバイスの量に増加により複雑さが増していることと、プロトコルが特有であることに注意すべきとしています。
 デバイス-センサー間の近距離無線通信の方式については5日目の資料でも言及があったのですが、センサーから先のプロトコルについて意識していませんでした。知識が乏しすぎるので、一行紹介にとどめます。。

  • MQTT (Message Queuing Telemetry Transport): 本家によると、「M2MやIoTの接続プロトコル。メッセージ転送の受信・配信を行うために、きわめて軽量にデザインされている」。

  • XMPP (Extensible Messaging and Presence Protocol): Wikipediaによると、「オープンソースインスタントメッセンジャープロトコルおよび、クライアント、サーバの総称」。

  • DDS (Data Distribution Service?): Wikipediaによると、「スケーラブルでリアルタイム性があり、高信頼性・高性能で互換性のあるデータ交換を目的とした、OMG(Object Management Group)のM2M規格である」。

  • AMQP (Advanced Message Queuing Protocol): 本家によると、「アプリケーションや組織間でメッセージをやりとりするためのオープンな規格。システムを接続し、ビジネスプロセスに必要な情報を与え、目標を達成するための指示を伝える」。

  • CoAP (Constrained Application Protocol): 本家によると、「IoTにおいて制約のあるノード・ネットワークで使用されるWeb用転送プロトコル。スマートエナジーやビルディングオートメーションといったM2Mアプリケーションのために設計されている」。

 う、う~ん。抽象的でこれじゃ全然わからないですね。価値のない情報で申し訳もござらん。。。

 7日目はコチラです。(12月7日の0時に公開されます)

kzsuzuki.hatenablog.com