第12章 软件测试基础(第三部分)测试类型

七、测试类型(按工程阶段划分)

单集系确收

(一)单元测试

1、单元测试/模块测试

  • 单元就是软件中最小单位(或模块)。可以是一个函数、一个过程、一个类。
  • 主要依据是模块的详细设计文档
  • 价值在于尽早发现程序的一些问题,降低后期缺陷修复代价。
  • 采用白盒、黑盒测试技术等进行,主要看测试需求。
  • 单元测试可由开发和测试工程师共同完成。
  • 针对软件程序模块进行正确性检验的测试工作

2、测试内容

测试内容

  • 单元测试主要是关注单元是否实现规定的功能,单元的逻辑是否正确,输入输出是否正确
  • 局部数据:测试在单元内的数据结构是否保持完整
  • 模块接口:模块接口既要调用其它接口,也要接受其它接口。
  • 独立路径信息无关的路径。是指在程序中至少引用了一个新的处理语句的集合,或者一个新条件的任意一条路径。
  • 出错处理:单元在运行过程中发生差错时单元是否能有效处理差错,避免程序崩溃。
  • 边界条件:对单元边界进行测试,确定单元边界是否正常。

(二)集成测试/组装测试/联合测试

1、概念

  • 在单元测试基础上,将所有模块按照概要设计说明书和详细设计说明书的要求进行组装。主要是发现单元接口之间可能存在的问题。
  • 概要设计阶段考虑如何进行集成测试
  • 单元测试考虑各个单元内部有无问题,集成测试验证将各个单元之间合起来之后能否达到上一级设计的功能要求。
  • 集成测试需要提交文档:集成测试计划、集成测试规格说明、集成测试分析报告
  • 检验程序单元或部件的接口关系,即针对软件体系结构的构造进行的测试

2、方式

  • 一次性组装
    非增值式组装方式/整体拼装
    首先对每个模块分别进行模块测试,把所有模块组装在一起进行测试,最终得到所求的软件系统。
    优点:节省工时、人力
    缺点:当发现问题时很难定位发生问题的地方

  • 增值性组装
    渐增式组装
    首先对一个个模块进行模块测试,然后将这些模块逐步组装成较大系统,组装中边连接边测试,最后通过增值逐步组成软件系统。
    包括自顶向下的增值方式(主干模块先暴露问题)自底向下的增值方式(最常出错的底层模块先暴露问题)、混合增值式方式(前两种的结合)

3、内容

  • 各模块连接时,穿越模块接口的数据是否丢失
  • 一个模块的功能是否会对另一个模块的功能产生不利影响
  • 各个子功能组合,能否达到预期要求的父功能
  • 全局数据结构是否有问题
  • 单个模块的误差累积是否会放大

4、完成标志

  • 成功执行测试计划中所规范的所有集成测试
  • 修正所有错误
  • 测试结果通过专门小组评审

5、桩模块/驱动模块

  • 桩模块:底层的模块。模拟调用模块功能的模块。也叫存根模块。用以代替所测模块调用的子模块。模块可以做少量的数据操作,不需要把子模块的所有功能都带进来,但不允许什么事情也不做。
  • 驱动模块:模拟上一级模块调用测试模块的模块。相当于所测模块的主程序。它接收测试数据,把这些数据传送给所测模块,最后再输出实测结果。

(三)系统测试

1、概念

  • 发现软件与系统定义不符合或与之矛盾的地方
  • 集成整个系统元素(包括硬件、外设、网络和系统软件、支持平台等)
  • 目的是验证最终软件系统是否满足用户规定的需求
  • 为验证和确认系统是否达到其原始目标,而对集成的硬件和软件系统进行的测试

2、内容

  • 按照需求规格说明书逐一验证系统的质量特性
    功能测试
    健壮性测试:容错能力;恢复能力

3、典型测试

  • 恢复测试:主要检查系统的容错能力
  • 安全测试:验证系统内部的保护机制
  • 压力测试:通常用于测试应用程序或系统在高负载、高压力情况下的性能和稳定性。(异常访问量、频率或数据量)

(四)确认测试/有效性测试

  • 验证软件的功能和性能以及其他特性是否与用户要求一致,由开发方组织
  • 主要内容:以规格说明书为主来开展、确认软件有效性;做软件配置的复查工作
  • 进行有效性测试 <— 黑盒测试
  • 软件配置复查
  • 检验与证实软件是否满足软件需求说明书中规定的要求

(五)验收测试

  • 用户为主
  • 一般使用生产中的实际数据进行测试
  • 决定是否接收或拒收系统
  • 按照项目任务书或合同、约定的验收依据文档等进行的整个系统的测试与评审,决定是否接收或拒收系统。

八、测试类型(按执行代码划分)

(一)动态测试

需要运行代码去发现错误。

1、黑盒测试法

2、白盒测试法

3、灰盒测试法

  • 介于黑白盒之间
  • 既考虑程序内部结构和逻辑,又考虑功能

(二)静态测试

不需要运行程序,通过人为审查程序发现错误。

1、代码审查

2、代码走查

九、测试类型(按实施主体划分)

(一)开发方测试

  • 开发方 开发环境下
  • Alpha测试
  • 指在软件开发完后,开发方要对提交的软件进行全面的自我检查与验证,它可以队软件产品编码结束之后开始,或在模块(子系统)测试完成后开始,也可以在确认测试过程中产品达到一定的稳定和可靠程度之后再开始。

(二)用户测试

  • 用户 用户应用环境下
  • Beta测试
  • 用户通过运行和使用软件,检测与验证软件是否符合自己预期的要求

(三)第三方测试

  • 第三方
  • 技术、财务、管理等独立于开发方、用户方的第三方组织
  • 独立测试

十、测试类型(按关联代码划分)

集成测试阶段采用黑盒和白盒测试相结合的方法

(一)白盒测试

  • 逻辑和结构
    白盒测试
  • 结构测试/逻辑驱动测试/基于代码的测试
  • 白盒测试把软件视为一个透明的盒子,盒子中程序的每一步如何进行分支、如何进行控制、数据如何流动……
  • 基于程序内部的结构、逻辑来设计测试用例

(二)黑盒测试

  • 功能
    黑盒测试
  • 功能测试/基于规格说明书的测试/基于数据驱动的测试
  • 不透明的黑色盒子,不清楚内部程序的结构和逻辑
  • 从用户角度去考虑产品的功能、特性并验证
  • 主要用于集成测试和确认测试阶段

十一、测试类型(按质量特性划分)

质量特性

十二、测试类型(按符合性情况划分)

(一)符合性测试

测试软件有没有符合相关的要求。

1、先决条件

  • 符合性准则文件(标准、合同等)
  • 就绪的软件(软件所有项均为可用状态、文档)
  • 软件的系统元素

十三、测试类型(回归测试)

(一)软件有变动的情况

软件发生变动时需要进行回归测试。

1、对缺陷修复
  • 首先验证缺陷是否正确修复
  • 然后测试缺陷修复可能影响到的功能是否正确
2、对新增功能
  • 验证新功能的正确性
  • 测试可能受到影响的其他功能
3、对删减功能
  • 检测是否影响到保留的功能

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Nginx负载均衡主备模式

1. 背景 使用Nginx代理后端服务&#xff0c;有时候某些服务是不能使用多台负载均衡&#xff0c;但又想保障高可用&#xff0c;所以采用主备模式&#xff0c;记录如下&#xff1a; 2. 参考 nginx 负载均衡Nginx-负载均衡-后端状态max_conns、down、backup、max_fails、fail_t…

文心一言 VS 讯飞星火 VS chatgpt (249)-- 算法导论18.2 2题

二、请解释在什么情况下&#xff08;如果有的话&#xff09;&#xff0c;在调用 B-TREE-INSERT 的过程中&#xff0c;会执行冗余的 DISK-READ 或 DISK-WRITE 操作。&#xff08;所谓冗余的 DISK-READ &#xff0c;是指对已经在主存中的某页做 DISK-READ 。冗余的 DISK-WRITE 是…

无脑入单向无头链表的实现| ArrayList和LinkedList的区别

1. ArrayList的缺陷 上节课已经熟悉了ArrayList的使用&#xff0c;并且进行了简单模拟实现。通过源码知道&#xff0c;ArrayList底层使用数组来存储元素。 由于其底层是一段连续空间&#xff0c;当 在 ArrayList 任意位置插入或者删除元素时&#xff0c;就需要将后序元素整体往…

踏上R语言之旅:解锁数据世界的神秘密码(三)

多元相关与回归分析及R使用 文章目录 多元相关与回归分析及R使用一.变量间的关系分析1.两变量线性相关系数的计算2.相关系数的假设检验 二.一元线性回归分析的R计算三、回归系数的假设检验总结 一.变量间的关系分析 变量间的关系及分析方法如下&#xff1a; 1.两变量线性相关…

延时任务通知服务的设计及实现(二)-- redisson的延迟队列RDelayedQueue

一、接着上文 RDelayedQueue作为redisson封装的一个分布式延迟队列&#xff0c;直接拿来使用还是比较简单的。 本文主要包括以下几部分&#xff1a; 保存至延迟队列&#xff08;生产者&#xff09;读取延迟队列&#xff08;消费者&#xff09;从延迟队列移除任务 二、rediss…

NCC导入导出开发

&#x1f4e3;NCC导入导出开发 ✨1. 导入流程图 ✨2. 实现步骤 &#x1f434;1. 前端代码实现。 &#x1f434;2. 配置文件创建与设置。 &#x1f434;3. 后端代码实现。 &#x1f434;4. 注册后端代码类。

通过Servlet和JSP,结合session和application实现简单网络聊天室(文末附源码)

目录 一.成品效果 二.代码部分 chat.jsp ChatServlet 一.成品效果 在启动成功后&#xff0c;我们就可以在任意俩个浏览器页面中相互发消息&#xff0c;如图所示左边屏幕使用的是Edge浏览器&#xff0c;右图使用的是火狐浏览器。当然笔者这里只是简单实现最基本的一些功能&…

【IC设计】CRC(循环冗余校验)

目录 理论解读CRC应用CRC算法参数解读常见CRC参数模型 设计实战校招编程题分类串行输入、并行计算、串行输出**串行计算、串行输出&#xff08;线性移位寄存器&#xff09;LSFR线性移位寄存器&#xff08;并转串&#xff09;(并行计算)模二除 总结——串行、并行计算的本质参考…

Vitis HLS 学习笔记--S_AXILITE 寄存器及驱动

目录 1. 简介 2. S_AXILITE Registers 寄存器详解 2.1 “隐式”优势 2.2 驱动程序文件 2.3 硬件头文件 2.4 硬件头文件中 SC/COR/TOW/COH 的解释 2.5 驱动控制过程 3. 总结 1. 简介 回顾此博文《Vitis HLS 学习笔记--Syn Report解读&#xff08;1&#xff09;-CSDN博…

可视化大屏也在卷组件化,组件绝对是效率利器呀。

组件化设计在B端上应用十分普遍&#xff0c;其实可视化大屏组件更为规范&#xff0c;本期分享组件化设计的好处&#xff0c;至于组件源文件如何获取&#xff0c;大家都懂的。 组件化设计对可视化大屏设计有以下几个方面的帮助&#xff1a; 提高可重用性&#xff1a; 组件化设…

【从0开始搭建内网穿透】开源内网穿透神器-中微子代理

1. 背景 概念&#xff1a;内网穿透&#xff0c;就是让处在外网的设备能够访问内网设备的服务。典型的应用场景就是人在外面访问家中的NAS、人在出差调试内网中的web服务、开Minecraft服务器等。 起因&#xff1a;实验室项目有搭建内网穿透服务的需求&#xff08;项目前端需要部…

【网络】UDP协议

文章目录 一. 初识UDP1. UDP简介2. UDP协议的特点特点一&#xff1a;无连接特点二&#xff1a;不可靠特点三&#xff1a;面向数据报 3. UDP报文的格式4. UDP的缓冲区5. 基于UDP实现的用户层协议 二. UDP报文中各个字段1. 原端口号与目的端口号&#xff08;16位&#xff09;1.1 …

《Redis使用手册之Lua脚本》

《Redis使用手册之Lua脚本》 EVAL&#xff1a;执行脚本 127.0.0.1:6379> eval “return ‘hello world’” 0 “hello world” 127.0.0.1:6379> eval “return redis.call(‘set’,KEYS[1],ARGV[1])” 1 “message” “hello world” OK 127.0.0.1:6379> get message…

网络安全知识点

网络安全 1&#xff0e; 网络安全的定义&#xff0c;网络安全的属性。 定义&#xff1a;针对各种网络安全威胁研究其安全策略和机制&#xff0c;通过防护、检测和响应&#xff0c;确保网络系统及数据的安全性。 属性&#xff1a;机密性 认证&#xff08;可鉴别性&#xff09…

ASP.NET淘宝店主交易管理系统的设计与实现

摘 要 淘宝店主交易管理系统主要采用了ASPACCESS的B/S设计模式&#xff0c;通过网络之间的数据交换来实现客户、商品、交易的管理和对客户、商品、交易统计工作&#xff0c;从而提高淘宝店主在管理网店过程中的工作效率和质量。 系统分为基本资料模块&#xff0c;统计资料模…

Windows php 安装 Memcached扩展、php缺失 Memcached扩展、Class ‘Memcached‘ not found

在Windows系统下如何安装 php Memcached 扩展 下载dll文件 pecl地址&#xff1a;https://pecl.php.net/package/memcached 根据版本进行选择 &#xff1a; 解压下载的文件后得到了这么样的文件结构&#xff1a; 配置 移动dll文件到相应文件位置 重点&#xff1a; libme…

PG数据库结构与oracle比较

1.数据库集簇逻辑结构 数据库集簇概念&#xff1a;一个大的数据库是由若干个小的数据库组成&#xff0c;实现数据的隔离存放&#xff0c;在概念上应该是与mysql一样的 在mysql中可以用show database列出数据库 PG中用\l 数据库对象存放在数据库中&#xff1a; PG中的所有数据…

2024小米SU7首批锁单用户调研报告

来源&#xff1a;电动汽车用户联盟 80%的锁单用户认为自己是米粉&#xff0c;64%的用户拥有10个以上米家生态产品&#xff0c; 使用小米手机的比例为67%&#xff0c;使用苹果手机的比例为47% 2. 81%的用户为90后&#xff0c;均龄31岁&#xff0c;未婚者和已婚无孩者占比63%&am…

word启动缓慢之Baidu Netdisk Word Addin

word启动足足花了7秒钟&#xff0c;你知道我这7秒是怎么过来的吗&#xff1f; 原因就是我们可爱的百度网盘等APP&#xff0c;在我们安装客户端时&#xff0c;默认安装了Office加载项&#xff0c;不仅在菜单栏上加上了一个丑陋的字眼&#xff0c;也拖慢了word启动速度........ 解…

C++:智能指针

C&#xff1a;智能指针 内存泄漏RAII智能指针auto_ptrunique_ptrshared_ptr循环引用 weak_ptr deletershared_ptrunique_ptr 内存泄漏 内存泄漏是指程序在动态分配内存后&#xff0c;忘记或无法释放已经不再使用的内存&#xff0c;从而导致系统内存资源被逐渐耗尽的问题。这种…