软件与软件测试的定义与分类

2900 字
15 分钟
软件与软件测试的定义与分类

软件的定义#

软件是计算机系统中与硬件相互依存的无形逻辑产品,是程序、数据及其相关文档的完整集合,它通过在计算机硬件上运行来实现特定的功能、任务或服务。

核心组成三要素#

  1. 程序:软件的核心执行体,是按预先设计的逻辑和规则编写的、可被计算机执行的指令序列,直接完成计算、处理、交互等具体操作。

  2. 数据:程序运行所依赖、处理和产生的信息,包括用户输入、业务数据、配置参数、数据库内容等,是软件实现价值的载体。

  3. 文档:描述软件的需求、设计、开发、使用和维护的图文资料,如需求说明书、设计文档、用户手册、测试报告等,是软件可协作、可维护、可复用的关键保障。

关键特性#

  • 与硬件本质不同:硬件是有形的物理实体,软件是抽象的逻辑产品,无物理磨损,但会因需求变更、环境变化出现 “逻辑老化”。
  • 可无限复制:软件的复制成本极低,核心价值在于其设计和开发的智力劳动。
  • 强依赖性:必须依赖特定的硬件和系统环境才能运行。

软件的分类#

软件分类没有唯一标准,最核心、最通用的是按功能与服务对象划分,同时可结合运行方式、授权模式、部署形态等维度交叉分类。

系统软件#

为计算机本身提供运行环境、管理资源、支撑其他软件运行的基础软件,用户一般不直接用它完成具体业务任务。

  • 操作系统(OS):最核心的系统软件,管理硬件资源、调度程序运行、提供用户交互接口。例如 Windows、macOS、Linux、Android、iOS、鸿蒙 OS
  • 语言处理程序:将高级语言(C、Java、Python)转换为计算机可执行的机器码。例如 GCC 编译器、Python 解释器、JVM(Java 虚拟机)
  • 数据库管理系统(DBMS):统一管理和维护数据的系统软件。例如 MySQL、Oracle、SQL Server、Redis、MongoDB
  • 系统工具与实用程序:辅助系统运行、维护、诊断的工具。例如 硬件驱动程序、磁盘分区工具、杀毒软件、备份还原工具、任务管理器等

应用软件#

为满足用户特定业务、娱乐、办公等需求开发的软件,是用户直接使用的软件类型。

  • 通用应用软件:面向大众,适用于多个行业和场景。例如 Office/WPS(办公)、Chrome/Edge(浏览器)、微信 / QQ(社交)、Photoshop(图像处理)、网易云音乐(多媒体)
  • 专用 / 行业应用软件:针对特定行业、特定业务流程定制开发。例如 医院 HIS 系统、银行核心业务系统、工业 PLC 控制软件、AutoCAD(工程设计)、用友 / 金蝶(财务软件)、ERP 系统

两种架构风格#

C/S 架构#

  • 系统分为客户端和服务器两个独立部分:客户端安装在用户本地设备上,负责用户交互和部分业务处理;服务器负责核心业务逻辑、数据存储和管理,两者通过网络通信。
  • ✅ 优点:性能高(客户端可分担计算任务)、界面交互丰富、安全性可控、支持离线使用
  • ❌ 缺点:部署更新麻烦(需逐台升级客户端)、跨平台性差、维护成本高
  • 📌 典型例子:QQ / 微信客户端、企业 ERP 客户端、大型游戏、Photoshop 联网版、银行柜台系统

B/S 架构#

  • 客户端统一为标准浏览器,无需安装任何专用软件;所有业务逻辑、数据处理都集中在服务器端,浏览器仅负责展示页面和接收用户输入。
  • ✅ 优点:零安装、零维护(更新仅需改服务器)、跨平台性极强、访问不受地点限制
  • ❌ 缺点:性能弱于 C/S、复杂交互体验差、对网络依赖高、安全性相对较弱
  • 📌 典型例子:网页版邮箱、在线文档(腾讯文档)、电商网站、企业 OA 系统、百度搜索

软件测试的定义#

软件测试是在规定的条件下,对软件产品(程序、数据、文档)进行系统性的检查与验证,以发现缺陷、评估质量、验证需求符合性,并最终降低产品上线风险的过程。

软件测试的目标不是单纯 “找 bug”,而是三位一体:

  1. 发现缺陷:找出软件中存在的功能、性能、安全、兼容性等问题
  2. 验证需求:确认软件是否真正实现了用户的真实需求和设计要求
  3. 评估质量:量化软件的质量水平,为产品是否可以上线提供决策依据

软件测试本质上是风险管控活动:它无法消除所有风险,但能在成本和时间的约束下,尽可能发现并修复高优先级缺陷,将产品上线后的故障风险控制在企业和用户可接受的范围内。

关键要点#

  • 测试对象是完整的软件:不只是可执行的程序,还包括软件的另外两个核心组成 —— 数据(如测试用例数据、配置文件)和文档(如需求说明书、设计文档、用户手册)。
  • 测试贯穿全生命周期:不是 “开发完才测试”,而是从需求分析阶段就开始介入(测试左移),一直持续到上线后的运维阶段(测试右移)。
  • 测试的基本公理:测试只能证明软件存在缺陷,不能证明软件没有缺陷。穷尽所有可能的测试用例在工程上是不可能的。
  • 测试是标准化的专业活动:不是随意 “点来点去”,而是需要遵循 “计划→设计→执行→缺陷管理→报告” 的完整流程。

软件测试的分类#

软件测试分类维度众多,最核心、最通用的是按「测试阶段」划分(对应软件全生命周期),其次是「测试方法」和「测试对象 / 特性」,其他维度可交叉使用。

按测试阶段划分(最核心,面试必问)#

这是测试工作的标准流程,从代码编写到产品上线逐步推进,层层把关。

测试阶段测试主体核心测试内容测试依据典型例子
单元测试开发人员为主测试最小可执行单元(函数、方法、类)的逻辑正确性详细设计文档、代码测试登录接口的参数校验逻辑
集成测试测试人员 + 开发人员测试模块之间的接口调用、数据传递的正确性概要设计文档、接口文档测试用户服务与订单服务的调用是否正常
系统测试测试人员为主测试整个完整系统的功能、性能、安全、兼容性等所有特性需求规格说明书测试电商网站的下单、支付、退款全流程
验收测试客户 / 产品方为主验证产品是否满足业务需求和用户使用习惯,决定是否上线用户需求文档、验收标准企业客户验收 ERP 系统是否符合自身业务流程

验收测试的细分

  • α 测试:开发方内部模拟用户进行的验收测试
  • β 测试:面向真实用户的公开测试(如 APP 的公测版)
  • UAT 测试:用户验收测试,最正式的验收环节

回归测试不是一个独立的测试阶段,而是贯穿全生命周期的活动。指修改代码或修复缺陷后,重新执行相关测试用例,确保修改没有引入新的缺陷或影响其他功能。


按测试方法划分(基础方法论)#

根据是否查看软件内部代码和逻辑结构划分,所有测试类型都基于这三种方法。

测试方法核心思想常用技术适用场景
黑盒测试不看内部代码,只关注输入输出是否符合需求等价类划分、边界值分析、因果图、场景法绝大多数功能测试、系统测试、验收测试
白盒测试查看内部代码,测试代码逻辑的覆盖度和正确性语句覆盖、分支覆盖、条件覆盖、循环覆盖单元测试、部分集成测试
灰盒测试结合黑盒和白盒,既关注输入输出,也关注部分内部逻辑接口测试、数据库测试集成测试、接口测试

黑盒测试 ≠ 功能测试。黑盒是一种测试方法,功能测试是一种测试内容,功能测试大多采用黑盒方法,但黑盒也可用于性能、安全等测试。


按测试对象 / 特性划分(测试什么内容)#

分为功能测试和非功能测试两大类,是测试的核心工作内容。

  1. 功能测试(最基础、占比最大):验证软件的功能是否按照需求规格说明书正确实现,是所有测试的基础。例如 测试登录功能是否能正常登录、注册功能是否能成功注册、搜索功能是否能返回正确结果。

  2. 非功能测试(决定产品上限):验证软件除功能外的其他质量特性,直接影响用户体验和系统稳定性。

    • 性能测试:测试系统在不同压力下的表现
      • 负载测试:正常压力下的性能指标(响应时间、吞吐量)
      • 压力测试:极限压力下的系统稳定性和崩溃点
      • 并发测试:多用户同时操作时的系统表现
      • 稳定性测试:长时间运行下的系统可靠性
    • 安全测试:测试系统抵御攻击和数据泄露的能力。例如 SQL 注入、XSS 攻击、权限越权、敏感数据加密
    • 兼容性测试:测试软件在不同环境下的运行情况
      • 浏览器兼容(Chrome、Edge、Firefox)
      • 操作系统兼容(Windows、macOS、Android、iOS)
      • 设备兼容(不同型号的手机、电脑)
      • 版本兼容(新旧版本数据互通)
    • 易用性测试:测试软件是否容易学习、使用和理解
    • 可靠性测试:测试系统在规定时间和条件下完成规定功能的能力
    • 其他:安装测试、卸载测试、文档测试、本地化测试等

其他常用分类维度#

  1. 按执行方式

    • 手动测试:测试人员手动执行测试用例。
    • 自动化测试:通过脚本或工具自动执行测试用例(如 Selenium、Appium、Postman)。

    自动化测试不是一种独立的测试类型,而是一种测试执行方式,可用于功能、性能、回归等多种测试。

  2. 按测试目的

    • 冒烟测试:版本构建后,先执行核心功能的少量用例,验证版本是否可测
    • 回归测试:修改后验证是否引入新缺陷(见上文)
    • 探索性测试:不依赖测试用例,基于测试人员经验自由探索发现缺陷
    • 随机测试:随机输入数据进行测试,作为其他测试的补充

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!

赞助
软件与软件测试的定义与分类
https://umami.eu.cc/posts/software-testing-basics/
作者
迷失的天际
发布于
2026-03-27
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
迷失的天际
趁现在,享受短暂的人生吧!
公告
欢迎来到我的博客!
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章
32
分类
8
标签
37
总字数
76,162
运行时长
0 天
最后活动
0 天前

目录