第二章:环境准备——测试环境搭建、数据准备、工具链选型
大家好,我是老赵。这一章咱们聊聊测试开始前最磨人、也最关键的一步——环境准备。
很多人觉得测试就是写脚本、点按钮。其实不然。我见过太多项目,脚本写得漂亮,结果一跑就崩。为什么?环境没搭好,数据没备齐,工具选得不对路。说白了,地基没打牢,楼盖得再高也得塌。
今天我就把这块掰开了讲。你跟着走一遍,以后自己搭环境心里就有谱了。
2.1 测试环境搭建——别让环境坑了你
测试环境,说白了就是被测系统跑的那个窝。窝没搭好,测试结果就没法信。
2.1.1 环境类型与分层
我个人习惯把环境分成四层:
- 开发环境(Dev):开发自己用,代码最新,但最不稳定。
- 测试环境(Test/QA):我们测试的主战场。数据独立,配置可控。
- 预发布环境(Staging):跟生产环境一模一样。我建议所有回归测试都在这跑一遍。
- 生产环境(Prod):线上真实环境。原则上不直接测,除非做冒烟验证。
核心原则:测试环境必须与生产环境保持配置一致。 数据库版本、中间件、操作系统,差一点都不行。我在项目中遇到过测试环境用MySQL 5.7,生产环境是8.0,结果一个SQL在测试环境跑得飞快,上线后直接慢查询——这种坑,踩一次就够了。
2.1.2 环境搭建的自动化思路
手动搭环境?太慢了。我建议用Docker或Ansible这类工具。
举个例子,用Docker Compose一键拉起整套测试环境:
version: '3.8'
services:
app:
image: myapp:test
ports:
- "8080:8080"
depends_on:
- db
- redis
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: test123
redis:
image: redis:6.2
你想想看,一条 docker-compose up -d 命令,整个环境就起来了。省下来的时间,多跑几个用例不香吗?
小技巧:每次跑完测试,记得 docker-compose down -v 清理数据。不然数据污染了,下次测试结果就不准了。
2.2 数据准备——测试的“弹药库”
环境搭好了,没数据也不行。数据准备这块,我踩过的坑比环境还多。
2.2.1 数据分类
| 数据类型 | 说明 | 示例 |
|---|---|---|
| 基础数据 | 系统运行必须的数据 | 用户表、配置表、字典表 |
| 测试数据 | 针对特定用例构造的数据 | 订单状态为“已支付”的数据 |
| 边界数据 | 临界值、异常值 | 金额为0、负数、超长字符串 |
| 大数据量 | 压测用的海量数据 | 100万条订单记录 |
2.2.2 数据准备策略
我常用的三种方式:
- SQL脚本预置:写一批INSERT语句,测试前执行。适合基础数据。
- API造数:调用业务接口生成数据。更贴近真实场景。
- 数据工厂工具:比如Faker库(Python)或Java的Instancio。随机生成大量数据,压测时特别好用。
举个例子,用Python Faker生成用户数据:
from faker import Faker
fake = Faker('zh_CN')
for _ in range(100):
user = {
'name': fake.name(),
'phone': fake.phone_number(),
'email': fake.email(),
'address': fake.address()
}
# 插入数据库或调用API
print(user)
注意:千万不要在生产环境造数据!我曾经见过有人直接在线上库跑造数脚本,结果把生产数据搞乱了。测试数据一定要隔离,用完就删。
2.3 工具链选型——选对工具,事半功倍
工具选型这块,我建议不要盲目追新。适合团队、适合项目,才是最好的。
2.3.1 自动化测试工具
UI自动化,我首推 Selenium。为什么?生态好、社区活跃、支持多语言。我在项目中用它做过电商、金融、ERP系统的UI自动化,基本都能搞定。
但Selenium也有短板——速度慢、依赖浏览器。如果你做的是接口测试,我建议用 Postman 或 JMeter。
2.3.2 性能测试工具
说到性能测试,JMeter 是绕不开的。开源、免费、支持分布式压测。我个人习惯用它做接口压测和数据库压测。
JMeter的基本用法:
# 命令行执行JMeter压测(无GUI模式)
jmeter -n -t test_plan.jmx -l results.jtl -e -o report/
这条命令的意思是:无界面运行测试计划,输出结果到results.jtl,并生成HTML报告。
选型建议:
- UI自动化:Selenium + TestNG/JUnit
- 接口自动化:Postman + Newman 或 RestAssured
- 性能测试:JMeter 或 Gatling
- 移动端:Appium
2.3.3 工具链整合
工具不是孤立的。我习惯把它们串成一条链:
- 代码管理:Git
- 持续集成:Jenkins 或 GitLab CI
- 测试管理:TestRail 或 Xray
- 报告展示:Allure 或 ExtentReports
你想想看,代码提交后自动触发测试,测试结果自动生成报告,报告自动推送到团队群——这才是现代化的测试流程。
2.4 本章知识体系总览
下面这张图,是我画的环境准备核心逻辑。你一看就明白了。
嗯,这张图基本把环境准备的三个核心模块串起来了。你照着这个思路去搭,基本不会出大问题。
我的个人习惯:每次接手新项目,第一件事就是画一张环境拓扑图。把服务器、数据库、中间件、测试工具全标上去。哪里容易出问题,一眼就能看出来。
好了,环境准备这块就讲这么多。记住一句话:测试环境稳了,测试结果才可信;数据准备足了,测试覆盖才全面;工具选对了,测试效率才高。
可可精品资料库