软件测试工程师 Linux 技能完全指南:从入门到实战

AI摘要

Linux是测试工程师必备的核心技能,因项目多部署于Linux服务器,测试工作涉及日志定位、数据验证、性能监控等场景。文章介绍了Linux与Windows的区别、目录结构基础,并重点解析了测试工程师六大高频实战场景:通过日志命令定位Bug、直接查询数据库与缓存验证数据、使用性能分析工具监控系统资源,以及验证部署版本,帮助测试人员高效完成工作。

软件测试工程师 Linux 技能完全指南:从入门到实战

作为一名测试工程师,Linux 是必须要掌握的一项核心技能。大部分互联网公司的项目都部署在 Linux 服务器上,测试工作离不开日志定位、数据验证、性能监控等场景。


一、为什么要学 Linux?

Linux 在测试工作中的价值

Linux 操作系统和命令是面试必问的技能,企业招聘需求中基本都有明确要求。原因很简单:

  • 环境部署:项目大多部署在 Linux 服务器上
  • 问题定位:测试过程中需要去服务器定位问题
  • 性能监控:需要实时监控系统资源使用情况
  • 数据验证:直接在服务器端查询数据库和缓存

Linux 和 Windows 的主要区别

特性LinuxWindows
开源性开源免费闭源收费
用户模式多用户多任务单用户为主
文件系统树状目录结构盘符结构
权限管理严格的 rwx 权限相对宽松
服务器部署服务器主流选择较少使用

二、Linux 目录结构基础

Linux 文件系统采用层级式的树状目录结构,理解根目录下的相关目录非常重要:

/ (根目录)
├── bin       - 常用命令
├── etc       - 系统配置文件
├── home      - 普通用户目录
├── var       - 经常变化的文件(日志、缓存等)
├── tmp       - 临时文件
├── usr       - 用户程序和数据
└── root      - 管理员目录

三、测试工程师 6 大高频场景

场景一:页面报 500,定位 Bug(日志定位)

实时盯着报错看(复现 Bug 时用)

当你需要一边操作页面,一边看服务器发生了什么:

tail -f catalina.out
# 或
tail -f app.log

注意-f (follow) 参数让屏幕滚动显示最新日志。

报错已发生,往回找(事后分析用)

如果 Bug 刚刚发生,需要去海量日志里捞那一条报错:

grep -C 10 "NullPointer" app.log

注意

  • 不要只用 grep!只看报错那一行没用,开发要看上下文
  • -C 10 (Context):把报错行及其前后各 10 行都打印出来
  • 如果不确定关键词,可以搜订单号:grep -C 5 "ORDER_20230101" app.log

只看特定时间段的日志

sed -n '/10:00/,/10:05/p' app.log > error.txt

这能把指定时间段的日志单独"抠"出来存到新文件里。


场景二:页面数据不对,直接查库(数据验证)

验证 MySQL 数据

mysql -u root -p

常用验证 SQL:

use test_db;  -- 切换数据库
select * from user_orders where order_id='xxx' \G;

注意:最后那个 \G 很重要!在 Linux 终端里,如果列太多,用 ; 结尾显示的表格会乱掉。用 \G 可以把一行数据竖着显示,非常适合查看字段很多的表。

验证 Redis 缓存(最常被忽略)

很多时候 Bug 是因为"数据库改了,但缓存没过期"。

redis-cli -h 127.0.0.1 -a password

操作命令:

get user_token_123        # 查看某个 Key 的值
ttl user_token_123        # 看还有多久过期
del user_token_123        # 暴力删缓存,强制刷新

注意:当你发现改了数据库前台没变,先去 Redis 里 del 一下那个 Key,如果好了,提 Bug 给开发:"数据更新未同步清除缓存"。


场景三:系统突然卡死,看性能(性能分析)

看看是不是 CPU 满了

top

怎么看

  • P (大写):按 CPU 使用率排序
  • 看第一行 load average:如果这三个数(1分钟、5分钟、15分钟负载)超过了 CPU 核数,说明系统负载很高
  • %CPU 列:如果某个 Java 进程跑到了 200%,截图留证

看看是不是内存漏了

free -h

怎么看

  • 不要只看 free 那一列
  • 重点看 available:这才是真实可用的内存
  • 如果 available 只有几 M 了,服务大概率要 OOM (Out Of Memory) 崩溃了

看看是不是磁盘满了(低级但高频的 Bug)

df -h

怎么看

  • Use% (使用率)
  • 如果根目录 / 或者 /home 达到了 100%,通常是被日志文件(logs)填满的

看看端口是不是被占了

netstat -nlp | grep 8080
# 或
lsof -i:8080

查出是哪个进程 ID (PID) 占用了端口,然后用 kill -9 PID 杀掉它,再重启服务。


场景四:验证部署是否成功(版本验证)

开发说"修好了,已经重新部署了",但 Bug 还在。这时候只有两种可能:

  1. 开发没修好
  2. 包根本没更新成功,或者服务压根没重启

验证文件到底变没变(MD5 校验)

md5sum app.jar
# 或
ls -l --time-style=long-iso

注意

  • 每次发版前,记录一下旧包的 MD5 值
  • 发版后,再跑一次 md5sum
  • 如果两个字符串一模一样,说明包根本没替换成功!
  • 或者简单的 ls -l 看文件修改时间,如果时间还是昨天的,那肯定没更新

验证进程到底重没重启

ps -ef | grep java

注意

  • 关注 STIME (启动时间) 或 TIME (运行时间) 列
  • 如果开发说 5 分钟前部署的,结果你看到进程启动时间是 Jan 29 (昨天),说明服务根本没重启,代码没生效

场景五:接口调不通,诊断网络(网络/接口诊断)

在服务器上模拟发请求(Curl 大法)

这是测试工程师最帅的技能之一!不要只会在 Postman 上点,要在 Linux 上用命令发请求。

curl -v http://192.168.1.50:8080/api/check

注意

  • -v (verbose):显示通信的详细过程(握手、Header)
  • 如果返回 200 OK,说明网络通、服务通,是你本地环境问题
  • 如果返回 Connection refused,说明对方服务没起,或者端口不对
  • 如果卡住不动,说明是防火墙拦截了

验证端口通不通

telnet 192.168.1.50 8080
# 或
nc -zv 192.168.1.50 8080

注意

  • 如果显示 Connected,说明网络链路是通的
  • 很多公司服务器禁用了 ping,所以 ping 不通不代表网络不通,但 telnet 端口通了才是真的通

场景六:批量处理测试数据(自动化数据构造)

一秒钟生成 100 个测试文件

touch test_{1..100}.jpg

注意

  • {1..100} 是 Linux 的通配符魔法
  • 这行命令会瞬间在当前目录下生成 test_1.jpg 到 test_100.jpg
  • 哪怕文件是空的(0KB),对于测试"文件数量限制"或"文件名排序"的用例已经足够了

批量修改配置文件(Sed 替换)

需要把 10 个配置文件里的 DEBUG 模式全部改成 INFO 模式:

sed -i 's/DEBUG/INFO/g' config*.xml

注意

  • sed 是流编辑器,-i 代表直接修改文件
  • 这比你用 vim 打开一个个文件去改要快 100 倍,而且不会改错

四、常用命令速查手册

系统命令

命令说明
uname -a显示主机名、内核等系统信息
hostname -i显示系统 IP 地址
date显示当前时间
uptime显示运行时间
whereis xxx显示 xxx 程序可能的位置
which xxx显示 xxx 命令对应执行的程序

磁盘相关

命令说明
df -h以易读方式显示磁盘使用情况
df -i显示文件系统上的空闲索引节点
du -sh显示目录总大小(易读格式)
fdisk -l显示磁盘和分区信息

文件目录命令

命令说明
ls -al显示所有文件详细信息
pwd显示当前工作目录
cd xxx转到 xxx 目录
mkdir dir1创建目录
rm -rf dir1强制删除目录及内容
cp file1 file2复制文件
mv file1 file2重命名或移动文件
touch file1创建文件或修改时间属性

查看文件命令

命令说明
cat file1查看文件内容
more file1分页查看(只能向前)
less file1分页查看(可前后翻动)
head -n 5 file1显示前 5 行
tail -n 5 file1显示后 5 行
tail -f file1实时显示新增内容(日志专用)

搜索命令

命令说明
grep "字符串" file在文件中搜索特定字符串
grep -r "字符串" dir在目录中递归搜索
`xxx \grep "字符串"`在命令输出中过滤匹配信息
find / -name "*.log"查找文件

进程命令

命令说明
ps aux显示详细进程信息
`ps aux \grep tomcat`搜索特定进程
top实时显示所有进程状态
kill pid杀掉指定进程
killall proc杀死所有名为 proc 的进程

网络操作

命令说明
ip addr show显示网卡配置信息
ping hostping 主机确认网络通畅
ifconfig显示网络设备信息
netstat -apn查看所有进程和端口使用情况
`netstat -apn \grep 8080`查看 8080 端口占用情况

解压缩命令

命令说明
tar -zcvf xxx.tar.gz dir打包压缩目录
tar -zxvf xxx.tar.gz解压文件
gzip xxx压缩文件
gzip -d xxx.gz解压文件

SSH 连接

命令说明
ssh user@host连接到远程主机
ssh -p port user@host使用指定端口连接
ssh host使用默认端口 22 连接

五、文件权限管理

chmod 命令

chmod 755 file  # 属主可读写执行,其他用户可读执行
chmod 777 file  # 所有用户可读写执行

权限值对应关系:

  • 可读 (read) = 4
  • 可写 (write) = 2
  • 可执行 (execute) = 1

chown 命令

chown user file_name  # 修改文件所属用户
chown user:group file_name  # 修改所属用户和组
chown user:group directory  # 修改目录的所属用户和组

六、总结

Linux 命令虽然很多,但能帮你定位 90% 软件 Bug 的,也就上面这十几个。把这些用熟,你就已经比只会在页面上"点点点"的测试强出一大截了。

核心要点:

  1. 日志定位:tail -f, grep -C 10, sed
  2. 数据验证:mysql, redis-cli
  3. 性能监控:top, free -h, df -h, netstat
  4. 部署验证:md5sum, ps -ef
  5. 网络诊断:curl, telnet
  6. 批量处理:touch {1..100}, sed -i

掌握这些技能,你的测试工作效率至少提升 50%!

Saiita

我还没有学会写个人说明!

相关推荐

当AI遇上软件测试:从《2028年全球智能危机》报告看我们的未来

一份虚构报告引发对AI时代软件测试行业影响的思考。报告描绘了AI替代白领工作可能引发的社会危机。软件测试行业面临冲击,基础功能测试等可被AI替代,但业务理解、用户体验等仍需人类能力。测试工程师应主动转型:拥抱AI工具提升效率,深耕业务领域成为专家,发展沟通协调等软技能,并关注AI模型测试等新兴领域。关键在于将AI视为工具并持续学习进化,以适应技术变革。

软件测试目前现状

软件测试行业普遍采用外包以降低成本,导致外包测试人员面临高强度工作、低薪资及频繁换组等问题,难以积累深度经验且缺乏归属感。行业正向自动化、测试开发等方向转型,纯功能测试者竞争力下降。面对35岁危机,作者建议先通过华为可信考试保底,再学习自动化测试、准备软考等以提升不可替代性。

软件自动化测试分层

软件自动化测试分为单元测试、集成/接口测试和UI测试三个层次。单元测试针对代码最小单元,由开发人员执行,效率低但门槛低;集成测试验证组件交互,执行效率和门槛适中;UI测试模拟用户界面操作,执行效率最高但实现门槛最高。三者各有特点,适用于不同测试阶段和需求。

暂无评论