用例global级资源管理

Posted by Shi Hai's Blog on August 18, 2023

用例资源管理是用例执行中的重要如何一环,各层级的用例有效管理能促进用例的 有效执行、提升资源利用率、优化用例执行时间。

一、业内实践

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

参考文献