测试开发路线

Ryder 2025-1-20 34 1/20

软件测试学习路线

一、测试基础

Q1:测试流程包含哪些关键步骤?

  1. ‌:需求分析→测试计划→用例设计→执行测试→缺陷管理→测试报告,需结合具体案例说明各阶段输出物‌。

需求分析案例题:给你一个带有logo的水杯,你会如何去测试?(测试思维)

分析:

功能:装水、是否漏水、装热水、冰水、茶水、饮料、是否保温

非功能:

界面:logo是否与原型图一致、是否美观、是否掉色、材质

易用性:防滑、防烫、带手把、会不会刺嘴巴、携带是否方便

兼容性:能否能装其他的液体

安全性:装热水的时候,会不会水有毒

性能:防摔

 

Q2:黑盒测试与白盒测试的区别?

  • ‌:黑盒关注功能实现(用户视角),白盒基于代码逻辑验证(开发者视角),灰盒介于两者之间(接口级测试)。

  • 黑盒测试方法:
  • 1.等价类划分法:把可能用到的数据划分为不同的类别,然后再从每一类中挑选有代表性的数据用以测试。如账户名登录,也就是取正则表达式,取6-18位长度,有效等价类与无效等价类。
  • 2.边界值法:设置边界值也就是极值,是等价法的补充。
  • 3.场景法:通过场景对系统的功能或业务流程进行测试。遍历所有的基本流和备选流来完成系统中的所有场景。也就是说流程图。
  • 4.因果图法:分别列出需求中的因子(条件)和结果,当需求中存在多个条件,不同条件中存在不同的结果。

Q3:测试用例怎么写?

答:设置用例编号、用例标题、模块、优先级、前置条件、测试步骤、测试数据、预期结果。

测试开发路线

二、数据库基础

牛客网sql基础题知识点

1.查询所有列

select * from 表名

2.查询结果去重

select distinct 关键字 from 表名

3.查询结果限制返回行数

select 关键字 from 表名 limit 行数

4.查找指定结果

select 关键字
from 表名
where 关键字条件;

5.查询中间值

where 关键字条件1 and 关键字条件2;   或   where 关键字 between 值1 and 值2

6.查找除了x的信息

where 关键字 != '值';   或 where 关键字 <> ‘值’;   或 where 关键字 not in (“值”)

7.范围多值

where 关键字 in ('值1', '值2', '值3');

8.查看含**的结果

where 关键字 like '%**%';

9.查找最高值/ 计数 / 平均值 / 最小值

select max(关键字) / count(关键字) / avg(关键字) / min(关键字)

10.数字值保留*位小数

round(avg(值), *)

11.分组

group by 关键字;

12.分组过滤

group by 关键字
having 关键字(值) < 值1

13.排序升序/降序

order by 关键字 asc/desc ;

14.连接表内连接

inner join 表名 as up
on 表1属性 = 表2属性 and 表1.关键字 = '值1'

15.统计每个学校的答过题的用户的平均答题数

select
university,
count(qpd.question_id)/count(distinct qpd.device_id) as avg_answer_cnt
from user_profile as up
inner join question_practice_detail as qpd
on up.device_id = qpd.device_id
group by university ;

16. 统计每个学校各难度的用户平均刷题数

select
university,
difficult_level,
count(qpd.question_id)/count(distinct qpd.device_id) as avg_answer_cnt
from question_practice_detail as qpd
inner join user_profile as up
on qpd.device_id = up.device_id
inner join question_detail as qd
on qpd.question_id = qd.question_id
group by university, difficult_level

17.统计每个用户的平均刷题数

Select
university,
difficult_level,
count(qpd.question_id)/count(distinct qpd.device_id) as avg_answer_cnt
from question_practice_detail as qpd
inner join user_profile as up
on qpd.device_id = up.device_id and up.university = '山东大学'
inner join question_detail as qd
on qpd.question_id = qd.question_id
group by difficult_level

18.查找山东大学或者性别为男生的信息** **Union 不包含重复行,union 包含重复行

select
device_id, gender, age, gpa
from user_profile
where university='山东大学'
union all
select
device_id, gender, age, gpa
from user_profile
where gender='male'

19.划分为25岁以下和25岁及以上两个年龄段

if(age>=25, "25岁及以上", "25岁以下") as age_cut;

20.**将用户划分为***20岁以下,20-24岁,25岁及以上三个年龄段,分别查看不同年龄段用户的明细情况*

select
device_id,
gender,
case
•   when age>=25 then '25岁及以上'
•   when age>=20 and age < 25 then '20-24岁'
•   when age<20 then '20岁以下'
•   else '其他'
end as age_cut  
from user_profile

21.年月日函数

where year(date)='2021' and month(date)='08'

22.计算用户的平均次日留存率*** *次日/ 三日/ 七日* *interval 1 / 2 / 6

想要查看用户在某天刷题后第二天还会再来刷题的平均概率。请你取出相应数据。
select
count(t2.device_id)/count(t1.device_id) as avg_ret
from
(
•   select
•     distinct device_id,date
•   from question_practice_detail
) as t1
left join(
select distinct device_id,date
from question_practice_detail
) as t2
on t1.device_id = t2.device_id and t2.date=date_add(t1.date, interval 1 day);

23.切分函数substring

substring('www.csdn.net',5) from web_info  

24.获取子字符串:“csdn.net”,子串的位置必须从5开始

substring_index(blog_url, '/', -1) as user_name
***\*count\****:代表第几次出现;count为正数,代表取标识符出现第count次之前的子串;负数则相反,取标识符出现第count次之后的子串。

25.窗口函数

想要找到每个学校gpa最低的同学来做调研,请你取出每个学校的最低gpa。
select
device_id, university, gpa
from(
select device_id,university,gpa,
rank() over (partition by university order by gpa) rk
from user_profile  
) up
where up.rk=1

三、Linux基础

设root:
sudo passwd root
su
进程占用:
sudo lsof -i :8000
杀死进程
sudo kill -9 1234 # 其中 1234 是进程 ID
查询文件
sudo find / -type d -name "examples"
查询根目录下(包括子目录),名以b的目录和文件。
find / -name 'b'
查询根目录下(包括子目录),名以b开头的目录和文件。
find / -name 'b'
显示路由和ip地址
ip route show
ping baidu.com 有延迟
sudo vim /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
ip addr show 显示或配置网络接口
ip link show
sudo dhclient + usb 端口 连外网
sudo ifdown enp2s0 重启网络
sudo ifup enp2s0
tmux 虚拟终端模拟
chmod 777 demo3 -R 读写权限
df -lh 看容量
du -h 看日志大小容量
touch .sh 创建脚本
rm -rf file 强制删除文件
mv oldfile newfile 重命名
mv test1 test/test0 把当前目录下的test1移动到test文件下重命名为test0
tar -cvf start.tar a.java b.java 将当前目录下的a.java、b.java打包
tar -zxvf start.tar.gz -C usr/loca 解压start.tar.gz压缩包,到/usr/local目录下
ps -ef | grep ssh 查找指定ssh服务进程
ps -ef 查看所有正在运行的进程
netstat - an | grep 8080 搜索指定端口
service network restart 重启网络

四、接口测试

问题1:常⻅的请求⽅式?GET和POST请求的区别?

作⽤不同:GET⽤于从服务端获取资源,POST⼀般⽤来向服务器端提交数据 参数传递⽅式不同:GET请求的参数⼀般写在URL中,且只接受ASCII字符;POST请求参数⼀般放在请求体中,对于数据类型也没有限制 安全性不同:因为参数传递⽅式的不同,所以两者安全性不同,GET请求的参数直接暴露在URL中,所以更不安全,不能⽤来传递敏感信息。 参数⻓度限制不同:GET传送的数据量较⼩,不能⼤于2KB;POST传送的数据量较⼤,⼀般被默认为不受限制。 HTTP 协议没有 Body 和 URL 的⻓度限制,对 URL 限制的⼤多是浏览器和服务器的原因。 编码⽅式不同:GET 请求只能进⾏ URL 编码(application/x-www-form-urlencoded);POST ⽀持多种编码⽅式(application/x-www-form-urlencoded 或 multipart/form-data。为⼆进制数据使⽤多种编码。)

问题2:

‌Postman‌

1.登录接口

需求文档

测试开发路线

测试开发路线

测试开发路线

Jmeter

压力测试,测试多用户并发请求。

测试开发路线

五、自动化测试

测试工具:Selenium

python导入selenium库,Chrome驱动

from selenium import webdriver
driver = webdriver.Chrome() # 启动 Chrome 浏览器:ml-citation{ref="3" data="citationList"}
driver.get("https://www.google.com") # 访问 Google 主页:ml-citation{ref="3" data="citationList"}
driver.maximize_window() # 窗口最大化:ml-citation{ref="8" data="citationList"}
driver.quit() # 关闭浏览器:ml-citation{ref="3" data="citationList"}

java引入依赖

测试框架:pytest

单元测试框架,具有很多第三方插件,pytest文档。可结合 Selenium、Appium 实现 Web/App 端自动化测试,或通过 Requests 库完成接口测试。

Jenkins

开源持续集成工具,用于自动化构建、测试和部署软件项目。

CI/CD是持续集成(Continuous Integration)、持续交付(Continuous Delivery)和持续部署(Continuous Deployment)的统称,具体流程可分为三个阶段:

  1. 持续集成(CI) 开发者频繁提交代码至共享仓库后,系统自动触发构建、单元测试等操作,确保新代码与主分支的兼容性。例如:每次提交触发自动化测试套件运行14。

  2. 持续交付(CD) 在CI通过后,代码自动部署到类生产环境(如Staging环境)进行集成测试。此阶段允许手动控制是否将代码发布至生产环境,确保交付物始终处于可发布状态14。

  3. 持续部署(CD) 自动化流程的最终阶段,通过自动化工具(如Jenkins)将已验证的代码直接部署到生产环境,无需人工干预。例如:通过流水线配置实现零宕机更新16。


Jenkins与CI/CD的协作示例

通过Jenkins配置的典型CI/CD流程如下:

  • 代码提交‌ → ‌自动构建‌ → ‌测试执行‌ → ‌环境部署‌,整个过程通过Jenkins流水线脚本(Pipeline)定义,并支持实时监控和日志回溯25。例如:前端项目构建完成后,Jenkins调用Nginx插件实现反向代理部署

六、性能测试

Jmeter

七、算法刷题

lecode hot 100

- THE END -

Ryder

4月25日15:37

最后修改:2025年4月25日
0

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论