测试分类+自动化测试01

一、高频安全漏洞(实操可复现,面试必考)

软件测试中最常遇到的3类安全漏洞,每类都附真实接口复现步骤,拿去就能演示,记熟就能应对面试提问。

1. SQL注入(最经典,危害最大)

核心定义:用户输入的内容被当作SQL语句执行,绕过校验、获取数据甚至破坏系统。

复现步骤(超简单,必会)

  • 用户名输入框填:admin' or 1=1 --

  • 密码随便填(比如123)

  • 最终请求拼接后,SQL变成:SELECT * FROM user WHERE username='admin' or 1=1 --' AND password='123'

关键解析:1=1永远成立,--注释掉后面的密码校验,直接登录成功。

危害:直接登录任意账号、查库、删表、窃取敏感数据。

防御方法:MyBatis用#{}(预编译),不要用${};输入做过滤校验。

2. 水平越权(同权限用户的"数据泄露")

核心定义:同权限用户,非法访问其他同权限用户的数据(权限没变,只是看了别人的内容)。

复现步骤(真实接口)

  • 你登录自己的账号,userId=1001,正常查询自己的订单:GET /api/order/list?userId=1001

  • 把URL里的userId改成1002,请求变成:GET /api/order/list?userId=1002

  • 若能看到userId=1002的订单,就是水平越权漏洞。

防御方法:后端必须校验,当前登录用户ID == 要查询的用户ID。

3. 垂直越权(普通用户变"管理员")

核心定义:低权限用户(如普通用户),非法访问高权限接口,实现权限等级提升。

复现步骤(真实接口)

  • 你是普通用户,无管理员权限

  • 直接访问管理员专属接口:GET /api/admin/user/all(查询所有用户)

  • 若能看到所有用户列表,就是垂直越权漏洞。

防御方法:接口加权限拦截;基于角色控制(RBAC);判断当前用户是否为管理员。

面试必背精简总结

  • SQL注入:输入变成SQL执行,可登录、查库、删库

  • 水平越权:同权限看别人数据(改ID就行)

  • 垂直越权:低权限访问管理员接口

二、经典测试场景:24小时过期功能怎么测试?

这是典型的时间依赖型业务逻辑测试,核心是验证"超过24小时后,数据/功能是否按预期失效",无需真等24小时,教你高效测试方法。

1. 核心测试思路(必做步骤)

  • 构造正常数据:创建时间为当前时间,验证功能可正常使用。

  • 构造临界数据:23小时59分59秒(仍可用)、24小时整(触发过期)、24小时01分(已失效)。

2. 时间模拟方法(避免无效等待)

方法 操作方式 优点 缺点
修改系统时间 本地/测试环境将系统时间后调24小时+ 成本低、见效快 可能影响其他依赖时间的功能
数据库直接修改 修改数据的创建时间为24小时前 精准控制时间点 需要数据库操作权限
接口参数篡改 传入24小时前的时间戳 适合接口测试 仅适用于可干预时间参数的场景
Mock服务 固定返回"24小时前"的时间 不影响环境 需要额外搭建Mock服务

3. 核心测试点(必覆盖)

  • 正常流程:24小时内功能可用;

  • 临界场景:24小时整触发过期,23小时59分59秒仍可用;

  • 异常场景:跨天/跨月/跨年的24小时、时区差异;

  • 用户体验:过期后有清晰提示,支持重新生成/激活。

三、黑盒测试核心方法(新手必学)

黑盒测试不关注代码内部逻辑,只看输入输出,核心是用最少的用例覆盖最多场景,以下两种方法最常用,结合使用效果最佳。

1. 等价类划分法

核心概念:将输入数据划分为"有效等价类"(符合需求)和"无效等价类"(不符合需求),减少测试用例数量。

示例(6~15位字符输入)

  • 有效等价类:6~15位字符(如abc123、test123456789);

  • 无效等价类:<6位(a12)、>15位(abcdefghijklmnopq)、含非法字符(!@#、空格)。

2. 边界值分析法

核心概念:作为等价类划分的补充,重点测试输入/输出的边界值(软件缺陷多出现于边界),分为"边界值"(范围端点)和"次边界值"(边界附近临界值)。

示例(有效范围[6,15],闭区间)

  • 边界值:6(有效)、15(有效);

  • 次边界值:5(无效)、16(无效)。

口诀(必背):等价类抓中间,边界值掐两头。

四、正交表测试(多因素多水平高效测试)

当测试场景有多个输入条件(因素),每个条件有多种取值(水平),全量测试用例太多,用正交表可大幅精简,核心是"均匀覆盖关键组合"。

1. 正交表L₄(2³)解读(最常用)

  • L:正交表;4:4行(4条测试用例);2³:3个因素,每个因素2个水平;

  • 核心性质:均衡性(每列不同取值出现次数相同)、正交性(任意两列组合齐全均衡);

  • 价值:全量测试需8次,用正交表仅需4次,不遗漏关键组合。

2. 实操示例(注册场景)

5个因素(姓名、邮箱、密码、确认密码、验证码),每个因素2个水平(填写/不填写),全量需32条用例,用正交表可精简为6条核心用例,核心逻辑:覆盖所有因素的关键组合,波浪号(~)表示该因素可任意取值(不影响覆盖)。

五、接口测试示例(博客详情接口)

接口测试是测试核心,以博客详情接口(POST /blog/getBlogDetail?blogId={id})为例,覆盖请求方法、身份认证、请求参数3个核心维度,直接套用即可。

核心测试场景及用例

测试类型 测试场景 操作步骤 预期结果
请求方法 正确GET请求 改用GET方式携带blogId请求 正常返回数据或提示方法不允许
身份认证 不携带Token 移除user_token_header请求头 返回401,提示缺少认证信息
请求参数 blogId为无效值 传入blogId=999999(不存在) 返回失败,提示博客不存在

六、常见测试类型全解析

整理了软件测试中最核心的测试类型,明确每种类型的核心目标、方法和场景,避免混淆,面试常考。

1. 功能测试、性能测试、可靠性测试

  • 功能测试:核心是"功能能用",验证软件是否实现需求规定的功能,用黑盒测试方法(等价类、边界值等);

  • 性能测试:核心是"功能用得快",关注响应时间、吞吐量、并发数、资源占用(CPU/内存);

  • 可靠性测试:核心是"功能用得稳",验证软件长时间运行、异常环境下(断电、断网)是否稳定,关注平均无故障时间(MTBF)。

2. 静态测试vs动态测试

维度 静态测试 动态测试
是否运行程序 不运行 必须运行
核心手段 代码走查、文档评审、工具扫描 功能测试、接口测试、压测
发现问题阶段 编码/设计阶段(早期) 程序运行时

一句话记忆:静态看代码/文档找问题,动态跑程序看结果找问题。

3. 白盒测试(结构测试)

核心是"看代码,围绕代码逻辑设计用例",重点覆盖程序内部逻辑路径,常用6种覆盖方法(从弱到强):

  • 语句覆盖:每一行可执行代码至少执行一次(最弱);

  • 判定覆盖:每个判断语句的真假分支至少执行一次;

  • 条件覆盖:每个判断中的独立条件真假至少取一次;

  • 判定条件覆盖:同时满足判定覆盖和条件覆盖;

  • 条件组合覆盖:每个判断中所有条件的真假组合至少出现一次;

  • 路径覆盖:覆盖所有可能的执行路径(最强)。

4. 白盒vs黑盒vs灰盒测试(通俗区分)

  • 白盒测试:拆代码,逐行查逻辑(开发人员常用,单元测试);

  • 黑盒测试:不看代码,只看输入输出(测试人员常用,系统测试);

  • 灰盒测试:介于两者之间,知道部分内部结构,重点测模块间交互(集成测试常用)。

5. 集成测试vs系统测试vs回归测试

  • 集成测试:测模块之间的接口和交互(比如登录模块→博客列表模块),开发人员执行,用灰盒测试;

  • 系统测试:测整个系统是否符合需求,测试人员执行,用黑盒测试,包含冒烟测试、用例执行测试;

  • 回归测试:核心是"改代码后,老功能还能用",比如修复Bug、新增功能后,重新测试原有功能,避免引入新缺陷(常用自动化执行,提高效率)。

6. 验收测试

软件交付前的最后一道关卡,由用户/甲方执行,用黑盒测试,验证软件是否符合真实业务需求(系统测试是测是否符合设计规格,验收测试是"用户说了算")。

7. 手工测试vs自动化测试

两者互补,不是替代关系:

  • 自动化测试:适合回归测试、批量场景(一次编写,重复执行),效率高、无疏忽,但技术要求高,无法做发散性测试;

  • 手工测试:适合新功能探索、界面易用性测试,灵活自由,能发现脚本覆盖不到的问题,但效率低、成本高。

七、面试/课设补充建议

以上知识点涵盖了软件测试的核心考点和实操场景,如果你需要,可提供可直接演示的漏洞代码(Java/SpringBoot)+修复代码、测试用例模板、Postman集合导出格式,拿去做课设、面试都能用,省去自己整理的时间。

最后提醒:软件测试的核心是"发现缺陷、保障质量",所有测试方法和场景,都围绕"需求"展开,记住核心知识点,结合实操练习,就能快速上手~

相关推荐
承渊政道2 小时前
【优选算法】(实战领略前缀和的真谛)
开发语言·数据结构·c++·笔记·学习·算法
苦瓜小生2 小时前
【Docker】| Docker学习笔记
笔记·学习·docker
玻璃杯中水2 小时前
硬件知识总结梳理-5(二极管)
单片机·嵌入式硬件·学习
2501_938313402 小时前
计算机网络学习笔记】初始网络之网络发展和OSI七层模型
笔记·学习·计算机网络
nap-joker3 小时前
【跨尺度】跨尺度多实例学习用于病理图像诊断
人工智能·学习·注意力机制·跨尺度·病理学切片
Lyyaoo.3 小时前
适配器模式
单元测试·适配器模式
feibaoqq3 小时前
OpenClaw 三种使用方式全对比:网页端 / 接入飞书 / 接入钉钉 优缺点与选型指南
人工智能·学习·ai
talen_hx2963 小时前
screw-core生成数据库表结构文档简单例子
数据库·笔记·学习
m0_651562523 小时前
0325学习笔记
笔记·学习