单元测试和集成测试
单元测试
单元测试仅依赖于源代码,是测试代码逻辑是否符合预期的最简单方法。
运行所有的单元测试
make test仅测试指定的package
# 单个package
make test WHAT=./pkg/api
# 多个packages
make test WHAT=./pkg/{api,kubelet} 或者,也可以直接用go test
go test -v k8s.io/kubernetes/pkg/kubelet仅测试指定package的某个测试case
# Runs TestValidatePod in pkg/api/validation with the verbose flag set
make test WHAT=./pkg/api/validation KUBE_GOFLAGS="-v" KUBE_TEST_ARGS='-run ^TestValidatePod$'
# Runs tests that match the regex ValidatePod|ValidateConfigMap in pkg/api/validation
make test WHAT=./pkg/api/validation KUBE_GOFLAGS="-v" KUBE_TEST_ARGS="-run ValidatePod\|ValidateConfigMap$"或者直接用go test
并行测试
并行测试是root out flakes的一种有效方法:
生成测试报告
Benchmark测试
集成测试
Kubernetes集成测试需要安装etcd(只要安装即可,不需要启动),比如
集成测试会在需要的时候自动启动etcd和kubernetes服务,并运行test/integration里面的测试。
运行所有集成测试
指定集成测试用例
End to end (e2e)测试
End to end (e2e) 测试模拟用户行为操作Kubernetes,用来保证Kubernetes服务或集群的行为完全符合设计预期。
在开启e2e测试之前,需要先编译测试文件,并设置KUBERNETES_PROVIDER(默认为gce):
启动cluster,测试,最后停止cluster
仅测试指定的用例
略过测试用例
并行测试
清理测试
有用的-ctl
Fedaration e2e测试
可以用cluster/log-dump.sh <directory>方便的下载相关日志,帮助排查测试中碰到的问题。
Node e2e测试
Node e2e仅测试Kubelet的相关功能,可以在本地或者集群中测试
补充说明
借助kubectl的模版可以方便获取想要的数据,比如查询某个container的镜像的方法为
kubernetes测试工具集test-infra
test-infra是由kubernetes官方开源的测试框架,其中包括了Kubernetes测试工具集和测试结果展示。下图展示了test-infra的架构:

该测试框架主要是真多Google公有云做的,支持kubernetes1.6以上版本的测试。详见https://github.com/kubernetes/test-infra。
参考文档
https://github.com/kubernetes/test-infra
最后更新于