如何做需求分析

news2024/11/24 8:26:32

目录

核心理念:

主要目的:

具体思路:

注意事项:


核心理念:

首先需要想清楚一个问题:作为一个测试,有没有把需求当作产品中的一个组成部分,然后尽到一个测试的责任与义务?只有建立这样的意识和规则,才能够把挖掘需求的事情做好,否则始终抱着“需求是产品负责,我不关心”的心态,那接下来的事情就无法进行。

主要目的:

挖掘需求问题,有两大核心目的:

1.        提升产品质量通过挖掘需求中的问题,解决需求中的问题,完善产品需求,从而完善产品,提升产品的质量。

2.       提高项目效率通过挖掘需求中的问题,尽早查漏补缺、解决分歧,避免问题遗留到项目中后期,导致返工、进度delay等风险,从而提高项目的效率。

具体思路:

由于专业度上的差别,测试同学在挖掘产品需求问题时,确实存在一定的困难。但基于以往的经验,还是能够总结出一套思路,具体可以从以下几个角度进行:1.       需求描述层面的问题:    

a)         错别字、病句等

需求文档中难免会存在一些错别字、病句等文案错误,此类问题我们有必要给产品同学指正(但不要带着嘲讽的心态),因为有些时候这种错误一样会对产品、需求理解造成影响,例如:“未进行”和“为进行”,一字之差,谬之千里。又如:“账号”和“帐号”,用字用户提示中,影响产品的专业度问题。    

b)        描述存在歧义

需求描述的含义必须明确,描述存在二义性甚至多义性的问题,比较严重,可能会导致多方理解的不一致,导致开发、测试等团队的产出物不正确,进而返工,增加项目成本。我们需要与产品确认,并要求产品进行更正。例如:分身添加两个动作之间需要间隔字数的需求,需求描述为:4(以默认语速1.0为基准,覆盖4个字符)乘以语速(0.7~1.3)*视频长度取值(四舍五入)。产品和测试前期讨论的方式为:(4个字符*语速)取值四舍五入*视频长度。开发的实现结果为:(4个字符*语速*视频长度)取值四舍五入。结果就导致结果与预期不符。    

c)         需求内容遗漏

此处不等于需求遗漏,而是指需求已经明确,但产品没有写入需求文档的情况。对下游团队,尤其是测试团队,需求文档是极为重要的依据,我们需要检查产品的需求文档是否编写完整,如果存在没有写入的情况,需要要求产品同学补充。例如:经过讨论已经规定该文本框中输入的最大字符数为100,但需求文档中没有更新。

2.        需求覆盖度的问题:    

a)         缺少流程节点

在需求中涉及功能流程的地方,需要重点关注是否缺少某些流程节点,流程中的各个环节是否能够顺利连通。例如:用户没有权限使用某个功能时,应该给出跳转到购买该权益的入口,但需求中没有提供这个入口。    

b)        缺少逻辑分支

在需求中设计判断分支的地方,需要重点关注是否分支路径是否覆盖全面,是否存在分支路径的缺失。例如:提示用户购买高级会员,只规定了进行购买的后续流程,但没有规定用户取消购买的后续流程    

c)         缺少需求定义

在需求中涉及需求定义的地方,需要重点关注定义是否考虑充分,是否存在遗漏。例如:规定了高级会员有什么权益、普通会员有什么权益,但没有规定同时具备高级会员和普通会员的情况。    

d)        缺少用户场景

平时用户使用过程中经常出现的场景,在需求中是否有明确说明。例如:用户播放音频过程中,进行程序的前后台切换操作、手机锁屏状态下该如何处理等等。    

e)         缺少异常处理和容错机制

需要关注需求中,是否针对异常处理有约定的处理方式,用来提升程序的健壮性。例如:视频聊天过程中手机来电、断网,或者进行获取数据时服务器异常等等。

3.       需求预期的问题:    

a)        预期结果不明确

需要关注需求中的内容是否都有明确的预期结果,需要让其提供明确的预期结果。例如:当网络出现异常的时候,弹出错误提示,但没有个出错误提示的具体内容。

4.       需求合理性的问题    

a)        必要性

需要针对需求的必要性进行评估,要把产品的目标和用户的实际情况进行结合,综合考虑需求的必要性。例如:用户对转写结果的准确率要求极高,但本地转写的准确率又极差,那么添加本地转写这个需求的必要性,就需要探讨。    

b)       与目标的一致性

需要关注需求中的内容,能否实现产品的目标。例如:产品需要收集用户是否主动关闭某个功能的数据,但该功能的入口做的非常的深,一般用户发现不了,那么这种需求就很难实现目标。    

d)         连贯性

需要关注需求持续迭代过程中的连贯性,前后的风格或操作习惯尽量保持统一,否则每个版本都在变,增加用户熟悉的成本。例如:之前版本中的页面都支持右滑返回上一页,而新版本中的新增页面,则不支持右滑返回上一页。    

d)       耦合度

需要关注需求中不同功能之间的耦合度,尽量简单处理,保证各功能之间的相对独立性,如果耦合度太高,会导致功能复杂度变高,增加开发和测试的成本,也增加出现bug的几率。例如:文件存在语音转写和文件存储两部分功能,尽量让转写和存储这两部分的功能策略保持独立,不要把转写状态和存储状态增加组合的策略,如未转写状态只能按照条件1的情况存储、转写中状态只能按照条件2的情况存储、已转写状态可以按照条件1和2和3的情况存储。

5. 需求的用户体验问题    

a)         易操作性

需要考虑需求中的功能是否容易操作。包括不限于:

i. 操作行为是否简单(如:单手点击)

ii. 操作路径是否简短(如:一键生效)

iii. 操作入口是否直观(如:开关放在设置首页,而不是三级菜单中)

iv. 是否符合用户习惯(如:继承用户之前的设置风格)

v. 是否符合系统环境的标准规范(如:Windows的支持键盘操作、iOS下确认弹窗中按钮的左右摆放规则)

b)       易理解性

需要考虑需求中对功能或名词的定义是否容易理解,用户能够一看就明白具体是怎么回事。如果不易理解,是否有清晰的解释说明。    

b)         吸引力

需要关注需求中的功能,是否对用户有足够的吸引力。例如:抽奖活动的需求,奖品的价值以及中奖的概率,是否足够诱人。    

c)        交互反馈

需要关注需求中的功能,在用户触发后,是否能够给用户对应的反馈,让用户清楚当前的状态。例如:点击下载,显示loading状态或这下载进度;触碰按钮,按钮状态发生相应的变化。

6. 需求的可行性问题    

a)         开发实现的可行性

对于需求中的某些内容,需要关注开发实现层面的可行性,如果缺乏可行性,就需要提前指出。例如:语音识别准确率需要达到100%,这种在现有技术水平的状态下,根本无法实现。又如:整体功能逻辑与微信的效果对齐,这种在较短的项目周期内,根本无法实现。    

b)        测试的可验证性

对于需求中的某些内容,需要关注测试的可验证性,如果无法操作或者无法验证,就需要提前指出。例如:最大支持上传音频的个数为无上限,这种就明显无法验证。

7.        需求版本管理问题:    

a)        需求版本标记不清晰有时候需求文档中会同时存在多个版本的需求,或者因为工期问题导致同一个需求拆分成多个项目版本进行,这种情况下,就涉及到对需求版本的管理问题,需要关注需求的版本信息是否标记清晰、明确,能否清楚的掌握当前版本需要关注的需求范围。

注意事项:

1. 要勇于提出问题。虽然测试在产品的专业度上有欠缺,但我们也是用户,而且是最早体验产品的用户,因此对需求有疑问,一定要勇于指出。

2. 不能为了提问题而提问题,要加入自己的思考,要带着提这个问题的原因和目的。例如:这个弹窗上放5个按钮不合理,原因:太挤了、或者用户找不到重点。

3. 在挖掘需求问题的时候,需要跳出需求的思维和角度,基于用户的习惯或者测试的视角,去审核需求,否则容易陷入产品的思路,觉得哪都是对的。

4. 提出的需求问题,建议通过邮件的形式公示,产品不接受或者不解决,也可做到备忘;其中测试认为比较严重的问题,可以在后续的进度或者测试报告中,作为项目风险进行公示。

在发掘用户体验性问题的时候,可以借鉴优秀的竞品,通过审视竞品的效果如何,来评估我们的需求处理是否存在问题。


以下是我收集到的比较好的学习教程资源,虽然不是什么很值钱的东西,如果你刚好需要,可以评论区,留言【777】直接拿走就好了

各位想获取资料的朋友请点赞 + 评论 + 收藏,三连!

三连之后我会在评论区挨个私信发给你们~

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

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

相关文章

JavaScript中truthy(真值)或者Falsy(假值)

● 在JavaScript中,有五个值是falsy ○ 0 ○ ’ ’ ○ undefined ○ null ○ NaN 除此之外,任何不是空值的都是真值; 假值是什么意思呢?就是转换为布尔值都是false,反则就是true 例如: console.log(Boole…

论文阅读:矩阵乘法GEMM的cache优化,子矩阵的切分方法Anatomy of High-Performance MatrixMultiplication

矩阵乘法优化的知名论文goto paper: 矩阵乘法的优化需要将矩阵切分成子矩阵,用子矩阵相乘的结果组合为原矩阵相乘的结果: 上图是拆分矩阵的方法,M表示矩阵,X方向和Y方向的两个维度都是未知的。P表示横条或竖条&#x…

微信小程序使用ECharts的示例详解

目录 安装 ECharts 组件使用 ECharts 组件图表延迟加载 echarts-for-weixin 是 ECharts 官方维护的一个开源项目,提供了一个微信小程序组件(Component),我们可以通过这个组件在微信小程序中使用 ECharts 绘制图表。 echarts-fo…

数据分享|R语言用lme4多层次(混合效应)广义线性模型(GLM),逻辑回归分析教育留级调查数据...

全文链接:http://tecdat.cn/?p22813 本教程为读者提供了使用频率学派的广义线性模型(GLM)的基本介绍。具体来说,本教程重点介绍逻辑回归在二元结果和计数/比例结果情况下的使用,以及模型评估的方法(点击文末“阅读原文…

selenuimecharts——可视化分析csdn新星赛道选手展示头像、展示ip城市和断言参赛信息的有效性(进阶篇)

文章目录 ⭐前言⭐selenuim打开赛道报名界面获取新星赛道选手主页💖 获取参赛选手主页思路分析💖 selenuim获取参数选手代码块💖 selenuim获取参数选手主页城市💖echarts分析选手参数信息断言参赛信息的有效性: ⭐结束…

【技术面试】Java八股文业余选手-下篇(持续更新)

文章目录 5. RocketMQ 消息中间件、RabbitMQ、ActiveMQ【√】5.1 RocketMQ 6. Kafka 大数据量消息中间件、ElasticSearch、ZooKeeper【√】6.1 Kafka【√】6.2 ElasticSearch 7. 分布式、研发提效、高并发、线程安全【√】7.1 分布式与集群【√】7.2 高并发、线程安全【】7.3 研…

【数学建模】为什么存在最优策略?

一、说明 在进行优化回归过程,首先要看看是否存在最优策略? 在有限马尔可夫决策过程 (MDP) 中,最优策略被定义为同时最大化所有状态值的策略。换句话说,如果存在最优策略,则最大化状态 s 值的策…

PyTorch常用代码段汇总

本文是PyTorch常用代码段合集,涵盖基本配置、张量处理、模型定义与操作、数据处理、模型训练与测试等5个方面,还给出了多个值得注意的Tips,内容非常全面。 PyTorch最好的资料是官方文档。本文是PyTorch常用代码段,在参考资料[1](张…

【AutoSAR 架构介绍】

AutoSAR简介 AUTOSAR是Automotive Open System Architecture(汽车开放系统架构)的首字母缩写,是一家致力于制定汽车电子软件标准的联盟。 AUTOSAR是由全球汽车制造商、部件供应商及其他电子、半导体和软件系统公司联合建立,各成…

ubuntu 静态IP设置

ubuntu 静态IP设置: 1.输入: sudo vim /etc/netplan/01-network-manager-all.yaml Let NetworkManager manage all devices on this system network: ethernets: ens33: dhcp4: no addresses: [192.168.1.119/24] gateway4: 192.168.1.1 nameservers: …

代码随想录额外题目| 数组02 ●189旋转数组 ●724寻找数组中心索引

#189旋转数组 很快写出来但是用了个新数组&#xff0c;不好 void rotate(vector<int>& nums, int k) {vector<int> res(nums.size(),0);for(int i0;i<nums.size();i){int newiik;if(newi>nums.size()-1) newinewi%nums.size();res[newi]nums[i];}numsr…

结构型设计模式之桥接模式【设计模式系列】

系列文章目录 C技能系列 Linux通信架构系列 C高性能优化编程系列 深入理解软件架构设计系列 高级C并发线程编程 设计模式系列 期待你的关注哦&#xff01;&#xff01;&#xff01; 现在的一切都是为将来的梦想编织翅膀&#xff0c;让梦想在现实中展翅高飞。 Now everythi…

Vue3状态管理库Pinia——核心概念(Store、State、Getter、Action)

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1f4c3;个人状态&#xff1a; 研发工程师&#xff0c;现效力于中国工业软件事业 &#x1f680;人生格言&#xff1a; 积跬步…

行为型模式 - 迭代器模式

概述 定义&#xff1a; 提供一个对象来顺序访问聚合对象中的一系列数据&#xff0c;而不暴露聚合对象的内部表示。 结构 迭代器模式主要包含以下角色&#xff1a; 抽象聚合&#xff08;Aggregate&#xff09;角色&#xff1a;定义存储、添加、删除聚合元素以及创建迭代器对象…

Mind+积木编程控制小水泵给宠物喂水

前期用scratch&#xff0c;带着小朋友做了大鱼吃小鱼、桌面弹球、小学生计算器3个作品&#xff0c;小朋友收获不小。关键是小家伙感兴趣&#xff0c;做出来后给家人炫耀了一圈后&#xff0c;兴趣大增&#xff0c;嚷嚷着要做更好玩的。 最近&#xff0c;娃妈从抖音上买了个小猫喝…

JMeter 配置环境变量步骤

通过给 JMeter 配置环境变量&#xff0c;可以快捷的打开 JMeter&#xff1a; 打开终端。执行 jmeter。 配置环境变量的方法如下。 Mac 和 Linux 系统 1、在 ~/.bashrc 中加如下内容&#xff1a; export JMETER_HOMEJMeter所在目录 export PATH$JAVA_HOME/bin:$PATH:.:$JME…

pytorch安装GPU版本 (Cuda12.1)教程: Windows、Mac和Linux系统下GPU版PyTorch(CUDA 12.1)快速安装

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

【单调栈 +前缀和】AcWing 4738. 快乐子数组

原题链接 原题链接 相关算法概念介绍 前缀和&#xff08;Prefix Sum&#xff09; 前缀和是指将数组中从开头位置到当前位置的所有元素累加得到的新数组。通常&#xff0c;我们使用一个额外的数组来保存这些累加和&#xff0c;这个数组被称为前缀和数组。对于原始数组A&…

Appium+python自动化(十七)- - Monkey

1、Monkey简介 在Android的官方自动化测试领域有一只非常著名的“猴子”叫Monkey&#xff0c;这只“猴子”一旦启动&#xff0c;就会让被测的Android应用程序像猴子一样活蹦乱跳&#xff0c;到处乱跑。人们常用这只“猴子”来对被测程序进行压力测试&#xff0c;检查和评估被测…

快速排序QuickSort

目录 1.Hoare法 2.挖坑法 3.前后指针法 4.快排分治 5.关于快排 6.关于快排的优化 7.总体实现 总结&#xff1a; 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法 其基本思想为&#xff1a;任取待排序元素序列中的某元素作为基准值&#xff0c;按照该排序码…