当前位置: 首页 > news >正文

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

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

单集系确收

(一)单元测试

1、单元测试/模块测试

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

2、测试内容

测试内容

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

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

1、概念

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

2、方式

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

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

3、内容

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

4、完成标志

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

5、桩模块/驱动模块

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

(三)系统测试

1、概念

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

2、内容

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

3、典型测试

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

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

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

(五)验收测试

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

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

(一)动态测试

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

1、黑盒测试法

2、白盒测试法

3、灰盒测试法

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

(二)静态测试

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

1、代码审查

2、代码走查

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

(一)开发方测试

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

(二)用户测试

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

(三)第三方测试

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

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

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

(一)白盒测试

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

(二)黑盒测试

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

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

质量特性

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

(一)符合性测试

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

1、先决条件

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

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

(一)软件有变动的情况

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

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

十四、软件测试工具

JMeter

  • JMeter:是一个性能测试工具,同loadrunner类似,他功能较多,我们常用的功能是用imeter模拟多浏览器对网站做压力测试。

LoadRunner

  • LoadRunner:是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。通过使用LoadRunner,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。 LoadRunner是一种适用于各种体系架构的自动负载测试工具,它能预测系统行为并评估系统性能。

JTest

  • JTest:是一个综合的发展广泛的实践证明,以提高开发团队的工作效率和软件质量的自动化测试解决方案。侧重于实践验证的Java代码和应用程序,无缝集成Parasoft的SOAtest以使最终结束今天的复杂的,分布式的应用和交易的功能和负载测试。

  • JBuilder:是一个可视化JAVA开发工具。它是在Java2平台上开发商业应用程序、数据库、发布程序的优秀工具。

相关文章:

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

七、测试类型&#xff08;按工程阶段划分&#xff09; 单集系确收 &#xff08;一&#xff09;单元测试 1、单元测试/模块测试 单元就是软件中最小单位&#xff08;或模块&#xff09;。可以是一个函数、一个过程、一个类。主要依据是模块的详细设计文档。价值在于尽早发现…...

open-vm-tools使用虚机的拷贝/粘切

open-vm-tools 是一组用于 VMware 虚拟机中的开源工具,它们提供了一些与虚拟机操作和管理相关的功能。这些工具与 VMware 虚拟化平台集成,可以在虚拟机中提供更好的性能和功能。以下是一些 open-vm-tools 提供的功能: 1. 虚拟机增强功能: open-vm-tools 提供了与 VMware 虚…...

CKEditor编辑器的简单使用方法,取值,赋值

先从官网下载包。CKEditor 4 - Download Latest Version. 一&#xff1a;在项目里引用JQ基础包和CK的JS包 <script src"/JS/jquery-3.4.1.js?v1.0"></script><script src"/ckeditor/ckeditor.js"></script> 二&#xff1a;在表…...

创建一个线程对象需要花费多少内存空间

创建一个std::thread对象所需的内存空间大小并不是固定的&#xff0c;因为它取决于多种因素&#xff0c;包括C运行时库的实现、编译器优化、以及可能的平台和架构差异。 std::thread对象本身是一个轻量级的控制块&#xff0c;它主要用于管理线程的执行&#xff0c;包括保存线程…...

Java -- (part23)

一.网络编程 1.概述 在网络通信协议下,不同计算机上运行的程序,进行数据传输 2.软件架构 CS架构:客户端和服务端 BS架构:浏览器和服务端 3.服务器概念 安装了服务器软件的计算机 4.通信三要素 IP地址 a.概述 计算机的唯一标识,用于两台计算机之间的链接 b.特殊的IP…...

1. C++入门:命名空间及输入输出

C相比C的变化 兼容C面向对象泛型C的不足的弥补 为什么要有命名空间 在C/C中&#xff0c;变量、函数和后面要学到的类都是大量存在的&#xff0c;这些变量、函数和类的名称将都存在于全局作用域中&#xff0c;可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地…...

【Kotlin】Java三目运算转成 kotlin 表达

这行代码会直接计算 array.size 1 的布尔值&#xff0c;并将其赋值给 result。在 Kotlin 中&#xff0c;不需要使用三元操作符&#xff0c;因为条件表达式本身就返回一个布尔值 java 中三木运算&#xff1a; int [] array new int[]{1, 2, 3, 4, 5}; boolean test array &g…...

如何安全可控地进行内外网跨网络传输文件?

跨网络传输文件通常指的是在不同的网络环境之间移动数据&#xff0c;这在现代企业运营中非常常见。随着网络技术的高速发展&#xff0c;为了有效地保护内部的核心数据资产&#xff0c;企业一般会采用内外网隔离的策略。在进行内外网跨网络传输文件时&#xff0c;需要考虑多种因…...

Python Json数据解析

本篇主要介绍Python 中json数据如何解析、转化、保存和加载。 目录 Json数据解析 概念 作用 Json文件组成 Json转化为Python数据类型 Python数据类型转化为json 写入本地json文件 读取本地的json文件 总结 Json数据解析 概念 一种保存数据的格式 作用 可以保存本地…...

pyinstaller打包pytorch和transformers程序

记录使用pyinstaller打包含有pytorch和transformers库的程序时遇到的问题和解决方法。 环境和版本信息 操作系统&#xff1a;Windows 11 Python&#xff1a;3.10.12 pyinstaller&#xff1a;5.13.0 torch&#xff1a;2.2.2 transformers&#xff1a;4.40.1 打包过程和问…...

西门子数控网络IP设定配置

总结&#xff1a;menuselect-诊断-屏幕下方右翻页找到tcp/ip&#xff0c;进去选择tcp/ip诊断&#xff0c;进去选择x130网口&#xff0c;点击更改&#xff0c; 如果没有更改&#xff0c;menuselect-调试-口令&#xff0c;输入口令 sunrise 然后重新配置tcp/ip&#xff0c;配置完…...

[Unity]备份许可文件

原因&#xff1a;因Unity需要重新恢复出厂设置&#xff0c;所以需要先将许可文件本分到本地&#xff0c;以便重新初始化后输入许可。 1&#xff09;登录管理网络web界面&#xff0c;在服务页面打开SSH 2&#xff09;ssh到管理网络&#xff0c;使用service用户登录 3&#xf…...

第十五届蓝桥杯省赛大学B组(c++)

很幸运拿了辽宁赛区的省一,进入6月1号的国赛啦... 这篇文章主要对第十五届省赛大学B组(C)进行一次完整的复盘,这次省赛2道填空题6道编程题: A.握手问题 把握手情景看成矩阵: 粉色部分是7个不能互相捂手的情况 由于每个人只能和其他人捂手, 所以黑色情况是不算的 1和2握手2和…...

Python Flask框架(一)初识Flask

Flask是使用Python编写的Web微框架。Web框架可以使我们不用关心底层的请求响应处理&#xff0c;更方便高效的编写Web程序。Flask有两个主要依赖&#xff0c;一个是WSGI&#xff08;Web Server Gateway Interface&#xff0c;web服务器网关接口&#xff09;工具集&#xff0c;另…...

VS2022 .Net6.0 无法打开窗体设计器

拿Vs2022 建了个Demo&#xff0c;运行环境是net6.0-windows&#xff0c;无论双击或是右键都打不开窗体设计器 打开项目目录下的*.csproj.user <?xml version"1.0" encoding"utf-8"?> <Project ToolsVersion"Current" xmlns"htt…...

Linux学习之高级IO

之前的内容我们基本掌握了基础IO&#xff0c;如套接字&#xff0c;文件描述符&#xff0c;重定向&#xff0c;缓冲区等知识都是文的基本认识&#xff0c;而高级IO则是指更加高效的IO。 对于应用层&#xff0c;在读写的时候&#xff0c;本质就是把数据写给OS&#xff0c;若一方…...

一分钟了解Polysciences PEI 40K转染试剂的原理

在细胞实验中&#xff0c;细胞转染大概是最常用、最基础的实验技能。转染细胞的方法很多&#xff0c;而PEI作为带有高电荷阳离子的多聚物&#xff0c;非常容易结合带负电荷的DNA分子&#xff0c;形成复合物&#xff0c;在HEK293和CHO等细胞中转染效率较高&#xff0c;常用于大规…...

Clickhouse IP 函数

IPv4NumToString(num)​ 将数字类型ip转换为IPv4格式。 Takes a UInt32 number. Interprets it as an IPv4 address in big endian. Returns a string containing the corresponding IPv4 address in the format A.B.C.d (dot-separated numbers in decimal form). Alias: …...

【Python】numpy.ptp()

numpy.ptp() 函数是 NumPy 库中的一个有用函数&#xff0c;用于计算数组中的“峰到峰”&#xff08;peak-to-peak&#xff09;值&#xff0c;即数组中的最大值与最小值之差。这个函数可以帮助快速评估数组中数据的变化范围&#xff0c;常用于信号处理、数据分析等领域中&#x…...

The provided password or token is incorrect or your account

IDEA使用git技巧 【/n】 01 问题出现场景 我的gitlab上个月生成的token到期了,于是今天推上去的时候报了这个错误 The provided password or token is incorrect or your account has 2FA enabled and you must use a personal access token instead of a password. See ht…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...