ネットワークプログラムのテスト
今日も打ち合わせなど以外の時間は、自作ルータープログラムの改良を中心に行っていました。私はネットワークプログラムで一番難しいのはある意味テストと考えています。ネットワークプログラムは通信相手が不特定多数ということが多く、特に多くの機器がつながるイーサネット、あるいは世界中と通信を行うインターネットを対象にしたプログラムは、どのようなデータが来ても問題なく処理を続けなければなりません。
ネットワークプログラムのテストでは、シミュレータを用意して行うテストも行いますが、できれば本番環境にできるだけ近いネットワークに接続してのテストをやりたいものです。シミュレータで生成するデータは基本的には想定の範囲内の場合が多く、ロジック的な確認には使えますが、例外的なデータのテストは難しいのです。イーサネットでは様々なプロトコルのデータが飛び交い、しかもパケットが壊れている可能性もあります。
ということで、自作ルータプログラムのテストは、私が普段使っている2台のPC(MacOS,Windows)を、そのルータ経由で社内LANに接続するようにし、普段の作業やWEBサーフィンが問題なく使えるかどうかを確認していました。本当は社内LANとインターネットの間で確認したいのですが、さすがに構成変更が面倒なので。
YouTubeの動画を見たり、GoogleMapを使ったりするのはとてもよいテストになります。多数のコネクションを張ったり、データも巨大なため、パケットのパターンが数多く試せるためです。今日一日の動作確認でもいくつか細かな例外処理の問題を見つけました。
大企業ではネットワークへの接続や構成変更は多くの手続きが必要で、このようなテストは実現が難しいことが多いでしょう。当社でももちろん自社の製品を使った不正接続検知など、システム面でも情報セキュリティ対策を行っていますが、それらの製品のテスト環境としても社内ネットワーク、特にIT事業部のネットワークは活用しています。試行錯誤がある程度できる環境があるおかげで品質の高いネットワークプログラムが実現できているようなものです。当社の製品は全て自分たちも普段使っているものばかりです。
受託開発や製品の設置で一番困るのは、本番環境での確認がまずできないことです。試験環境で問題が無くても、本番環境で問題が出ることは意外と多いものです。どうしても試験環境では本番環境と同じような状況を作り出せないことが多いためです。可能な限りの確認を行い、後は何か起きてもすぐに解析できるようなログなどの整備と、すぐに対応できるような修正しやすいソースを心がけることが大切です。