Skip to content
NetTester用のサンプルテストコード
Ruby Gherkin Perl
Branch: develop
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
features
img
.gitignore
.rubocop.yml
Gemfile
Gemfile.lock
README.md
Rakefile

README.md

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 :

You can’t perform that action at this time.