前言
如果你或你的测试团队正在开展功能测试、安装部署测试、可靠性测试(混沌测试、长稳测试)、性能测试等各项测试活动,往往会面临测试工具链纷繁多样、测试指标采集及数据存储方式分散多变、难以针对产品建立体系化的多维综合测试指标视图等困扰,那么恭喜你,可以跟着本期测试实践,与我们共同体验一体化测试指标可视工程。
为此,本文选用趣链BaaS产品测试工程实践为例进行分享。
具体实践前,先简单剖析我们的测试对象:趣链BaaS平台整体采用微服务架构,具备完善的服务自发现、网关鉴权、通信服务协议和服务通用框架等能力,产品覆盖功能范围广泛,且需要灵活适配实际投产环境中复杂的IT环境,以它为例,对同类具有微服务架构技术特点的产品,具有良好的参考价值。
一体化测试工程设计思想
那么,什么是一体化测试工程呢?
一体化测试工程是一种“集测试环境资源管理、多测试活动执行、多测试类型指标采集、测试输出为一体的”工程服务,旨在为产品测试活动提供一站式服务,整体设计分为测试资源适配层、测试执行层、视图层三层。
测试资源适配层:打通测试执行活动前置条件,实现测试上游管理,包括测试物料管理、测试环境管理、Git flow对接等;
测试执行层:提供接口测试、UI测试、安装部署测试、可靠性测试、长稳测试等多种测试执行能力,更进一步地,可朝着自动探索测试、diff测试、精准测试等智能化方向深入发展;
视图层:提供多维度一站式综合测试指标可视、测试结果管理应用。
经过我们的实践,推荐一体化测试工程建设可朝着“工具化->服务化-> 智能化->中台化”的路线持续演进,具体则需根据团队实际情况、产品发展阶段、实际测试活动等因时制宜。
由于本项工程涉及内容较多,本文重点介绍视图层的核心测试指标可视工程实践要点。
视图层核心实施框架
如上图所示,测试指标可视工程实施分为采集、存储、可视化三大部分;采集部分通过采集器配合自行开发的采集脚本进行自定义测试指标采集;数据用prometheus存储,数据可视化用支持PromQL的grafana实现。
自定义测试指标采集实操示例
在实践过程中,关键点在于定义不同测试类型的量化指标,并通过自定义指标数据采集脚本进行数据采集。以容器运行磁盘占用指标为例:
1)修改node_exporter.service配置,在启动服务中增加自定义指标相关参数
ExecStart=/usr/local/bin/node_exporter --collector.textfile.directory=/var/local/exporter/textfile
2)重启node_exporter服务
systemctl daemon-reload
systemctl restart node_exporter.service
3)编写采集脚本,cd至目录 /var/local/exporter/textfile 下,编写获取指标的脚本,以获取容器磁盘使用量为例
#!/bin/bash
#
# Expose container disk usage metrics, passed as no argument.
#
# Usage: add this to crontab:
#
# */5 * * * * /var/local/exporter/script/container_disk_usage.sh | sponge /var/local/exporter/textfile/container_disk_usage.prom
#
#
# Author: Pongor
source /etc/profile
echo "# HELP container_disk_usage Physical volume free space in MB"
echo "# TYPE container_disk_usage gauge"
# eg: container_disk_usage{id="24ae3475f1d2",name="hostagent"} 175
# unit: MB
# value = image_disk_usage + container_running_disk_usage
docker ps --format="id=\"{{.ID}}\",name=\"{{.Names}}\" {{.Size}}" | awk '{gsub(/\)/,"");{if($NF~"MB"){gsub(/MB$/,"");print "container_disk_usage{"$1"}",($NF)}else if($NF~"GB"){gsub(/GB$/,"");print "container_disk_usage{"$1"}",($NF*1024)}}}'
4)使用crontab -e添加定时任务,实现定时采集数据
*/5 * * * * /bin/bash /exporter/textfile/container_disk_usage.sh > /exporter/textfile/container_disk_usage.prom
5)执行脚本后得到prom文件格式
# HELP container_disk_usage Physical volume free space in bytes
# TYPE container_disk_usage gauge
container_disk_usage{id="24ae3475f1d2",name="hostagent"} 149
6)在prometheus配置文件中添加对应job
- job_name: "安装部署测试"
static_configs:
- targets:
- xx.xx.xx.xx:9100
7)重启prometheus服务
【Tips】
在具体实践中,可以与IT部门配合将已经实现的采集脚本加入到测试资源的镜像模板中,可为后续测试活动提供更多便利。
测试指标可视化
在完成各类测试指标数据定义、数据采集后,可以根据产品自定义设计dashboard以展示不同质量属性的测试结果,也可以根据不同测试执行类型结合团队实际需求,设计自定义数据label展示各类测试结果。以下是趣链BaaS测试团队实践中的部分自定义图表示例。
安装部署测试
长稳测试(容器磁盘占用)
总结
一体化测试指标可视工程的实践旨在实现不同测试类型的测试数据互通,使得团队内产品测试信息高效互通:
*于产品而言,本项工程可提供产品一站式综合测试数据可视服务,提升质量情况可观测性;
*于团队而言,可促进全部测试活动执行过程与结果更为透明;
*于测试而言,可建立更规范统一的测试活动标准。
当然,测试工程可以朝着服务化、智能化、中台化方向持续提升。关于一体化测试工程相关经验和问题,欢迎留言讨论。