SDN開発エンジニアを目指した活動ブログ

〜SDNなオープンソース製品を実際に使って試してみる〜

SDN Lab環境でのRobot Framework実践活用

最近、オープンソース系ソフトウェアを独自カスタマイズしてプロダクト化する事例が増えている気がします。
これからのSDN/NFV分野では、ホワイトボックス化されたネットワーク機器にオープンソース系ソフトウェアを搭載して仮想アプライアンスとして導入するユースケースが増えていくものと推測できます。
オープンソース系ソフトウェアを独自カスタマイズして実ネットワークに導入する場会、カスタマイズ部分のソフトウェア品質担保が必須条件となるので、ソフトウェア開発フェーズでのテスト網羅性が極めて重要になります。

従来のソフトウェア開発でもユニットテストレベルでのテスト網羅性&自動化は、一般的に着手されておりました。
ただ、これからのクラウドコンピューティング技術革新のスピード感が、どんどん増している状況下においては、プロダクトレベルでのテスト網羅性&自動化を念頭に置く必要があると感じております。

そこで、今回は、Robot Frameworkによるプロダクトテスト自動化に着目してみたいと思います。

▪️Robot Frameworkで何ができる?

テスト自動化を目指したRobot Framework活用事例をSlideShareのスライドにまとめましたので参考にしてください。

www.slideshare.net

▪️OpenStack環境で、Robot Frameworkを試してみる

SDN/NFV分野では、OpenStackが担う役割/分担がどんどん増加していくと思います。
そこで、応用編として、OpenStack環境でのRobot Framework活用によるテスト自動化を試してみます。

(1) テスト環境として、OpenStackを配備

今回ためしてみるTestCaesは、Netronの基本動作になります。
Neutronにて、Network -> SubNet -> Portを新規作成します。
OpenStackテスト環境としては、devstackでも構いません。
(adminユーザのパスワードは、"secrete"としてください。)

(2) Robot Frameworkインストール

まずは、Robot Frameworkパッケージをインストールします。
今回は、Ubuntu Server版で試してみました。

$ sudo pip install robotframework
$ sudo pip install robotframework-requests
$ sudo pip install robotframework-sshlibrary
$ sudo pip install requests

(3) サンプルTestCaseの取得

続いて、Robot Framework用サンプルTestCaseを取得します。

$ git clone https://github.com/ttsubo/robotframework_for_openstack.git
$ cd robotframework_for_openstack

(4) サンプルTestCaseの実行

Neutronにて、Network -> SubNet -> Portを新規作成するTest Caseを実行します。

$ pybot --variable OPENSTACK:127.0.0.1 tests
==============================================================================
Tests :: Test suite for Neutron                                               
==============================================================================
Tests.Networks :: Checking Network created in OpenStack                       
==============================================================================
Check OpenStack Networks :: Checking OpenStack Neutron for known n... | PASS |
------------------------------------------------------------------------------
Create Network :: Create new network in OpenStack                     | PASS |
------------------------------------------------------------------------------
Check Network :: Check Network created in OpenStack                   | PASS |
------------------------------------------------------------------------------
Tests.Networks :: Checking Network created in OpenStack               | PASS |
3 critical tests, 3 passed, 0 failed
3 tests total, 3 passed, 0 failed
==============================================================================
Tests.Subnets :: Checking Subnets created in OpenStack                        
==============================================================================
Check OpenStack Subnets :: Checking OpenStack Neutron for known Su... | PASS |
------------------------------------------------------------------------------
Create New subnet :: Create new subnet in OpenStack                   | PASS |
------------------------------------------------------------------------------
Check New subnet :: Check new subnet created in OpenStack             | PASS |
------------------------------------------------------------------------------
Tests.Subnets :: Checking Subnets created in OpenStack                | PASS |
3 critical tests, 3 passed, 0 failed
3 tests total, 3 passed, 0 failed
==============================================================================
Tests.Ports :: Checking Port created in OpenStack                             
==============================================================================
Check OpenStack ports :: Checking OpenStack Neutron for known ports   | PASS |
------------------------------------------------------------------------------
Create New Port :: Create new port in OpenStack                       | PASS |
------------------------------------------------------------------------------
Check New Port :: Check new subnet created in OpenStack               | PASS |
------------------------------------------------------------------------------
Tests.Ports :: Checking Port created in OpenStack                     | PASS |
3 critical tests, 3 passed, 0 failed
3 tests total, 3 passed, 0 failed
==============================================================================
Tests :: Test suite for Neutron                                       | PASS |
9 critical tests, 9 passed, 0 failed
9 tests total, 9 passed, 0 failed
==============================================================================
Output:  /home/tsubo/devel/robotframework_for_openstack/output.xml
Log:     /home/tsubo/devel/robotframework_for_openstack/log.html
Report:  /home/tsubo/devel/robotframework_for_openstack/report.html

TestCaseを実行したことにより、"test-network"が作成されました。
f:id:ttsubo:20150531180751p:plain

▪️TestCaseの実行結果の振り返り

Robot FrameworkでのTestCaes実行結果は、後日、ログ結果として確認することができます。
今回、サンプル版TestCase実行結果としてのログ結果は、こんな感じです。
まったく手間を掛けずに、Robot Frameworkの基本機能として、詳細なテスト実行履歴を保存できます。

http://ttsubo.github.io/robotframework_for_openstack/log.html

▪️おわりに

Robot Framework活用により、プロダクトレベルのシステム結合テストを完全に自動化することが理解できました。
TestCase作成には、独特なテストコード記述方法を習得する必要がありますが、慣れれば、そんなに苦にならないと思います。