软件测试如何进行需求分析,你真的学会了吗?

news2024/9/25 17:19:34

目录

前言

从宏观的角度看需求文档

从细节的角度看需求文档

1)结构化项目流程

2)确认影响模块

3)考量综合因素

需求的测试成本与质量风险

总结感谢每一个认真阅读我文章的人!!!

重点:配套学习资料和视频教学


前言

作为一名测试开发工程师,与我们密切相关的不止是开发的代码,还有功能依赖的需求文档。一份好的需求文档,不止能够加速开发和测试的脚步,还能够提前发现风险,是产品的第一道风险保障。

当然,工作中难免会遇到并不“完美”的需求文档,比如牵一发而动全身不清楚的交互逻辑,子条目频繁的变更,交流缺失导致的歧义,都会让测试在项目推进中手足无措。这篇文章一起讨论下,当我们阅读需求文档时,我们都需要了解什么。

从宏观的角度看需求文档

在阅读需求文档之前,我们要对项目或者功能本身有一个宏观的认识,当前项目追求的是什么,是与时俱进快速迭代的更新速度,还是稳中求胜的代码质量,还是耳目一新的智能化设计,明确这些有助于我们在测试中有明确的重心。站在宏观的角度看需求文档,主要是明确需求的合理性和优先级,是针对需求整体作用进行的评审,如果整体的方向错误,那么细节上也没有再讨论的意义了。

在合理性的意义上,通读需求文档,从客观的角度出发,应有一整套合理、公正、客观、完善的需求文档的评价体系去保证需求质量。更多的时候我们也要换位思考,站在用户的角度,去评价需求文档解决的痛点是什么,是否符合用户需求;解决的这个需求会不会只考虑到小范围的用户,从而影响到大众关注的逻辑,更应站在开发的角度去评估,在效率、效果上是否可行,在技术上实现是不是会有阻碍。如果这个需求的涉及到的资源紧张,那么这个需求和其他需求的优先级又该怎么取舍,都是应该在需求评审时,首先应该考虑到的。

从细节的角度看需求文档

站在完整性的角度看需求文档,实际上是将当前的负责的项目模块化(或者抽象化),根据功能的需求确定功能的影响范围,再细化,同时对比需求文档,这样对目标的操作有个明确的预期结果。

1)结构化项目流程

以内核为例,无论是功能类的需求、质量类的需求还是解决用户反馈的需求,都可以把这些需求抽象成为操作(增、删、改)、查询两个大模式。要么是纯查询类需求(即刻俊译),要么就是两者结合操作类+查询类(灵犀)。在这里有些看起来是纯操作类的需求(删词),但是实际上要通过查询的方式才能生效在这里就不单独作为一个模式赘述。

2)确认影响模块

比如一个纯查询类的功能需求,我们通过以上的图就可以知道,整个过程影响我们的因素有:

I. 用户输入  

  例如: 

    1) 类型(中文、汉字、英文、数字、不支持编码、表情、符号)

    2) 长度(最短、最长)

    3) 异常输入

II. 查询条件

   例如:

   1)完全匹配查询、部分匹配查询(简拼、暴力)

   2)需求中定义的查询规则(匹配规则、优先级逻辑)

III. 查询内容

    这里的查询内容指的是被查询内容的特性,存在/不存在,同步/异步,正常/异常,或某些需求文档中指明的情况

IV.效果展示

   例如 :

   1)展示位置

   2)排序优先级

   3)展示个数

   4)标记情况等

3)考量综合因素

这里的外界影响因素,指的是其他外界因素,有可能改变这四个过程中的某些因素,比如开启繁体下会改变用户输入,比如当用户关闭用户词会使用户词查询内容失效,再比如某些固排的词会影响效果展示。

还有一些效果性的需求,比如提高查询效率,我们知道这个功能只需要改动查询条件就可以,但是在需求文档中也应明确是否有用户输入和查询内容的约束。当然这些综合考量离不开测试人员项目知识的掌握程度、在这里建议(类比相似功能、总结记录(bug、特殊)以及用例评审去提升综合因素的覆盖度)。

将以上因素排列组合和归纳,再对比需求文档,我们就可以知道某种特定的输入下,有哪些预期结果,那这些预期结果到底好不好,这就涉及到需求细节的合理性、明确性以及优先级。

合理性的验证也需要从用户行为和开发行为两个角度去进行分析,细节是否合理到位。比如之前出现过得需求中,上屏标点后,再输入上屏不会自动补空格。我们找了一篇英文文章去输入体验,发现每次上屏标点后,都需要手动输入一个空格,再输入其他词条,这样的体验肯定不是用户想要的,因此会针对这种现象提出需求建议,再比如某些效果需求的时候,罚分与其他功能冲突,都是我们期待在需求分析阶段发现的。

明确性是需求阅读中的痛点,因为阅读的时候人都是主观的,所以很难有这个明确性的意识。经常出现问题的地方是歧义和没有约束。在这里我对歧义的建议是多次阅读,特别是那些觉得非常拗口的地方,往往都是问题频发的根源。约束的问题往往依赖个人经验,比如键盘类型的约束以及异常校验的约束等。

优先级某些需求项与已有功能有“冲突”,针对这些需求项,是否明确了优先级,并评估优先级的合理性。

需要注意的是,合理性、明确性以及优先级的相关的影响因素是在完善性的考量中确定的,所以结构化项目流程,明确影响因素范围尤其重要。

需求的测试成本与质量风险

最后一个是在阅读需求文档后会被频繁讨论的事情,值得大家深入思考。

一般来说常见的有两种问题:

1)测试和开发的成本比较高,难以匹配当前的产品进度。

2)当目前的已有测试手段不能有效保证功能的质量。

针对这两种问题,我的建议是尝试变更测试方案,提出对被测试需求的多种测试策略,并在每种方案后标注测试成本和风险,并将方案与合作方讨论,选择大家都可以接受的方案进行调整。

总结
感谢每一个认真阅读我文章的人!!!

如果下面这些资料用得到的话可以直接拿走:

1、自学开发或者测试必备的完整项目源码与环境

2、测试工作中所有模板(测试计划、测试用例、测试报告等)

3、软件测试经典面试题

4、Python/Java自动化测试实战.pdf

5、Jmeter/postman接口测试全套视频获取

6、Python学习路线图

                     

重点:配套学习资料和视频教学

那么在这里我也精心准备了上述大纲的详细资料包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。如下,需要的点击下方名片加我VX免费领取。

                   

                                                                          

 

 

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

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

相关文章

Win11安卓应用自动化测试的准备

前言 APP的自动化测试,前提从ADB连接设备,启动APK应用开始。Win 11自带的WSA的APP的测试,要完全自动化,需要解决几个问题。 1、 启动WSA 此项有两步: i 启动WSA服务 Python程序来启动服务,可以直接调用…

DP1621国产LCD驱动芯片兼容替代HT1621B

目录DP1621简介DP1621芯片特性DP1621简介 DP1621是点阵式存储映射的LCD驱动器芯片,可支持最大128点(32SEG * 4COM)的 LCD屏,也支持2COM和3COM的LCD屏。单片机可通过3/4个通信脚配置显示参数和发送显示数据,也可通过指…

jmeter基本使用

jmeter基本使用 1.jemeter基本介绍 Jmeter 是什么 Apache JMeter 是 Apache 组织基于 Java 开发的压力测试工具,用于对软件做压力测 试JMeter 可用于 Web 应用测试,后来扩展到了其他测试领域具体来说, Jmeter 可以测试静态和动态资源,比如…

C语言Switch语句用法

C switch 语句 一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个 case,且被测试的变量会对每个 switch case 进行检查。 语法 C 语言中 switch 语句的语法: switch(expression){case constant-expression :statement(s);break;…

论索引的重要性

开篇小测验下面这样一个小SQL 你该怎么样添加最优索引两个表上现在只有聚集索引bigproduct 表上已经有聚集索引 ProductIDbigtransactionhistory 表上已经有聚集索引 TransactionID你是否一眼就能看出来呢?答案将在文章中逐步揭晓~~~简单粗暴的添加索引首先我们看一…

企业如何做好员工安全意识提升

背景: 近年来随着网络安全政策、技术的不断发展,国内企业对于安全的重视程度越来越高,安全建设投入力度越来越大,安全防御能力得到了明显的提升。然而,企业面临一个尴尬的问题就是,企业即使做了很多安全防…

Java还值得选择吗?

自1995年Java问世,到2023年已经差不多存在了28年。作为高级编程语言,他的生命周期相比很多编程语言都长,也见证了很多编程语言的辉煌时刻,不过Java始终都是名列前茅。 Java的主要优势在于其一次编写、随处运行。简单来讲&#xf…

185、【栈与队列】leetcode ——496. 下一个更大元素 I:单调栈-哈希表(C++版本)

题目描述 原题链接:496. 下一个更大元素 I 解题思路 本题与 739. 每日温度 的区别在于,需要先通过让nums1与nums2判定出为想等元素后,再去找nums2中更大的数。 因此,第一步需要找到想等数,第二步需要找到大于的数。…

快手电商新增商品信息诊断规则,对商家有何影响?

1、2022年快手短剧日活跃用户达2.6亿 新榜讯 近日,快手数据显示,2022年快手短剧日活跃用户达2.6亿,现在的付费用户数对比2022年4月增长超过480%,快手已经是最大的短剧消费市场。此外,2023年快手小游戏日活跃用户峰值超…

【Go】基于telegraf进行自定义插件开发(二)

基于telegraf进行自定义插件开发(二)前言正文设计开发过程单个服务的处理结构体同时定义了string和数值类型适配本机服务或者多个ip来源程序打包结语前言 书接上会,这次记录一下我基于telegraf进行的hdfs监控组件的开发工作,这其…

RabbitMQ实现延时队列

目录什么是延时队列延时队列的使用场景前提准备利用RabbitMQ实现延时队列延时队列优化利用RabbitMQ插件实现延迟队列什么是延时队列 延时队列,首先,它是一种队列,队列意味着内部的元素是有序的,元素出队和入队是有方向性的&#…

沃尔玛采购退款大额过不了的原因是什么?

市面上有很多伪装工具,但不是针对沃尔玛,很多软件方只是针对大众平台伪装,主要是方便程序开发人员调测系统程序,并不是能用于沃尔玛行业。而且每一个平台的风控是不—样的,我们技术团队从底层硬件环境开始配合软件控制…

【论文精读】MVSNet系列(2018-2022)总结

MVSNet系列总结1.MVSNet ECCV20182.RMVSNet CVPR20193.P-MVSNet ICCV20194.MVSCRF ICCV20195.PointMVSNet ICCV20192019年的这四篇文章各有特点,其中RMVSNet、PointMVSNet更是打开了可以继续沿着往下做的思路:6.cascade MVSNet CVPR20207.UCSNet CVPR202…

初识go变量,使用var和:=来声明变量,声明变量的三种方式

初识go变量,使用var和:来声明变量,声明变量的三种方式 Go语言的变量名由字母、数字、下划线组成,其中首个字符不能为数字。 tip:(Go语言中的变量的规范,也和其他高级语言相同) 声明变量的一般形式是使用 var 关键字: var 变量…

SpringCloud源码探析(二)-Nacos注册中心

1.概述 Nacos是Spring Cloud Alibaba中的核心组件之一,它提供了服务发现、服务配置和服务管理等功能,可以作为注册中心和配置中心使用。注册中心是微服务架构体系中的核心组件之一,Nacos比Eureka有着更强大的功能,它们都能提供服…

Java多线程系列-- ForkJoin框架,分治的艺术

前言 本篇是多线程系列中的一篇,我们在先前的一篇文章中回顾了线程池的主要知识 Java多线程基础–线程的创建与线程池管理 过去了很长时间,我们简单提要一下: 设计目的:简化线程的使用,管理与复用,避免…

Windows 远程桌面安全吗?电脑远程桌面的安全如何保障?

远程桌面会话在加密通道上运行,防止任何人通过监听网络来查看您的会话。 但是,在早期版本的 RDP 中用于加密会话的方法存在漏洞。 此漏洞可能允许使用中间人攻击 (link is external) 未经授权访问您的会话。 我们可以在 Windows 10、Windows 11 和 Wind…

学好数据结构与算法其实一点也不难

一. 初识算法 1.1 什么是算法? 定义 在数学和计算机科学领域,算法是一系列有限的严谨指令,通常用于解决一类特定问题或执行计算 In mathematics and computer science, an algorithm (/ˈlɡərɪəm/) is a finite sequence of rigorous …

MSVCP140.dll下载及安装教程,dll修复方法

MSVCP140.dll是Windows操作系统中的一个DLL文件,许多程序依赖于它来正常运行。如果您尝试运行某个程序时,发现缺少MSVCP140.dll文件,那么您需要下载并安装它才能解决问题。本文将介绍如何MSVCP140.dll下载和安装MSVCP140.dll。 第一步&#x…

解决树莓派 bullseye (11) 系统无法通过 xrdp 远程连接的问题

我手上有一台树莓派 4B,使用官方镜像烧录器烧录老版本操作系统 buster (10) 时可以正常通过 Windows 远程桌面连接上,但换成最新的 bullseye (11) 系统后却无法正常连接远程桌面。 问题复现: 使用官方镜像烧录器烧录,配置用户名为…