Tempest是一個旨在爲OpenStack 提供集成功能測試的開源項目,包含了OpenStack基本組件(nova,keystone,glance,neutron,cinder等)的測試用例,同時支持json,xml兩種rest api格式類型的測試,以及cli測試。它是基於unittest2和nose測試框架實現的,靈活且易於擴展及維護,使得OpenStack相關測試效率獲得大幅提高。python
Tempest目前最新版本號爲v19.0.0,它支持對OpenStack的Rocky,Queens,Pike 和Ocata版本的測試,在剛發佈的OpenStack Rocky版本中,它的功能變動以下:linux
Tempest 項目會被來自不一樣公司的社區成員更新:修改bug,完善功能,增長對OpenStack 最新功能的測試用例等等。它的大體目錄結構以下:git
├──tempest
├──api #api的測試集。
├──compute #os nova 相關測試
├──identity #os keystone 相關測試
├──network #osnetwork相關測試
├──image. #os glance 相關測試
├──volume #os cinder 相關測試
├──object_storage #os swift 相關測試
├──cmd #openstack 命令行工具測試集。
├──common #一些公共的工具類和函數。
├──scenario #對openstack 的經常使用場景進行測試,包括基本的vm啓動等。
├──services #tempest 本身實現的openstack api client。json
它的代碼結構如圖所示:swift
在準備Tempest測試環境以前,須要先準備好被測試的OpenStack(OS)環境。api
安裝
git clone git://git.openstack.org/openstack/tempest
cd tempest
pip install -r requirements.txt -c test-requirements
python tempest/setup.py install 網絡
初始化
肯定測試環境目錄(/opt),在/opt下執行
tempest init tempest-test
會生成tempest-test 測試文件夾,文件夾結構以下:
├── etc
│ ├── tempest.conf
│ └── tempest.conf.sample
├── logs
└── tempest_locksession
修改配置文件tempest-test/etc/tempest.conf
Tempest.conf主要分爲如下session,它們要和測試的OS環境匹配。
[auth]:os環境admin用戶登陸信息。
[identity]: 主要包括user/tenant 相關的權限認證測試。
[compute]: 主要包括os compute api/cli相關測試。併發
[image]:主要包括os鏡像api/cli 相關測試。
[network]: 主要包括os網絡api/cli 相關測試。
[volume]: 主要包括os cinder 存儲。app
執行測試
Tempest 會查找目錄下全部以(T)test開頭的python源文件,而且按此規則遞歸查找子目錄,(T)test開頭的python源文件中全部以(T)test開頭的function(測試用例)都會被執行;它能夠指定文件,模塊,函數進行測試,也能夠指定類型進行測試。
執行全部測試
tempest run
併發測試
tempest run --parallel
執行某一函數測試用例
tempest run tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_reboot_non_existent_server
執行某一文件測試用例
tempest run tempest.api.compute.servers.test_servers_negative
測試結果Tempest的測試結果有四種,測試錯誤(error),測試失敗(failure),跳過(skip),成功(success)。--測試錯誤:能夠理解成測試代碼或者配置環境有問題,在執行時報錯。--測試失敗:能夠理解測試代碼執行正常,但沒有獲得預期的測試結果。--跳過:也能夠理解爲測試忽略,好比某個測試只想在window下才運行,這樣在linux就會跳過,也就是忽略。--成功: 測試代碼執行正常,也獲得預期的測試結果。