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就会跳过,也就是忽略。--成功: 测试代码执行正常,也获得预期的测试结果。