第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章 软件测试基础(第三部分)测试类型、测试工具
七、测试类型(按工程阶段划分) 单集系确收 (一)单元测试 1、单元测试/模块测试 单元就是软件中最小单位(或模块)。可以是一个函数、一个过程、一个类。主要依据是模块的详细设计文档。价值在于尽早发现…...
open-vm-tools使用虚机的拷贝/粘切
open-vm-tools 是一组用于 VMware 虚拟机中的开源工具,它们提供了一些与虚拟机操作和管理相关的功能。这些工具与 VMware 虚拟化平台集成,可以在虚拟机中提供更好的性能和功能。以下是一些 open-vm-tools 提供的功能: 1. 虚拟机增强功能: open-vm-tools 提供了与 VMware 虚…...
CKEditor编辑器的简单使用方法,取值,赋值
先从官网下载包。CKEditor 4 - Download Latest Version. 一:在项目里引用JQ基础包和CK的JS包 <script src"/JS/jquery-3.4.1.js?v1.0"></script><script src"/ckeditor/ckeditor.js"></script> 二:在表…...
创建一个线程对象需要花费多少内存空间
创建一个std::thread对象所需的内存空间大小并不是固定的,因为它取决于多种因素,包括C运行时库的实现、编译器优化、以及可能的平台和架构差异。 std::thread对象本身是一个轻量级的控制块,它主要用于管理线程的执行,包括保存线程…...
Java -- (part23)
一.网络编程 1.概述 在网络通信协议下,不同计算机上运行的程序,进行数据传输 2.软件架构 CS架构:客户端和服务端 BS架构:浏览器和服务端 3.服务器概念 安装了服务器软件的计算机 4.通信三要素 IP地址 a.概述 计算机的唯一标识,用于两台计算机之间的链接 b.特殊的IP…...
1. C++入门:命名空间及输入输出
C相比C的变化 兼容C面向对象泛型C的不足的弥补 为什么要有命名空间 在C/C中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地…...
【Kotlin】Java三目运算转成 kotlin 表达
这行代码会直接计算 array.size 1 的布尔值,并将其赋值给 result。在 Kotlin 中,不需要使用三元操作符,因为条件表达式本身就返回一个布尔值 java 中三木运算: int [] array new int[]{1, 2, 3, 4, 5}; boolean test array &g…...
如何安全可控地进行内外网跨网络传输文件?
跨网络传输文件通常指的是在不同的网络环境之间移动数据,这在现代企业运营中非常常见。随着网络技术的高速发展,为了有效地保护内部的核心数据资产,企业一般会采用内外网隔离的策略。在进行内外网跨网络传输文件时,需要考虑多种因…...
Python Json数据解析
本篇主要介绍Python 中json数据如何解析、转化、保存和加载。 目录 Json数据解析 概念 作用 Json文件组成 Json转化为Python数据类型 Python数据类型转化为json 写入本地json文件 读取本地的json文件 总结 Json数据解析 概念 一种保存数据的格式 作用 可以保存本地…...
pyinstaller打包pytorch和transformers程序
记录使用pyinstaller打包含有pytorch和transformers库的程序时遇到的问题和解决方法。 环境和版本信息 操作系统:Windows 11 Python:3.10.12 pyinstaller:5.13.0 torch:2.2.2 transformers:4.40.1 打包过程和问…...
西门子数控网络IP设定配置
总结:menuselect-诊断-屏幕下方右翻页找到tcp/ip,进去选择tcp/ip诊断,进去选择x130网口,点击更改, 如果没有更改,menuselect-调试-口令,输入口令 sunrise 然后重新配置tcp/ip,配置完…...
[Unity]备份许可文件
原因:因Unity需要重新恢复出厂设置,所以需要先将许可文件本分到本地,以便重新初始化后输入许可。 1)登录管理网络web界面,在服务页面打开SSH 2)ssh到管理网络,使用service用户登录 3…...
第十五届蓝桥杯省赛大学B组(c++)
很幸运拿了辽宁赛区的省一,进入6月1号的国赛啦... 这篇文章主要对第十五届省赛大学B组(C)进行一次完整的复盘,这次省赛2道填空题6道编程题: A.握手问题 把握手情景看成矩阵: 粉色部分是7个不能互相捂手的情况 由于每个人只能和其他人捂手, 所以黑色情况是不算的 1和2握手2和…...
Python Flask框架(一)初识Flask
Flask是使用Python编写的Web微框架。Web框架可以使我们不用关心底层的请求响应处理,更方便高效的编写Web程序。Flask有两个主要依赖,一个是WSGI(Web Server Gateway Interface,web服务器网关接口)工具集,另…...
VS2022 .Net6.0 无法打开窗体设计器
拿Vs2022 建了个Demo,运行环境是net6.0-windows,无论双击或是右键都打不开窗体设计器 打开项目目录下的*.csproj.user <?xml version"1.0" encoding"utf-8"?> <Project ToolsVersion"Current" xmlns"htt…...
Linux学习之高级IO
之前的内容我们基本掌握了基础IO,如套接字,文件描述符,重定向,缓冲区等知识都是文的基本认识,而高级IO则是指更加高效的IO。 对于应用层,在读写的时候,本质就是把数据写给OS,若一方…...
一分钟了解Polysciences PEI 40K转染试剂的原理
在细胞实验中,细胞转染大概是最常用、最基础的实验技能。转染细胞的方法很多,而PEI作为带有高电荷阳离子的多聚物,非常容易结合带负电荷的DNA分子,形成复合物,在HEK293和CHO等细胞中转染效率较高,常用于大规…...
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 库中的一个有用函数,用于计算数组中的“峰到峰”(peak-to-peak)值,即数组中的最大值与最小值之差。这个函数可以帮助快速评估数组中数据的变化范围,常用于信号处理、数据分析等领域中&#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…...
wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会
在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10pip3.10) 一:前言二:安装编译依赖二:安装Python3.10三:安装PIP3.10四:安装Paddlepaddle基础框架4.1…...
