软件测试的分类

article/2025/8/2 18:54:40

为什么要软件测试分类呢?

软件测试是软件生命周期中的一个重要的环节,基本伴随着软件整个生命周期,对软件测试分类后,我们可以根据软件生命不同阶段,进行对应的测试,这样就有助于我们条理分明,对于不同的测试运用不同的测试方法,分配不同的测试人员。

测试分类

按测试目的分类

界面测试(UI测试)

这个阶段主要是根据设计图去测试软件界面的布局是否符合设计图要求,整个界面在不同浏览器是否所有信息显示完整,界面上的输入框,点击按钮,滚动条是否能正常使用,无效的状态是否设计行大力等等。

功能测试

这个主要根据软件的需求文档,对软件的各项功能进行测试,最终判断软件的特性是否满足用户的需求,我们一般如何设计测试用例呢?一般参考产品特性,说明书进行测试用例的编写,具体的测试用例一般需要使用黑盒测试设计用例,如等价类,边界值,判断表法,正交法,场景法,错误猜测等等。

性能测试

我们经常使用一些软件或者打开浏览器网页,会发现需要等好久,才能加载出来这个页面,软件运行的速度越来越慢,这些问题其实就是性能问题引起的,所有针对这些问题,我们就要进行性能测试。对于性能测试,就对性能的需求进行分析,然后基于基于系统的性能需求和系统架构,去完成性能测试的设计和执行,最后进行持续的性能调优。

可靠性测试

可靠性测试也称为可用性测试
可靠性有一个公式可以计算出来。

可靠性=正常运行时间/(正常运行时间+非正常运行时间)

一般我们要求可靠性达到4个9,或则5个9,也就是99.99%或者99.999%。如果是四个9的话,我们每年运行异常的时间不难超过52分钟,如果是5个9就不能超过5分钟,对于不同的软件系统,要求也不一样,对于那些非及时性的信息网站可能要求就低一点,对于军事类或者像抖音啊,新闻啊这类网站可能要求就高一点。

安全性测试

其实就是测试这个软件网站,会不会泄露我们用户的隐私数据,数据在传输中会不会被截取,等扽安全类问题,常见的安全漏洞,比如sql注入,篡改证书,带有病毒的脚本等等。

易用性测试

这个主要是用户角度层面来测试的,拿我们手机的键盘举例的,键盘我们一般就是放在手机的下方,这样便于用户敲打字,敲字的方式有拼音或者九宫格或者五笔这都是根据用户习惯设立出来的,如果这时候,有一个软件的键盘设计出来是放在左上角右上角,那就不方便用户使用,我们这时候就要把这个问题检测出来,或者出来一个18格子输入法,也不方便用户使用。

按照执行方法分类

静态测试

静态测试其实就是我们不会去执行这个程序,不会让代码跑起来,我们会静态的阅读代码。检查代码,或者去检查界面来发现错误。一般会去看一些逻辑上,代码风格上,或者是否符合公司手册规定。一般用到的方法,代码走查,或者代码扫描工具。

动态测试

动态测试其实就是让代码跑起来,输入我们的测试数据,然后判断结果是否符合预期。

按照测试方法

白盒测试

白盒测试是对程序的内部构造,逻辑进行测试,判断是否符合预期。
白盒测试一般分为两种,动态测试和静态测试
静态测试的方法一般有桌面检查,代码审查,代码走查,代码扫面工具。
动态方法一般包括6种测试方法,语句覆盖,判断覆盖,条件覆盖,判定条件覆盖,条件组合覆盖。路径覆盖。

白盒测试主要用于单元测试阶段。

对于动态六种方法的解释。
  1. 语句覆盖
 if(A and B) {System.out.println( "Hello World111!");} 
if(C or D) {System.out.println( "Hello World222!");}

语句覆盖每条语句都要至少执行一次。
在这里插入图片描述
我们取其中一条用例都能满足两条语句都能被执行。

  1. 判断覆盖
    每条语句的判断可能性都能覆盖到。
    在这里插入图片描述

  2. 条件覆盖
    其实把种出现的条件都覆盖,在这里针对的A和B出现会那些条件
    在这里插入图片描述

  3. 判断条件覆盖
    这个就是既要判断覆盖,也要条件覆盖。
    在这里插入图片描述

  4. 条件组合覆盖。
    把每个条件都组合一下,比如A和B的条件组合一下,最后的出四个用例,满足条件组合的覆盖

在这里插入图片描述

  1. 路径覆盖
    覆盖每一条路径

在这里插入图片描述

在这里插入图片描述

黑盒测试

在这里插入图片描述
黑盒测试主要是关注软件的功能是否符合预期
黑盒测试就像把一个软件放在一个黑盒子里面,我们并不需要去知道程序的内部构造内部逻辑是是说明,我们只需要根据规格说明书,输入数据,判断结果是否符合预期结果就可以。符合证明软件的功能符合要求,一般黑盒测试用到的测试方法,等价类,边界值,因果图,场景图,错误猜测等方法。缺点就是不能覆盖到所有代码。

灰盒测试

黑盒测试是介于白盒测试和黑盒测试之间的一种测试,主要用于集成测试阶段,既要关注输入输出的正确,也要关注代码的逻辑。

你现在知道常用的测试方法有哪些了嘛?那些用的比较多。

常见的测试方法有黑盒测试,白盒测试,灰盒测试,开发人员主要用于白盒测试和黑盒测试,测试人员主要是白盒测试和黑盒测试,对于测试人员黑盒测试用的比白盒测试要多一点。

按照测试阶段分类

单元测试(白盒测试工程师和开发人员)

单元测试主要是针对软件最最小单元去测试,至于有多小这个根据人为定义,它主要是把程序分成各个模块,然后对每个模块的代码具体测试。测试主要再编码后或者编码前,根据代码注释和详细的设计文档来测试,用到主要的测试方法是白盒测试,主要测试模块接口测试,边界值测试,路径测试,错误处理测试等等。在java种也有很多单元测试框架比如jutil,提供了很多的注解和断言函数。

集成测试(白盒测试工程师和开发人员)

集成测试也称为联合测试,也就是我们所说的联调,基本在单元测试之后进行,把各个模块进行组合,主要用黑盒测试和白盒测试的方法去进行测试,测试模块之间的数据传输,模块之间是否产生冲突,模块组装的正确性,单模块对整体系统的影响。

系统测试

系统测试一般在集成测试之后,主要对整个系统进行整体的测试,验证系统的功能性和非功能性需求的实现。一般是用到的方法是黑盒测试,根据需求规格说明文档去测试整个系统是否满足需求。一般测试功能,界面,可靠性,易用性,性能,兼容性,安全性等。

冒烟测试:

冒烟测试主要是为了检查产品是否符合测试条件,主要会测试一下软甲的主要功能,核心流程正常,在进行系统测试之前执行,如果这些主要功能和核心流程都不正常,就没有必要进行系统测试,比如我们当兵前的役前训练。

回归测试:

回归测试,主要是当一个项目增添或者删除一个新功能,对旧代码可能有部分改动,这时候就要回归测试一下,看新增加的功能或者删除的功能是否对原有的功能产生影响,回归测试有两中测试方法,一种手工测试,一种就是自动化测试,因为回归测试测试的都是已经测试的过的内容,所有建议用自动化去测试。

验收测试(交付测试)

验收测试是整个测试阶段的最后一个测试操作,主要是确保软件准备就绪,按照项目合同腾武书,双方约定的验收依据文档,像软件购买方展示该软件系统满足原始需求。

举个车企造成的例子

车企造一辆车,就需要原材料,比如轮胎,发动机,等等部件,对于购买这些零件就需要检验,验证是否符合造车标砖(单元测试),这些零件符合造车标准后,就要去尝试组装,看零件与零件之间是否能匹配(集成测试),组长好一辆车后,还需要对安全性,功能检查是否正常(系统测试),购买车的用户会来体验车,看外观颜色是否符合自己预期(验收测试)

按照是否传统手工测试

主要有手工测试和自动化测试

自动化测试效率高,节省成本,但是不能发散测试,对测试人员技术要求较高
手工测试效率低,成本高,但是可以发散测试。

按照实施组织划分

α测试和β测试和第三方测试

α测试又被称为内测,一般是公司内部模拟一个测试,让公司的成员去体验这个产品,一般不能是程序员和测试人员完成
β测试又被称为公测,相当于给部分玩家发送一个体验测试码,让不同城市的不同玩家去测试。

α测试是公司内部测试,所有公司可以控制,用户较少,测试时间集中,β测试是对外部分用户,不受公司控制,数量比较多,时间不集中,一般α测试在β测试之前,持续时间前者短后者长

第三方测试:其实就是交给外包去模拟一些环境去测试

8.按测试地域划分。

本地测试和国际测试

本地测试一般是本国,国际测试,一般是全球,比如拼多多在国外就有另外一个版本,针对国际测试,可能会对时差,交易货币不同进行测试。


http://www.hkcw.cn/article/VwBDDirRrc.shtml

相关文章

<PLC><socket><西门子>基于西门子S7-1200PLC,实现手机与PLC通讯(通过websocket转接)

前言 本系列是关于PLC相关的博文,包括PLC编程、PLC与上位机通讯、PLC与下位驱动、仪器仪表等通讯、PLC指令解析等相关内容。 PLC品牌包括但不限于西门子、三菱等国外品牌,汇川、信捷等国内品牌。 除了PLC为主要内容外,PLC相关元器件如触摸屏(HMI)、交换机等工控产品,如…

实现一个免费可用的文生图的MCP Server

概述 文生图模型为使用 Cloudflare Worker AI 部署 Flux 模型,是参照视频https://www.bilibili.com/video/BV1UbkcYcE24/?spm_id_from333.337.search-card.all.click&vd_source9ca2da6b1848bc903db417c336f9cb6b的复现Cursor MCP Server实现是参照文章https:/…

Windows安装Miniconda

Windows安装miniconda 下载安装常用命令配置powershellVSCode配置虚拟环境 下载 进入官网 https://www.anaconda.com/download/success 下载windows版本的miniconda Miniconda3-latest-Windows-x86_64.exe 安装 一直点击下一步,可以选择安装路径 配置环境变量…

华为OD机试真题——二叉树中序遍历(2025A卷:200分)Java/python/JavaScript/C++/C语言/GO六种最佳实现

2025 A卷 200分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析; 并提供Java、python、JavaScript、C++、C语言、GO六种语言的最佳实现方式! 2025华为OD真题目录+全流程解析/备考攻略/经验分享 华为OD机试真题《二叉树中序遍历》: 目录 …

现代密码学 | 高级加密标准(AES)

接下来我们将讨论目前大多数计算机和硬件基础设施所使用的最重要的加密算法,例如高级加密标准(AES)、里弗斯特-沙米尔-阿德曼算法(RSA)、椭圆曲线加密(ECC)、基于格的加密、(环&…

cocos creator资源管理器,资源动态加载和释放

cocos 2.4.11版本 cocos 动态加载的资源需要自己增加引用和减少引用计数 cc.Asset.addRef 和 cc.Asset.decRef 注意: 1.使用当前代码管理资源,要区分项目中的静态资源和动态资源,静态资源就是预制体或者场景中的资源,代码中动态…

认识scratch,scratch是什么,如何使用

scratch是图形编程,将编程简化为积木的堆叠和嵌套,无需手写代码,只需清晰的逻辑即可完成自己的代码设计。通过它可以制作简单的小游戏等。 如图所示,这个就是scratch打开的界面,整个界面分为左中右三个部分&#xff0c…

HarmonyOS实战:腾讯IM之聊天详情页面搭建(二)

前言 鸿蒙版本腾讯 IM 的聊天功能十分复杂,需要开发者手动实现整个聊天对话的业务代码,这对开发者来说是个不小的挑战。本篇文章先从最基础的聊天对话列表开始教你一步一步实现完整的聊天功能,建议点赞收藏! 实现效果 先看本文…

IM系统的负载均衡

1.IM场景的负载均衡 2.方案总览 SDK层想要连接一个TCP网关或者WebSocket网关的方案 SDK单地址:在SDK中写死某个网关的IP或者域名,缺点是更换地址需要重新打包SDK SDK多地址:防止某一个地址嗝屁了写上多个地址用足保持高可用 暴露接口给客户端:SDK层访问接口动态获得地址 注…

动态规划之网格图模型(一)

文章目录 动态规划之网格图模型(一)LeetCode 64. 最小路径和思路Golang 代码 LeetCode 62. 不同路径思路Golang 代码 LeetCode 63. 不同路径 II思路Golang 代码 LeetCode 120. 三角形最小路径和思路Golang 代码 LeetCode 3393. 统计异或值为给定值的路径…

血糖监测仪解决方案推荐芯片-NRF52832/HS6621/OM6626

随着糖尿病患者数量的增加和人们健康意识的提升,血糖监测仪成为了日常健康管理的重要设备。市场对便携、智能且易于使用的血糖监测仪需求持续增长,而无线通信技术,尤其是蓝牙技术,已成为现代血糖监测仪的核心组件,提供…

基于Vite的前端自动化部署方案

👨 作者简介:大家好,我是Taro,全栈领域创作者 ✒️ 个人主页:唐璜Taro 🚀 支持我:点赞👍📝 评论 ⭐️收藏 文章目录 前言一、主流解决方案二、了解SCP概念三、自动化部署…

PlankAssembly 笔记 DeepWiki 正交视图三维重建

manycore-research/PlankAssembly | DeepWiki PlankAssembly项目原理 这个项目是一个基于深度学习的3D重建系统,其核心原理是从三个正交视图的工程图纸中重建出3D形状的结构化程序表示。 核心技术原理 1. 问题定义 PlankAssembly旨在从三个正交视图的工程图纸中…

MQTT协议,EMQX部署,MQTTX安装学习

一、MQTT概述 1.什么是MQTT MQTT是一种基于“发布订阅“”模式的消息传输协议。 消息:设备和设备之间传输的数据,或者服务和服务之间要传输的数据。 协议:传输数据时所遵循的规范。 2.常见的通讯模式 (1)客户端-服…

多模态大语言模型arxiv论文略读(101)

ML-Mamba: Efficient Multi-Modal Large Language Model Utilizing Mamba-2 ➡️ 论文标题:ML-Mamba: Efficient Multi-Modal Large Language Model Utilizing Mamba-2 ➡️ 论文作者:Wenjun Huang, Jiakai Pan, Jiahao Tang, Yanyu Ding, Yifei Xing, …

论文阅读:ADVWEB : CONTROLLABLE BLACK-BOX ATTACKS ON VLM-POWERED WEB AGENTS

原文:2410.17401 源码:https://ai-secure.github.io/AdvWeb/ 摘要: 本文设计了一种专门针对web agent的黑盒攻击框架,通过训练一个对抗性提示生成模型,在网页中自动生成并注入“隐形”对抗性字符串,引导网…

Wireshark 在 macOS 上使用及问题解决

wireshark概述 Wireshark 是被广泛使用的免费开源网络协议分析软件(network protocol analyzer)或网络数据包分析工具,它可以让你在微观层面上查看网络上发生的事情。它的主要功能是截取网络数据包,并尽可能详细地展示网络数据包…

企业级安全实践:SSL/TLS 加密与权限管理(一)

引言 ** 在数字化转型的浪潮中,企业对网络的依赖程度与日俱增,从日常办公到核心业务的开展,都离不开网络的支持。与此同时,网络安全问题也日益严峻,成为企业发展过程中不可忽视的重要挑战。 一旦企业遭遇网络安全事…

#Js篇:BlobFile对象URL.createObjectURL()fetchlocationnavigatornew URl

Blob 在 JavaScript 中,Blob 是一个非常重要的对象,用于表示不可变的、原始的二进制数据块(Binary Large Object) arrayBuffer():获取 Blob 的二进制数据作为 ArrayBuffer。 stream():创建一个可读流&…

HAProxy 可观测性最佳实践

HAProxy 简介 HAProxy(High Availability Proxy)是一款广泛使用的高性能负载均衡器,支持 TCP 和 HTTP 协议,提供高可用性、负载均衡和代理服务。它特别适用于负载较大的 Web 站点,能够支持数以万计的并发连接&#xf…