尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

测试环境搭建实战:Redis、MySQL、禅道三件套安装与联动

测试环境搭建实战:Redis、MySQL、禅道三件套安装与联动 我刚到公司的时候做过一阵子测试环境搭建很多新同事都在同一个问题上卡住面试题里 Redis、MySQL、禅道都背过但真到了工位上Leader 丢来一台电脑说“把测试环境搭一下”人直接愣住。登录态放在 Redis业务数据存 MySQLBug 和用例管在禅道。这三样东西不是开发专属而是测试人员每天都会接触的基础设施。你不必像 DBA 那样精通 MySQL 调优也不一定要深入 Redis 源码但你至少要在自己的电脑上把这三个工具装好、跑起来、验证通并且知道它们在测试工作中扮演什么角色。这篇文章要解决的就是这个问题从零开始手把手带你完成 Redis、MySQL、禅道的安装部署并且用一个登录场景把三者串起来。读完你就能独立搭出一套本地测试环境也能理解测试数据是怎么流动的。1. 为什么软件测试人员要学这三件套很多测试新人有一个误区觉得安装软件是运维或者开发的事自己只需要会点按钮、写用例、提 Bug 就行了。但真实项目里测试人员经常需要自己准备测试数据、验证缓存逻辑、排查环境问题。举几个实际场景。你测一个登录模块发现用户第一次登录很慢第二次就快了。产品说这是因为加了缓存那你需要验证缓存到底生效没有。怎么验证你得连上 Redis看看里面有没有对应的 keyTTL 是多少过期后是否回源数据库。如果不会 Redis你只能干瞪眼。你负责订单模块的测试需要构造一批测试订单。简单的方式是直接连 MySQL往订单表里插入几条数据然后去页面验证列表、详情、状态流转。如果不会 MySQL你得求开发帮你造数据效率很低。项目里的缺陷管理、测试用例、需求跟踪都在禅道上。提 Bug 不是简单的填个标题你需要知道缺陷的状态流转、严重级别、关联用例这些基础操作。学会了禅道你的测试工作才算进入了正规流程。所以结论很明确Redis、MySQL、禅道是测试人员的“环境三件套”。装好它们你才能独立做测试验证而不是处处求人。2. 三件套的核心概念与在测试中的位置在动手安装之前先用最直白的话理解一下这三个东西分别是什么否则装完也不知道自己在干什么。2.1 Redis内存里的“临时数据仓库”Redis 是一个基于内存的键值数据库读写速度非常快所以经常被用来做缓存、会话存储、分布式锁等。被测系统里Redis 最常见的两个使用场景登录令牌存储用户登录成功后后端生成一个 token存到 Redis 里并设置过期时间。用户每次请求都带着 token后端先查 Redis查到了就放行查不到就要求重新登录。热点数据缓存商品信息、配置信息这种读多写少的数据第一次从数据库查出后放进 Redis后续请求直接走缓存减轻数据库压力。你在简历上写“熟悉 Redis”其实面试官考察的不只是命令而是你是否理解缓存穿透、缓存击穿、缓存雪崩这些异常场景。要理解它们至少得先把 Redis 跑起来亲手操作一遍。2.2 MySQL数据持久化的大本营MySQL 是关系型数据库用来持久化存储业务数据。用户表、订单表、商品表、日志表绝大部分数据最终都落在 MySQL 里。测试人员跟 MySQL 打交道的方式主要是三种构造测试数据用 INSERT 语句往表里插入数据方便测试各种业务场景。验证数据结果执行完某个操作后用 SELECT 语句确认数据是否写入正确、状态是否更新。清理测试数据测试完成后把产生的脏数据删掉避免影响后续测试。你不需要掌握复杂的索引优化和主从复制但增删改查、条件查询、排序、连接查询这些基础 SQL 必须熟练。这些能力在面试中也是必考的。2.3 禅道测试流程管理平台禅道是一款开源的项目管理软件在国内软件公司中使用率很高。它覆盖了产品管理、项目管理、测试管理三个核心领域。对测试人员来说禅道用得最多的功能是测试用例管理编写、维护、组织用例。缺陷管理提交 Bug、跟踪缺陷状态、统计缺陷趋势。测试任务把用例关联到测试单记录执行结果。一个规范的测试流程通常是在禅道里建测试用例执行用例发现问题就提交 BugBug 由开发修复后回归验证验证通过后关闭。全程留痕可追溯。2.4 三者在一套系统中的关系用一句话概括禅道管的是测试工作流Redis 和 MySQL 管的是被测系统的数据存储。从技术架构看一个典型系统的数据链路是客户端请求 → 应用服务 → 先查 Redis缓存 ↓ 未命中 查 MySQL数据库从测试工作流看编写测试用例禅道 → 执行测试 → 发现缺陷 → 提交 Bug禅道 → 开发修复 → 回归验证工具定位测试人员关注点Redis内存缓存/会话存储缓存是否生效、过期策略、数据类型、缓存一致性MySQL关系型数据库数据准备、数据验证、数据清理、SQL 编写禅道项目管理/测试管理用例管理、缺陷提交、流程跟踪理解了这三者的定位下面开始动手安装。3. 环境准备与下载原则安装之前先明确几个通用原则避免走弯路。3.1 操作系统选择本文会同时覆盖 Windows 和 Linux 的安装方式因为这两类环境在实际工作中都会遇到。本地练习Windows 最方便下载即用。测试服务器部署LinuxUbuntu/CentOS最常见生产环境基本都是 Linux。如果你用的是 MacRedi、MySQL 的安装方式跟 Linux 类似可以参照 Linux 部分。3.2 版本选择原则版本选择记住两条优先选择官方最新稳定版不要追最新的 beta 版。如果项目有明确指定的版本以项目要求为准。细节安装工具时会遇到版本号变化本文重点演示通用流程不锁定具体版本。3.3 目录规划建议在本地磁盘建一个专门的测试环境目录把下载的安装包集中放好比如D:\dev-env\ ├── redis\ ├── mysql\ └── zentao\目录清晰的好处是环境出问题时容易定位和清理。不要把安装包下载到桌面或者下载文件夹里时间一长文件就找不到了。4. Redis 安装、启动与验证Redis 官方并不直接提供 Windows 安装包Windows 下通常使用社区维护的版本。Linux 下则直接用系统包管理器安装即可。4.1 Windows 安装 Redis第一步从 Redis 官方或可信的社区渠道下载 Windows 版本压缩包。第二步解压到D:\dev-env\redis解压后目录内容大致如下redis-server.exe redis-cli.exe redis.windows.conf redis.windows-service.conf第三步打开命令提示符进入 Redis 目录启动服务cd D:\dev-env\redis redis-server.exe redis.windows.conf看到类似下面的输出说明启动成功[12608] 01 Jan 00:00:00.000 * Ready to accept connections tcp注意这个窗口不要关闭关闭窗口就相当于关闭 Redis 服务。第四步另开一个命令提示符窗口验证连接cd D:\dev-env\redis redis-cli ping如果返回PONG说明 Redis 已就绪。4.2 Linux 安装 Redis在 Ubuntu/Debian 系系统中sudo apt update sudo apt install redis-server在 CentOS/RHEL 系系统中sudo yum install redis启动服务并设置开机自启sudo systemctl start redis-server sudo systemctl enable redis-server验证是否启动redis-cli ping同样会返回PONG。4.3 Redis 常用命令与测试验证安装成功后测试人员最常用的命令有哪些我整理了一张表命令作用测试场景SET key value设置一个键值模拟登录后写入 tokenGET key获取键对应的值验证缓存是否已写入EXPIRE key seconds设置过期时间验证缓存是否按预期过期TTL key查看剩余过期时间验证过期策略DEL key删除键模拟缓存清理、验证降级逻辑FLUSHDB清空当前库所有数据测试前清理缓存数据TYPE key查看数据类型确认数据存储类型实际测试一下缓存过期逻辑redis-cli进入交互模式后依次执行SET user:1001 zhangsan EXPIRE user:1001 60 TTL user:1001TTL会返回剩余秒数。等待 60 秒后再次执行GET user:1001返回(nil)说明键已过期。这个简单的操作就是验证“登录态过期”的底层逻辑。4.4 Redis 安装后必须确认的三件事端口号默认是 6379确认没有被占用。本地练习时不需要配置密码但如果部署到服务器必须设置 requirepass否则会暴露在公网被爆破。如果需要后台运行Linux 下可以修改配置文件把 daemonize 设为 yes或者使用 systemd 管理。5. MySQL 安装、建库与验证MySQL 是数据持久化的核心测试人员必须掌握安装和基本的 SQL 操作。5.1 Windows 安装 MySQL推荐使用官方 MySQL Installer安装过程比较友好。第一步从 MySQL 官网下载 MySQL Installer。第二步运行安装程序选择安装类型。测试环境建议选择 “Server only”只安装数据库服务端避免安装一堆用不到的功能。第三步在配置阶段注意几个关键项端口默认 3306。认证方式如果本地练习建议选择 “Use Legacy Authentication”兼容旧版客户端否则用默认项也可以。Root 密码设置一个你自己记得住的强密码比如Root123456并妥善记录。第四步安装完成后在 Windows 服务中找到 MySQL 服务确认状态为“正在运行”。也可以手动启动net start mysql5.2 Linux 安装 MySQLUbuntu/Debian 系sudo apt update sudo apt install mysql-serverCentOS/RHEL 系sudo yum install mysql-server启动服务sudo systemctl start mysqld sudo systemctl enable mysqldUbuntu 安装完成后root 默认使用 auth_socket 认证直接运行sudo mysql就能进入 MySQL 客户端无需密码。CentOS 安装后初始密码会写入日志文件sudo grep temporary password /var/log/mysqld.log拿到初始密码后登录并修改密码。5.3 MySQL 安全初始化在 Linux 上MySQL 安装完成后通常建议运行安全初始化脚本sudo mysql_secure_installation这个脚本会引导你设置密码强度、移除匿名用户、禁止 root 远程登录、删除测试数据库。测试环境跟着提示选 Y 即可。5.4 建库、建表、创建测试账号进入 MySQL 客户端mysql -u root -p输入密码后执行下面的 SQL 脚本创建一个测试库和测试账号-- 创建测试数据库指定 utf8mb4 字符集 CREATE DATABASE IF NOT EXISTS test_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- 创建测试账号密码按需修改 CREATE USER IF NOT EXISTS testerlocalhost IDENTIFIED BY Test123456; -- 授予 tester 对 test_db 的增删改查权限 GRANT SELECT, INSERT, UPDATE, DELETE ON test_db.* TO testerlocalhost; -- 刷新权限 FLUSH PRIVILEGES; -- 切换到测试库 USE test_db; -- 创建一张用户表模拟业务数据 CREATE TABLE sys_user ( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) NOT NULL, password VARCHAR(255) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- 插入一条测试数据 INSERT INTO sys_user(username, password) VALUES (zhangsan, 123456); -- 查询验证 SELECT * FROM sys_user;这里要特别提醒在实际项目中不要在测试库之外随意创建账号和授权。即使是测试环境也要遵循最小权限原则只给必要的权限。5.5 验证 MySQL 连接用命令行验证刚才创建的测试账号mysql -u tester -pTest123456 test_db登录成功后执行SHOW TABLES;能看到sys_user表说明 test 账号可以正常连接测试库。5.6 字符集问题如果插入中文后查询乱码大概率是字符集设置不正确。建议在建库时统一使用utf8mb4并在连接参数中指定charsetutf8mb4。在 MySQL 8.0 中默认字符集已经是 utf8mb4但历史版本或手动创建的库仍可能使用 latin1需要单独确认。6. 禅道安装、启动与初始配置禅道安装有几种方式一键安装包、源码安装、Docker 安装。对测试人员来说一键安装包最省心它内部已经集成了 Apache、MySQL、PHP不需要你额外配置 Web 环境。6.1 下载一键安装包从禅道官网下载对应操作系统的一键安装包。Windows 和 Linux 分别下载对应版本。注意禅道一键包自带一套 MySQL这是给禅道自己用的和你第 5 节装的 MySQL 是两码事。不要把两者搞混。6.2 Windows 部署禅道第一步解压安装包到D:\dev-env\zentao。第二步进入解压目录找到start.exe双击运行。程序会自动检测端口占用情况并启动 Apache 和 MySQL 服务。第三步启动成功后浏览器访问http://127.0.0.1如果默认 80 端口被占用可以修改配置文件更换端口比如改成 8081。修改方式在禅道安装目录中找到 Apache 的配置文件将Listen 80改为Listen 8081然后重启禅道。6.3 Linux 部署禅道下载 Linux 一键安装包后上传到服务器执行cd /opt tar -zxvf zbox-*.tar.gz解压后会生成zbox目录启动禅道cd /opt/zbox ./zbox start启动后浏览器访问http://服务器IP同样如果默认端口被占用可以修改配置文件后重启。6.4 浏览器访问与初始化第一次访问会进入初始化引导按提示操作即可设置管理员账号和密码或者使用默认 admin 账号按页面提示设置。选择部署模式测试环境一般选“开源版”。填写系统名称、公司信息等基础配置。初始化完成后进入禅道主界面。6.5 测试人员在禅道中的核心操作禅道的主导航栏中有“产品”、“项目”、“测试”等模块。测试人员最常用的路径进入“测试”模块点击“用例”可以新建测试用例。点击“Bug”可以提交缺陷。执行测试单时可以将用例关联到测试单填写执行结果。提 Bug 时注意三点标题要清晰能一句话说明问题。步骤要完整让开发能复现。预期结果和实际结果要分开写不要混在一起。7. 三件套联动一个登录场景的测试模拟工具都装好了现在把它们串起来模拟一个最经典的被测场景用户登录。7.1 场景逻辑假设被测系统的登录逻辑是这样的用户提交用户名和密码。后端校验 MySQL 中的用户表。校验通过后生成一个 token写入 Redis并设置 60 秒过期时间。用户后续请求带着 token后端先查 RedisRedis 有值则放行Redis 没有值则要求重新登录。测试人员要验证的点包括登录成功后Redis 里是否生成了 token60 秒后token 是否自动失效手动删除 Redis 中的 token 后再次访问是否被拦截7.2 准备测试环境确认 Redis 和 MySQL 都在运行。在 MySQL 的test_db库中执行前面建好的sys_user表并插入一条测试用户INSERT INTO sys_user(username, password) VALUES (zhangsan, 123456);7.3 用 Python 模拟“先查缓存再查数据库”下面这段代码模拟了倒置的缓存访问逻辑。实际被测系统是 Java 或 Go 写的但原理相同测试人员用 Python 模拟足够看清流程。# 文件路径demo/login_flow.py # 演示被测系统中常见的“缓存优先”读取逻辑 import redis import pymysql CACHE_KEY login_token:1001 # 连接 Redis cache redis.Redis( host127.0.0.1, port6379, db0, decode_responsesTrue ) # 第一步先查 Redis看 token 是否存在 token cache.get(CACHE_KEY) if token: print(命中缓存token , token) else: print(缓存未命中查询 MySQL 用户信息) # 第二步连接 MySQL查用户 conn pymysql.connect( host127.0.0.1, port3306, usertester, passwordTest123456, databasetest_db, charsetutf8mb4 ) cursor conn.cursor() cursor.execute( SELECT id, username FROM sys_user WHERE id %s, (1001,) ) row cursor.fetchone() cursor.close() conn.close() if row: user_id, username row token ftoken_{user_id}_{username} # 第三步模拟登录成功后写入 Redis60 秒过期 cache.set(CACHE_KEY, token, ex60) print(从 MySQL 查询成功已回填 Redistoken , token) else: print(用户不存在登录失败)运行前先安装依赖pip install redis pymysql运行python demo/login_flow.py第一次运行因为 Redis 里没有 token程序会查 MySQL 并回填缓存。第二次运行直接命中缓存不再查询数据库。7.4 测试验证点这个模拟脚本对应了三个明确的测试用例测试用例操作预期结果验证登录后写入缓存首次运行脚本MySQL 被查询Redis 写入 token验证缓存命中再次运行脚本直接读 Redis不再查询 MySQL验证缓存过期等 60 秒再运行或手动 DEL 后运行重新查询 MySQL再写一次 Redis用手动操作来验证“删除缓存后是否回源”redis-cli DEL login_token:1001然后再次运行 Python 脚本会发现又走了 MySQL 查询流程。这个测试结论和你测真实系统的缓存逻辑是完全一致的。7.5 发现缺陷后在禅道中提交 Bug假设你在执行第 4 步时发现Redis 中的 token 明明删了但页面仍然能访问。这是一个典型的“缓存清理失效”缺陷。此时应该去禅道提 Bug所属产品选择当前项目。模块登录模块。标题删除 Redis token 后旧 token 仍能访问接口。严重程度S2严重。优先级P2。复现步骤写清楚“先登录获取 token再手动删除 Redis 键最后携带旧 token 请求接口”。预期结果携带已删除的 token 访问接口应该返回 401 或要求重新登录。实际结果接口返回 200token 仍然有效。这个操作流程就是测试人员天天要做的事。8. 常见问题与排查思路安装过程中一定会遇到各种问题。我把最常踩的坑和排查方法整理成了表格建议直接收藏。问题现象可能原因排查方式解决方案Redis 启动失败端口 6379 被占用执行netstat -ano | findstr 6379或lsof -i:6379关闭占用进程或修改 Redis 端口redis-cli 连接被拒Redis 服务未启动检查是否有 redis-server 进程启动 Redis 服务后重试MySQL 安装后无法启动端口 3306 被占用检查端口占用情况释放端口或修改 MySQL 端口MySQL root 密码忘记密码记录丢失使用 skip-grant-tables 方式重置参考官方文档重置密码生产环境谨慎操作禅道启动后页面打不开80 端口被 IIS 或其他服务占用查看启动日志确认端口监听状态修改禅道端口为 8081 等禅道启动后显示 MySQL 连接失败禅道自带 MySQL 未启动查看 zbox 启动日志手动启动 MySQL 服务或检查端口冲突中文字符乱码字符集设置不一致检查数据库、表、连接字符集统一使用 utf8mb4防火墙拦截端口未放行检查防火墙规则测试环境可先关闭防火墙生产环境按规则放行常见问题中重点提醒一句如果是在服务器上安装禅道一定要确认安全组和防火墙放行了对应端口否则本地死活访问不通但服务本身是正常的。9. 最佳实践与工程建议工具装好只是第一步更重要的是一开始就养成好习惯。这里分享几条对测试人员最实用的建议。9.1 环境隔离不要在开发环境或生产环境上随便装工具做测试。最好用本地虚拟机或 Docker 搭一套独立的测试环境。如果条件允许优先推荐 Docker Compose 方式安装 Redis 和 MySQL# 文件路径docker-compose.yml version: 3 services: redis: image: redis:7 container_name: local-redis ports: - 6379:6379 command: [redis-server, --appendonly, yes] mysql: image: mysql:8 container_name: local-mysql ports: - 3306:3306 environment: MYSQL_ROOT_PASSWORD: Root123456 MYSQL_DATABASE: test_db volumes: - ./mysql-data:/var/lib/mysql一键启动docker-compose up -d这种方式的好处是环境随时可以销毁重建不怕把本机搞乱。9.2 密码与权限最小化测试环境也尽量不要使用 root 远程连接数据库。给测试人员单独创建账号只授予测试库的权限。密码不要写死在脚本里建议使用环境变量export MYSQL_TEST_PASSWORDTest123456在代码中读取环境变量import os password os.environ.get(MYSQL_TEST_PASSWORD)9.3 学会看日志遇到环境问题第一反应不是重装而是看日志。Redis 日志启动时输出的窗口信息或logfile配置指定的文件。MySQL 日志/var/log/mysql/error.logUbuntu或/var/log/mysqld.logCentOS。禅道日志zbox目录下的日志文件。看懂日志里的报错信息比到处搜答案更高效。9.4 测试数据管理构造测试数据时加上明显的标记比如用户名带test_前缀。测试完成后及时清理脏数据。重要测试数据要备份不要随意 DELETE 和 UPDATE。涉及生产环境数据操作必须有审批流程先在测试环境验证。9.5 服务管理Windows 环境Redis 和 MySQL 建议注册为系统服务避免每次开机手动启动。Linux 环境统一使用 systemd 管理服务并设置开机自启sudo systemctl enable redis-server sudo systemctl enable mysql禅道如果没有注册为服务可以在启动脚本中配置开机自启但考虑到禅道是测试管理工具一般服务器部署一次后长期运行即可。10. 总结与后续学习方向到这你已经完成了 Redis、MySQL、禅道的安装、验证和联动使用。回顾一下本次环境的完整流程安装并启动 Redis用 redis-cli 完成了缓存写入、过期和删除操作。安装并启动 MySQL完成建库、建表、创建账号并插入测试数据。部署禅道完成初始化并理解了测试人员在禅道中提 Bug 的流程。用一段 Python 脚本模拟了登录场景实际体验了“先查 Redis、未命中再查 MySQL”的缓存流程。这套环境是你测试生涯的基础设施。建议花两天时间把下面的内容练熟Redis 的五种基本数据类型String、Hash、List、Set、ZSet以及对应的测试场景。MySQL 的子查询、连接查询、事务和索引的基本使用。禅道从用例创建到缺陷关闭的完整流程。一开始不用追求精通先把流程跑通。环境能搭起来命令能敲通Bug 能提对面试和工作的基本功就稳了。遇到报错不要慌优先看日志再针对关键词搜索解决方案。下次再看到“熟悉 Redis、MySQL、禅道”这类招聘要求你就知道这三样东西不是简历上唬人的名词而是实实在在每天要用的工具。
返回列表