本文转自:https://www.cnblogs.com/imyalost/p/9393789.html

从MFQ方法到需求分析
前几天看了一篇性能测试相关的文章:性能测试模型初探及应用方法分析,其中提到了MFQ分析方法。专门去查阅了MFQ相关的一些资料,学习了一番。

之后想起了以前看《Google的软件测试之道》这本书时,书中提到的一种测试分析方法:ACC分析方法。

还有我个人在工作学习中总结的一个分析方法:象限分析法。

这篇博客,对这三种方法进行一个简单介绍,仅供参考。。。

参考资料:

MFQ在实践中的应用

邰晓梅博客

一、MFQ方法

MFQ是由邰晓梅提出的一种结构化的思维以及测试分析和测试设计方法,分为四部曲。整个四部曲之间实质上是全貌到细节,整体到部分的关系。

它运用启发思维的方式让大家从不同的维度对需求进行进一步了解,从测试的角度重新定义需求,结构化的思维方式辅助图形化工具使得场景遗漏概率降低。

MFQ的四部曲分别如下:

1、KYM

KYM(Kown Your Mission),即了解自己的测试对象。对于需求承接者来说,需要从不同的维度去了解、分析需求,在分析过程中,有任何疑问均可以罗列出来。

KYM通用的维度可用如下引导词来标识:CIDTESTD,即:Customer、Information、Developer Relations、Test Team、Equipment&Tools、Sheduler、Test Item、Deliverables。

2、TCO

TCO(Testing Coverage Outline),即从测试的角度对原始需求进行提炼,提炼出对测试有用的测试点,并且对提取出的信息进行重组,识别出需求中的风险,做到对需求心中有数。

KYM与TCO均不是一次性过程,并且需要各种角色成员一起梳理,其中TCO中最重要的是要识别出M、F、Q:

M:基于模型的单功能测试分析和设计;

F:功能交互测试分析和设计;

Q:质量属性测试分析和设计;

3、建模MFQ&PPDCS

通过TCO对需求的整理之后,划分了单功能和功能交互点,这时的输出物还只是测试点,不足以支撑整个测试,还需要对具体的单功能使用建模方法。

PPDCS(Process,Parameter,DATA,Conbination,State)建模方法从不同维度设立了建模思路,下面简单介绍一下其中三种建模方法的适用场景:

Parameter:需求中或者划分出来的单功能或者功能交互点有许多参数,且这些参数相互之间有一定的业务规则约束,即某些参数之间组合才能符合需求。

DATA:需求中或者划分出来的单功能或者功能交互点有许多参数,但是这些参数之间没有业务规则的约束。

State:需求中或者划分出来的单功能或者功能交互点涉及多种状态,且各种状态之间由于某些业务规则,能够相互转换。

4、TCON

根据上一步建模的测试场景,生成TCON,用上述判定不同情况下的测试条件转变,TCON这里可以理解为TestCase。

总结:MFQ需要团队每个成员参与完成测试点的梳理,并且,MFQ不是一次性过程,需要在迭代中针对任务完成情况以及风险点进行及时纠正及完善。

二、ACC分析方法

来源:《Google软件测试之道》

具体可参考我之前的博客:《Google软件测试之道》测试工程师

ACC(Attribute Component Capability)分析方法即:特质、组件、能力。这是从Google众多测试团队实践中总结的一个优秀流程,受众较多,搜索“Google Test Analytics”即可找到。

ACC指导原则如下:

①避免散漫的文字,使用简明的列表;

②不必推销(测试计划的受众是工程师);

③尽量简洁(测试计划的大小和测试问题的规模有关,和作者的写作欲望无关);

④渐进式的描述(make it flow):测试计划的每个部分应该是前面部分的延伸;

⑤指导者的思路(一个好的计划过程可以帮助计划者思考产品功能及其测试需求,有条不紊的从概念过度到直接实现的低层细节);

⑥最终结果应该是测试用例(测试计划最直接的体现就是可以清楚的指导测试用例的编写);

A:代表特质(Attribute)

在设计测试计划或者做ACC分析时,必须先确定该产品对用户、对业务的意义;比如:为什么开发它?能带来什么价值?怎样吸引客户?核心竞争力是什么?等等。。。

特质代表了产品的品质和特色,是区别于竞争对手的关键。

C:代表组件(Component)

组件是构成待建系统的模块,在特质被识别后确定,组件是使一个软件之所以如此的关键代码块;实际上,它们是测试人员所要测试的对象。

C:代表能力(capability)

能力(功能点)代表系统在用户指令下完成的动作。它们是对输入的响应、对查询的应答、以及代表用户完成的活动。

能力一般是面向用户的,表达用户眼里系统的行为,它最重要的一个特点是它的可测试性。

关于能力点分析的一种方法:

上图是一个以特质为X轴、以组件为Y轴的表格,通过这种方法将功能点映射到特质和组件上。其中有很多空格,它表示:只有部分组件对该特质有影响(不是每个组件都对特质有影响);

能力表的每一行或列表示按某种方式相关联一个功能点切片,这样可以将应用功能分解为多个可测试点的办法。单元格中数字表示该组件满足此特质能力的数量,数字越大,该交叉点需要!

测试的测试点越多,这些能力点可以方便指定组件/特质对的需要的测试;可以以这些功能点直接涉及测试用例,或将它们组合成更大的用例或测试场景。

注意以下几点:

①每个功能点至少对应一个用例

②重要的功能点对应多个用例

③并非所有的功能点都是同等重要的,区分优先级很重要

三、象限分析法

这个方法是我个人阅读《高效能人士的七个习惯》这本书后总结出来的,可能不是首创,但也包含了个人的一些思考和总结。方法如下图:

说明:

这个方法的原则就是将测试需求根据不同维度和等级划分为四个象限,然后进行对应的填充,在具体的测试执行过程中,根据具体情况(比如资源、时间等)进行优先级执行。

上图是我去年这个时候画的,按照需求的功能、非功能、重要、不重要四个维度划分。此刻写这篇博客的时候,想到了其他的不同维度,比如:优先级、实现难易程度等。

有一定测试经验的童鞋应该都了解,在国内目前的大环境下,测试的时间和资源往往都是不够的,这种情况下如何做取舍,降低上线的风险程度是必须衡量的。

根据需求分析的结果,进行不同维度划分,可以更好地安排接下来的测试工作,做到合理取舍,降低上线风险。

PS:无论是MFQ还是ACC或者象限分析法,其实都需要根据具体情况(比如团队成员构成,技术水平,职业素养,资源),进行合理的划分和分析,由简入繁。

以上内容仅供参考,如有更好的意见,可以提出来,一起交流讨论。。。

软件测试—从MFQ到需求分析相关推荐

  1. 软件测试需求文档案例,软件测试如何进行测试需求分析?

    作为一名软件测试工程师进行测试需求分析是非常基础的工作,一般测试需求分析是有张可寻的总结一下也就是那么几点,只要把问题考虑全面了,就会让你感觉这并是不那么困难. 1)确认功能 (业务功能.辅助功能.数 ...

  2. 软件测试-工作流程(需求分析评审、测试计划、测试用例、用例评审、执行测试、跟踪定位bug、测试报告、缺陷报告)

    一.需求分析.评审 (1)需求分析 对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应输出什么. ①如何做需求分析? 通读需求,对需求有个大致的了解,比如: ...

  3. 软件测试人员应该怎样做好需求分析

    软件测试人员如何做好需求分析 发布时间: 2013-5-17 15:34    作者: 未知    来源: 51Testing软件测试网采编 字体: 小 中 大  |上一篇下一篇 |打印  |我要投稿 ...

  4. 软件测试面试题!收藏起来,每天看一看,月薪20K!

    初级测试总结题!必背!必背!必背! 1)软件的概念? 软件是计算机系统中与硬件相互依存的一部分,包括程序.数据以及与其相关文档的完整集合. 2)软件测试的概念? 使用人工或自动手段来运行或测试某个系统 ...

  5. 对于软件测试四大误区的认识

    第一大误区: 认为测试只是点点点,没有任何技术含量可言 大多数人都认为软件测试的工作就是安装和运行程序,点点鼠标,按按键盘,点点手机屏幕的事情,这是对软件测试最常见的评价,为何会出现这样的结果,那是因 ...

  6. 软件测试--【软件测试和bug】

    软件测试 验证软件功能是否满足用户的需求 测试和调试的区别 目的不同 测试的任务是发现程序中的缺陷,调试的任务是定位并且解决程序中的问题: 参与角色不同 测试主要由测试人员和开发人员来执行(黑盒测试主 ...

  7. 2、软件的生命周期软件测试的工作流程

    一.软件生命周期模型瀑布模型:适用大型且时间长的项目()1.问题定义与规划(市场.产品):市场调研确定软件开发的目的及可行性2.需求分析(产品经理主持,开发.测试(测试的职责是弄懂需求).ui参与): ...

  8. 软件测试的起源和发展、流程 笔记

    一.软件测试的起源与发展 十九世纪初:软件规模小,混乱无序,遇到问题进行调试.由开发人员自己完成. 1957年:软件测试与开发调试区分开. 1972年,软件测试领域的先驱Bill Hetzel博士,在 ...

  9. 软件测试——基础篇(软件测试的生命周期和BUG的概念)

    目录 一.软件测试生命周期 1. 软件生命周期 2. 软件测试生命周期 二.BUG 1. 如何描述一个BUG 2. BUG的级别 3. BUG的生命周期 一.软件测试生命周期 1. 软件生命周期 软件 ...

最新文章

  1. python学习day24 继承 派生
  2. java怎么创建二进制文件_Java:如何编写二进制文件?
  3. discuz在线人数的实现原理(Discuz6.1.0)
  4. jquery-confirm
  5. python singleton design pattern super() 多继承
  6. 使用Helm将ASP.NET Core应用程序部署到Kubernetes容器集群
  7. java字符串常量池长度_Java String类相关知识梳理(含字符串常量池(String Pool)知识)...
  8. 基于JAVA+Servlet+JSP+MYSQL的保险管理系统
  9. 自动生成小学四则运算题目(加强版)
  10. 去掉重复值php,php多维数组去掉重复值
  11. 函数的参数可以是数组吗_C++数组长度可以为变量吗?
  12. 9月6日 星期二 晴(晚上有雨)
  13. 一周信创舆情观察(11.16~11.22)
  14. pandownload使用
  15. Origin科研绘图实战
  16. 【赛后总结】第十三届服务外包创新创业大赛总结——A14
  17. Puppeteer之Pyppeteer——浏览某短视频,获取点赞和评论,收藏,转发数(5)
  18. 第一个被赋予公明身份的机器人_世界首位获公民身份机器人索菲亚,称要结婚生子毁灭人类...
  19. PPT基础教学(从PPT图片插入讲解的水平,真的不能再基础)
  20. CentOS7.0基于hadoop集群安装配置Hive

热门文章

  1. 读写分离时mycat不能链接mysql_Mycat读写分离配置实践
  2. I2C 死锁及恢复方法
  3. 基础dp C Monkey and Banana (类最长上升子序列)
  4. 分析基金表现,获取优质基金
  5. php更改图片滤镜,php利用imagemagick实现复古老照片效果实例
  6. c语言中水仙花数的代码,水仙花数c语言实现代码
  7. linux 停止命令运行
  8. 微信小程序苹果兼容问题
  9. 第5阶段-C++提高编程资料
  10. 商标名称注册查询有那些注意!