システムテストの必須項目(8)・品質の悪い通信路でのエージングテスト

2021年9月21日テスト品質

外部との通信機能がある場合には品質の悪い通信路でのエージングも大切です

組み込みソフトにはサーバとの通信機能を持った物が増えてきています。このような装置では当然通信機能のテストを行いますが、その時に大切なのが品質の悪い通信路でのテストです。装置の社内テスト環境は実際の運用環境とは違って、ノイズの影響もなく通信の遅延やサーバからの応答の消失等が起きない綺麗な環境の場合が多いです。

しかし装置が実際に使われる本番環境では、通信路の品質が悪い事が良くあります。通信エラー通信遅延データ消失やサーバからの応答遅延等が起きます。そのような状況が発生した時の通信機能の安定性を確認するのが、品質の悪い通信路でのエージングテストです。この記事では、品質の悪い通信路でのエージングテストの考え方について紹介します。

テスト環境の通信路はとても綺麗で快適です

組み込み装置に通信機能がある場合には当然テスト項目にはその通信機能に関するテストが入っていると思います。様々な機能や性能のテストが計画されているでしょう。ただし、それらのテストを行うテスト環境は、テスト用に準備された通信路テスト用に準備された上位の通信装置(大抵の場合はネットワークの向こうにあるサーバ)とを使って構築されていま。

このテスト用に準備された通信路は、テスト室内に設置された通信ケーブルや通信機材(ハブやモデム等)で作られているので、短いケーブルで確実に繋がれていて通信路の品質としてはとても良好です。ケーブルによる信号の劣化ノイズの混入、接触不良による信号の断続などは殆ど起きないでしょう。また、テスト用に準備された上位の通信装置も、テスト対象の相手をするだけなので、余裕で稼働しています。

本番環境の通信路は想像以上にワイルドです

しかし、組み込み装置が実際に使われる本番環境は様々です。通信路が光の場合でもメタル(銅の電線)の場合でも、本番環境では通信の相手となる上位の通信装置が設置されている局舎から組み込み装置が置かれている設置場所までは、長い距離を通信ケーブルが引かれていてその途中で何段もの分岐や信号の変換機が入っています。長いケーブルは途中でノイズの影響を受けるかも知れず、ケーブルの接続箇所が地中なら大型ドラックの走行による振動で、空中の架線ならば台風による強風による揺れで、接続部分での接触不良が発生する事もあり得ます。

上位の通信装置にしても、ロードバランサ―と多数のサーバ群で構成されているとはいえ、多くのユーザに対してベストエフォートでサービスを提供する事を前提にして全体システムが設計されているので、時には設計容量を超える負荷の集中が起きて、ひどく応答が遅延したり応答が帰ってこなくなる事もあります。要するに、本番環境では通信路そのものも上位の通信装置も、テスト環境に比べてとってもワイルドな場合が起こり得ます。

無線LAN機能は本番環境では混信が避けられません

また、最近の組み込み装置は無線LANの機能が付いている事が多いですが、無線LAN機能がある時には無線区間で混信が起きる事も実際の運用ではよくあります。テスト環境では、無線LANを使った機能が正しく動作する事を確認できるように、無線が安定して接続できる環境が作られています。しかし、実際に組み込み装置が置かれる本番環境では、他局の無線電波による混信で無線の接続が頻繁に切れるような環境の場合もあります。

特に 2 .4GHz  の電波を使う WiFi と Bluetooth は、最近は普通の生活空間でも多数の機器が溢れかえっています。無線LANルータなどは、時には日本の無線法規で規制された出力の上限を超えるような大出力の海外製品が周辺で使われている事も有り、そのような製品と通信チャネルが重なると無線通信がブチブチと切れる状態も起こります。

本番の通信路では通信遅延やパケロスや通信エラーや通信断が起きます

このように本番環境が品質の悪い通信路だと、通信の物理層(光ケーブルや銅の電線などのハード的な通信路)では、接触不良による一時的な断線でのデータ欠落や、信号の衰弱やノイズによる伝送エラーが起きます。これらの物理層でのエラーは、上位のプロトコル層で検出されて再送などのエラー回復処理が実行されます。エラー回復処理が成功すればデータは正しく上位のアプリソフトに渡されますが、再送処理に掛かった時間だけ遅れが出ます。再送処理をしてもエラーが回復しなければ、上位のアプリソフトにはパケットロスとか接続状態消失などのエラー応答が返されます。その結果上アプリではそれらに対応した準正常系の処理が実行されます。

本番の通信路の向こうのサーバが調子が悪い事もあります

本番環境では通信路の向こうに在るサーバも常に余裕がある状態とは限りません。サービス開始当初は少ないユーザ数で処理能力に余裕があったサーバも、サービス加入者が増えてきてサーバの増強が必要になる直前の頃には、高負荷状況でなんとか運用しているという状態も起こります。そんな時に大きなイベントが在ったり時間帯による負荷の急増があたりすると、サーバの処理負荷を超えてしましまいます。その結果、サーバ以内での処理遅延やタイムアウトのよる処理の破棄が起こる事もあります。

サーバ内部での処理遅延や処理の破棄は、組み込み装置側から見ると多くの場合は通信路を経由して発行した処理要求のタイムアウトや応答の消失として見えるので、それに対応した準正常系処理を実行する必要が生じます。

品質の悪い通信路を作って複数のエラーが同時に起きる様にエージングテストを行う

これまでに紹介してきたように、品質の悪い通信路やサーバを相手にすると組み込みソフトでは準正常系の処理が数多く実行される事になります。この、準正常系の処理というのは、様々なエラーの組み合わせを網羅しようとすると直ぐにテスト件数の爆発が起こってしまうので、網羅試験が難しいテストです。

だからこそ、品質の悪い通信路やサーバを用意して、実際に組み込み装置が使われる本番環境と同じような動作環境を作って、そこで長時間のエージングテストを行う事で、本番環境で発生する可能性のある様々なエラーが複数同時に、色々なタイミングで起きる状態を出来るだけ作り出して、安定動作を確認する事が大切になってきます。

品質の悪い通信路は治具を使ってる作る

品質の悪い通信路をテスト環境の中に作るには専用の機材が必要になります。物理的な通信路の品質を下げるためには、光信号の場合でも電気信号の場合でも、信号の強度を下げるアッテネータや信号を瞬間的に切断してまた直ぐに接続するような瞬断シミュレータのような専用の治具(特別な用途のために作られた道具)が必要です。信号にノイズを混入させるには、混入するノイズを生成するノイズジェネレータと、信号とノイズを混合するミキサーが必要です。

パケットレベルでの品質を下げるには、特定のパケットを遅延させたり欠落させたりする機能をもったネットワークシミュレータ遅延シミュレータの装置が必要です。サーバの応答性を下げるのは割と簡単で、物理的にはサーバのメモリを減らして処理性能を落としたり、CPUやメモリを大量に消費して負荷を掛けるだけの役目を持った特別な負荷アプリを作って動作させれば事足ります。

通信路やパケットやサーバのどの品質を落とすかを考えてテスト計画を考える

品質の悪い通信路やサーバをテスト環境に用意するには、様々な治具やテスト専用の機材が必要になります。ですので、通信路、パケット、サーバ応答などのどの部分の品質をどの程度まで落とすのかにつて、テスト計画の段階で検討をして必要な治具や機材を準備しておく事が必要になります。必要な機材の目途が付いたら、あとはどの品質をどこまで落とすのかという品質低下の設定と、どの程度の時間エージングを行うのかというテスト時間組み合わせをテストの目的に従って何組か考えて、それに沿って品質の悪い通信路でのエージングテストを実施しましょう。

品質の悪い通信路でのテストの次ぎはハード資源枯渇のテストです

品質の悪い通信路を準備してのエージングテストでは、組み込み装置の外部からエラーを与えて組み込みソフトの準正常系を動作させる事で安定性を確認しました。組み込みソフト外部では無く内部でエラーを起こすのが、ハード資源枯渇です。次の記事ではハード資源の枯渇エラーについて紹介しましょう。