业务需求与系统功能

本文首发于【林子的空间


场景01

“Story上的AC(验收标准)可以直接作为Test Case(测试用例),就不用再详细写Story相关的Case了。”

“AC不能写成Test Case那样的,AC肯定不能作为Case。”

“为啥啊?AC写得详细点,不就可以作为Case了吗?”

“AC跟Case是两码事,AC是从业务视角出发的验收标准,而Case是用来验证系统功能的。”

听到这里,是不是觉得有点意思?你赞同哪个观点呢?别急,咱们接着往下看。

场景02

“你们的测试用例全部都是系统的操作步骤哈,那怎么知道相关的业务需求实现了呢?”看到那一条条格式整齐的测试用例,清一色描述的是系统的操作步骤,不禁产生这样的疑惑。

“我们这些测试用例就是根据业务需求文档来写的,需求文档上也是这样描写的系统操作步骤。” 测试人员如是说。

好吧,我理解需求、开发和测试都已经习惯了这样的方式,那么,真的没有问题吗?我们来听听PM怎么说:“大家对业务上下文理解不清晰,都只知道系统如何操作、提供了哪些功能,包括测试人员,测完了系统功能正常,但是他们可能都不知道自己测试的功能关联到什么业务,也不知道业务需求是不是满足了。”

不知道你平常的测试用例是怎么写的呢?有没有同样的问题?

场景03

“新来的那位资深QA同学技术很不错,感觉对业务理解还是不够,想要他讲一下XX Feature(特性)的业务,结果他一上来就打开系统,给我们演示具体的操作流程……”

“嗯,我也发现了,还是好多人只会关心系统功能,不能很好的理解业务的,这样的话很难判断业务优先级,让测试帮助优化业务价值了。”

是啊!系统操作看得见摸得着,理解起来简单多了,要真正理解业务及其价值,可不是件容易的事情。我之前有撰文写过这方面的内容,欢迎参考:

业务价值驱动的测试
敏捷测试如何帮助优化业务价值

业务需求与系统功能是一回事吗?

场景03里的那位同学其实并没有很好的区分出业务需求和系统功能,所以才会把系统功能当业务来介绍。那么,业务需求和系统功能的区别和联系分别是什么呢?

系统功能不是业务需求

我们先来看一个例子,下面这个是业务需求吗?

“在截止日期前5天系统自动发送Email提醒用户填写问卷”

可能有同学会说,是的啊,这就是业务需求,是业务人员这么说的。可是,事实上,这不是业务需求,真实的业务需求应该是:

“需要在截止日期到来前提醒用户填写问卷,以免错过填写,没法进入下一个环节。”

而实现这个业务需求,也就是提醒用户,可以有多种方式,可以是:跑过去告诉客户、打电话通知、发送纸质信件、发送电子邮件、发送微信等及时消息、发送系统通知……

因此,系统功能,包括系统操作步骤、页面跳转这些,只是描述系统工作的方式,是业务需求在系统中的一种实现方式(HOW),并不是真正的业务需求(WHAT)。

什么是业务需求

从前面的例子可以看出,业务需求不是系统必须做的事情,而是业务需要做的事情。业务需求是业务流程和功能的组合,可能是:

  • 一个必须要执行的流程
  • 执行该流程需要的数据
  • 控制该流程和数据的业务规则

保险业务是比较典型的能够体现上述元素的业务,我们以保险业务为例说明。下图所示为寿险业务流程,投保的相关信息都属于流程需要的数据,包括不同的险种以及投保人身份信息等等,而相应的保险规则就是业务规则。

图片来自:https://wenku.baidu.com/view/82d269fcaef8941ea76e05dc?pcf=2&bfetype=new

常见的业务例子有:公司管理、策略、财务、市场、采购、设计、研发、IT、客户服务、HR、生产、质量管理、运营等。

业务需求相对来说发生变化的频率比较低,而系统功能可能会在不断的优化过程中发生比较大的变化。

测试只需要验证系统功能吗?

系统功能是业务在系统的实现方式,系统功能工作的正确性必然是需要验证的。这部分主要包括合法输入能够得到正确的输出、页面流转方式正确、各个UI组件工作正常、以及系统对于异常情况的处理等。

但是,仅仅验证系统功能就够了吗?

我们来回顾前面的场景02,这是真实发生了的对话。

业务需求文档里描述的内容只有简单一两句话带过业务,其他的99%都是描述的系统操作,包括页面布局、系统菜单、页面流转等非常具体的操作流程,开发和测试都是基于这样的需求文档,一般都会忽略那仅占1%的业务描述,主要关注的都是操作部分。因此,才会有领导的担忧:测试人员测试完成,甚至不知道业务是不是正确的……而业务分析、开发和测试人员都已经习惯了这种方式,他们不会觉得有什么问题。

这样听起来还是挺可怕的,我们再利用保险那个比较典型的例子来看问题所在,下图是前面提到的保单承保的详细流程:

图片来自:https://wenku.baidu.com/view/82d269fcaef8941ea76e05dc?pcf=2&bfetype=new

从图中可以看到,“保单录入”到“保单打印”这部分可能是在系统完成的,也就是系统提供相应的功能。如果我们测试的时候只是关注系统能够完成这些操作,而不根据险种、投保人信息去判断相应的业务是否正确的话,肯定是有问题的,有可能会导致不符合条件的人还能投保成功!如果是理赔相关业务,可能最终赔付的金额都是错的,但是没人知道……

因此,测试除了保障系统工作的正确性,还需要基于真实的业务验证业务需求的满足情况。

测试用例需要体现业务吗?

回顾场景01的争论:验收标准是否可以作为测试用例,引申出一个问题:测试用例需要体现业务吗?

业务需求需要验证,也正因为如此,我们会强调要理解业务、以业务价值驱动测试。因此,作为测试参考的测试用例,无疑也是需要体现业务的。

那么,测试用例该如何设计?如何做到体验业务呢?

刘冉老师的《测试用例编写和管理》一文对测试用例的编写和管理做了非常详细的介绍,其中提到了用领域特定语言(DSL)编写测试用例,我特别认可。

测试用例需要体现业务,测试用例应该是基于行为的、用业务语言表述的方式编写,不一定需要涉及具体的系统操作。

继续以保险业务为例,下面是一组关于新案件理赔时将案件录入系统的测试用例:

测试用例集
01. 新案件录入时,如果事故人不存在,检索无返回
02. 新案件录入时用事故者信息检索事故人
03. 新案件录入时用保单号检索事故人
04. 案件信息录入页面:责任为医疗费用和医疗津贴时,入院日期、出院日期、住院天数为必填项
05. 案件信息录入页面:责任为重大疾病时,首次确诊时间为必填项

可以看出这是一组非常具体的操作相关的用例,这些操作如果发生变化,相应的用例维护成本将是很高的,而且,很难从用例本身看出真实的业务。

如果我们把测试用例描述为:

当有新案件发生时,运营工作人员可以根据<保单信息>找到到相应的事故人,并且能够将<必须录入的案件信息>成功录入系统。

实例:

  • 保单信息:事故人信息或保单号
  • 必须录入的案件信息:责任为医疗费用和医疗津贴时,有入院日期、出院日期、住院天数;责任为重大疾病时,有首次确诊时间

这个用例里边并没有提到具体的页面,是相对抽象的业务逻辑描述。这是一种用领域特定语言(DSL)描述的方式,其中的实例部分可以理解为测试数据集,是可以跟用例中的业务逻辑部分分开的。

这种形式让人感觉更直观更清晰,总结起来有两个方面的好处:

  1. 业务逻辑跟数据分开,也不涉及具体的页面和操作步骤,增加了用例的可维护性;
  2. 用例体现了业务,能够通过用例更好的传递业务信息,测试人员采用这种用例设计方式,也能更好的理解真实的业务,做到将测试跟业务关联起来。

再回到场景01,我们不难明白写的好的验收标准是完全可以作为测试用例的,而且比一般基于系统操作编写的测试用例更有优势,更值得提倡。

写在最后

系统功能不是业务需求,只是业务需求在系统中的一种实现方式,清晰理解业务需求至关重要。

测试不仅要验证系统功能的正确性,验证业务需求的满足情况更为关键,直接涉及到系统的实现是否有价值。

业务价值驱动测试做起来不容易,让我们从最基本的测试用例设计开始,改变以往的用例设计方式,通过用例传递业务价值。


更多作者文章,欢迎关注:
林子的空间:https://www.bylinzi.com
公众号:by-linzi

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,386评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,142评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,704评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,702评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,716评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,573评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,314评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,230评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,680评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,873评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,991评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,706评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,329评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,910评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,038评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,158评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,941评论 2 355

推荐阅读更多精彩内容