大数跨境
0
0

环境与工具基础--Linux、数据库与GIT基础用法

环境与工具基础--Linux、数据库与GIT基础用法 电商运营宝典
2025-10-17
10
导读:我们进入非常关键且实践性极强的部分——环境与工具基础。这部分将为你搭建起作为测试工程师所需的底层工作环境,并教会你核心的辅助工具。掌握这些,你才能游刃有余地进行测试执行、问题排查和团队协作。

测试工程基础 - 环境与工具基础详解



第一部分:Linux系统操作与Shell脚本



在测试工作中,你接触的软件服务(如Web服务器、数据库、中间件)绝大多数都运行在Linux服务器上。因此,与Linux服务器打交道是测试工程师的必备技能。



第1章 为什么测试工程师要学习Linux?



1. 服务端环境:公司的测试环境、预发布环境、生产环境,几乎都是Linux系统(如CentOS, Ubuntu)。


2. 查看日志:当系统出现问题时,你需要登录到Linux服务器上查看应用日志、系统日志来定位问题。


3. 环境部署与维护:需要懂得基本的命令来启动/停止服务、检查进程状态、修改配置文件等。


4. 性能监控:需要使用命令来监控服务器的CPU、内存、磁盘和网络状态。



小白理解:如果把软件比作一辆车,那么Linux就是这辆车运行的公路系统。你需要学会在公路上检查车况、处理故障。



第2章 Linux基础入门



2.1 连接Linux服务器


你通常不会直接坐在Linux服务器的显示器前操作,而是通过一个终端工具远程连接到服务器。最常用的协议是SSH。



· 工具推荐:


  · Windows:PuTTY, Xshell, MobaXterm,或Windows Terminal。


  · macOS/Linux:直接使用系统自带的Terminal终端,通过 ssh 命令连接。


· 连接命令示例:


  ```bash


  ssh username@server_ip_address


  # 例如:ssh tester@192.168.1.100


  ```


  然后输入密码,即可登录。



2.2 Linux目录结构


登录后,你看到的是一个命令行界面。首先要理解Linux的目录结构,它像一个倒置的大树。



· /:根目录,所有目录的起点。


· /home:普通用户的家目录。你登录后一般会在这个目录下你自己的文件夹里,如 /home/tester。


· /root:系统管理员(root用户)的家目录。


· /etc:存放系统的配置文件。


· /var:存放经常变化的文件,如日志文件 (/var/log)。


· /usr:存放用户安装的应用程序和文件。


· /tmp:临时文件目录。



重要概念:绝对路径和相对路径。



· 绝对路径:从根目录 / 开始的完整路径,如 /home/tester/documents/file.txt。


· 相对路径:从当前所在目录开始的路径。例如,当前在 /home/tester,那么 documents/file.txt 就是相对路径。



第3章 Linux核心命令大全(测试工程师视角)



以下命令是测试工作中每天都会用到的,请务必熟练掌握。



3.1 文件与目录操作



```bash


# 查看当前所在目录


pwd



# 列出当前目录下的文件和子目录


ls


ls -l   # 以详细信息方式列出(显示权限、大小、时间)


ls -la  # 列出所有文件(包括隐藏文件)



# 切换目录


cd /home/tester  # 切换到绝对路径


cd documents     # 切换到当前目录下的documents子目录(相对路径)


cd ..            # 切换到上一级目录


cd ~             # 切换到当前用户的家目录


cd -             # 切换到上一个所在的目录



# 创建目录


mkdir test_dir          # 创建名为test_dir的目录


mkdir -p parent/child   # 递归创建多级目录



# 删除文件或目录


rm file.txt             # 删除文件


rm -r directory_name    # 递归删除目录及其内部所有内容(慎用!)


rm -rf directory_name   # 强制递归删除,不提示(非常危险!慎用!)



# 复制文件或目录


cp file1.txt file2.txt          # 复制file1.txt为file2.txt


cp file.txt /tmp/               # 复制文件到/tmp目录下


cp -r dir1 dir2                 # 递归复制整个目录



# 移动或重命名文件/目录


mv old_name.txt new_name.txt    # 重命名


mv file.txt /home/tester/       # 移动文件



# 查看文件内容


cat file.txt          # 一次性显示整个文件内容(适合小文件)


less file.txt         # 分页显示文件内容(可上下滚动,按 'q' 退出)


head -n 10 file.txt   # 查看文件开头10行


tail -n 10 file.txt   # 查看文件末尾10行


tail -f app.log       # 实时追踪日志文件的更新(查看滚动的日志,极其常用!)



# 查找文件


find /home -name "*.log"        # 在/home目录下查找所有.log结尾的文件


find /var/log -mtime -1         # 在/var/log目录下查找1天内修改过的文件



# 查找文件内容(grep命令 - 超级重要!)


grep "ERROR" app.log            # 在app.log文件中查找包含"ERROR"的行


grep -r "NullPointerException" /var/log/  # 递归地在/var/log目录下所有文件中查找


cat app.log | grep "ERROR" | head -5 # 组合命令:先看app.log,然后过滤ERROR,再取前5行


```



3.2 系统管理与进程操作



```bash


# 查看系统进程


ps aux                      # 查看所有正在运行的进程


ps aux | grep java          # 查找与java相关的进程



# 动态查看系统资源(类似Windows的任务管理器)


top


htop (如果系统安装了)



# 杀死进程


kill 1234                   # 杀死进程ID为1234的进程


kill -9 1234                # 强制杀死进程(当普通kill无效时)



# 查看网络状态


netstat -tulpn              # 查看所有监听的端口和对应的进程


ping google.com             # 测试网络连通性



# 查看磁盘使用情况


df -h                       # 查看磁盘空间使用情况(人类可读的格式)


du -sh /home/tester         # 查看指定目录的大小


```



3.3 文件权限与压缩



```bash


# 查看文件权限


ls -l file.txt


# 输出:-rw-r--r-- 1 tester users 1234 Oct 14 10:00 file.txt


# 第一个字符‘-’表示是文件,‘d’表示目录。


# 后面9个字符每3个一组,分别代表:文件所有者(u)、所属组(g)、其他人(o)的权限。


# r=读, w=写, x=执行。



# 修改文件权限


chmod 755 script.sh         # 给script.sh设置权限:rwxr-xr-x


chmod +x script.sh          # 给script.sh增加可执行权限



# 压缩与解压


tar -czf archive.tar.gz /path/to/dir   # 将目录压缩为.tar.gz文件


tar -xzf archive.tar.gz                # 解压.tar.gz文件


zip -r archive.zip /path/to/dir        # 压缩为zip格式


unzip archive.zip                      # 解压zip文件


```



第4章 Shell脚本基础



Shell脚本就是将一系列Linux命令写在一个文件里,然后一次性执行。它可以自动化重复的任务。



4.1 第一个Shell脚本



1. 创建一个新文件,命名为 hello.sh。


2. 在文件里输入以下内容:


   ```bash


   #!/bin/bash


   # 这是一个注释


   echo "Hello, World!"  # 打印Hello, World!


   echo "当前时间是:$(date)" # 打印当前时间


   ```


3. 给脚本添加执行权限:chmod +x hello.sh


4. 运行脚本:./hello.sh



4.2 脚本中的变量与流程控制



```bash


#!/bin/bash



# 定义变量(等号两边不能有空格!)


NAME="Tester"


COUNT=10



# 使用变量


echo "我的名字是:$NAME"



# 读取用户输入


echo "请输入你的年龄:"


read AGE


echo "你的年龄是:$AGE"



# 条件判断


if [ $AGE -gt 18 ]; then


    echo "你已经是成年人了。"


else


    echo "你还是个未成年人。"


fi



# 循环


for i in {1..5}; do


    echo "这是第 $i 次循环"


done



# 使用命令行参数


# 运行脚本时:./script.sh arg1 arg2


echo "第一个参数是:$1"


echo "第二个参数是:$2"


```



测试场景联想:



· 写一个脚本,每天凌晨自动备份测试数据库。


· 写一个脚本,自动登录测试服务器,拉取最新的日志并搜索错误信息。


· 写一个脚本,一键启动/停止复杂的测试环境。



---



第二部分:MySQL数据库操作



绝大多数软件系统都使用数据库来持久化存储数据。测试工程师需要验证数据是否正确写入、更新或删除,也需要准备测试数据。



第5章 数据库与SQL基础



5.1 为什么测试要懂数据库?



1. 数据校验:在前端操作后,需要到数据库验证数据是否按预期存储。


2. 数据准备:构造一些难以通过前端创建的测试数据(如特定状态的数据)。


3. 问题定位:当出现Bug时,可以通过查询数据库来判断是前端问题、后端逻辑问题还是数据库本身的问题。


4. 理解业务:数据库的表结构往往直接反映了业务的核心逻辑。



核心概念:



· 数据库:一个数据仓库,里面有很多表。


· 表:类似于Excel表格,有行和列。


· 列:表的字段,定义了数据的类型(如 username, email)。


· 行:表的一条记录。


· SQL:用于管理和操作数据库的标准语言。



第6章 MySQL核心SQL命令



我们将通过一个典型的 users 用户表来学习。假设表结构如下:



· id (INT, 主键)


· username (VARCHAR)


· email (VARCHAR)


· age (INT)


· created_at (DATETIME)



6.1 连接MySQL数据库



```bash


# 在命令行连接


mysql -u username -p -h host_address database_name


# 例如:mysql -u tester -p -h 192.168.1.101 test_db


# 然后会提示你输入密码


```



6.2 增删改查


查 - SELECT(最最常用)



```sql


-- 查询users表的所有数据的所有字段


SELECT * FROM users;



-- 只查询特定的字段


SELECT id, username, email FROM users;



-- 带条件的查询 (WHERE子句)


SELECT * FROM users WHERE age > 18;


SELECT * FROM users WHERE username = 'alice';


SELECT * FROM users WHERE age BETWEEN 20 AND 30;



-- 模糊查询 (LIKE)


SELECT * FROM users WHERE username LIKE 'a%'; -- 查找以'a'开头的用户名



-- 排序 (ORDER BY)


SELECT * FROM users ORDER BY age DESC; -- 按年龄降序排列


SELECT * FROM users ORDER BY created_at ASC; -- 按创建时间升序排列



-- 限制返回条数 (LIMIT)


SELECT * FROM users LIMIT 10; -- 只返回前10条


SELECT * FROM users LIMIT 5, 10; -- 从第5条开始,返回10条(即第6-15条)



-- 去重查询 (DISTINCT)


SELECT DISTINCT age FROM users;


```



增 - INSERT



```sql


-- 插入一条完整的记录(所有字段都提供值)


INSERT INTO users VALUES (NULL, 'bob', 'bob@example.com', 25, NOW());



-- 插入一条记录,只提供部分字段的值(更安全、更常用的方式)


INSERT INTO users (username, email, age) VALUES ('charlie', 'charlie@example.com', 30);


```



改 - UPDATE



```sql


-- 更新数据 (一定要加WHERE条件,否则会更新整个表!)


UPDATE users SET age = 26 WHERE username = 'bob';


UPDATE users SET email = 'new_email@example.com', age = 31 WHERE id = 5;


```



删 - DELETE



```sql


-- 删除数据 (一定要加WHERE条件,否则会清空整个表!)


DELETE FROM users WHERE id = 10;


DELETE FROM users WHERE username = 'test_user';


```



6.3 高级查询



```sql


-- 聚合函数


SELECT COUNT(*) FROM users; -- 统计总用户数


SELECT MAX(age) FROM users; -- 最大年龄


SELECT AVG(age) FROM users; -- 平均年龄



-- 分组查询 (GROUP BY)


SELECT age, COUNT(*) FROM users GROUP BY age; -- 统计每个年龄的用户数量



-- 表连接 (JOIN) - 如果还有一张 orders 表,通过 user_id 关联


SELECT u.username, o.order_id, o.amount


FROM users u


JOIN orders o ON u.id = o.user_id;


```



6.4 数据导入与导出



```bash


# 导出整个数据库(备份)


mysqldump -u username -p database_name > backup.sql



# 导入SQL文件(恢复)


mysql -u username -p database_name < backup.sql


```



测试场景实战:



· 场景1:测试用户注册功能。在前端注册一个用户后,立刻到数据库执行 SELECT * FROM users WHERE username='新用户名'; 来验证数据是否正确插入。


· 场景2:测试一个需要“已充值”状态用户才能访问的功能。你可以直接在数据库里执行 UPDATE users SET balance=100 WHERE username='testuser'; 来快速构造测试数据。


· 场景3:一个订单列表不显示某些订单。你可以通过 SELECT 和 JOIN 查询,检查这些订单在数据库中的状态是否正确。



---



第三部分:Git版本控制



在现代软件开发中,多人协作是常态。Git是目前最流行的分布式版本控制系统,它可以帮助团队高效地管理代码和文档的变更。



第7章 Git的核心概念



7.1 为什么要用Git?



· 版本记录:保存每一次文件的修改记录,可以随时回滚到任何一个历史版本。


· 分支管理:可以创建不同的“分支”来开发新功能或修复Bug,而不会影响主线的稳定。


· 团队协作:多人可以同时工作在同一个项目上,然后合并彼此的修改。


· 备份:代码仓库通常存储在远程服务器(如GitHub, GitLab)上,相当于一个备份。



核心概念理解:



· 仓库:一个被Git管理的文件夹。


· 工作区:你电脑上能看到和编辑的文件。


· 暂存区:一个中间区域,临时存放你打算提交的更改。


· 提交:将暂存区的更改正式保存到仓库的历史记录中,形成一个版本。


· 分支:一条独立的时间线,你可以在分支上工作而不影响主线(master/main分支)。


· 远程仓库:存储在服务器上的仓库,用于团队共享和协作。



第8章 Git日常使用命令



8.1 本地仓库操作



```bash


# 初始化一个新的Git仓库


git init



# 克隆一个已存在的远程仓库(最常用的起步方式)


git clone https://github.com/username/project.git



# 查看当前文件状态(哪些文件被修改了,哪些已暂存)


git status



# 将文件的修改添加到暂存区


git add file.txt          # 添加单个文件


git add .                 # 添加所有当前目录下的修改



# 提交更改到本地仓库


git commit -m "这里写本次提交的说明,要清晰明了"



# 查看提交历史


git log


git log --oneline         # 简洁模式查看历史


```



8.2 远程仓库与协作



```bash


# 将本地提交推送到远程仓库


git push origin main      # 推送到main分支



# 从远程仓库拉取最新代码


git pull origin main



# 查看远程仓库地址


git remote -v


```



8.3 分支管理



```bash


# 查看所有分支


git branch



# 创建新分支


git branch new_feature



# 切换分支


git checkout new_feature


# 或者 (更新版的命令)


git switch new_feature



# 创建并切换到新分支


git checkout -b new_feature


# 或者


git switch -c new_feature



# 合并分支 (例如,将new_feature分支合并到当前所在的主分支)


git merge new_feature



# 删除分支


git branch -d new_feature


```



8.4 解决冲突


当多个人修改了同一文件的同一部分时,在git pull 或 git merge 时就会产生冲突。



1. Git会标记出文件中有冲突的地方:


   ```


   <<<<<<< HEAD


   这是你本地的修改


   =======


   这是远程的修改


   >>>>>>> branch_name


   ```


2. 你需要手动编辑这个文件,决定保留哪一部分(或者都保留),并删除 <<<<<<<, =======, >>>>>>> 这些标记。


3. 然后执行 git add 文件名 和 git commit 来完成合并。



第9章 Git在测试工作中的工作流



典型场景:你负责维护一个UI自动化测试脚本项目。



1. 第一天,获取代码:


   ```bash


   git clone https://gitlab.company.com/qa/auto-test.git


   cd auto-test


   ```


2. 开始一个新功能的测试脚本开发:


   ```bash


   git checkout -b feature/login_test  # 为‘登录测试’功能创建一个新分支


   ```


3. 日常开发与提交:


   ```bash


   # ... 你编写了 login_test.py ...


   git add .


   git commit -m "新增用户登录功能的UI自动化测试用例"


   git push origin feature/login_test  # 将分支推送到远程,备份并共享


   ```


4. 功能完成,合并到主线:


   · 在GitLab/GitHub上创建一个 Pull Request。


   · 请你的同事代码评审。


   · 评审通过后,将 feature/login_test 分支合并到 main 分支。


5. 同步最新代码:


   ```bash


   git checkout main           # 切换回主分支


   git pull origin main        # 拉取最新的代码(包含所有同事的提交)


   ```



最佳实践:



· 提交信息清晰:每次提交的说明都要能清晰地描述这次修改的目的。


· 频繁提交:将大任务拆分成小任务,每完成一个小任务就提交一次。


· 多使用分支:任何新的开发或Bug修复都应该在新的分支上进行,保持主分支的稳定。


· 先拉后推:在 git push 之前,先执行 git pull 来同步他人的修改,避免冲突。



---



总结与学习建议



环境与工具基础这一部分,为你搭建了一个专业的测试工作台:



· Linux是你与服务器交互的工作界面。


· MySQL是你窥探和数据校验的透视镜。


· Git是你与团队协同工作的时间机器和协作平台。



给小白的学习建议:



1. 搭建自己的实验环境:在个人电脑上安装虚拟机(如VirtualBox)并安装一个Linux系统(如Ubuntu Desktop),这是最好的练习方式。


2. 命令死记硬背不如常用:不要试图记住所有命令的参数。记住最常用的,其他的用到的时候再查。动手实践是唯一途径。


3. 给自己设定小任务:


   · 在Linux上安装一个MySQL,并练习SQL。


   · 在GitHub上注册账号,创建一个仓库,练习 clone, add, commit, push 的完整流程。


4. 联想测试场景:每学一个命令或工具,都思考一下“我在测试中什么时候会用到它?”,这样学习会更有目的性和趣味性。



你已经拥有了一个测试工程师的“工具箱”。在接下来的课程中,你将学会如何运用这些工具,去完成真正的测试任务。


【声明】内容源于网络
0
0
电商运营宝典
跨境分享汇 | 持续更新优质内容
内容 44379
粉丝 1
电商运营宝典 跨境分享汇 | 持续更新优质内容
总阅读252.2k
粉丝1
内容44.4k