第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…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...

汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...

基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...

Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...