OpenStack中的测试分类可以分为以下的类型:
1) 单元测试 (small test / unit tests)
- 单元测试存放在每个组件的代码库中, 比如 nova的单元测试都放在 nova/tests 目录
- 单元测试主要是针对与源码级别的测试. 测试的是函数级别的代码
- 需要数据或者模拟环境? 使用Mock进行模拟
- unit test一般只针对于public级别的函数
2) 功能测试(Medium Tests)
- 功能测试也存放在每个组件的代码库中, 比如 nova的单元测试都放在 nova/tests 目录
- 和单元测试相比, 功能测试要基于真实的的依赖环境 (数据库, 文件IO系统, Hypvervisor等等)
3) 集成测试 (Large Tests)
集成测试工具 -- SmokeStack (基于UI的集成测试工具)
https://wiki.openstack.org/wiki/Smokestack
基于Ruby的集成测试工具
https://github.com/dprince/torpedo
集成测试工具 -- Tempest
http://docs.openstack.org/developer/tempest/
- 集成测试的代码放在独立的项目比如 tempest 中
- 集成测试要运行在一个完整的部署环境中, 比如一个完整的部署了OpenStack的环境
- 集成测试专注在系统功能, 完整性, 以及和真实硬件环境的集成
- 集成测试代码中一般不会使用fake / mock
4) 界面测试 (UI tests)
社区有一个项目, 是针对于Horizon的界面进行自动化测试的
https://wiki.openstack.org/wiki/Horizon/Testing/UI
- 这个测试工具使用了selenium 对Horizon进行了集成测试
- 在运行测试前, 要先启动OpenStack Server, 并确保Horizon运转正常.
5) 性能测试 (stress tests / performance tests)
社区有一个项目Rally, 是针对于性能测试的
https://wiki.openstack.org/wiki/Rally
- Rally 会自动部署一个OpenStack的环境, 并运行tempest来验证环境
- Rally会模拟生成用户负载, 来观测性能测试问题
- Rally通过Ceilomter来收集 Hypervisor 和VM的数据, 并放在Rally的数据库中
- Rally 最终会生成 性能测试报告
6) 国际化测试 (globalization tests)
https://launchpad.net/openstack-i18n
- Globalization 会测试文字翻译是否可以正常切换, 并且语法正确
- Globalization 要确保文字是正确编码, 并且符合不同语言的阅读习惯 (比如阿拉伯语是从右向左的阅读习惯)
7) 升级测试 (upgrade tests)
使用DevStack, 对OpenStack进行升级测试
https://wiki.openstack.org/wiki/Grenade