
🔥草莓熊Lotso:个人主页
❄️个人专栏:《C++知识分享》《Linux 入门到实践:零基础也能懂》
✨生活是默默的坚持,毅力是永久的享受。
🎬博主简介:

在软件生命周期中,测试是保障产品质量的关键环节。但软件测试并非 “一刀切” 的工作 —— 不同阶段、不同场景需要不同的测试策略。本文将从测试目标、执行方式、测试方法三个维度,拆解软件测试的核心分类,帮你建立系统化的测试认知。

测试目标决定了测试的核心方向,不同目标对应不同的质量维度,常见分类包括界面、功能、性能等 6 类,覆盖软件从 “颜值” 到 “能力” 的全面验证。
界面是用户与软件的第一触点,UI 测试的核心是验证 “界面是否符合设计预期”,避免出现 “设计图是精致海报,实际是潦草涂鸦” 的差距。测试核心内容:
举个 “找茬” 例子:若设计图中 “百度新闻” 页面有 “百度一下” 按钮,而实际页面只显示 “百度” 二字,或 “文库” 模块被错写为 “太库”,均属于 UI 测试需发现的问题。

功能测试是最基础的测试类型,核心是验证 “软件是否按需求实现功能”,确保 “用户要的,软件都能做到”。测试逻辑:
举个例子:测试博客系统的 “发布文章” 功能,需验证:输入标题 + 正文后能成功提交、未填标题时提示 “请输入标题”、发布后在列表页能看到新文章 —— 这些均属于功能测试范畴。
你是否遇到过 “网页加载半分钟”“查询数据时页面卡死” 的情况?这些都是性能问题。性能测试的核心是验证 “软件在不同场景下的响应速度、稳定性”。常见场景:

测试逻辑:先分析性能需求(如 “支持 500 并发用户”),再通过工具模拟场景,最后根据结果调优。
可靠性(可用性)指软件 “正常服务的时间占比”,核心是 “少出故障、出故障后快速恢复”。计算公式:可靠性=正常运行时间+非正常运行时间正常运行时间×100%行业标准:
举个通俗例子:若让 “老王请吃饭” 10 次,他只请了 1 次,可靠性就是 10%(不可靠);若 10 次都请,可靠性就是 100%(可靠)—— 软件的可靠性同理,故障越少越可靠。
安全性测试聚焦 “保护用户数据和系统安全”,避免黑客攻击、数据泄露等风险。常见安全漏洞:
测试方法:静态测试(代码评审找漏洞)、动态测试(渗透测试模拟黑客攻击),常用工具如 OWASP ZAP(动态)、HP Fortify(静态)。

易用性测试的核心是 “让用户用得舒服”,符合 ISO25020 标准中 “易发现、易学习、易使用” 的要求,重点关注 4 个维度:
按是否运行软件,可分为静态测试和动态测试,前者 “不跑代码找问题”,后者 “跑代码验证结果”。
静态测试无需执行程序,通过分析代码、文档、界面等 “静态对象” 找问题,核心是 “防患于未然”。常见方式:

优势:提前发现问题,避免代码运行后才暴露(如上线后才发现的语法错误)。
动态测试需实际执行程序,输入测试数据,对比 “实际输出” 与 “预期输出” 是否一致 —— 大多数测试工作都属于此类。
优势:直接验证软件运行效果,贴近用户实际使用场景。
按是否了解软件内部结构,可分为白盒、黑盒、灰盒测试,三者覆盖从 “全知视角” 到 “用户视角” 的不同场景。
白盒测试又称之为结构测试或逻辑测试,它一般用来分析程序的内部结构,针对程序的逻辑结构来设计测试用例进行测试。
白盒测试的测试目的是,通过软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试;在程序不同地方设立检查点,检查程序的状态,以确定实际运行状态与预期状态是否一致。

白盒测试主要分为静态测试和动态测试两种。静态测试常见于桌面检查,代码审查,代码走查,代码扫描工具,动态测试方式主要包含六种测试方法:语句覆盖,判断覆盖,条件覆盖,判定条件覆盖,条件组合覆盖,路径覆盖。
给出简单的案例,接下来了解一下白盒测试方法的概念和使用

每个语句至少执行一次。
针对A and B:A为T且B为T
针对C or D:C为T或者D为T
得出示例:
A and B 要为T -> A=T B=T ①
A and B 要为F -> A=T B=F 或者 A=F B=T 或者 A=F B=F ②
C or D 要为T -> C=T D=T/F 或者 C=T/F D=T ③
C or D 要为 F -> C=F D=F ④
得出用例:
A: T F
B: T F
C :T F
D :T F
⑤ ⑥
得出用例:
结合判定覆盖和条件覆盖。
得出用例:
A B ∣ C D
T T ∣ T TT F ∣ T F
F T ∣ F T
F F ∣ F F
每行就可以是⼀个用例,一共四个用例。

判定条件定义如下:
(1)if(x>0 && y>0)判定:记为P1
(2)if(z < 0)判定:记为P2
(3)x > 0:记为C1
(4)y > 0:记为C2
(5)z < 0:记为C3
数据 | C1 | C2 | C3 | P1 | P2 | 路径 |
|---|---|---|---|---|---|---|
{x=3,y=3,z=-2} | T | T | T | T | T | a-b-d-f |
{x=-3,y=3,z=-2} | F | T | T | F | T | a-c-d-f |
{x=3,y=3,z=2} | T | T | F | T | F | a-b-e-f |
{x=-3,y=15,z= 2} | F | T | F | F | F | a-c-e-f |
总结:
黑盒测试无需了解内部结构,仅通过 “输入输出” 验证功能是否符合需求,核心是 “站在用户角度找问题”。
测试方法:等价类(如登录密码分 “有效长度”“无效长度”)、边界值(如密码长度 10 位时测试 9 位、10 位、11 位)、场景法(如模拟 “用户注册→登录→下单” 全流程)。
优势:无需懂代码,聚焦用户需求,避免遗漏用户高频场景;
缺点:无法覆盖所有代码路径(如某些隐藏的逻辑漏洞可能测不到)。
灰盒测试既关注输入输出(如黑盒),也关注部分内部结构(如接口),常用于集成测试阶段。
特点:不深入所有代码细节,但会关注模块间接口(如验证 “用户模块” 向 “订单模块” 传递数据是否正确);
局限:无法完全替代黑盒(覆盖范围不足)和白盒(深度不够),需结合两者使用。
往期回顾:
结语:按目标分类,帮你明确 “要验证软件的哪些质量维度”;按执行方式分类,帮你选择 “是否需要运行程序”;按方法分类,帮你确定 “从内部还是外部视角测试”。这些分类并非孤立 —— 比如 “测试登录功能的性能”,属于 “性能测试(目标)+ 动态测试(执行)+ 黑盒测试(方法)” 的交叉场景。下一篇,我们将继续拆解按测试阶段、是否手工、实施组织划分的测试类型,帮你构建更完整的测试知识体系。
✨把这些内容吃透超牛的!放松下吧✨ ʕ˘ᴥ˘ʔ づきらど