学妹:原来软件测试需求分析还可以这样做...
Posted 程序员二黑
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学妹:原来软件测试需求分析还可以这样做...相关的知识,希望对你有一定的参考价值。
为什么要做需求分析
我们来打个比方,经常会有人这么问,我想买台电脑,有什么推荐吗?这个时候,我们就能马上给出一个推荐吗?我们是否还应该问问这些问题:
-
1)主要用途是什么?
-
2)台式机还是笔记本?
-
3)预算多少?
-
4)对品牌有什么要求?
-
……
在这些问题都有答案之后,我们才能帮着去推荐。也就是说,通过这些问题,我们才能真正了解对方的需求。同样的,我们做测试工作,产品需求也不等于是测试需求。没有测试需求分析,会导致我们的信息不完整、不准确,无法对所测产品有一个清晰全面的认识。所以,我们要先进行测试需求分析,在这个基础上,再进行后面的测试设计,测试计划等工作。
当然,工作中难免会遇到并不“完美”的需求文档,比如牵一发而动全身不清楚的交互逻辑,子条目频繁的变更,交流缺失导致的歧义,都会让测试在项目推进中手足无措。呐这篇文章就是想和你一起讨论,当我们阅读需求文档时,我们都需要了解啥。
从宏观的角度看需求文档
在阅读需求文档之前,我们要对项目或者功能本身有一个宏观的认识,当前项目追求的是什么,是与时俱进快速迭代的更新速度,还是稳中求胜的代码质量,还是耳目一新的智能化设计,明确这些有助于我们在测试中有明确的重心。站在宏观的角度看需求文档,主要是明确需求的合理性和优先级,是针对需求整体作用进行的评审,如果整体的方向错误,那么细节上也没有再讨论的意义了。
在合理性的意义上,通读需求文档,从客观的角度出发,应有一整套合理、公正、客观、完善的需求文档的评价体系去保证需求质量。更多的时候我们也要换位思考,站在用户的角度,去评价需求文档解决的痛点是什么,是否符合用户需求;解决的这个需求会不会只考虑到小范围的用户,从而影响到大众关注的逻辑,更应站在开发的角度去评估,在效率、效果上是否可行,在技术上实现是不是会有阻碍。如果这个需求的涉及到的资源紧张,那么这个需求和其他需求的优先级又该怎么取舍,都是应该在需求评审时,首先应该考虑到的。
从细节的角度看需求文档
站在完整性的角度看需求文档,实际上是将当前的负责的项目模块化(或者抽象化),根据功能的需求确定功能的影响范围,再细化,同时对比需求文档,这样对目标的操作有个明确的预期结果。
1)结构化项目流程
以内核为例,无论是功能类的需求、质量类的需求还是解决用户反馈的需求,都可以把这些需求抽象成为操作(增、删、改)、查询两个大模式。要么是纯查询类需求(即刻俊译),要么就是两者结合操作类+查询类(灵犀)。在这里有些看起来是纯操作类的需求(删词),但是实际上要通过查询的方式才能生效在这里就不单独作为一个模式赘述。
2)确认影响模块
比如一个纯查询类的功能需求,我们通过以上的图就可以知道,整个过程影响我们的因素有:
1、用户输入
例如:
1) 类型(中文、汉字、英文、数字、不支持编码、表情、符号)
2) 长度(最短、最长)
3) 异常输入
2、查询条件
例如:
1)完全匹配查询、部分匹配查询(简拼、暴力)
2)需求中定义的查询规则(匹配规则、优先级逻辑)
3、 查询内容
这里的查询内容指的是被查询内容的特性,存在/不存在,同步/异步,正常/异常,或某些需求文档中指明的情况
4、效果展示
例如 :
1)展示位置
2)排序优先级
3)展示个数
4)标记情况等
3)考量综合因素
这里的外界影响因素,指的是其他外界因素,有可能改变这四个过程中的某些因素,比如开启繁体下会改变用户输入,比如当用户关闭用户词会使用户词查询内容失效,再比如某些固排的词会影响效果展示。
还有一些效果性的需求,比如提高查询效率,我们知道这个功能只需要改动查询条件就可以,但是在需求文档中也应明确是否有用户输入和查询内容的约束。当然这些综合考量离不开测试人员项目知识的掌握程度、在这里建议(类比相似功能、总结记录(bug、特殊)以及用例评审去提升综合因素的覆盖度)。
将以上因素排列组合和归纳,再对比需求文档,我们就可以知道某种特定的输入下,有哪些预期结果,那这些预期结果到底好不好,这就涉及到需求细节的合理性、明确性以及优先级。
合理性的验证也需要从用户行为和开发行为两个角度去进行分析,细节是否合理到位。比如之前出现过的需求中,上屏标点后,再输入上屏不会自动补空格。我们找了一篇英文文章去输入体验,发现每次上屏标点后,都需要手动输入一个空格,再输入其他词条,这样的体验肯定不是用户想要的,因此会针对这种现象提出需求建议,再比如某些效果需求的时候,罚分与其他功能冲突,都是我们期待在需求分析阶段发现的。
明确性是需求阅读中的痛点,因为阅读的时候人都是主观的,所以很难有这个明确性的意识。经常出现问题的地方是歧义和没有约束。在这里我对歧义的建议是多次阅读,特别是那些觉得非常拗口的地方,往往都是问题频发的根源。约束的问题往往依赖个人经验,比如键盘类型的约束以及异常校验的约束等。
优先级某些需求项与已有功能有“冲突”,针对这些需求项,是否明确了优先级,并评估优先级的合理性。
需要注意的是,合理性、明确性以及优先级的相关的影响因素是在完善性的考量中确定的,所以结构化项目流程,明确影响因素范围尤其重要。
需求的测试成本与质量风险
最后一个是在阅读需求文档后会被频繁讨论的事情,值得大家深入思考。
一般来说常见的有两种问题:
1)测试和开发的成本比较高,难以匹配当前的产品进度。
2)当目前的已有测试手段不能有效保证功能的质量。
针对这两种问题,我的建议是尝试变更测试方案,提出对被测试需求的多种测试策略,并在每种方案后标注测试成本和风险,并将方案与合作方讨论,选择大家都可以接受的方案进行调整。
以上就是我的一些阅读需求文档的经验,可能每一个测试同学对应的项目不同,抽象出来的流程不同,思考和解决的方式也不同,欢迎在下面分享经验,与大家讨论,如何进行需求分析。
最后我也给大家准备了400页软件测试核心知识点,有需要的朋友可以关注我的微信公众号:程序员二黑,免费获取!
精彩推荐
高薪程序员也躲不过35岁这一关…当能力与年龄脱节,我们该如何自救
以上是关于学妹:原来软件测试需求分析还可以这样做...的主要内容,如果未能解决你的问题,请参考以下文章