默认查看图片方式比较模糊,可以鼠标右键点击图片,采用在新标签页打开,此时可以查看高清大图;
对于验收测试工程师来说,编写验收测试分析和测试用例是一项必须且重要的工作内容,但大多数同学在做验收测试分析及用例编写时,仍旧陷入到传统的分析及用例编写思维中,与内部测试团队所输出的内容并无差异,虽然大家在讲述验收工程师职责或者测试分析思路时,都知道说要编写用户场景用例,可实战过程中仍旧是任性的走老套路,犟的很!
究其原因,还是没有摆脱传统的测试思维,更多的关注点仍旧在文档中罗列的基本需求点,除了字面上描述出来的东西,很难将自己放在用户角色上去想象体验手头的产品,在验收时,又本着任务的压力,只能优先去完成流程上的一些基本任务:验收测试分析、验收测试用例编写、各种会议评审、输出各类报告……
上述每一个具体事项实际都只是我们工作实施的一个产物体现,并不是最终的目的,也就是说不仅仅为了去完成一篇分析或者用例的编写,就匆匆忙忙开干,在没有深入理解需求,了解用户痛点,及项目意义的情况下,所有的忙碌都不会产生太高价值,看起来长篇大论的文字表格一堆,但其中蕴含的思维和测试覆盖点却很难达到我们的预期,往往后期需要花费大量的精力去查漏补缺,进行各种优化,算算总投入成本那是极不划算的,而且还觉得自己特忙。
对于团队中每一个同学来讲,每个人都有自己的特长和优势,但也会存在部分同学的确存在以上描述的若干问题,所以也就有了此篇文档,作为个人理解的内容,想要起到抛砖引玉的效果,希望在某些方面能够对大家有所帮助,也许能够通过思维的碰撞产生更加适合当前团队的执行方法和流程。
本文会以通俗易懂偏口语化的风格进行阐述,尽量结合当前项目的实际内容来阐述具体思想,文中所有举例只是为了阐述某种思维方式,请读者不要钻牛角尖,而应该深入扩展理解思维背后的原理,内化成自己的经验和做事方法。
本文总体文字比较多,且讲述的内容非常基础,可能都是在各位平常工作中已经在实施的部分,只是做了一个系统的呈现,如果看的过程确有共鸣,则可以快速跳过熟知内容,直接查看“精加工生产E2E验收用例”部分内容;
如果前文中部分内容平常未涉及到,则可以细致去想一下描述中的各问题及思维过程,最好是能转化成自己独特的思维逻辑;
如果文章通篇读起来觉得索然无味,也可以私下进行一些深入的交流(排除语文功底因素),这是我极其希望遇到的场景。
>如果你是一位新同学,或者是从传统测试转做验收测试的,下面的几点内容或许对你有所帮助;
>当然如果你是老司机,那也可以看看是否有其他更好的点子可以帮到大家。
比如XX项目经过你的验收后,可以拍着胸脯对他人说,已经验收通过没有问题,大胆发布,让用户拿去用吧!
或者是经过验收后,发现XX模块有风险,具体风险是XX,可能造成XX影响,建议提前采取XX行动,规避方案是XX,提前告知关注者项目的实际情况,即便是发布后真出现了问题,也做到了未雨绸缪。
前面的内容主要是一些铺垫,也就是大家说的鸡汤软文,下文主要从上面列出的几个步骤来描述一下个人理解的验收测试用例的生产过程,用例输出绝对不是直接上来就干的事儿,拿到项目一上来就直接干用例的行为那都是莽夫行为,测试最高价值体现就是你的思维,而对思维的加工最终输出的产物才是思维导图、测试用例这些实际的文档,下面会针对每个步骤进行详细的阐述,希望对大家有所帮助。
实物原料:
>- 项目需求文档;--必选(哪怕是一句话需求)
思想原料:
>- 熟悉软件研发流程;
通过对上述或者更多的原料进行有序加工,我们的思维产物最终会以具体的思维导图、测试用例体现出来。
实操步骤
首先我们在接触到一个新项目时,首要的就是拿到该项目的需求文档,如果没有需求文档就直接找产品经理或者一线人员,甚至是直接用户进行沟通,主要目的就是弄清楚如下几个问题:
经过上述几个问题的自问或者问他人,你一定会获得一些有用的信息,经过对这些信息的消化和理解,你基本上就具备了与产品经理或者用户等位思考的状态,在此状态下,再结合产品经理编写的现成的背景和痛点问题描述,基本上就真正理解了项目的背景了;
如何确定自己已经理解了当前项目背景呢?
Check点
>把这个项目介绍给其他人,能够流畅的按照上述几个问题维度来讲解清楚的话,就说明已经达到要求了。
这一部分内容大家最熟悉,也是一般人上来就开搞的一步,每个人都能整出一篇“丰满”的思维导图出来,全部展开的时候看起来内容丰富,但很多同学的思维导图内容细看后发现缺乏逻辑,有时候会很全,有时候会遗漏一些内容,实际上就是缺乏一些系统的思维。
实际上我们在做项目或者模块分析时还是有套路可以耍的: 1
首先就是把我们软件质量模型这张牌掏出来,如果能熟练的掌握质量模型的6大特性(功能性、可靠性、易用性、效率、可维护性、可移植性),27个子特性,那你做测试分析可能遗漏的几率是很小的。
>实际上很少人能全部掌握,但你需要做到的是6大特性一定要掌握,每个特性大概对应的是哪些维度要非常清楚,质量模型中的维度需要逐项去做分析覆盖,功能性这块基本是个测试都能做到,但如何把功能性做全做深就又是一个挑战;
功能特性分析:
思维导图的输出
>通过上面的思路分析后,我们就能输出80%的思维导图分析内容,也就抓住了这个项目的80%的测试点。
此时你完成的思维导图大概应该是这个样子:
完成80%内容后,剩下的把其他五大特性的内容进行完善即可,具体每个特性所体现的内容请大家自行学习,并转化成项目中可实施的测试点 此部分完成后思维导图大致会是下面的结构,能够确保质量模型维度的全覆盖,那测试点的梳理基本就完成95%了。
完成上述测试分析后,实际上我们还有一个很重要的维度容易忽略,那就是异常场景,当然很多同学也容易特立独行,在上面的分析过程中就投入大量精力去搞异常场景,显得自己考虑问题的角度比较深入或者独特。
想法是好的,但这个不是我们主要发力的点,你基本业务流都没整明白,直接到这种容易“钻牛角尖”的胡同里,很容易走火入魔。
建议上来说,在完成上面的所有分析后,再把自己脱离出来,去思考一些异常场景的补充,此时你的角色就变换成一个“破坏”者,以你能想到的,在日常使用过程中可能发生的一些“可怕”场景都用上来,如果符合当前项目的操作入口,那么就是你异常场景的突破口。
打比方(也不知道比方会不会怪我老打他):
此时你的思维导图大概是这个样子:
- 通过上面的生产加工后,想必大家觉得分析工作已经完成了,可以说作为内部测试在完成上面工作后,测试分析工作的确可以告一段落,我也可以打包票说只要你能按照上面提到的维度,每个维度都做出了深入的思考与分析,那你的测试分析是比较完善的;
- 但作为验收工程师,最核心的部分还没开始,那就是E2E场景,也就是说,到现在为止,验收工程师的核心工作才刚刚开始……
实际上前面的工作都已经做的比较全了,剩下的部分只需要结合部分思维来串联一下就可以完成,此刻你就变身为一个串珠的人儿了,把你精心准备好的“珍珠”按照某种方式串起来,做成一条条“项链”,这些“项链”就是我们验收的E2E场景用例,其主要会涉及到如下方面内容:
用户日常使用时,使用产品的操作路径,可能进行的操作流。
写这些E2E场景的意义是什么?
>尽可能全的模拟覆盖用户日常会操作的路径,提前发现可能存在的问题,确认产品是否能够满足用户日常使用,弥补在模块测试中对模块之间的关联性测试覆盖不足的问题。
用户场景的来源有哪些?
>- 通过功能点分析,站在用户角度采用状态机思路编写E2E场景用例--你就是用户;
>- 通过分析一线人员提供的问题信息,获得用户使用的场景信息--真实使用者的反馈;
>- 通过一线人员提供的用户群体特征,使用产品的场景等信息,通过关联分析构建用户场景信息--对真实使用者的模拟分析,有时候用户自己都不知道自己需要的是什么,那我们就需要替用户去思考这个问题,如同乔布斯说的:在我发布苹果手机的时候,用户才知道这就是他们想要的。
什么叫做端到端(E2E)场景用例?
>不同于传统测试过程中仅针对某一个功能点进行深入验证的用例,而是尽可能将多个功能点通过某种思路(如状态机)有目的设计成一连串的操作流,形成的一种用例形式。
场景用例的编写粒度该如何把控?
>在编写这类用例时,很多同学会陷入两难境地,在测试步骤中,不知道编写粒度该控制到哪个层次,写太细了跟传统用例没区别,写太粗了又担心不具备可执行性;
>- 实际上这个问题很难按照某种要求去规定,主要把握几个原则:
我该如何知道E2E用例步骤该从哪里开始又从哪里结束?
>- 此行为实际上也没有固定的公式可以参考,仍旧是结合部分经验来完成:
我们先来了解一个概念:"状态机",这个将对我们编写E2E用例有较大帮助,场景用例编写的总体思路我们将采用状态机的套路来进行,所以我们需要先了解这个概念:
状态机就是有限状态自动机的简称,是现实事物运行规则抽象而成的一个数学模型 状态机有4 个要素: 现态、条件、动作、次态。 这样的归纳,主要是出于对状态机的内在因果关系的考虑:
>- “现态”和 “条件” 是因,
- “动作”和 “次态” 是果。
转换状态示意图:
>下面就是对水在不同状态之间的转换示意图 - 假如水蒸气是现态,在施加降温这个条件后,会发生凝结动作,从而变成次态的液态水;
- 当前液态水是现态,在施加降温这个条件后,会发生凝固动作,从而变成次态的冰;
- 相反在施加加温这个条件后,冰又能变成液态水,在继续加温后,又能变成水蒸气。
将上面水的状态变化类比到我们软件产品中来,就是这么个意思:
- 确定起点后,可以分析有哪些条件可以来施加,也就是从这个起点开始,有哪些后续的功能按钮可以操作?
- 分别操作这些功能按钮后,会跳转到哪个模块或者页面(次态)?
- 依照上述思路,针对这些次态继续分析可以施加的条件(可点击的功能按钮),继续往下发觉后续的状态;
- 当分析到最后发现已经没有新的状态可以产生了,那就说明这条路径已经走到头,此时就可以结束了;
- 如果发现不同状态之间会存在循环,那么我们可以保证完成一次循环即可(比如:固态=》液态=》气态=》液态=》固态);
- 如果发现在某一个次态时,会产生多分支时,那么就需要单独分析每个分支,直到每个分支都走到头才结束;
- 针对不同的分支我们就可以梳理出不同的场景用例来。
大多数同学可能觉得到这里任务就该结束了,实际上上面的所有行为都是我们自己通过功能分析构造的一些场景,仍旧会存在遗漏点,每个人的思维都是存在局限性的,如果条件允许的话,我们可以进一步与一线人员甚至直接用户进行交流,来获取其真实日常是如何开展的,从而获取到最为真实客观的使用场景信息。
怎么还没完没了了?
到此还没结束?
当然,因为前期我们的所有行为都是纸上谈兵(做的策略分析),老话说的好,纸上得来终觉浅,绝知此事要躬行,事情还得自己“弯着腰”去做啊……
在验收的整个生命周期中,我们的时间跨度是非常大的,在前期用例全部编写完成后,还有很长一段时间,此期间伴随着迭代版本的提测,内部测试的测试,验收的抽验,等等过程,
此阶段我们是有机会接触真实的产品形态,也能够去实践之前的策略性动作,在这个过程中,是能够发现一些遗漏点,或者过程性不完善的地方。
此时思维导图框架大概是这么个样子:
实际上在上面过程中就有可能已经完成了用例的转换,所以此阶段并不一定是在最后,我们对于用例的补充和思维导图的维护应该是同步的,避免用例有更新,思维导图有缺失,真正在后续去评审和讲解时都是拿思维导图来展示,用例很难逐条去评审,拿用例评审是无法有效知道是否有遗漏,只能评审用例的规范与否,对于用例的覆盖度是很难直观的判断的,但思维导图则可以方便的查看是否针对某个模块有遗漏的场景或者维度的缺失。
如何编写转换成最终的用例则不在此文中做讲解,针对用例的编写可以单独进行分享,此文默认大家都能够有效的转换编写用例。
在实际生产过程中,都有一个质检环节,我们的工作也不例外,此环节与各位的职位级别、能力无关,再牛皮的人都有出错的时候,那么质检的这个动作我们一定要实施。
此次故事就讲到这里~
如果你已经睡着了,我会感到很抱歉,没有吸引到你~
如果你感觉有收获,我会感到很欣慰,我真的可以帮助到你~
如果你有好的建议提交给我,我会感到很高兴,你可以帮助我进一步成长~
如果你有更好的思维与我分享,我会感到兴奋,我想与你把酒言欢~