首页 > 其他分享 >苦逼测试第四式:测试环境自动化管理,从数据清理到环境初始化全搞定

苦逼测试第四式:测试环境自动化管理,从数据清理到环境初始化全搞定

时间:2025-01-23 14:28:51浏览次数:3  
标签:__ 初始化 搞定 清理 环境 print 测试环境

测试环境是测试工作的基石,但在实际项目中,测试环境的管理往往充满挑战:

  1. 环境初始化困难:部署服务、安装依赖、配置测试数据等操作复杂且耗时。
  2. 环境污染问题:多次测试后,数据库或文件系统可能残留脏数据,影响后续测试结果。
  3. 多个环境切换麻烦:开发、测试和生产环境配置不同,容易因配置错误导致问题。
  4. 手动操作易出错:环境管理依赖人工操作,重复性高且容易遗漏关键步骤。

在这里插入图片描述

本篇文章将展示如何通过脚本化、自动化工具和最佳实践,实现测试环境的自动化管理,从而提升测试效率和可靠性。


1. 实现目标

我们希望实现以下功能:

  1. 测试环境初始化脚本:自动完成环境搭建,包括依赖安装、服务启动和环境变量配置。
  2. 数据清理与重置:通过脚本清理数据库、文件系统等,确保环境一致性。
  3. 环境配置管理:实现多环境自动切换,避免手动修改配置。
  4. 环境健康检查:验证测试环境是否正常运行。

2. 测试环境自动化管理的核心步骤

2.1 环境初始化脚本

服务器环境初始化

我们可以使用 Shell 脚本完成服务的自动安装与启动。例如:

初始化脚本示例:init_env.sh

#!/bin/bash

echo "========== 测试环境初始化开始 =========="

# 安装依赖
echo "1. 安装依赖..."
sudo apt-get update
sudo apt-get install -y python3 python3-pip docker-compose

# 启动服务
echo "2. 启动服务..."
docker-compose up -d

# 配置环境变量
echo "3. 配置环境变量..."
export DATABASE_URL="postgres://user:password@localhost:5432/test_db"
export REDIS_URL="redis://localhost:6379"

echo "========== 测试环境初始化完成 =========="

执行脚本
运行以下命令初始化测试环境:

bash init_env.sh

本地环境初始化

如果测试运行在本地,可以通过 Python 脚本完成依赖安装和配置:

import os
import subprocess

def setup_local_environment():
    print("========== 本地测试环境初始化 ==========")

    # 安装依赖
    print("1. 安装 Python 依赖...")
    subprocess.run(["pip", "install", "-r", "requirements.txt"], check=True)

    # 启动本地服务
    print("2. 启动本地服务...")
    subprocess.run(["docker-compose", "up", "-d"], check=True)

    # 设置环境变量
    print("3. 配置环境变量...")
    os.environ["DATABASE_URL"] = "postgres://user:password@localhost:5432/test_db"
    os.environ["REDIS_URL"] = "redis://localhost:6379"

    print("========== 本地环境初始化完成 ==========")

if __name__ == "__main__":
    setup_local_environment()

2.2 数据清理与重置

清理数据库

通过执行 SQL 脚本或直接使用 Python 脚本清理数据库:

SQL 脚本清理数据库示例:reset_db.sql

TRUNCATE TABLE users RESTART IDENTITY CASCADE;
TRUNCATE TABLE orders RESTART IDENTITY CASCADE;
TRUNCATE TABLE logs RESTART IDENTITY CASCADE;

Python 脚本清理数据库:

import psycopg2

def reset_database():
    print("========== 数据库清理开始 ==========")

    conn = psycopg2.connect(
        dbname="test_db",
        user="user",
        password="password",
        host="localhost",
        port="5432"
    )
    cursor = conn.cursor()

    # 执行 SQL 清理命令
    reset_sql = """
    TRUNCATE TABLE users RESTART IDENTITY CASCADE;
    TRUNCATE TABLE orders RESTART IDENTITY CASCADE;
    TRUNCATE TABLE logs RESTART IDENTITY CASCADE;
    """
    cursor.execute(reset_sql)
    conn.commit()

    cursor.close()
    conn.close()

    print("========== 数据库清理完成 ==========")

if __name__ == "__main__":
    reset_database()

清理文件系统

如果测试过程中有上传文件等操作,可以通过脚本清理对应目录:

import os
import shutil

def reset_file_system():
    print("========== 文件系统清理开始 ==========")

    upload_dir = "/path/to/uploaded/files"
    if os.path.exists(upload_dir):
        shutil.rmtree(upload_dir)  # 删除文件夹及其内容
        os.makedirs(upload_dir)  # 重新创建空文件夹

    print("========== 文件系统清理完成 ==========")

if __name__ == "__main__":
    reset_file_system()

2.3 多环境配置管理

为了方便在开发、测试、生产环境之间切换,我们可以使用配置文件管理环境变量,例如使用 JSON 或 YAML 文件:

配置文件示例:config.json

{
    "development": {
        "DATABASE_URL": "postgres://user:password@localhost:5432/dev_db",
        "REDIS_URL": "redis://localhost:6379"
    },
    "testing": {
        "DATABASE_URL": "postgres://user:password@localhost:5432/test_db",
        "REDIS_URL": "redis://localhost:6379"
    },
    "production": {
        "DATABASE_URL": "postgres://user:password@prod-db:5432/prod_db",
        "REDIS_URL": "redis://prod-redis:6379"
    }
}

Python 脚本加载配置:

import json
import os

def load_config(env):
    with open("config.json", "r") as f:
        config = json.load(f)
    env_config = config.get(env)
    if not env_config:
        raise ValueError(f"未知环境:{env}")
    for key, value in env_config.items():
        os.environ[key] = value
    print(f"已加载 {env} 环境配置")

if __name__ == "__main__":
    load_config("testing")

2.4 环境健康检查

在执行测试前,验证测试环境是否正常运行。例如:检查服务是否启动、数据库是否可访问等。

健康检查脚本示例:

import requests
import psycopg2

def check_service_health():
    print("========== 环境健康检查 ==========")

    # 检查服务是否启动
    try:
        response = requests.get("http://localhost:5000/health")
        if response.status_code == 200:
            print("✅ 服务正常运行")
        else:
            print("❌ 服务异常")
    except Exception as e:
        print(f"❌ 服务检查失败:{e}")

    # 检查数据库连接
    try:
        conn = psycopg2.connect(
            dbname="test_db",
            user="user",
            password="password",
            host="localhost",
            port="5432"
        )
        conn.close()
        print("✅ 数据库连接正常")
    except Exception as e:
        print(f"❌ 数据库连接失败:{e}")

if __name__ == "__main__":
    check_service_health()

3. 效果展示

运行结果

  1. 环境初始化完成

    • 依赖安装、服务启动、环境变量配置完成。
  2. 数据清理完成

    • 数据库和文件系统清理成功,环境干净整洁。
  3. 健康检查通过

    • 服务和数据库状态正常,可以执行测试。
  4. 多环境快速切换

    • 自动加载对应环境的配置,避免手动修改错误。

4. 小结

通过本文的实践,我们从多个维度实现了测试环境的自动化管理,包括初始化、清理、配置管理和健康检查。

亮点

  1. 环境初始化脚本化:通过 Shell 和 Python 脚本,快速搭建测试环境。
  2. 数据清理自动化:确保测试环境的干净与一致性。
  3. 多环境配置管理:支持开发、测试和生产环境的快速切换。
  4. 环境健康检查:在测试前验证环境状态,避免不必要的失败。

通过这些优化,测试工程师可以告别繁琐的环境管理工作,将更多精力投入到测试本身。


下一篇预告:我们将在下一篇文章中探索 日志分析与错误定位的自动化,帮助测试工程师快速排查问题,敬请期待!

标签:__,初始化,搞定,清理,环境,print,测试环境
From: https://blog.csdn.net/weixin_44872675/article/details/145322932

相关文章

  • 一文彻底搞定Harmony NEXT的AI编程助手CodeGenie
    程序员Feri一名12年+的程序员,做过开发带过团队创过业,擅长Java、嵌入式、鸿蒙、人工智能等,专注于程序员成长那点儿事,希望在成长的路上有你相伴!君志所向,一往无前!1.CodeGenieDevEcoAI辅助编程工具(CodeGenie)为开发者提供高效的应用/元服务AI辅助编程工具,支持HarmonyOSN......
  • python安装、vscode安装、conda安装:一文搞定Python的开发环境(史上最全)
    本文原文链接文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送:《尼恩技术圣经+高并发系列PDF》,帮你实现技术自由,完......
  • 【大模型面试】常见问题及答案,一文搞定面试准备!2025年大模型最新最全面试题,助你吊打面
    大模型相关的面试问题通常涉及模型的原理、应用、优化以及面试者对于该领域的理解和经验。以下是一些常见的大模型面试问题以及建议的回答方式:请简述什么是大模型,以及它与传统模型的主要区别是什么?回答:大模型通常指的是参数数量巨大的深度学习模型,如GPT系列。它们与传统模......
  • Jenkins + 微信开发者工具:一键搞定小程序自动化构建与预览!
    微信小程序开发工具目前只支持mac和windows,所以jenkins的slave也只能使用这两种系统,这里我已windows为例。构建批处理仅作了功能实现,更多的判断逻辑自行添加。微信工具提供了客户端和HTTP服务两种方式给外部调用,这里以http方式为例jenkins添加windows端slave修改全局安全......
  • K8s中Java应用OOM崩溃?一招搞定Dump文件抓取与告警!
    背景:公司新项目在进行容器化工作,有开发提出他们的java应用存在OOM的情况,通过配置参数-XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath=/dumps/oom可以将jvm信息dump下来,但是在K8s中出现OOM会直接重启容器,无法查看/获取dump文件。并且dump的文件通常比较大(开发估计2G左......
  • 还在手动操作Linux?脚本轻松搞定(超全)
    系统设置常用镜像源镜像站地址官方给出的地址列表:https://www.debian.org/mirror/list一些国内的ftp.cn.debian.orgmirror.bjtu.edu.cnmirror.lzu.edu.cnmirror.nju.edu.cnmirrors.163.commirrors.bfsu.edu.cnmirrors.hit.edu.......
  • 家长必看!1 小时搞定 RAZ 英文绘本英文提取!
    家长必看!1 小时搞定 RAZ 英文绘本英文提取!是不是还在为孩子英文绘本中的生僻单词发愁?是不是还在为手工敲字翻译绘本内容而耗时费力?今天,我要给大家分享一个超实用的黑科技,让你轻松搞定孩子英文绘本的英文提取工作,只需1小时,就能完成RAZ所有绘本的英文文章提取,简直是家......
  • 详解类与对象——对象的初始化与清理(3)
    关于对象的初始化和清理之前的内容请各位客官移步前两篇文章(^_^)六.初始化列表作用:C++提供了初始化列表语法,用来初始化属性语法:构造函数():属性1(值1),属性2(值2)...{}示例:classPerson{public: 传统方式初始化 //Person(inta,intb,intc){ // m_A=a;......
  • (一篇搞定)如何创建Git本地仓库与远程仓库,并将本地仓库的项目代码推送到远程仓库
    创建Git本地仓库之前,要确保你的电脑上已经安装好了Git,可以在命令窗口进行确认:下载地址:Git第一步:首先我们需要在IDEA中打开我们需要上传的项目代码,并在.gitignore文件中指定所需要忽略的代码 第二步:点击顶部导航栏中VCS---->CreateGitRepository,然后在弹出的窗口中选......
  • 一键共享,轻松搞定办公室令人头疼的难题。
    相信有很多伙伴有和我一样的困惑,在办公室局域网环境下,批量共享文件夹和打印机时遇到了难题,希望能找到一款一键批量共享的软件今天就为大家带来两款工具,能够一键实现文件夹和打印机的批量共享。一键批量共享文件夹可批量设置共享,并编辑共享及安全权限。打开软件,直接勾选需共......