软件测试之测试的分类(重点:黑盒测试、白盒测试、单元测试、集成测试、系统测试)

news2024/11/17 11:47:28

文章目录

  • 1. 按照测试对象进行划分
    • 1)界面测试
    • 2)可靠性测试
    • 3)容错性测试
    • 4)文档测试
    • 5)兼容性测试
    • 6)易用性测试
    • 7)软件安装卸载的测试
    • 8)安全测试
    • 9)性能测试
    • 10)内存泄漏测试
  • 2. 按照是否查看代码划分
    • 1)黑盒测试
    • 2)白盒测试
    • 3)灰盒测试
  • 3. 按照开发阶段划分
    • 1)单元测试(结合 V 模型)
    • 2)集成测试
    • 3)系统测试
    • 4)验收测试
    • 5)将上面四种测试方法同 V 模型的阶段进行对应
  • 4. 按照测试实施组织划分
    • 1)α 测试
    • 2)β 测试
    • 3)第三方测试
  • 5. 按照是否运行进行划分
    • 1)静态测试
    • 2)动态测试
  • 6. 按照是否手工划分
    • 1)手工测试
    • 2)自动化测试
  • 7. 按照地域划分

1. 按照测试对象进行划分

1)界面测试

界面是直接和用户进行交互的,界面设计的好坏决定了用户使用软件的直观感受

界面测试(UI 测试)一般包括以下内容:

  1. 对比 UI 设计稿,验证系统显示界面的一致性和正确性
  2. 验证界面上每个功能的正确性
  3. 验证界面排版布局是否合理。字体大小、图片排版、清晰程度等
  4. 验证界面控件的功能是否正常。滚动条、按钮、文本框等
  5. 对不同分辨率下的界面进行测试
    • 保证页面从大变小(或从小变大)的变化过程是丝滑顺畅、不卡顿的
    • 保证页面的字体不模糊、不重影、不消失
    • 保证页面中的图片不消失、排版布局合理
    • 保证页面的功能正常使用

2)可靠性测试

可靠性 是指系统正常运行的能力或者程度,一般用百分比表示

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

影响软件可靠性的因素:

  • 软件本身
  • 外界因素,包括电、网络、硬件设备等

3)容错性测试

容错性 是指因为自身或者外部一些异常的操作使得系统发生异常,系统能够自我处理异常或者错误的能力

容错性测试包含以下几个方面:

  • 用户输入异常数据时,系统会不会给出提示,或者系统内部是否做一些处理

  • 在用户做出一些复杂操作或者可能危害数据安全的操作时,会不会给出提示信息

  • 断电、断网或者硬件设备出问题了,是否可以无缝切换到备用服务器

  • 灾难恢复性测试

    人为使服务器发生故障,测试软件系统的环境恢复能力、系统数据恢复能力、以及恢复的时间

4)文档测试

对整个开发过程中产生的各种文档,需求文档、设计文档、功能文档、用户使用手册进行测试,验证文档的正确性、一致性和完整性

5)兼容性测试

  • 平台的兼容: 验证系统对不同浏览器、操作系统、不同品牌手机或者电脑的兼容性
  • 软件本身的兼容: 验证软件新功能对旧功能的兼容性,新开发的功能不能影响旧功能的使用
  • 软件对用户数据的兼容性: 比如数据库中的一张表新增加一个字段,不能影响用户之前数据的存储
  • 软件对第三方软件的兼容性: 在与第三方软件有功能或者数据交互时,不能影响第三方软件的使用

6)易用性测试

易用性测试 是指验证用户在使用软件过程中的是否灵活舒适、简单易用

易用性测试一般包括以下几点:

  • 符合标准和规范

    对于现在的软件,其 UI 设计的标准已经慢慢被确立,多数用户已经习惯了这种标准和规范。比如,软件发生严重错误时给出提示时图片或者字体的颜色

  • 直观性

    要求界面布局合理,软件功能操作简单、清晰易懂

  • 灵活性

    用户可以根据自己的习惯选择适合自己的操作方式

    比如,手机上的键盘可以切换九宫格、全键盘、手写和五笔输入

  • 舒适性

    让用户对自己的操作有感知,不产生焦虑情绪

    安装或者下载软件时,添加上进度条

7)软件安装卸载的测试

主要的测试点有以下几点:

  • 是否可以使用不同方式正常安装和卸载软件
  • 安装或者卸载时是否可以手动暂停或者取消
  • 安装空间不足时,是否给出提示
  • 卸载中途,取消卸载,软件是否可以正常使用
  • 卸载或者安装过程中的异常测试(如:断网、断电、死机等)
  • 卸载完成之后,软件的数据文件信息是否清理干净

8)安全测试

安全性 是指信息安全,指网络和系统保护用户的数据和隐私不被侵犯和泄露

防病毒、防黑客、防 XSS 注入、防 SQL 注入、防爬虫

9)性能测试

在使用软件时,有时会碰到网页打开时越来越慢,查询数据时很长时间才显示列表,这些都是系统的性能问题引起的

常见的性能问题如下:

  • 资源泄露
  • 资源瓶颈
  • 线程死锁,线程阻塞
  • 查询速度慢或效率低

衡量一个系统性能好坏的关键性指标有,用户操作的响应时间吞吐量内存和 CPU 的使用率

10)内存泄漏测试

内存泄漏会使软件运行越来越慢,最终停止响应

常见的导致内存泄露的原因:

  • 内存分配后,没有回收
  • 程序的写法有问题,无法回收(比如死循环造成无法执行到回收步骤)
  • API 函数的使用不正确,无法回收

2. 按照是否查看代码划分

1)黑盒测试

黑盒测试 就是完全不关心软件内部代码的实现和逻辑结构,只关心系统的输入输出是否符合预期,功能是否符合需求说明书的规定

黑盒测试的优点:

  • 不需要了解代码的内部结构,代码能力差的人员也可以进行测试
  • 站在用户的角度对系统功能进行测试,有利于培养测试人员的用户思维
  • 测试用例是按照需求说明书设计的,不容易遗漏需求

黑盒测试的缺点: 由于黑盒测试不关心系统内部代码的实现,导致代码得不到测试

黑盒测试的测试方法:

等价类法边界值法错误猜测发因果图法场景法正交法

2)白盒测试

白盒测试 就是针对代码进行测试,根据代码的逻辑结构设计测试用例,验证代码的实际运行状态是否符合预期状态

白盒测试的测试方法:

  1. 语句覆盖:

    设计足够的测试用例,使得程序中的 每条语句都被至少执行一次

  2. 判定覆盖:

    设计足够的测试用例,使得程序中 每个判定语句的每个分支都被至少执行一次。

    如: if else 语句中 if 条件为真、为假都要被测试;switch case 语句中每个 case 都要被测试

  3. 条件覆盖:

    设计足够的测试用例,使得判定语句中 每个逻辑条件为真和为假都至少出现一次

    如: if (a > 0 && b < 0) 中,要确保 a > 0、b < 0 两个逻辑条件分别为真和为假的情况都至少出现一次

  4. 判定 – 条件覆盖:

    设计足够的测试用例,使得判定语句中 每个逻辑条件为真为假都至少出现一次,同时 判定语句的所有可能结果也至少出现一次

    如: if (a > 0 && b < 0) 中,要确保 a > 0、b < 0 两个逻辑条件分别为真和为假的情况都至少出现一次,同时 if (a > 0 && b < 0) 判定语句为真和为假的情况也至少出现一次

  5. 条件组合覆盖:

    设计足够的测试用例,使得判定语句中 逻辑条件结果的所有可能组合至少出现一次

    如: if (A && B) 中,存在两个条件 A 和 B,则条件组合覆盖要求测试用例包含以下几种情况:

    • A 为真,B 为真
    • A 为真,B 为假
    • A 为假,B 为真
    • A 为假,B 为假
  6. 路径覆盖:

    设计足够的测试用例,使得程序中 每一条可能走过的路径都至少执行一次

3)灰盒测试

介于黑盒测试和白盒测试之间的一种测试,多用于集成测试阶段,不仅关注程序的输入和输出,同时也关注程序内部的情况

3. 按照开发阶段划分

测试金字塔: 越往下测试效率越高,定位问题越容易

在这里插入图片描述

1)单元测试(结合 V 模型)

单元测试 是对软件组成的最小单元 —— 模块进行测试,验证软件基本组成模块的正确性

测试阶段: 编码后或者编码前(TDD)

TDD:测试驱动开发,在开发人员编写功能代码之前,先设计好测试用例的代码,然后根据测试用例的代码编写功能代码,最终目的是让开发前设计的测试用例全部都能执行通过

测试对象: 软件的各个模块

测试方法: 白盒测试

测试人员: 白盒测试工程师或者开发人员

测试依据: 详细设计文档

测试内容: 模块的接口、边界测试、异常测试、路径测试、局部数据结构的测试

Java 中使用 Junit 框架进行单元测试

2)集成测试

按照一定的策略把单元模块组合起来形成一个大的功能模块,对这个大的功能模块进行测试

测试阶段: 单元测试之后

测试对象: 集成的大模块

测试方法: 灰盒测试

测试依据: 概要设计文档

测试人员: 白盒测试人员或者开发人员

测试内容: 整个模块功能的正确性、单元模块之间接口的正确性、单个模块的缺陷对整个模块功能的影响、模块之间功能的冲突、全局数据结构的测试

3)系统测试

对整个软件系统的功能、性能以及软件运行的软硬件环境进行全面测试

测试阶段: 集成测试通过之后

测试对象: 整个软件系统

测试方法: 黑盒测试

测试人员: 黑盒测试人员

测试依据: 需求规格说明文档

测试内容: 功能、界面、兼容性、安全性、性能、可靠性、易用性、容错性

系统测试中还包含有回归测试和冒烟测试:

  • 回归测试: 当系统引入新的代码或者修改了旧代码之后,重新进行测试以确保系统各项功能正常使用

    回归测试一般采用自动化测试

  • 冒烟测试: 正式测试之前,会对系统的基本流程和核心功能进行测试,测试通过之后,才会开始正式测试

4)验收测试

软件上线前的最后一道测试,由用户或者产品交付方依据用户需求进行测试

测试阶段: 系统测试之后

测试对象: 整个系统

测试人员: 用户或者产品交付方

测试依据: 用户需求

测试方法: 黑盒测试

测试内容: 同系统测试

5)将上面四种测试方法同 V 模型的阶段进行对应

请添加图片描述

4. 按照测试实施组织划分

1)α 测试

α 测试 是指让用户或 除了开发人员和测试人员之外 的公司内部人员到开发现场去进行测试

2)β 测试

β 测试 是指 实际用户在实际使用环境下 进行测试,不限时间、不限地点

比如:某些游戏在正式上线之前会开启测试服,并邀请一部分玩家进行测试

α 测试和 β 测试的区别:

  • α 测试在 β 测试之前
  • 两者的测试环境不同,α 测试是在开发环境下,β 测试是在实际用户使用环境下
  • 相较于 α 测试,β 测试的规模较大,测试周期也比较长

3)第三方测试

由第三方软件测试机构 按照业内的标准和规范 对软件进行测试

5. 按照是否运行进行划分

1)静态测试

不运行代码,静态的检查代码中可能出现错误的地方,分析代码的逻辑结构和具体的方法实现是否满足需求

2)动态测试

运行代码,执行测试用例进行测试

6. 按照是否手工划分

1)手工测试

手工的一个一个的执行测试用例,查看测试结果

优点: 有利于做探索性测试,无法被自动化测试替代

缺点: 用例很多时容易出错,效率也比较低

2)自动化测试

机器按照事先设定好的条件去执行测试,这些条件包括正常的和异常的

自动化测试按照测试对象还可分为:UI 自动化、接口自动化、性能自动化

自动化的价值和意义: 节省人力,自动化脚本运用率越高,越有价值

不是所有项目都适合自动化测试

自动化测试不适合于项目不稳定,功能频繁变动的功能,一般多用于回归测试和冒烟测试

7. 按照地域划分

按照地域划分可以划分为:本地化测试国际化测试

软件的国际化: 开发软件时使用的一种工程技术,使得软件在适用不同国家的语言、风俗以及使用习惯的时候不用更改软件的源码就可以做到

软件的国际化和本地化是面向全球不同地区用户使用的软件系统的两个过程,而本地化测试和国际化测试则是针对这类软件产品进行的测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/486038.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录算法训练营第五十天| 123.买卖股票的最佳时机III、188.买卖股票的最佳时机IV

文章目录 123.买卖股票的最佳时机III188.买卖股票的最佳时机IV:star: 123.买卖股票的最佳时机III 至多买卖两次 分清楚动态规划所有状态至关重要&#xff0c;这是求dp数组的前提 和之前买卖股票问题解题思路相似&#xff0c;只是多增加了第二天的状态 总结&#xff1a;买卖股票…

Docker代码环境打包

1. 介绍 Docker是一种开源的容器化平台&#xff0c;它可以在操作系统级别运行应用程序。通过将应用程序及其依赖项封装成一个可移植的容器&#xff0c;Docker使得应用程序可以在任何环境中轻松部署、运行和管理。使用Docker&#xff0c;开发人员可以避免在不同环境中出现的配置…

测试从业第 3 年,我看到了终点......

先说明&#xff0c;今天的内容&#xff0c;是写给想成为高级测试开发、自动化测试专家的人看的&#xff0c;因为&#xff0c;它可能颠覆你的认知。 众所周知&#xff0c;如今无论是大厂还是中小厂&#xff0c;自动化测试基本是标配了&#xff0c;毕竟像双11、618 这种活动中庞…

vue-element-admin入门

vue-element-ui的基本使用 vue-element-admin下载vue-element-admin对接后端接口mock接口信息编写后端接口对接测试移除mock替换接口 vue-element-admin下载 这里下载的是基础模板&#xff0c;要下载完整版的可以去官网下载 # clone the project git clone https://github.co…

leetcode刷题日志4.0

目录 前言&#xff1a; 1.三个数的最大乘积 2.错误的集合 3.机器人能否返回原点 4.最长连续递增序列 5.验证回文串 II 6.交替位二进制数 前言&#xff1a; 五一假期结束了&#xff0c;大家玩的开心吗&#xff1f;不过我们还得回到我们的日常生活学习工作当中&#xff0c;…

X86架构与Arm架构的主要区别分析

​ X86架构和ARM架构是主流的两种CPU架构&#xff0c;X86架构的CPU是PC服务器行业的老大&#xff0c;ARM架构的CPU则是移动端的老大。 X86架构和arm架构实际上就是CISC与RISC之间的区别&#xff0c;很多用户不理解它们两个之间到底有哪些区别&#xff0c;实际就是它们的领域不…

《算法训练营》语言基础(゚Д゚

&#x1f442; 无论你多怪异我还是会喜欢你&#xff08;《刺客伍六七》动画推广版片尾曲&#xff09; - 周子琰 - 单曲 - 网易云音乐 一起补基础&#xff01; φ(゜▽゜*)♪ &#x1f442; My Nams Suzie - Susie/Farfashah …

20230503-win10-U盘安装WIN10-22h2

20230503-win10-U盘安装WIN10-22h2 一、软件环境 zh-cn_windows_10_consumer_editions_version_22h2_updated_april_2023_x64_dvd_80cec13e.isofirpe 1.8.2标签&#xff1a;firpe win10 22h2分栏&#xff1a;WINDOWS 二、硬件环境 8G或以上的有PE功能的启动U盘一个台式机需…

【2023年第十一届泰迪杯数据挖掘挑战赛】C题:泰迪内推平台招聘与求职双向推荐系统构建 27页论文及实现代码

【2023年第十一届泰迪杯数据挖掘挑战赛】C题&#xff1a;泰迪内推平台招聘与求职双向推荐系统构建 27页论文及实现代码 相关链接 &#xff08;1&#xff09;建模方案 【2023年第十一届泰迪杯数据挖掘挑战赛】C题泰迪内推平台招聘与求职双向推荐系统构建 建模及python代码详解…

String类的学习笔记(中):介绍字符串的不可变性和字符串常量池

本文介绍了String类字符串的不可变性和字符串常量池,主要包括 如何保证字符串不可变, 如何对字符串的修改. 为什么字符串要设置不可变, 字符串常量池的创建和了解,简单的字符串常量池图, 以及如何将字符串手动添加到字符串常量池 字符串不可变性和字符串常量池 一.字符串的不可…

考研数学经验分享

考研数二经验 先说一下自我情况吧&#xff0c;我是23计算机专硕考研&#xff0c;本科是河北一本双非&#xff0c;考的是数二英二和408。相对其他专业来说&#xff0c;计算机的专业课408由于要学四本书&#xff0c;所以会占用大部分时间&#xff0c;因此也会挤掉一些数学和英语的…

文本识别、截图识别保存和多文件识别

一、源码 github源码 二、介绍 采用Tesseract OCR识别 采用多线程进行图片识别 界面 选择 文件是可以识别本地的多张图片文件夹是识别文件夹里面的所有图片的内容截图 可以复制到剪切板、可以识别也可以直接保存 重置 是清除选择的图片和识别结果语言选择 是选择不同的模型…

AX7A200教程(7): 基于DDR3的串口发送和接收(64次突发)(二)

本章节主要使用ddr3做为缓存&#xff0c;串口接收的数据通过ddr缓存后通过发送模块发送出去。我们之前的串口发送数据通过ddr缓存是一个突发长度&#xff0c;本篇文章将会传输64个突发长度。整体的功能框图所下图所示 因本博文使用的是上个章节的图片数据&#xff0c;所以数据大…

微服务学习——分布式搜索

初识elasticsearch 什么是elasticsearch elasticsearch是一款非常强大的开源搜索引擎&#xff0c;可以帮助我们从海量数据中快速找到需要的内容。 elasticsearch结合kibana、Logstash、Beats&#xff0c;也就是elastic stack(ELK)。被广泛应用在日志数据分析、实时监控等领域…

Nmap入门到高级【第十一章】

预计更新第一章. Python 简介 Python 简介和历史Python 特点和优势安装 Python 第二章. 变量和数据类型 变量和标识符基本数据类型&#xff1a;数字、字符串、布尔值等字符串操作列表、元组和字典 第三章. 控制语句和函数 分支结构&#xff1a;if/else 语句循环结构&#…

linux系统下如何调试C/C++程序【越早知道越好】

前言 研发语言是C或者C的小伙伴&#xff0c;无论是从事服务端开发&#xff0c;还是客户端开发&#xff0c;都需要掌握linux系统下关于C/C代码的调试能力。 正文 入门示例 首先&#xff0c;我们通过一段存在问题的代码来演示整个调试过程以及问题分析定位的方法和手段。 示例代码…

如何使用 ChatGPT 生成 Stable diffusion 提示词

chatgpt免费体验入口网址&#xff1a; http://chat.xutongbao.top 一、教chatgpt写提示词 StableDiffusion是一款利用深度学习的文生图模型&#xff0c;支持通过使用提示词来产生新的图像&#xff0c;描述要包含或省略的元素。 我在这里引入StableDiffusion算法中的Prompt概念…

mysql 8.0安装全过程(linux上二进制包安装,非root用户)

目录 介绍 安装 0、删除随系统安装的mariadb 1、下载 2、解压 3、创建用户 4、创建数据目录 5、核心启动配置文件 6、安装依赖 7、初始化mysql文件 8、启动服务 9、配置环境变量 10、改root登录密码 可能遇到错误&#xff1a; 1&#xff09; libaio.so.1 缺少 2…

ASP.NET Core MVC 从入门到精通之HttpContext

随着技术的发展&#xff0c;ASP.NET Core MVC也推出了好长时间&#xff0c;经过不断的版本更新迭代&#xff0c;已经越来越完善&#xff0c;本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容&#xff0c;适用于初学者&#xff0c;在校毕业生&#xff0c…

kafka常见问题QA(六)

六、常见问题QA 6.1 无消息丢失如何配置 producer 调用方式 &#xff08;1&#xff09;网络抖动导致消息丢失&#xff0c;Producer 端可以进行重试。 &#xff08;2&#xff09;消息大小不合格&#xff0c;可以进行适当调整&#xff0c;符合 Broker 承受范围再发送。 不要使用…