Openstack測試框架Tempest介紹
Tempest是Openstack的集成測試框架,它的實現基于python的unittest2測試框架和nose測試框架。Tempest對Openstack終端發起一系列API請求,并且對終端的響應進行驗證。Tempest通過config文件來描述整個測試環境,包括compute API端點,Keystone server以及Glance server安裝的鏡像的UUID等信息。以下是Tempest的目錄結構: Tempest的優點 1.Tempest可以自動尋找,執行測試:自動查找當前目錄下所有以[Tt]est開頭的Python源文件,并且按此規則遞歸查找子目錄;所有以[Tt]est開頭的Python源文件里所有以[Tt]est開頭的function和class,以及繼承自unittest.TestCase的class(不需要以[Tt]est開頭)都會被執行。 2.Tempest可以指定文件、模塊、函數進行測試。 3.Tempest可以指定類型進行測試。 4.Tempest可擴展性強,可以方便的在tempest中添加其他測試用例,可以整合其他類型測試例如壓力測試、場景測試等。 Tempest配置 1.git下載Tempest后,在Tempest根目錄下拷貝一份配置文件tempest.conf: cp etc/tempest.conf.sample etc/tempest.conf 2.配置tempest.conf ,主要配置以下幾個屬性: 配置identity (Keystone) 的host 配置Compute (Nova) 的username、password、 tenant_name和alt_username、alt_password、alt_tenant_name(均不是管理員用戶。配置兩個不同的用戶,測試普通用戶不能更改和刪除其他用戶的image、server等) 配置Compute (Nova) 的image_ref和image_ref_alt(配置兩個不同的image ID) 配置Image (Glance) 的ssh user 配置compute-admin和identity-admin的管理員用戶名、密碼和tenant名。
使用Tempest進行測試 執行整個tempest測試框架:nosetests tempest 指定文件測試,例如:nosetests tempest.api.compute.flavors.test_flavors.py 指定模塊進行測試,例如:nosetests tempest.api.compute.flavors.test_flavors.py:FlavorsTestJSON 指定函數進行測試,例如:nosetests tempest.api.compute.flavors.test_flavors.py:FlavorsTestJSON.test_list_flavors 指定類型進行測試,例如 :tempest –s 只執行smoke類型測試 指定特定的attr的用例進行測試,例如:nosetests –a type=’gate’ 只執行attr為type=’gate’的測試 API測試用例 tempest.api是openstack api測試用例集。以函數test_list_flavors的執行舉例,以下是該用例執行時各類間的繼承和調用: FlavorTestJSON繼承自BaseComputeTest。Clients是負責管理包括FlavorsClient在內的所有的openstack clients的,同時調用TempestConfig來讀取配置文件。FlavorsClient繼承自RestClient,封裝了訪問openstack api的接口。FlavorsTestJSON通過FlavorsClient來實現對openstack api的訪問。 測試結果舉例: 對Tempest的擴展 1.對tempest中的測試用例進行了擴展,添加了產品自研模塊和功能的測試用例。 2. 對測試機制進行完善,并且在tempest中加入異常分支檢查。 3.在tempest中植入其他測試工具如burnintest。 3. 在tempest基礎上做了二次開發,開發了穩定性測試工具,測試系統在openstack時間有負載的情況下的可靠性和可用性。
使用Tempest進行測試
執行整個tempest測試框架:nosetests tempest
指定文件測試,例如:nosetests tempest.api.compute.flavors.test_flavors.py
指定模塊進行測試,例如:nosetests tempest.api.compute.flavors.test_flavors.py:FlavorsTestJSON
指定函數進行測試,例如:nosetests tempest.api.compute.flavors.test_flavors.py:FlavorsTestJSON.test_list_flavors
指定類型進行測試,例如 :tempest –s 只執行smoke類型測試
指定特定的attr的用例進行測試,例如:nosetests –a type=’gate’ 只執行attr為type=’gate’的測試
API測試用例
tempest.api是openstack api測試用例集。以函數test_list_flavors的執行舉例,以下是該用例執行時各類間的繼承和調用:
FlavorTestJSON繼承自BaseComputeTest。Clients是負責管理包括FlavorsClient在內的所有的openstack clients的,同時調用TempestConfig來讀取配置文件。FlavorsClient繼承自RestClient,封裝了訪問openstack api的接口。FlavorsTestJSON通過FlavorsClient來實現對openstack api的訪問。
測試結果舉例:
對Tempest的擴展
1.對tempest中的測試用例進行了擴展,添加了產品自研模塊和功能的測試用例。
2. 對測試機制進行完善,并且在tempest中加入異常分支檢查。
3.在tempest中植入其他測試工具如burnintest。
3. 在tempest基礎上做了二次開發,開發了穩定性測試工具,測試系統在openstack時間有負載的情況下的可靠性和可用性。
posted on 2014-03-21 13:09 順其自然EVO 閱讀(3314) 評論(0) 編輯 收藏 所屬分類: 測試學習專欄