用例资源管理是用例执行中的重要如何一环,各层级的用例有效管理能促进用例的 有效执行、提升资源利用率、优化用例执行时间。
一、业内实践
1.1 k8s社区
k8s中的e2e用例是直接通过命令行或者相关的client来创建被测资源,用例执行前在beforeEach()
函数中对用例前置条件判断也是通过调用client进行判断。举例详情
out, err := exec.Command("gcloud", "container", "node-pools", "create",
poolName,
clusterStr,
"--num-nodes=2").CombinedOutput()
func GetReadySchedulableNodes(ctx context.Context, c clientset.Interface) (nodes *v1.NodeList, err error) {
nodes, err = checkWaitListSchedulableNodes(ctx, c)
if err != nil {
return nil, fmt.Errorf("listing schedulable nodes error: %w", err)
}
Filter(nodes, func(node v1.Node) bool {
return IsNodeSchedulable(&node) && isNodeUntainted(&node)
})
if len(nodes.Items) == 0 {
return nil, fmt.Errorf("there are currently no ready, schedulable nodes in the cluster")
}
return nodes, nil
}
k8s自动化工具链体系由一个叫boskos的服务来提供资源管理能力。boskos支持两种资源类型:静态资源、动态资源。
1.2 pytest社区
pytest是一个通用测试框架,所以在被测资源管理上没有太多实践场景。主要是有一些公共机制可以复用,如:共享测试数据、通过itemstash存放共享数据。
1.3 openstack社区
openstack社区用于做功能测试的用例框架是tempest,tempest在执行用例的公共资源都会存放到conf文件中,此conf文件中定义的资源主要是各个服务的api版本、特性开关、镜像、卷等资源。详情
[compute]
#
# From tempest.config
#
# Valid primary image reference to be used in tests. This is a
# required option (string value)
#image_ref = <None>
# Valid secondary image reference to be used in tests. This is a
# required option, but if only one image is available duplicate the
# value of image_ref above (string value)
#image_ref_alt = <None>
...
1.4 其他社区
TBD
#二、管理好测试资源
2.1 测试资源分层管理
TBD
2.2 测试资源的可重用性/幂等性
TBD
2.3 其他
TBD