软件测试笔记(二):软件测试流程

1 测试流程概述

软件测试流程包括:

  • 测试计划:测试计划是指根据用户需求报告中关于功能要求和性能指标的规格说明书,定义相应的测试需求报告,使得随后所有的测试工作都围绕着测试需求来进行,同时适当选择测试内容,合理安排测试人员、测试时间和测试资源等
  • 测试设计:测试设计是指将测试计划阶段制订的测试需求分解,细化为若干个可执行的测试过程,并为每个测试过程选择适当的测试用例,保证测试结果的有效性
  • 测试开发:测试开发是指建立可重复使用的自动测试过程
  • 测试执行:测试执行是指执行测试开发阶段建立的自动测试过程,并对所发现的缺陷进行跟踪管理,一般有单元测试、集成测试、确认测试等步骤组成
  • 测试评估:测试评估是指结合量化的测试覆盖域及缺陷跟踪报告,对应用软件的质量和开发团队的工作进度以及工作效率进行综合评价

其中测试执行由以下步骤组成:

  • 单元测试:通过对每个最小的软件模块进行测试,对源代码的每一个程序单元实行测试,来检查各个程序模块是否正确地实现了规定的功能,确保其能正常工作
  • 集成测试:对已测试过的模块进行组装集成,目的在于检验与软件设计相关的程序结构问题
  • 确认测试:检验软件是否满足需求规格说明中的功能和性能需求,确定软件配置完全、正确,并检验软件产品能否与实际运行环境中整个系统的其他部分协调工作
  • 验收测试:主要让用户对软件进行测试,并重新执行已经做过的测试的某个子集,保证没有引入新的错误

2 单元测试

2.1 定义

单元测试用于判断一小段代码的某个特定条件或场景下某个特定函数的行为,主要测试软件设计的最小单元在语法、格式、逻辑等方面的缺陷以及是否符合功能、性能等需求,程序的多个模块可以并行地进行单元测试工作。

2.2 内容

主要包括5个任务:

  • 模块接口测试:通过对被测试模块的数据流进行测试,检查进出模块的数据是否正确,因此必须对模块接口,包括参数表、调用子模块参数、全程数据、文件输入输出操作进行测试
  • 局部数据结构测试:测试用例检查局部数据结构的完整性,如数据类型说明、初始化、缺省值等方面的问题
  • 执行路径测试:对模块中重要的路径进行测试,对基本执行路径和循环进行测试往往可以发现大量路径错误,测试用例必须能够发现由于计算错误、不正确的判定或不正常的控制流而产生的错误
  • 错误处理测试:检查模块的错误处理功能是否包含错误或者缺陷,例如,是否拒绝不合理的输入等
  • 边界条件测试:必须采用边界值分析方法来设计测试用例,测试在为限制数据处理而设定的边界处,测试模块是否能够正常工作

2.3 步骤

一般单元测试需要辅助模块去帮助完成测试,辅助模块分为两种:

  • 驱动模块:用来模拟被测试模块的上一级模块,相当于被测模块的主程序,用于接收测试数据,并把这些数据传送给被测模块,启动被测模块并输出结果
  • 桩模块:用来模拟被测试模块工作过程中所调用的模块

被测试模块、驱动模块和桩模块共同构成了一个测试环境去进行测试。

3 集成测试

3.1 定义

将经过单元测试的模块连接起来,组成所规定的软件系统的过程称为集成,集成测试就是针对这个过程,按模块之间的依赖接口的关系图进行测试。

3.2 任务

主要任务是解决如下问题:

  • 将各模块连接起来,检查模块相互调用时,数据经过接口是否丢失
  • 将各个子功能组合起来,检查能否到达预期要求的各项功能
  • 一个模块的功能是否会对另一个模块的功能产生不利的影响
  • 全局数据结构是否有问题,会不会被异常修改
  • 单个模块的误差积累起来,是否被放大,从而达到不可接受的程度

3.3 方法

集成测试的方法,包括:

  • 非增量式集成测试方法
  • 增量式集成测试方法

3.3.1 非增量式集成测试方法

非增量式集成测试方法采用一步到位的方法来进行测试,对所有模块单元进行个别的单元测试后,按程序结构图将各模块连接起来,把连接后的程序当作一个整体进行测试。

3.3.2 增量式集成测试方法

增量式测试集成方法可以分为:

  • 自顶向下增量式测试
  • 自底向上增量式测试
  • 三明治集成测试

3.3.2.1 自顶向下增量式测试

自顶向下增量式测试按照结构图自上而下逐步集成和逐步测试,模块集成的顺序首先是集成主控模块(主程序),然后按照软件控制层次结构向下进行集成,集成策略可以选择广度优先或深度优先。

优点包括:

  • 在测试过程中较早地验证主要的控制点
  • 功能性的模块测试可以较早地得到证实
  • 最多只需要一个驱动模块就可以进行测试
  • 支持缺陷故障隔离

缺点:

  • 随着底层模块不断增加,会导致底层模块的测试不充分
  • 每次组装都需要提供桩,导致桩的数据急剧增加,从而维护桩的成本会快速上升

3.3.2.2 自底向上增量式测试

从原子模块(软件结构中最底层的模块)开始,按结构图从下而上逐步进行集成和测试。

优点:

  • 总体上减少了桩模块的工作量
  • 允许对底层模块行为进行早期验证
  • 测试初期可以并行集成

缺点:

  • 随着集成到顶层,整个系统变得越来越复杂,对于底层的一些模块很难覆盖
  • 驱动模块的开发工作量大

3.3.2.3 三明治集成测试

也叫混合集成,将自顶向下和自底向上的优缺点集于一身,三明治集成就是把系统分为三层,中间一层为目标层,对目标层上层采用自顶向下的集成测试方式,对目标层下层采用自底向上集成策略,最后对目标层进行测试。

4 确认测试

4.1 定义

用于验证软件的有效性,也就是验证软件的功能和性能以及其他特性是否与用户要求一致。

4.2 内容

内容包括:

  • 有效性测试:在模拟的环境下,运用黑盒测试的方法,验证被测试软件是否满足需求规格说明书列出的需求
  • 软件配置审查:保证软件配置的所有成分,包括与实际运行环境中整个系统的支持环境都应齐全,各方面的质量都符合要求

5 验收测试

5.1 定义

验收测试是以用户为主的测试,但是软件开发人员和质量保证人员也需要参加。由用户参加设计测试用例,通过用户界面输入测试数据,分析测试的输出结构。

5.2 内容

内容包括:

  • alpha测试
  • beta测试
  • 回归测试

5.2.1 alpha测试

alpha测试是由一个用户在开发环境下的测试,也可以是公司内部用户在模拟实际操作环境下进行的测试。这是在受控制环境下进行的测试,目的是评价软件产品的功能、可使用性、可靠性、性能和支持,尤其注重产品的界面和特色。

5.2.2 beta测试

beta测试由软件的多个用户在一个或多个用户的实际使用环境下进行的测试,与alpha测试不同,开发者通常不在测试现场。在beta测试中,由用户记录遇到的所有问题,包括真实的以及主观认定的问题,定期向开发者报告,开发者综合用户的报告后做出修改。

5.2.3 回归测试

5.2.3.1 定义

回归测试是一种验证已变更的系统的完整性与正确性的测试技术,是指重新执行已经做过的测试的某个子集,以保证修改没有引入新的错误或者发现由于更改而引起的之前未发现的错误。

5.2.3.2 实施前提

回归测试的实施前提包括:

  • 当软件中所含错误被发现时,如果错误跟踪和管理系统不够完善,可能会遗漏对这些错误的修改
  • 开发者对错误的理解不够透彻,也可能导致所做的修改只修正了错误的外在表现,而没有修改错误本身
  • 修改还有可能产生副作用,从而导致软件未被修改的部分产生新的问题

5.2.3.3 回归测试的两个策略

  • 完全重复测试:选择完全重复测试是指将所有的测试用例,全部再完全执行一遍,缺点是要把用例全部执行,会增加项目的成本以及影响项目的进度
  • 选择性重复测试:选择一部分测试执行,以确认问题修改的正确性和修改后周边是否受到影响,常见的方法包括覆盖修改法、周边影响法、指标达成法、基于操作剖面、基于风险选择测试

5.2.3.4 流程

  • 在测试策略指定阶段,制定回归测试策略
  • 确定回归测试版本
  • 回归测试版本发布,按照回归测试策略执行回归测试
  • 回归测试通过,关闭缺陷跟踪单
  • 回归测试不通过,缺陷单返回开发人员,重新修改后再次回归测试

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

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

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

相关文章

IDEA如何开启Dashboard

普通的面板 Run Dashboard面板 修改配置文件 找到项目的.idea文件夹 点击编辑workspace.xml文件 添加下方代码 <component name"RunDashboard"><option name"ruleStates"><list><RuleState><option name"name" valu…

【Linux】进程信号 --- 信号的产生 保存 捕捉递达

文章目录 信号的感知信号的结构描述 一、信号的产生1.通过键盘发送信号2.通过系统调用发送信号 二、信号的保存&#xff08;PCB内部的两张位图和一个函数指针数组&#xff09;理解三张数据结构表block pending haldler 三、通过代码编写 理解 信号的保存和递达1.信号集操作的库…

[极客大挑战 2019]LoveSQL1 题目分析与详解

一、题目简介&#xff1a; 二、通关思路&#xff1a; 1、首先查看页面源代码&#xff1a; 我们发现可以使用工具sqlmap来拿到flag&#xff0c;我们先尝试手动注入。 2、 打开靶机&#xff0c;映入眼帘的是登录界面&#xff0c;首先尝试万能密码能否破解。 username: 1 or 11…

弱结构化日志 Flink SQL 怎么写?SLS SPL 来帮忙

作者&#xff1a;潘伟龙&#xff08;豁朗&#xff09; 背景 日志服务 SLS 是云原生观测与分析平台&#xff0c;为 Log、Metric、Trace 等数据提供大规模、低成本、实时的平台化服务&#xff0c;基于日志服务的便捷的数据接入能力&#xff0c;可以将系统日志、业务日志等接入 …

《PCI Express体系结构导读》随记 —— 第II篇 第10章 MSI和MSI-X中断机制(1)

前言中曾提到&#xff1a;本章重点介绍MSI和MSI-X。 在PCI总线中&#xff0c;所有需要提交中断请求的设备&#xff0c;必须能够通过INTx引脚提交中断请求&#xff0c;而MSI机制是一个可选机制&#xff1b;而在PCIe总线中&#xff0c;PCIe设备必须支持MSI或者MSI-X中断请求机制&…

10.selenium的基本使用

selenium是一个关于爬虫功能python的库&#xff0c;它的整体逻辑与之前的请求爬虫思路不同。selenium是模拟出一个浏览器&#xff0c;你通过代码操作这个浏览器从而获取一些信息&#xff0c;比如执行click()就相当于点击了浏览器中的某个元素&#xff0c;相当于是针对浏览器的鼠…

一款开源.NET WPF界面库介绍

一款开源.NET WPF界面库介绍 这是一个WPF版的Layui前端UI样式库&#xff0c;该控件库参考了Web版本的LayUI风格&#xff0c;利用该控件库可以完成现代化UI客户端程序&#xff0c;让你的客户端看起来更加简洁丰富又不失美感 如何使用 步骤一 : 添加LayUI.Wpf Nuget包; Inst…

物联网APP开发:技术、挑战与前景

随着科技的快速发展&#xff0c;物联网&#xff08;IoT&#xff09;已经成为当今世界的重要趋势。物联网是将物理世界的各种“事物”与互联网连接起来&#xff0c;通过智能设备、传感器和执行器实现数据的收集、交换和处理&#xff0c;以改善生活和工作的方式。物联网APP是实现…

LeetCode_Java_动态规划系列(3)(题目+思路+代码)

338.比特位计数 给你一个整数 n &#xff0c;对于 0 < i < n 中的每个 i &#xff0c;计算其二进制表示中 1 的个数 &#xff0c;返回一个长度为 n 1 的数组 ans 作为答案。 class Solution {public int[] countBits(int n) {/** 思路&#xff1a;* 1.创建一个长度为 n…

pr2024 Premiere Pro 2024 mac v24.2.1中文激活版

Premiere Pro 2024 for Mac是Adobe公司推出的一款强大的视频编辑软件&#xff0c;专为Mac操作系统优化。它提供了丰富的剪辑工具、特效和音频处理选项&#xff0c;帮助用户轻松创建专业级的影视作品。 软件下载&#xff1a;pr2024 Premiere Pro 2024 mac v24.2.1中文激活版 无论…

java高级——反射

目录 反射概述反射的使用获取class对象的三种方式反射获取类的构造器1. 获取类中所有的构造器2. 获取单个构造器 反射获取构造器的作用反射获取成员变量反射变量赋值、取值获取类的成员方法反射对象类方法执行 反射简易框架案例案例需求实现步骤代码如下 反射概述 什么是反射 反…

【学习总结】什么是弹性负载均衡? LB和ELB的区别

[Q&A] 什么是 LB (Load Balancer) 负载均衡器&#xff1a; 这是一个广泛的概念&#xff0c;泛指任何用于在网络流量进入时进行分配以实现服务器集群间负载均衡的设备或服务。传统的负载均衡器可以是硬件设备&#xff0c;也可以是软件解决方案&#xff0c;其基本目标是将客…

利用 ChatGPT 提升个人工作、生活品质

利用 ChatGPT 提升个人工作、生活品质和个人智慧是一个多方面而又切实可行的方法。 以下是一些具体的建议&#xff1a; 获取信息和知识&#xff1a; ChatGPT 可以回答各种问题并提供相关信息和知识。你可以利用它来查询工作中遇到的问题、学习新的知识领域或是获取日常生活中的…

【JSON2WEB】06 JSON2WEB前端框架搭建

【JSON2WEB】01 WEB管理信息系统架构设计 【JSON2WEB】02 JSON2WEB初步UI设计 【JSON2WEB】03 go的模板包html/template的使用 【JSON2WEB】04 amis低代码前端框架介绍 【JSON2WEB】05 前端开发三件套 HTML CSS JavaScript 速成 前端技术路线太多了&#xff0c;知识点更多&…

8.题目:编号191 特别数的和

###这道题主要考察枚举 #include<bits/stdc.h> using namespace std; bool f(int x){while(x){int yx%10;if(y2||y0||y1||y9){return true;}x/10;}return false; } int main(){int n;cin>>n;int ans0;for(int i1;i<n;i){if(f(i)){ansi;}}cout<<ans<&…

【Redis 常见的5种数据类型】List | Set | Zset

文章目录 [toc] 1 :peach:List:peach:1.1 :apple:lpush:apple:1.2 :apple:lpushx:apple:1.3 :apple:rpush:apple:1.4 :apple:rpushx:apple:1.5 :apple:lrange:apple:1.6 :apple:lpop:apple:1.7 :apple:rpop:apple:1.8 :apple:lindex:apple:1.9 :apple:linsert:apple:1.10 :appl…

QT摄像头采集

主界面为显示框&#xff0c;两个下拉框&#xff0c;一个是所有相机&#xff0c;一个是相机支持的分辨率 系统根据UI界面自动生成的部分不再描述&#xff0c;以下为其他部分源码 widget.h #include <QWidget> #include <QMouseEvent> class QCamera; class QCamer…

阿里云ECS服务器vCPU是什么意思?

阿里云ECS服务器vCPU和CPU是什么意思&#xff1f;CPU和vCPU有什么区别&#xff1f;一台云服务器ECS实例的CPU选项由CPU物理核心数和每核线程数决定&#xff0c;CPU是中央处理器&#xff0c;一个CPU可以包含若干个物理核&#xff0c;通过超线程HT&#xff08;Hyper-Threading&am…

Linux——静态库

Linux——静态库 静态库分析一下 ar指令生成静态库静态库的使用第三方库优化一下 gcc -I(大写的i) -L -l(小写的l)&#xff0c;头文件搜索路径&#xff0c;库文件搜索路径&#xff0c;连接库 今天我们来学习静态库的基本知识。 静态库 在了解静态库之前&#xff0c;我们首先来…

云服务器ECS价格表出炉_2024年最新价格表——阿里云

2024年最新阿里云服务器租用费用优惠价格表&#xff0c;轻量2核2G3M带宽轻量服务器一年61元&#xff0c;折合5元1个月&#xff0c;新老用户同享99元一年服务器&#xff0c;2核4G5M服务器ECS优惠价199元一年&#xff0c;2核4G4M轻量服务器165元一年&#xff0c;2核4G服务器30元3…