测试人员如何进行需求分析?

在进行测试用例设计之前,我们通常需要对需求文档进行分析,甚至在需求评审阶段从测试角度给出建议。通过需求分析,不仅可以输出测试点,也可以发现需求中存在的问题。

业务角度和技术角度

测试需求的分析可以从两个不同的角度进行分析。

从业务角度进行分析:通过业务流程、业务数据、业务操作等分析,明确要验证的功能、数据、场景等内容,从而确定业务方面的测试需求。

从技术角度分析:通过研究系统架构设计、数据库设计、代码实现等,分析其技术特点,了解设计和实现要求,包括系统稳定可靠、分层处理、接口集成、数据结构、性能等方面的测试需求。

如果有完善的需求文档(如产品功能规格说明书),那么测试需求可以根据需求文档,再结合前面分析和自己的业务知识、测试工作经验等,比较容易确定功能测试的需求。

启发式分析

如果缺乏完善的需求文档,就需要借助启发式分析方法,从系统业务目标、结构、功能、数据、运行平台、操作等多方面进行综合分析,了解测试需求,并通过和用户、业务人员、产品经理或产品设计人员、开发人员等沟通,逐步让测试需求清晰起来。要获得良好的测试需求,就是善于提问,从不同的角度去向用户、业务人员、产品经理、开发人员等提问,获取更多的一手信息。

业务目标:所有要做的功能特性都不能违背该系统要达到的业务目标,多问问如何更好地达到这些业务目标,如何验证是否实现这些业务目标?

系统结构:产品是如何构成的?系统有哪些组件、模块?模块之间有什么样的关系?有哪些接口?各个组件又包含了哪些信息?

系统/业务功能:产品能做哪些事、处理哪些业务?处理某些业务时由哪些功能来支撑、形成怎样的处理过程?处理哪些错误类型?有哪些UI来呈现这些功能?

业务数据:产品处理哪些数据?最终输出哪些用户想要的结果?哪些数据是正常的?又有哪些异常的数据?输入数据如何被转化、传递的?这中间有哪些过渡性数据?输出数据格式有什么要求?输出数据存储在哪里?

系统运行的平台:系统运行在什么硬件上?什么操作系统?有什么特殊的环境配置?是否依赖第三方组件?

系统操作:有哪些操作角色?在什么场景下使用?不同角色、场景有什么不同?有哪些是交集的?

可以通过如下一些途径,帮助我们更好地完成测试的需求分析。

对竞争产品进行对比分析,明确测试的重点。

质量存在哪些风险,包括安全性漏洞等。

对过去类似产品或本产品上个版本所发现的缺陷进行分析,总结缺陷出现的规律,看看有没有漏掉的测试需求。

在易用性、用户体验上有什么特别的需求需要验证?

管理者或市场部门有没有事先特定的声明?

有没有相应的行业规范、特许质量标准?

(一般进行需求分析,会考虑到 需求的逻辑是否正确?规则限制是否有明确?是否有非功能需求需要考虑?是否有隐性需求需要考虑?是否与外部系统有交互?是否会影响到其他模块或者其他功能?是否存在数据兼容需要处理?是否存在版本兼容问题需要处理?有哪些异常场景需要考虑?涉及到哪些系统角色?)

需求分析技术

1、可以画流程图、状态图、业务流程图,数据流程图,实体关系图,UML图

2、使用思维导图,头脑风暴方法发散思维。

测试需求分析过程,可以从源头——质量要求出发展开,如从功能、性能、安全性、兼容性等各个质量要求出发,不断细化其内容,挖掘其对应的测试需求,覆盖质量要求。也可以从开发需求(如产品功能特性点、敏捷开发的用户故事)出发,针对每一条开发需求确定对应的测试项。

功能需求分析

在功能测试中,不仅要完成业务逻辑的验证,还要进行用户界面和输入空间的验证,即业务规则、业务数据等多个方面的验证。总之,为了更全面地验证或评估软件功能的质量,开发者需要在各个层次(单元、接口和系统)和各个方面(代码、文档和系统)进行测试。也就是说,在功能测试中,不仅要进行不同层次的测试,还要针对不同空间或领域进行相应的测试。概括起来,功能测试需求,通常包括下列这些内容。

① 系统各个功能界面的验证。

② 系统端到端的业务逻辑验证,相当于借助业务把功能串起来进行测试。

③ 功能的一致性、交互性(多功能互操作)的测试,如系统应用中设定日期、时间,前后一致性的验证。

④ 面向接口参数及其组合场景的功能测试。

⑤ 系统的不同输入、结果输出的业务数据测试。

⑥ 功能的错误操作、异常操作的测试(属于负面测试)。

⑦ 功能实现用到的算法验证,有时需要建模或人工代码评审。

⑧ 数据库默认值、数据备份和恢复的测试。

⑨ 用户操作的易用性、用户体验,往往结合功能测试同时进行。

⑩ 功能相关的文档验证,如用户手册的验证。

在功能测试上,不仅要考虑业务数据,还要考虑业务规则,如上传文件限制大小,哪些数据是必填哪些是选填?

非功能性需求分析

为了验证系统是否符合非功能特性的质量需求而进行的测试是系统非功能性测试。非功能性测试需求主要涉及性能、安全性、可靠性、兼容性、易维护性和可移植性等,测试需求和质量属性存在对应的关系。

需要根据项目或产品的特点,来分析需要考虑哪些非功能性需求。

非功能性测试就需要深入架构分析,才能更好地把握测试范围和测试方法。

除此之外,还有其他一些因素的影响,如项目的周期性和依赖性等。

可靠性测试

可用性指标一般要求达到4个或5个“9”,即99.99% 或99.999%。

兼容性测试

兼容性测试需求是指明确要测试的兼容环境,考虑软、硬件的兼容,就软件兼容来说,不仅要测试系统自身的版本兼容、用户已有数据的兼容,还要测试与操作系统、应用平台或浏览器、和其他第三方系统以及第三方数据的兼容性。操作系统包括Windows、Mac、Solaris、Linux等,浏览器包括IE、FireFox、Chrome和Safari等,如表6-4所示,形成环境组合矩阵,明确兼容性测试需求

兼容性测试,不仅要覆盖软件系统之间兼容、和第三方系统之间的兼容,还需考虑同一个系统不同版本之间的兼容,特别是用户数据的兼容,数据兼容性测试是重中之重,因为对用户来说,数据更有价值。客户端软件的不同版本和服务器端最新版本的兼容,一般来说,服务器上部署的都是最新版本,但客户端就不一定都升级了。

还有其他非功能性测试。

参考《全程软件测试》第三版。

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

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

相关文章

介绍5款 世界范围内比较广的 5款 mysql Database Management Tool

介绍5款 世界范围内比较广的 5款 Mysql Database Management Tool 文章目录 介绍5款 世界范围内比较广的 5款 Mysql Database Management Tool前言MySQL Workbench:Navicat Premium:DBeaver Community:HeidiSQL:SQLyog&#xff1a…

如何解决node-sass下载用的还是过期的淘宝源?

下载node-sass发现报错过期的证书 把npm的淘宝源换成最新的https://registry.npmmirror.com后发现还是指向了以前的淘宝源,看到一位博主说,单改npm源不够还要改下载node-sass的源,再次搜索另外一位博主提供了命令npm config ls可以使用它来查…

文件包含漏洞之包含NGINX日志文件(常用)

条件:知道目标服务器的日志文件存贮路径,并且存在文件包含漏洞 首先对目标服务器发送一次含有木马的请求,目的是让目标服务器日志中生成含有木马的日志记录。因为发送过程中,使用了url编码,我们抓包进行更改成能够执行…

图文详解io_uring高性能异步IO架构

说到高性能网络编程,我们第一时间想到的是epoll机制,epoll很长一段时间统治着整个网络编程江湖,然而io_uring的出现,似乎在撼动epoll的统治地位,今天我们来揭开io_uring的神秘面纱。 1.io_uring简介 io_uring是一个L…

竞赛 - 基于机器视觉的图像拼接算法

前言 图像拼接在实际的应用场景很广,比如无人机航拍,遥感图像等等,图像拼接是进一步做图像理解基础步骤,拼接效果的好坏直接影响接下来的工作,所以一个好的图像拼接算法非常重要。 再举一个身边的例子吧,…

Mac 使用 pip install mysqlclient 爆错 error: subprocess-exited-with-error 解决办法

在虚拟环境中安装 mysqlclient 发生报错: pipenv install mysqlclient报错如下: ERROR:pip.subprocessor:Getting requirements to build wheel exited with 1 [ResolutionFailure]: File "/Users/zhangyongxin/.local/share/virtualenvs/movie…

express+mysql+vue,从零搭建一个商城管理系统16--收货地址(全国省市县名称和code列表)

提示:学习express,搭建管理系统 文章目录 前言一、新建config/area.js二、新建models/address.js三、新建dao/address.js四、新建routes/address.js五、添加地址六、查询用户地址列表总结 前言 需求:主要学习express,所以先写serv…

Spring Data访问Elasticsearch----脚本和运行时字段Scripted and runtime fields

Spring Data访问Elasticsearch----脚本和运行时字段Scripted and runtime fields 一、person 实体二、存储库接口三、service类四、脚本化字段Scripted fields五、运行时字段Runtime fields Spring Data Elasticsearch支持脚本(scripted)字段和运行时(runtime)字段。有关此方面…

浅谈大模型“幻觉”问题

大模型的幻觉大概来源于算法对于数据处理的混乱,它不像人类一样可以by the book,它没有一个权威的对照数据源。 什么是大模型幻觉 大模型的幻觉(Hallucination)是指当人工智能模型生成的内容与提供的源内容不符或没有意义的现象。…

SpringCloud Gateway工作流程

Spring Cloud Gateway的工作流程 具体的流程: 用户发送请求到网关 请求断言,用户请求到达网关后,由Gateway Handler Mapping(网关处理器映射)进行Predicates(断言),看一下哪一个符合…

windows docker

写在前面的废话 最近在学习riscv的软件相关内容,倒是有别人的sg2042机器可以通过ssh使用,但是用起来太不方便了,经常断掉,所以想着在自己的机器上跑一跑riscv的操作系统。最常见的有两种方法吧,第一个就是qemu&#xf…

数据库运行状况和性能监控工具

数据库监控是跟踪组织中数据库的可用性、安全性和性能的过程,它涉及通过跟踪各种关键指标来分析数据库的性能,确保数据库的正常运行并具有深入的可见性,并在出现潜在问题时触发即时警报,以采取主动措施来确保数据库的高可用性。 …

制定工业物联网战略? 成功的5个关键考虑因素

随着越来越多的公司争夺注意力和收入,成功和创造、建设和创新的压力也在增加,这导致了对工业物联网战略的更大需求。 随着越来越多的公司争夺注意力和收入,成功和创造、建设和创新的压力也在增加,这导致了对工业物联网战略的更大需…

Win11专业工作站版系统密钥

Windows 11 专业工作站版是 Windows 11 专业版的加强版本,专为满足高性能工作负载的需求而设计。它在专业版的基础上增加了以下功能: 更高的硬件支持: 支持多达 4 个 CPU 和 6 TB 内存,支持最新的服务器级处理器和图形卡。增强的存储性能: 支…

一招让你的Mac重获新生,CleanMyMac助你轻松清理无用垃圾!

一招让你的Mac重获新生,CleanMyMac助你轻松清理无用垃圾! 告别卡顿,让你的Mac跑得更快更稳! 在当今这个快节奏的生活中,我们的工作和生活早已离不开电脑。特别是对于Mac用户来说,一台轻巧、快捷、稳定的Mac…

java算法第28天 | 93.复原IP地址 78.子集 90.子集II

93.复原IP地址 思路: 这里startIndex为插入‘.’的位置,使用回溯法遍历所有插入的位置,直接在原始字符串上操作。要注意的是开闭区间的规定(这里我规定的是左闭右闭区间)。还要明确什么时候能return。 class Solution…

HTML中的常用标签用法总结(持续更新...)

&#x1f31f; 欢迎来到 我的博客&#xff01; &#x1f308; &#x1f4a1; 探索未知, 分享知识 !&#x1f4ab; 本文目录 1. 标题标签2. 段落标签3. 链接标签4. 列表标签5. 图像标签6. 表格标签 1. 标题标签 <h1>至<h6>用于定义标题。<h1>是最大的标题&am…

模型部署——RKNN模型量化精度分析及混合量化提高精度

模型部署——RKNN模型量化精度分析及混合量化提高精度&#xff08;附代码&#xff09;-CSDN博客 3.1 量化精度分析流程 计算不同情况下&#xff0c;同一层网络输入值的余弦距离&#xff0c;来近似的查看每一层精度损失的情况。具体量化精度分析的流程如下&#xff1a; 3.2 量…

ONNX @riscv+OpenKylin

安装onnxruntime-riscv 下载软件: git clone https://github.com/ucb-bar/onnxruntime-riscv apt install unzip cd onnxruntime-riscv && sh build.sh 报错... 改了g环境变量部分还是不行&#xff0c;放弃。 安装onnxruntime 使用这个库 git clone https://g…

数据结构大合集03——栈的相关函数运算算法

函数运算算法合集03 顺序栈的结构体顺序栈的基本运算的实现1. 初始化栈2. 销毁栈3. 判断栈是否为空4. 进栈5. 出栈6. 取栈顶元素 链栈的结构体链栈的基本运算的实现1. 初始化栈2. 销毁栈3. 判断是否为空4. 进栈5. 出栈6. 取栈顶元素 注&#xff1a; 本篇文章的概念合集 数据结构…