上一篇我们完成了功能测试全模块的知识闭环,从本篇开始,正式进入测试进阶技能板块。
很多刚入行的测试同学会有疑问:测试为什么一定要学Linux和SQL?答案很直接:这两项是定位问题、校验数据、提升效率的核心工具。发现Bug后要排查服务端日志、区分前后端问题,离不开Linux;要验证数据库数据正确性、构造测试数据、核对全链路业务逻辑,离不开SQL。只会点页面的测试,永远只能停留在表层;掌握这两项技能,才能具备深度排查问题的能力。
本篇不讲冗余理论,只筛选测试工作中最高频的内容:20个日常必用的Linux命令,搭配测试场景实操;从增删改查到联表查询的SQL核心语句,配合业务案例直接套用。
一、测试必学:20个高频Linux命令,查日志/排问题直接用测试人员接触Linux,核心场景集中在查看服务日志、定位报错信息、管理测试文件、检查服务状态,不需要精通复杂的运维操作,把高频命令练熟,就能覆盖80%以上的日常工作。
我们按使用场景分成四类,方便记忆与查阅。
- 基础文件操作类(8个)
这是Linux入门的基础命令,用于日常的文件浏览、目录跳转与文件管理。
- ls:查看当前目录下的文件与文件夹
常用:ls -l 查看文件详情(权限、大小、修改时间);ls -a 查看所有文件(包含隐藏文件)
测试场景:进入日志目录后,查看有哪些日志文件。 - cd:切换目录
常用:cd /usr/local/log 跳转到指定目录;cd .. 返回上一级目录;cd ~ 回到用户根目录 - pwd:查看当前所在目录的完整路径
测试场景:不确定自己在哪个目录时,快速确认路径。 - mkdir:创建文件夹
常用:mkdir testfile 创建名为testfile的文件夹 - cp:复制文件/文件夹
常用:cp a.log /home/test/ 把a.log复制到test目录下;cp -r dir1 dir2 复制整个文件夹 - mv:移动/重命名文件
常用:mv a.log b.log 把a.log重命名为b.log;mv a.log /home/test/ 移动文件到指定目录 - rm:删除文件/文件夹
常用:rm a.log 删除文件;rm -rf dir/ 强制删除文件夹及所有内容
⚠️ 注意:该命令不可逆,执行前务必确认文件名与路径,严禁误删系统文件。 - cat:查看文件全部内容
测试场景:查看小体积的配置文件、短日志,快速读取全部内容。
- 日志排查核心类(5个)
这是测试人员最高频使用的一组命令,排查Bug、定位报错全靠它们。
- more / less:分页查看大文件
二者都用于查看体积较大的日志文件,避免内容一闪而过。less 功能更灵活,支持上下翻页、关键字搜索,更推荐日常使用。
常用:less server.log 打开日志文件,按空格翻页,按q退出。 - head:查看文件开头内容
常用:head -20 server.log 查看日志文件前20行 - tail:查看文件末尾内容 / 实时监控日志
常用:tail -20 server.log 查看日志最后20行;tail -f server.log 实时滚动查看日志新增内容
测试场景:复现Bug时,用tail -f实时监控服务日志,操作页面的同时就能看到对应的报错输出。 - grep:关键字搜索
日志排查的核心命令,从海量日志中快速筛选出包含指定关键字的内容。
常用:grep "error" server.log 筛选出日志中所有包含error的行;grep -n "error" server.log 显示行号;grep -C 10 "error" server.log 显示报错行前后10行上下文
测试场景:发现接口异常时,用grep搜索接口名、报错关键字,快速定位错误位置。 - find:查找文件
常用:find /home -name "*.log" 在home目录下查找所有后缀为.log的文件
测试场景:记不清日志文件放在哪个目录时,快速定位文件位置。
- 进程与系统类(4个)
用于检查服务是否正常运行、端口是否占用、系统资源情况。
- ps:查看进程信息
常用:ps -ef | grep java 查看所有Java相关的进程,确认服务是否启动 - top:实时查看系统资源占用
相当于Windows的任务管理器,可查看CPU、内存占用情况,以及各进程的资源消耗。
测试场景:做性能测试时,观察服务器资源占用情况。 - kill:终止进程
常用:kill 进程号 正常结束进程;kill -9 进程号 强制终止进程
测试场景:服务异常无法正常停止时,强制杀掉进程后重启。 - netstat:查看端口占用情况
常用:netstat -tunlp | grep 8080 查看8080端口被哪个进程占用
测试场景:服务启动失败时,排查是否端口被占用。
- chmod:修改文件权限
常用:chmod 755 start.sh 给启动脚本赋予可执行权限
测试场景:部署测试服务时,给启动脚本、部署脚本添加执行权限。 - tar:打包/解压tar.gz文件
常用:tar -zxvf package.tar.gz 解压压缩包;tar -zcvf package.tar.gz dir/ 把文件夹打包压缩
测试场景:解压部署包、打包日志文件导出。 - unzip:解压zip文件
常用:unzip test.zip 解压zip格式的压缩包
二、SQL入门到实操:测试常用语句全覆盖测试人员学习SQL,核心目的是数据校验、构造测试数据、清理脏数据、多表联查验证业务链路,不需要精通数据库优化与复杂存储过程,把核心增删改查、联表查询练熟,就能覆盖绝大多数工作场景。
下面以最常见的电商业务为例(用户表user、订单表order),拆解测试高频SQL语句。
- 基础查询:最常用的数据核对方式
从单表中查询指定数据,是数据校验的基础操作。
- 查询全部字段:
SELECT * FROM user; - 查询指定字段:
SELECT id, username, phone FROM user; - 去重查询:
SELECT DISTINCT user_level FROM user; (查询用户等级的所有不重复值) - 字段别名:
SELECT username AS 用户名, phone AS 手机号 FROM user;
- 条件查询:精准定位目标数据
通过WHERE子句添加筛选条件,快速找到需要验证的特定数据。
SELECT 字段 FROM 表名 WHERE 条件;
- 多条件组合:
SELECT * FROM user WHERE status = 1 AND user_level = 'VIP'; - 模糊查询:
SELECT * FROM user WHERE username LIKE '张%'; (查询所有姓张的用户) - 范围查询:
SELECT * FROM order WHERE pay_amount BETWEEN 100 AND 500; - 枚举查询:
SELECT * FROM order WHERE order_status IN (1, 3, 5); - 排序:
SELECT * FROM order ORDER BY create_time DESC; (按创建时间倒序排列) - 分页:
SELECT * FROM user LIMIT 10 OFFSET 20; (跳过20条,查10条,即第3页)
测试场景:提交注册后,通过手机号查询用户表,确认用户数据是否正确写入数据库。
- 增删改操作:构造/清理测试数据
测试过程中经常需要构造特定场景的测试数据,或是清理测试产生的脏数据,对应插入、更新、删除三类操作。
INSERT INTO user (username, phone, status, create_time)VALUES ('测试用户01', '13800000001', 1, NOW());
测试场景:构造一个VIP等级的用户账号,用于测试会员专属功能。
UPDATE user SET user_level = 'VIP' WHERE id = 1001;
测试场景:修改用户的账户余额,用于测试支付、退款的边界场景。
DELETE FROM user WHERE id = 1001;
⚠️测试人员操作红线:
- 执行UPDATE、DELETE前,务必确认操作环境,绝对禁止在生产库执行修改、删除操作;
- UPDATE、DELETE语句必须加WHERE条件,避免误改、误删全表数据;
- 重要操作前可先执行SELECT确认筛选结果,再执行修改。
- 聚合与分组:快速统计数据
用于数据统计、数量核对,验证业务逻辑的计算结果是否正确。
COUNT(*):统计行数,例:SELECT COUNT(*) FROM order WHERE user_id = 1001; 统计该用户的订单总数SUM(字段):求和,例:SELECT SUM(pay_amount) FROM order WHERE user_id = 1001; 统计用户累计支付金额AVG(字段)
SELECT order_status, COUNT(*) FROM order GROUP BY order_status;
按订单状态分组,统计每个状态的订单数量,快速核对各状态数据是否符合预期。
- 联表查询:验证全链路数据
业务数据往往分散在多张表中,比如订单数据关联用户表、商品表,联表查询可以跨表验证整条业务链路的数据一致性。测试最常用的是内连接与左连接。
- 内连接(INNER JOIN):取两张表的交集,只返回两边都匹配的数据
SELECT o.order_no, u.username, o.pay_amountFROM order oINNER JOIN user u ON o.user_id = u.id;
查询订单编号、下单用户名、支付金额,验证订单与用户的关联关系是否正确。
- 左连接(LEFT JOIN):以左表为主,左表数据全部返回,右表匹配不到则显示NULL
SELECT u.username, o.order_noFROM user uLEFT JOIN order o ON u.id = o.user_id;
查询所有用户及其对应的订单,没有下单的用户也会显示,可用于验证“未下单用户”的业务场景。
测试场景:用户下单支付后,联表查询订单表与用户账户表,验证订单金额与账户扣款金额是否一致,排查数据不一致的Bug。
本篇总结本篇覆盖了测试进阶路上的两项基础工具能力:
- Linux命令:核心聚焦日志排查与环境操作,20个高频命令完全覆盖测试日常工作场景,不用死记硬背,遇到问题查一查、用几次就能熟练;
- SQL语句:从单表增删改查到多表联查,全部围绕测试的实际使用场景,核心用于数据校验、测试数据构造与脏数据清理。
掌握这两项技能,你就具备了“深入排查问题”的能力,不再是只能停留在页面的功能测试。从下一篇开始,我们将正式进入接口测试板块,讲解接口测试的核心概念、工具使用与实战方法。
如果觉得内容有用,欢迎点赞、收藏、转发,有疑问可以在评论区留言交流。