软件测试流程

  • 软件测试需求分析(Software testing demand analysis)

软件需求分析是软件测试流程中的基础一环,用来明确软件测试对象以及测试范围,并作为测试覆盖的基础。其目的是确保所有风险承担者尽早地对项目功能达成共识并对将来的产品有个相同而清晰的认识。

本阶段主要由需求人员统一收集需求,并整理成文档格式转发给 PM(Project Manager 项目经理或者 Product Manager 产品经理)、开发经理和测试经理。然后 PM 召集开发经理、测试经理和需求分析人员进行会议讨论,了解具体每个需求的实际含义,并明确各个需求的有效性、可用性和可测性;然后确定最终实现的需求和功能点,并整理出重点需求。接着 PM 会根据会议讨论结果编写需求说明,并且再次召集各职能小组人员参与开会讨论,对需求说明进行修复、完善、并最终确定《需求规格说明书》。《需求规格说明书》决定了项目以后所有工作的基调。

这个阶段的主要负责人是 PM,PM 有时候是指项目经理,有时候是指产品经理。这是因为每个公司的组织方式可能不同,有的公司采取项目式组织架构,那么负责人应该是项目经理;有些公司采取职能式组织架构,那么负责人应该是产品经理,正巧他们的英文都可以缩写为 PM。同学们要根据实际情况灵活地去理解它的含义。

软件测试人员在本环节中的主要作用是参与需求评审,通过提出评审意见的方式对需求进一步矫正,并为下一个环节(制定测试计划)中工作量的评估打下基础。

本阶段的输入文档主要是需求说明相关文档,输出文档是《需求规格说明书》。

  • 软件测试计划制定(Software testing plan development)

了解了软件的需求之后,软件测试人员会讨论开发这个版本的目的是什么、要包括什么功能、功能的范围是什么样的、有哪些可以参考的文档、用什么测试策略和工具来执行软件测试工作,然后快速地进行风险分析,并据此制定风险应对方案,还要确定测试资源,还需要确立几个里程碑事件……这看起来就是一个测试计划分析的过程,而最终形成的文档就是《软件测试计划》

软件测试计划是指导测试过程的纲领性文件,包含了产品概述、测试策略、测试方法、测试范围、测试配置、测试进度、测试资源、风险分析等内容。借助软件测试计划,参与测试的项目成员,尤其是软件测试管理人员,可以明确测试任务和测试方法,保持测试实施过程的顺畅沟通,跟踪和控制软件测试进度,应对软件测试过程中的各种变更。

如何编写软件测试计划,这部分内容会在《软件测试计划》中详细讲解。

本阶段主要负责人是测试经理,但软件测试员会参与软件测试计划中与本人相关部分的内容制定。

本阶段输入文档是《需求规格说明书》和《项目开发计划》,输出文档是《软件测试计划》。

  • 软件测试用例设计(Software testing case design)

软件测试用例是指导软件测试工作的一种文档,它是通过使用在软件测试计划中确定的测试技术,对于已确定的软件测试需求进行逐步推敲而设计出来的。

软件测试用例设计完成,要进行综合评审,通过评审可以弥补软件需求中遗漏的一些因果关系和异常案例,可以改善测试分析和设计的过程。类似地,软件测试工作的其它产出文档,如软件测试计划、软件风险分析应该进行评审。

关于软件测试用例的介绍,比如定义、作用、设计过程等,会在《软件测试用例概述》中详细讲解。

而软件测试用例的黑盒设计方法,会在《高效设计测试用例》中详细讲解。

本阶段的主要负责人是测试经理和测试工程师,但需要注意的是,在很多公司测试经理不光要做管理和任务分配工作,也会负担重要功能部分的实际设计和评审工作。

本阶段的输入文档是《软件需求规格说明书》、《软件测试计划》、《软件设计文档》(包括《软件概要设计文档》和《软件详细设计文档》),输出文档是《软件测试用例》。

  • 软件测试环境搭建(Software testing environment setup)

要顺利执行测试,首先要确定正确地搭建了软件测试环境。

软件测试环境是指为了完成软件测试工作所必须的计算机硬件、软件、网络设备、历史数据的总称。

测试环境的搭建是一项非常重要的工作,同时也可能是一项很耗时的工作。有些软件的测试环境要求比较复杂,需要在测试执行之前做好充分的准备。如果正在测试的是第一个版本,搭建测试环境就尤为重要了,需要从头做起。

有些项目也曾尝试在开发环境下做测试,但效果并不好。开发环境主要是方便程序员调试程序存在的,而测试环境则比较接近于生产环境,如果在测试环境上测试结果不能通过,那么是肯定不能部署到生产环境给用户或客户使用的。

就像程序员有用于他们调试的环境一样,测试人员也需要有对测试环境的独立访问和控制权,以保证一些私有的测试数据不会被其他人用到,这样可以提高他们的工作效率。测试环境适合与否会严重影响测试结果的真实性和正确性。

通常在搭建测试环境的时候,开发人员会提供安装指导书,否则也可以在搭建测试环境遇到问题的时候要求开发人员协助。通常,测试环境会有专人来负责。

在大数据系统的测试过程中,测试环境数据的准备是测试过程中的重点。

大数据系统由于其自身的特点(数据规模大、数据多样、计算复杂度高、分布式结构等)使得对它的测试与传统软件测试有所不同,包括需要使用大数据测试工具、测试环境和数据的准备等,对测试人员提出了更高的专业要求。

大数据系统通常是分布式架构,测试环境复杂。接下来我们重点讲述大数据测试环境搭建时需要考虑的问题。搭建大数据测试,需要我们考虑以下几点:

  • 环境是否具有分布式节点和分布式数据存储的集群;
  • 环境是否有足够的空间来存储和处理大规模数据;
  • 另外如果是做大数据系统的性能测试的话,还要考虑影响大数据系统性能的一些因素----网络环境、应用、虚拟化、数据质量等,所以还应考虑部署合适的监控系统,监控整个集群机器、服务、计算、存储、任务等层面的指标。

而根据对大数据所测场景不同,所需要的测试环境也有所不同,但测试环境的软硬件配置、软件模块的版本应与生产环境一致。

  • 如果是在大数据新业务上线前对系统功能做验证测试,通常需要构造单独的类生产的迷你测试环境;
  • 如果是测试实时数据处理业务或是做系统组件的升级测试,则可以按照系统生产环境进行等比例缩放;
  • 如果是测试重要业务功能或是做系统的性能测试,则需要直接在生产环境上进行测试。

  • 测试数据准备(Testing data preparation)

前很多互联网软件应用,后台都会有数据库做支撑,那就需要在测试的时候准备相应的测试数据,准备测试数据是软件测试工作的一项必备工作。如何快速地创建测试数据,也是测试工程师的重要能力之一。

创建测试数据的过程,往往需要很长的时间,传统的创建测试数据的方法分为手动创建和自动化创建两种方法。

手动创建测试数据:

  • 手动模拟用户的实际操作来创建重要业务流程的测试数据;
  • 通过 SQL 语句中 where 查询条件和 update 方法来创建符合条件的测试数据;
  • 导入本地机器上存储的一些符合条件的测试数据;
  • 导入并加工线上数据变成测试数据。

自动化创建测试数据:

  • 使用自动化工具创建:Data Generator、Databene Benerator、Testgen、Datatect、Turbo Data;
  • 这几个工具可以为所有类型带的输入域和边界条件生成测试数据,可以生成普通文件或直接向数据库表插入不同类型的数据,比如名字、地址等;
  • 使用自建脚本创建:Ruby、Python、Fit、FitNesse、Shell。

实际工作中,可以结合手工方式和自动化方式,灵活运用多种方法去创建不同测试阶段需要的测试数据。另外,也可以在平时就保存一些常用的测试数据。但随着时间的推移,测试数据也会过时。就算是从实际的生产过程中得到的数据,如果时间太久,也不再能精确的代表当前的生产数据了。一个使用了无效数据而“测试通过”的测试场景是没有说服力的。所以测试数据也需要经常更新。

大数据系统所处理的数据具有大规模(Volume)、类型多样(Variety)、产生速度快(Velocity)、商业价值高(Value)、数据准确和可信赖(Veracity)等特点,所以数据获取方式也与传统项目的数据获取方式有所不同。

常见的大数据测试数据获取方式:

  • 通过网络爬虫来“爬取”免费的网络数据;
  • 向一些数据机构购买有价值的数据;
  • 共享合作公司提供的数据;
  • 使用自己公司的自有数据。

获取自有数据当然更好,因为数据准确、实时、高效。根据使用场景的不同,测试数据可以直接使用真实数据,也可以按照某种算法构造。

  • 真实数据引流。

    就是直接把生产环境下的流量直接分流到测试系统。这种场景一般用于“强业务”场景测试,比如实时推荐这样的场景,考虑到数据的多样性和数据的非随机性,“强业务”场景一般不采用构造数据,通常采用生产引流的方法。

  • 生产环境数据复制。

    生产环境数据引流可能会影响到线上的业务系统,因此可以采取一个折中的方法,就是在业务使用流量比较少的时候,通过旁路从线上生产环境复制部分或全部数据流量。这样对生产环境的影响比较小。

  • 构造数据。

    就是以实际业务场景的数据作为基础,基于历史数据的特征,通过算法来生成和模拟数据。构造数据通常使用基准数据集或人工构造的方法。大数据系统中的组件测试通常采用构造的数据。例如 Hive 或 Spark SQL 功能与性能的测试,或者 Spark Streaming 和 Flink 的功能与性能测试。

拿到数据之后,我们要对数据进行预处理。数据预处理是一种数据挖掘技术,本质就是为了把原始数据转换为可以理解的格式或者符合我们挖掘的格式。为什么要进行预处理呢?因为直接获取的数据通常质量比较低,主要表现为这些现象:

  • 数据可能是不完整的,缺少某些属性值;
  • 高维度,所谓的高维度是指数据的属性或字段太多;
  • 数据可能存在重复;
  • 数据可能会由于包含代码或者名称的差异导致跟实际需要的数据不一致;
  • 可能含噪声,所谓的含噪声就是指数据中存在着错误或异常数据。

数据预处理就是解决上面所提到的数据问题的可靠方法。首先要进行数据清洗,数据清洗完成之后接着进行或者同时进行数据集成、转换、归一化等一系列处理,这个过程就是数据预处理。一方面是提高数据的质量,另一方面可以让数据更好的适应特定的项目环境。

  • 测试执行及缺陷处理(Testing execution and defect handling)

提交了测试对象并且测试对象满足了测试执行的进入准则后(测试的进入准则会在《软件测试计划》中详细讲述,就是满足了一定的条件,才能开始执行测试),可以开始测试执行。

测试执行是指按照之前设计好的测试用例,按照里面的步骤一步一步的执行,查看预期结果与实际结果是否一致的过程。

测试的执行只能有 2 种结果:Pass 或者 Fail。测试不通过的话,测试人员就应该把发现的问题及时记录下来,报告给开发人员做出相应的修改。缺陷记录是测试人员工作的具体表现形式,是测试人员与开发人员沟通的基础。因此,如何录入一个高质量的缺陷报告,是每个测试人员都要重视的问题。

测试工程师对于那些已经被开发人员修复的缺陷,需要做回归测试以验证其是否得到正确修复,确认已经被修复的,就将缺陷关闭,否则重新提交给开发人员进行修复。对于缺陷的处理可以使用缺陷管理工具。

关于缺陷以及缺陷的处理,会在《软件测试用例》中详细讲解。

本阶段的负责人是测试经理。测试经理需要跟踪每个项目的实际测试情况,并对难以处理的情况做出决定。本阶段,测试工程师的工作是执行具体的测试工作、提交缺陷、回归缺陷。

本环节输入文档是《需求规格说明书》《测试计划》《软件设计文档》《测试用例文档》以及《测试数据》。输出文档是《软件缺陷报告》。

  • 测试总结报告和测试文件归档(Testing summary report and file archiving )

软件测试进行到一定程度就要进行测试评估了。测试评估可以在软件测试过程中阶段性进行,也可以是测试整体结束后进行。通过测试评估生成的软件测试报告(又叫测试评估报告)来确定测试是否达到了出口准则。

测试报告是一个展示测试人员工作过程的机会。软件缺陷列表和软件测试用例都太细了,而且篇幅比较大,专业性又强,很多人对其不感兴趣,但是测试报告却是很多人都会看的一份文档。所以,学会写软件测试报告会帮助你更好的在工作中找到自己的价值。

测试报告要介绍项目的基本信息,展示软件的遗留问题,回顾整个测试过程,同时得出测试结论,并在最后提出自己建设性的意见,然后用 PDCA 循环来进行过程改进。完成软件测试报告之后要进行评审,以确定软件测试是否确定要结束。

如何进行测试评估以及如何编写一份完整的软件测试报告,这部分内容会在《软件测试报告》中详细讲解。

本阶段的主要负责人是测试经理,测试报告一般由他来完成。但测试执行人员会提供自己所负责模块的测试情况给测试经理以帮助完成这份文档。

本阶段的输入文档是《需求规格说明书》《测试计划》《设计文档》《测试用例》《软件缺陷报告》。输出文档是《软件测试总结报告》。

软件测试到此是否就结束了呢?还有最后一个环节,那就是测试文件的归档。测试文件归档是在测试验收结束,宣布测试有效及结束测试后,对整个过程中涉及到的各种标准文档进行归档、存档。可以使用文档管理工具来完成此项工作。如 Ftp、SVN、Git、VSS、Wiki 等。

软件测试的过程,其实是一个完整的 PDCA 循环。测试不应该在执行完软件测试后就戛然而止,应该使用这次测试总结出来的经验和教训指导下一次测试的设计和执行。软件测试中到处都体现着 PDCA 循环的精神。

  • 大的测试流程中,制定好测试计划、执行测试、通过测试结果来检查测试计划制定的合理性,然后分析计划偏离的原因,再把总结出来的经验用于指导下一次测试的计划,这样就形成了一个 PDCA 循环过程。

  • 提交一个缺陷也可以应用 PDCA 循环,先写下来,再检查,然后提交审核,对提出的意见进行分析,总结写的不好的地方,把总结的经验用于指导下一次报告的编写,这样的过程同样是一个 PDCA。

  • 编写测试用例也是一个 PDCA,选择好测试用例的编写方法,开始设计测试用例,然后通过评审来发现更多问题,或者通过执行测试用例来发现 bug,再根据执行的情况和 bug 的情况来分析测试用例的有效性,把这些总结出来的经验用于指导下一次的测试用例设计。这也是一个 PDCA 循环。

测试工作就像进行一场战争,敌人不是开发人员,而是可恶的、狡猾的、隐蔽的 bug。测试人员应该与开发人员成为亲密的战友,共同对万恶的 bug 展开一场轰轰烈烈的歼灭战,并且最好能把它们消灭在产生的源头。

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

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

相关文章

python web学习路线

学习使用 Python 进行 Web 开发是一个循序渐进的过程,涉及到前端开发、后端开发以及相关的 Web 框架和工具。以下是一个基本的 Python Web 学习路线,帮助你逐步掌握 Web 开发所需的知识和技能: 1. 掌握基本的编程知识 在学习 Web 开发之前&…

一维前缀和与差分数组

目录 前缀和 差分数组 性质 例题: 前缀和 前缀和主要适用场景是原始数组不会被修改的情况下,频繁查询某个区间的累加和。 差分数组 性质 当我们需要更新区间[l,r]时候(仅指加减运算),我们仅仅可以只更新d[l]x,d[r1…

CentOS7 firewall-cmd 防火墙 加入端口允许

杭州电信DNS 202.101.172.35 202.101.172.47 wget https://thekelleys.org.uk/dnsmasq/dnsmasq-2.78.tar.gz tar xvf dnsmasq-2.78.tar.gz cd dnsmasq-2.78 make sudo make install sudo /usr/local/sbin/dnsmasq 检查DNS服务器服务开启(53端口) telnet x.x.x.x 53 Ctrl ] …

[二叉树]代码随想录总结

文章目录 二叉树的遍历方式深度优先遍历广度优先遍历 二叉树属性(一般后序遍历求解)深度问题节点个数问题其他问题 二叉树的修改与构造(一般前序遍历求解)构造二叉树 二叉树与回溯二叉搜索树的属性(一般中序遍历)二叉树公共祖先问…

利用 SQL 注入识别数据库方法总结

一、概述 识别数据库的最好方法在很大程度上取决于是否处于盲态。 如果应用程序返回(至少在某种程度上)查询结果和(或)数据库服务器错误消息(例如,非盲态),那么跟踪会相当简单,因为可以很容易通过产生的输出结果来提供关于底层技术的信息。…

通信分类3G,4G,5G,通信专用名词

Generation: 2G: GSM全名为:Global System for Mobile Communications,中文为全球移动通信系统,俗称"全球通",是一种起源于欧洲的移动通信技术标准,是第二代移动通信技术 3G:WCDMA 4G&#xff1a…

VMware vSphere Hypervisor,ESXi的介绍,下载与安装

1.介绍 看这篇文章就好了 Vmware ESXi 是免费吗?一文弄懂vSphere功能特性及ESXi与vSphere到底有什么区别和联系。 - 知乎 (zhihu.com) 2.下载 这里面有7.0各个版本的下载镜像文件和校验信息 VMware-Esxi7.0各个版本镜像文件iso下载链接_esxi7.0镜像-CSDN博客 3.…

计算机网络-TCP基础、三次挥手、四次握手过程

TCP基础 定义:TCP是面向连接的、可靠的、基于字节流的传输层通信协议。这意味着在发送数据之前,TCP需要建立连接,并且它能确保数据的可靠传输。此外,TCP将数据视为无结构的连续字节流。面向连接:TCP只能一对一进行连接…

RAG文本加载和分块调研

文本加载和分块 一、文本加载 文本加载是RAG文本增强检索重要环节。文件有不同类型(excel、word、ppt、pdf、png、html、eps、gif、mp4、zip等),衍生出了很多第三方库。使用python处理文件是各种python开发岗位都需要的操作。主要涉及到的标准…

从0开始复习python~

//,int() , abs(), divmod() ,float() ,complex() ,pow(), ** , bool() ,or , and , len() , range() , str() , 其中 for i in xxx: else: xxxxx; 有点意思... # 地板除,向下取整 print(-3//2) # 只保留整数部分 print(int(3.72)) # 绝对值 print…

【智能算法】随机油漆优化算法(SPO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2022年,A Kaveh等人受到绘画艺术启发,提出了减法平均优化器(Stochastic Paint Optimizer,SPO)。 2.算法原理 2.1算法思想 SPO将搜索空间…

2024 Linux(centOS7) 下安装 Docker -- Docker中运行ollama模型

首先进入docker中运行以下命令: 安装yum-utils yum install -y yum-utils device-mapper-persistent-data lvm2 --skip-broken 更换下载源为:阿里云 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.r…

von Mises-Fisher Distribution (Appendix)

2. Relation to Normal Distribution 疑问:有没有不各向同性的 vMF? 答:应该是没有的,如果想让各方向偏离中心的速度不一致,则协方差矩阵不为 I \bm{I} I 的倍数. 正态分布的概率密度函数为: f ( x ) 1 …

C语言形参和实参有什么区别?

一、问题 形式参数和实际参数都叫参数,那么⼆者之间的区别是什么? 二、解答 1. 问题分析 对于这类问题,最终体现在程序中会更加明确。 2. 解析问题 (1)通过名称理解 形式参数:按照名称理解,…

时序预测 | Matlab实现SSA-ESN基于麻雀搜索算法(SSA)优化回声状态网络(ESN)的时间序列预测

时序预测 | Matlab实现SSA-ESN基于麻雀搜索算法(SSA)优化回声状态网络(ESN)的时间序列预测 目录 时序预测 | Matlab实现SSA-ESN基于麻雀搜索算法(SSA)优化回声状态网络(ESN)的时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现SSA-ESN基于麻雀搜索…

RuntimeError: Error(s) in loading state_dict for ZoeDepth解决方案

本文收录于《AI绘画从入门到精通》专栏,订阅后可阅读专栏内所有文章,专栏总目录:点这里。 大家好,我是水滴~~ 本文主要介绍在 Stable Diffusion WebUI 中使用 ControlNet 的 depth_zoe 预处理器时,出现的 RuntimeError: Error(s) in loading state_dict for ZoeDepth 异常…

故障诊断 | Matlab实现基于小波包结合鹈鹕算法优化卷积神经网络DWT-POA-CNN实现电缆故障诊断算法

故障诊断 | Matlab实现基于小波包结合鹈鹕算法优化卷积神经网络DWT-POA-CNN实现电缆故障诊断算法 目录 故障诊断 | Matlab实现基于小波包结合鹈鹕算法优化卷积神经网络DWT-POA-CNN实现电缆故障诊断算法分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.Matlab实现基于小波…

代码随想录学习Day 26

332.重新安排行程 题目链接 from collections import defaultdictclass Solution:def findItinerary(self, tickets):targets defaultdict(list) # 创建默认字典,用于存储机场映射关系for ticket in tickets:targets[ticket[0]].append(ticket[1]) # 将机票输入…

win11网络驱动怎么安装,windows11怎么安装驱动

win11网络驱动怎么安装呢?驱动程序是系统中非常重要的部分,当安装新硬件时,相应的硬件没有驱动程序,那么在计算中就无法工作。而有了驱动后,计算机就可以与设备进行通信。例如,电脑如果缺少了网络驱动,那么就会无法上网,需要安装上网的驱动程序。由于win11系统变化太大…

Echarts柱状图多样式实现

样式一 样式二 在这里插入代码片