第一部分:基础技能 - 构建可信赖的测试环境
根本问题: 如何确保我的测试环境是干净、正确、且可重复的? 核心原则: 任何测试的有效性都建立在一个稳定且配置正确的环境之上。以下命令是构建和维护这种环境的基石。
A. 文件系统:管理测试资产
这是我们的数字化工作台,存放着代码、数据、日志和脚本。
- 导航与检视 (我们在哪?这里有什么?)
pwd(Print Working Directory): 回答“我现在在哪里?”这个问题,获取当前位置的绝对路径。ls -lah(List): 回答“这里有什么?”。-l(长格式) 看权限和所有者,-a(所有) 看隐藏文件,-h(人类可读) 看文件大小。这是检查环境状态的第一步。cd(Change Directory): 切换工作空间,去往你需要操作的地方。
- 创建与组织 (搭建工作区)
mkdir -p <路径>: 创建目录。-p选项能一次性创建多层嵌套的目录,非常适合组织测试结果,如mkdir -p test_results/run_20250927。touch <文件名>: 创建一个空文件,常用于脚本中创建锁文件或日志占位符。
- 操作与管理 (移动和清理资产)
cp -r <源> <目标>: 复制文件或目录。-r用于递归复制整个目录,是准备测试数据的常用操作。mv <源> <目标>: 移动或重命名文件/目录。rm -rf <文件/目录>: 删除文件或目录。-r递归删除,-f强制执行。这是一个高风险操作,使用前请三思。
- 精确定位 (大海捞针)
find <路径> -name "<模式>": 在指定路径下根据名称、类型、修改时间等多种条件查找文件。- 测试场景:
find /var/log -name "*.log" -mtime -1-> 查找过去24小时内被修改过的所有日志文件,是排查近期问题的利器。
- 测试场景:
B. 权限管理:控制访问权限
根本问题: 谁能对这个文件做什么?(读、写、执行) 这是导致自动化脚本失败最常见也最容易被忽略的原因之一。
chmod(Change Mode): 修改权限。- 场景: 自动化脚本无法执行? ->
chmod +x my_script.sh(为脚本添加执行权限)。 - 两种模式:
- 符号模式 (易读):
u+x(为所有者增加执行权限),g-w(为用户组移除写权限)。 - 八进制模式 (高效):
755,644。755通常用于目录和脚本,644用于普通文件。
- 符号模式 (易读):
- 场景: 自动化脚本无法执行? ->
chown(Change Owner): 更改文件/目录的所有者和所属组。- 场景: 被测应用无法写入日志? -> 检查日志目录的所有者是否为运行该应用的用户,如果不是,使用
chown -R app_user:app_group /var/log/app修正。
- 场景: 被测应用无法写入日志? -> 检查日志目录的所有者是否为运行该应用的用户,如果不是,使用
第二部分:核心技能 - 从数据中提取洞见
根本问题: 系统出错了,日志里记录了什么?海量日志中,哪一句是关键信息? 核心原则: 日志是系统行为的唯一事实来源。我们的任务不是“读”日志,而是“审问”日志,从中压榨出有价值的信息。
A. 查看日志:初步侦查
cat: 一次性显示整个文件(仅适用于小文件)。less: 查看大文件的正确方式。 交互式查看,支持搜索 (/) 和翻页,不消耗大量内存。head/tail: 查看文件的开头/结尾。tail -f <文件名>: 实时问题分析的王者。 持续监控文件末尾的新增内容,可以将测试操作与系统日志输出实时关联。
B. 过滤与分析:沙里淘金
grep(Global Regular Expression Print): 文本搜索的瑞士军刀。- 核心功能: 筛选包含特定模式的行。
grep "ERROR" app.log。 - 关键选项:
-i: 忽略大小写。-C <数字>(Context): 显示匹配行的上下文,理解错误背景至关重要。-v(Invert): 反向匹配,排除无关信息。-r: 递归搜索目录。
- 核心功能: 筛选包含特定模式的行。
sed(Stream Editor): 行编辑器。 擅长对文本行进行批量替换、删除、插入。- 场景:
sed 's/DEBUG/INFO/g' log.txt-> 将日志中的 “DEBUG” 全部替换为 “INFO”,便于分析。
- 场景:
awk(Aho, Weinberger, and Kernaghan): 列处理器。 擅长将一行文本分割成多个字段(列)并进行处理。- 核心能力: 将非结构化或半结构化的日志数据化。
- 场景: 从访问日志中计算平均响应时间。
grep "200 OK" access.log | awk '{sum+=$10} END {print sum/NR}'-> 筛选成功请求,并对第10列(响应大小)求和,最后打印平均值。
第三部分:控制被测应用 - 管理进程生命周期
根本问题: 我的应用启动了吗?它运行得怎么样?如何安全地启停它? 核心原则: 建立一个“验证 -> 观察 -> 控制”的反馈回路来主动管理被测应用。
ps aux | grep <应用名>: 验证 (Verify) 进程是否存在、状态如何。这是测试开始前的第一步检查。top: 观察 (Observe) 系统和进程的实时资源消耗(CPU、内存)。这是诊断性能问题的首选工具。kill: 控制 (Control) 进程的生命。kill <PID>: 发送 SIGTERM (15) 信号,请求进程“优雅地”退出。kill -9 <PID>: 发送 SIGKILL (9) 信号,强制终止进程。这是最后的手段。
第四部分:高级诊断 - 深入性能与网络
根本问题: 系统为什么慢?是 CPU、内存、磁盘还是网络的问题?API 调用为何失败?
A. 系统性能剖析
- 宏观监控 (发现症状):
free -h: 查看内存和交换空间使用情况。vmstat: 全面了解 CPU、内存、I/O 的动态。iostat: 深入分析磁盘 I/O 性能。
- 微观剖析 (定位病因):
perf: 专家的终极武器,能直接定位到代码函数级别的性能瓶颈。perf stat <命令>: 快速获取一个操作的宏观性能指标。perf top: 实时查看消耗 CPU 最多的函数。perf record&perf report: 记录详细数据并离线分析,找出导致性能问题的具体调用链。
B. 网络诊断与测试
- 基础连通性:
ping: 检查两台主机之间网络是否通畅。traceroute: 显示数据包经过的路由路径,定位网络延迟点。nslookup: 验证域名解析是否正确。
- 端口与连接:
netstat -lntp: 查看哪些进程在监听哪些 TCP 端口。验证服务是否成功启动并监听在正确端口上。
- API 交互:
curl: API 测试的命令行王者。 模拟各类 HTTP 请求。-X <方法>: 指定请求方法 (GET, POST, etc.)。-H "<头信息>": 添加请求头 (e.g., “Content-Type: application/json”)。-d '<数据>': 发送请求体。-v: 显示详细的通信过程,用于调试。-o <文件>: 将响应输出到文件。
- 安全文件传输:
scp -r <源> <目标>: 在本地和远程服务器之间安全地复制文件/目录。用于部署构建包、上传测试数据、下载日志报告。