Skip to content

Latest commit

 

History

History
156 lines (128 loc) · 11.1 KB

README.md

File metadata and controls

156 lines (128 loc) · 11.1 KB

NetTester examples

物理ネットワークのための受け入れテストツール: NetTester によって、実際どのようなテストが実現可能なのかを、架空の企業ネットワークをターゲットにして検証しています。

テスト対象のネットワーク

タジマックス通信工業社 (長いので以降 "タジマックス社") は、 ヨーヨーダイン社と共同でソフトウェア開発を行っており、 タジマックス社からVPNでヨーヨーダイン社内の開発環境へアクセスします。

今回、ヨーヨーダイン社のネットワークを新規に構築し直すことになりました。 ヨーヨーダイン社のネットワークの構築もタジマックス社が請け負います。 タジマックス社は以下の図のようなネットワークを構築することにしました。 Testee network

ネットワークの構築にあたり、ヨーヨーダイン社の要件(ネットワーク上で行いたい業務)をもとに、 構築したネットワーク上で求められた業務ができるかどうかをテストします。 テスト対象はヨーヨーダイン社のネットワークです。

テスト

静的なテスト

このプロジェクトでは、ネットワークが一定の状態にある(ネットワークの状態が変化しない)ときに、 end-to-end の通信ができるかどうかをテストすることを「静的なテスト」と呼んでいます。

今回、ヨーヨーダイン社のネットワークでは、 以下のように、セグメント内・セグメント間をつなぐ、様々なアプリケーション通信が発生します。

Static Test

これらのアプリケーション通信(アプリケーションを使う業務)が構築したネットワークで 問題なくおこなえるかどうかをテストします。

静的なテストの例:

動的なテスト

このプロジェクトでは、ネットワークの状態が変化するとき (トポロジが変わる、Active/Standbyが変化して通信経路が変わる、など) に end-to-end の通信にどのような影響があるか・コネクションが維持されるかどうかをテストすることを、 「動的なテスト」と呼んでいます。

ヨーヨーダイン社のネットワークでは、社内の Firewall として、 Active/Passive(standby)で HA (High Availability) 構成をとれる機材を使うことにしました。

Dynamic Test

通常、FW1 が Active となるようにしていますが、 FW1 にリンク障害が発生して Active/Passive が交代するときに、 FW を経由する通信を伴う業務が継続可能かどうかテストします。

動的なテストの例:

テストの実行

インストール

必要な ruby gem は bundle install で自動的にインストールされます。

$ git clone https://github.com/net-tester/examples.git
$ cd examples
$ bundle install

この他に、テストシナリオ中ではテスト用のツールをいくつか使っています。 別途インストールしておく必要があります。

  • ping
  • dnsmasq
  • nc (netcat)
  • curl
  • openssl/openssh

テストの実行

Rakeで回帰テスト実行できます。

$ rake DEVICE=ens5 DPID=0x1 cucumber

この例では、環境変数DEVICEでNetTesterサーバ側の物理OFS接続インタフェース名、 DPIDで物理OFSのDatapath IDを指定しています。

実際のテストの様子

実際にテストを実行している様子を、以下のリンク先から見ることができます。

解説付きデモ動画

NetTesterでテスト自動化! Network Test System Project - YouTube

静的なテスト・動的なテストの連続実行、要求変更に対するヨーヨーダイン社ネットワークの設定変更+テストの再実行(回帰テスト)、という一連の作業プロセスを実行しています。 (デモ中、回帰テスト実行では、デモ用に一部のシナリオに限定して実行しています。)

Screen Cast

Asciinema によるテスト実行の様子の録画です。

  • デモ動画(リアルタイム・解説なし) : Youtube の解説付きデモ動画の元素材です。 解説付きデモ動画では terminal の様子は早送りした状態になっていますが、こちらはリアルタイム + 編集なしです。
  • 静的なテスト実行部分の抜粋 : 静的なテストの連続実行の様子です。
  • 回帰テスト実行 : (2017-04-06) 最終的にすべてのテストシナリオをまとめて実行(回帰テスト実行)したときの様子です。
    • 58 シナリオ (35 features) を 28 分で実行。
    • 通信テスト(静的なふるまいのテスト)の合間に障害テスト(動的なふるまいのテスト)も入ります。

参考資料

カンファレンス・勉強会等で発表した資料 :

@IT記事 :

ITpro/日経NETWORK :