软件测试分类指南(上):从目标、执行到方法,系统拆解测试核心维度
🔥草莓熊Lotso:个人主页
❄️个人专栏:《C++知识分享》《Linux 入门到实践:零基础也能懂》
✨生活是默默的坚持,毅力是永久的享受。
🎬博主简介:
目录
前言:
一. 按测试目标分类:聚焦 “测什么”
1.1 界面测试(UI 测试):软件的 “颜值审核”
1.2 功能测试:软件的 “能力验证”
1.3 性能测试:软件的 “速度与耐力考核”
1.4 可靠性测试:软件的 “稳定度评分”
1.5 安全性测试:软件的 “防盗门锁”
1.6 易用性测试:软件的 “用户体验评分”
二. 按执行方式分类:聚焦 “怎么测”
2.1 静态测试:不运行软件的 “火眼金睛”
2.2 动态测试:运行软件的 “实际验证”
三. 按测试方法分类:聚焦 “从什么角度测”
3.1 白盒测试:看透代码的 “内部视角”
3.1.1 语句覆盖
3.1.2 判定覆盖
3.1.3 条件覆盖
3.1.4 判断条件覆盖
3.1.5 条件组合覆盖
3.1.6 路径覆盖
3.2 黑盒测试:只看功能的 “用户视角”
3.3 灰盒测试:介于两者之间的 “折中视角”
结尾:
前言:
在软件生命周期中,测试是保障产品质量的关键环节。但软件测试并非 “一刀切” 的工作 —— 不同阶段、不同场景需要不同的测试策略。本文将从测试目标、执行方式、测试方法三个维度,拆解软件测试的核心分类,帮你建立系统化的测试认知。
一. 按测试目标分类:聚焦 “测什么”
测试目标决定了测试的核心方向,不同目标对应不同的质量维度,常见分类包括界面、功能、性能等 6 类,覆盖软件从 “颜值” 到 “能力” 的全面验证。
1.1 界面测试(UI 测试):软件的 “颜值审核”
界面是用户与软件的第一触点,UI 测试的核心是验证 “界面是否符合设计预期”,避免出现 “设计图是精致海报,实际是潦草涂鸦” 的差距。测试核心内容:
- 验证界面内容显示的完整性,一致性,准确性,友好性。比如界面内容对屏幕大小的自适应,换行,内容是否全部清晰展示
- 验证整个界面布局和排版时否合理,不同板块字体的设计,图片的展示是否符合需求
- 对界面不同控件的测试,比如,对话框,文本框,滚动条,选项按钮等是否可以正常使用,有效和无效的状态是否设计合理
- 界面的布局和色调符合当下时事的发展。
举个 “找茬” 例子:若设计图中 “百度新闻” 页面有 “百度一下” 按钮,而实际页面只显示 “百度” 二字,或 “文库” 模块被错写为 “太库”,均属于 UI 测试需发现的问题。
1.2 功能测试:软件的 “能力验证”
功能测试是最基础的测试类型,核心是验证 “软件是否按需求实现功能”,确保 “用户要的,软件都能做到”。测试逻辑:
- 依据:产品规格说明书(PRD),用黑盒测试方法(等价类、边界值、场景法等)设计用例;
- 重点:逐项验证功能是否正常(如登录功能支持手机号 / 邮箱登录)、异常场景是否处理(如输入错误密码时提示 “密码错误”)、功能逻辑是否符合预期(如购物车结算时自动计算折扣)。
举个例子:测试博客系统的 “发布文章” 功能,需验证:输入标题 + 正文后能成功提交、未填标题时提示 “请输入标题”、发布后在列表页能看到新文章 —— 这些均属于功能测试范畴。
1.3 性能测试:软件的 “速度与耐力考核”
你是否遇到过 “网页加载半分钟”“查询数据时页面卡死” 的情况?这些都是性能问题。性能测试的核心是验证 “软件在不同场景下的响应速度、稳定性”。常见场景:
- 响应时间:如博客列表页加载时间是否≤2 秒、数据查询是否≤1 秒;
- 并发能力:如 1000 人同时登录系统时,是否出现卡顿或崩溃;
- 资源占用:如软件运行时 CPU / 内存占用是否过高(避免手机后台运行时耗电过快)。
测试逻辑:先分析性能需求(如 “支持 500 并发用户”),再通过工具模拟场景,最后根据结果调优。
1.4 可靠性测试:软件的 “稳定度评分”
可靠性(可用性)指软件 “正常服务的时间占比”,核心是 “少出故障、出故障后快速恢复”。计算公式:可靠性=正常运行时间+非正常运行时间正常运行时间×100%行业标准:
- 一般网站:99%~99.5%(允许全年 downtime 约 438~876 小时);
- 金融 / 电商系统:99.99%(全年 downtime 仅约 52 分钟);
- 军事 / 医疗系统:99.999%(全年 downtime 仅约 5 分钟)。
举个通俗例子:若让 “老王请吃饭” 10 次,他只请了 1 次,可靠性就是 10%(不可靠);若 10 次都请,可靠性就是 100%(可靠)—— 软件的可靠性同理,故障越少越可靠。
1.5 安全性测试:软件的 “防盗门锁”
安全性测试聚焦 “保护用户数据和系统安全”,避免黑客攻击、数据泄露等风险。常见安全漏洞:
- 输入域,如输入恶性或者带有病毒的脚本或字符串;
- 代码中的安全性问题,如SQL/XML注入
- 不安全的数据存储或者传递
- 数据文件,邮件文件,系统配置文件等里面有危害系统的信息或者数据
- 有问题的访问控制,权限分配等
- 假冒ID:身份欺骗
- 篡改,对数据的恶意修改,破坏数据的完整性
测试方法:静态测试(代码评审找漏洞)、动态测试(渗透测试模拟黑客攻击),常用工具如 OWASP ZAP(动态)、HP Fortify(静态)。
1.6 易用性测试:软件的 “用户体验评分”
易用性测试的核心是 “让用户用得舒服”,符合 ISO25020 标准中 “易发现、易学习、易使用” 的要求,重点关注 4 个维度:
- 规范性:如安装界面符合系统默认风格(Windows 软件的 “下一步” 按钮在右侧);
- 直观性:如数据统计用柱状图展示、搜索框提示 “请输入关键词”;
- 灵活性:如手机键盘支持九宫格 / 全键盘 / 手写,满足不同用户习惯;
- 舒适性:如界面色调柔和、按钮点击有反馈(如按压效果)。
二. 按执行方式分类:聚焦 “怎么测”
按是否运行软件,可分为静态测试和动态测试,前者 “不跑代码找问题”,后者 “跑代码验证结果”。
2.1 静态测试:不运行软件的 “火眼金睛”
静态测试无需执行程序,通过分析代码、文档、界面等 “静态对象” 找问题,核心是 “防患于未然”。常见方式:
- 代码走查:人工检查代码逻辑(如是否有未定义变量、循环条件是否正确);
- 代码扫描工具:用 Coverity、SonarQube 等工具检测代码漏洞(如内存泄漏风险)。
优势:提前发现问题,避免代码运行后才暴露(如上线后才发现的语法错误)。
2.2 动态测试:运行软件的 “实际验证”
动态测试需实际执行程序,输入测试数据,对比 “实际输出” 与 “预期输出” 是否一致 —— 大多数测试工作都属于此类。
优势:直接验证软件运行效果,贴近用户实际使用场景。
三. 按测试方法分类:聚焦 “从什么角度测”
按是否了解软件内部结构,可分为白盒、黑盒、灰盒测试,三者覆盖从 “全知视角” 到 “用户视角” 的不同场景。
3.1 白盒测试:看透代码的 “内部视角”
白盒测试又称之为结构测试或逻辑测试,它一般用来分析程序的内部结构,针对程序的逻辑结构来设计测试用例进行测试。
白盒测试的测试目的是,通过软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试;在程序不同地方设立检查点,检查程序的状态,以确定实际运行状态与预期状态是否一致。
白盒测试主要分为静态测试和动态测试两种。静态测试常见于桌面检查,代码审查,代码走查,代码扫描工具,动态测试方式主要包含六种测试方法:语句覆盖,判断覆盖,条件覆盖,判定条件覆盖,条件组合覆盖,路径覆盖。
给出简单的案例,接下来了解一下白盒测试方法的概念和使用
3.1.1 语句覆盖
每个语句至少执行一次。
针对A and B:A为T且B为T
针对C or D:C为T或者D为T
得出示例:
- 用例1:A为T,B为T,C为T,D为F
3.1.2 判定覆盖
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 ④
得出用例:
- 用例1:A=T B=T C=T D=F 满足 ①③
- 用例2:A=T B=F C=F D=F 满足 ②④
3.1.3 条件覆盖
- 用例1:A=T B=T C=T D=T ⑤
- 用例2:A=F B=F C=F D=F ⑥
3.1.4 判断条件覆盖
- 用例1:A=T B=T C=T D=T 满足①③⑤
- 用例2:A=F B=F C=F D=F 满足②④⑥
3.1.5 条件组合覆盖
3.1.6 路径覆盖
数据 | 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 |
- 白盒测试主要应用于单元测试阶段
- 先执行静态设计用例的放法,再执行动态设计测试用例的方法
- 设计用例⼀般使用路径测试,重点模块追加使用逻辑覆盖方法
3.2 黑盒测试:只看功能的 “用户视角”
黑盒测试无需了解内部结构,仅通过 “输入输出” 验证功能是否符合需求,核心是 “站在用户角度找问题”。
测试方法:等价类(如登录密码分 “有效长度”“无效长度”)、边界值(如密码长度 10 位时测试 9 位、10 位、11 位)、场景法(如模拟 “用户注册→登录→下单” 全流程)。
优势:无需懂代码,聚焦用户需求,避免遗漏用户高频场景;
缺点:无法覆盖所有代码路径(如某些隐藏的逻辑漏洞可能测不到)。
3.3 灰盒测试:介于两者之间的 “折中视角”
灰盒测试既关注输入输出(如黑盒),也关注部分内部结构(如接口),常用于集成测试阶段。
特点:不深入所有代码细节,但会关注模块间接口(如验证 “用户模块” 向 “订单模块” 传递数据是否正确);
局限:无法完全替代黑盒(覆盖范围不足)和白盒(深度不够),需结合两者使用。
结尾:
往期回顾:
测试新人必看:6 种易上手的用例设计方法,快速搭建思路
结语:按目标分类,帮你明确 “要验证软件的哪些质量维度”;按执行方式分类,帮你选择 “是否需要运行程序”;按方法分类,帮你确定 “从内部还是外部视角测试”。这些分类并非孤立 —— 比如 “测试登录功能的性能”,属于 “性能测试(目标)+ 动态测试(执行)+ 黑盒测试(方法)” 的交叉场景。下一篇,我们将继续拆解按测试阶段、是否手工、实施组织划分的测试类型,帮你构建更完整的测试知识体系。
✨把这些内容吃透超牛的!放松下吧✨
ʕ˘ᴥ˘ʔ
づきらど