• 0
  • 0
分享
  • 为什么大佬能很快梳理解决复杂的测试任务——软件测试圈
  • 恬恬圈 2023-01-13 14:23:17 字数 4748 阅读 1524 收藏 0

  今年是进入测试行业的第九年,回想在这九年职业生涯中,来来往往也接触过很多很多的人。在跟不同的人一起工作的过程中,我会经常产生一些困惑,比如:

  面对同样复杂的测试任务,有些人可以在一天之内梳理出解决方案,而有些却要墨迹很长时间? 有些人能够快速的描述出工作中的问题,而有些人支支吾吾一直说不清楚? 有些人当被问到“你这样说的依据是什么?”“有没有具体例子”时,经常被卡壳,有些人却能摆事实讲道理有条不稳的说上一二三?

  但是随着工作的深入接触,不难发现那些高效解决问题以及能够高效沟通的人都会有这样一个共同点,就是他们拥有一套高效的结构化思维方式。

  一、什么是结构化思维方式?

  结构化思维简单来说就是,面向问题的时候你可以通过某种结构,把它拆解成一个个你能解决的部分。

  举个很常见的例子来感受一下,假如你作为一个面试官,面试的时候,让候选人思考一个淘宝购物车功能,需要怎么测试?你可能会得到很多的答案:

  比如有些候选人会回答,先添加购物车,后删除,查看数量是否正确; 勾选购物车,看价格是否计算正确;最多可以添加几个商品等等。 计算下优惠券能否正常使用。

  这些答案,可能对,也可能不对,但是大多数时候,都是基于我们的测试经验来分析问题,不一定能保证想清而且想全了。那么如何用结构化思维来更清晰更全面的分析这样的问题?作为测试工程师,其实我们都知道,测试的分类大抵可以分为:界面测试/功能测试/性能测试/安全测试/异常测试/兼容性测试。那如果我们从测试分类上对这个测试分析进行拆解,无非就是这几个测试分类怎么测,然后在各个分类上做细化,直到不能再拆解(如下):

1-1.jpg

  以上就是一个简单的用结构化思维来分析问题的过程,我们在写测试用例或者梳理测试点的时候也可以应用,通过按测试类别进行拆解,不仅能把事情讲全,而且分析的还相对比较清楚。

  由此可见,结构化思维是一种从无序到有序的思考过程,这个过程中,你可以建立一个先总后分的立体化分析方式。先看能够解决问题的关键方面,然后往下分析,从而实现从全局到局部的鸟瞰,而不仅仅拘泥在一种细节里面。而这种常见的思维方式,其实就是一张金字塔的树状图,如下:

1-2.jpg

  二、为什么测试工程师要学习结构化思维方式?

  工作中,软件测试工程师需要面对的不仅仅是能够独立承担复杂产品或者模块的测试工作,还需要不断的去横向或者纵向与不同的角色沟通交流,面对复杂项目的时候,甚至会跨角色边界进行项目管理,流程把控,客户对接等等。

  比如面对同一个问题,有的人能用三句话直击要害,而有的人可能30min也说不到核心;面对一个复杂业务模块,有的人能够快速有层次的做一次测试点的分析和组织一场高效的测试用例评审,而有的人却在测试分析上归纳混乱,导致用例评审不断在拖堂……工作中这样的例子举不胜数,那这块的思维差异体现在哪里呢?最根本的原因,在于有没有形成快速有效的处理信息的方式,以及对信息逻辑结构的梳理和清晰有效的表达。

  举个例子:

  在一次处理线上事故中,有一个测试的同事急冲冲的跑过来汇报说:“发现之前的代码有问题,某些数据推动到另外一个平台上了,现在改的话影响很大,是不是找另外的时间去改?”

  当你收到这个信息的时候,你可能会产生一些问题,比如影响很大是多大,后面找个时间是多长时间?同时你作为消息的接受者,你可能得到的信息只是你的同事发现了一个问题,但是并没有获得事件来龙去脉的详细信息以及具体的处理方案。

  而这样的场景在我们的生活和工作中历历在目,因为没有有效的处理信息以及有效的表达,导致沟通过程中信息的不对称,沟通成本的不断增加。

  由此可见,结构化思维在我们的日常工作和生活沟通上显得尤为重要,复杂问题通过金字塔模式的一层一层剖析,可以非常清晰并且有条理的对外展示你的想法和思维逻辑,从而提高我们处理问题的效率同时又降低了沟通成本。

  三、如何提高结构化思维?

  当我们逐渐揭开结构化思维以及了解它的作用以后,我们会想,结构化思维能够训练和提高嘛?答案当然可以!当然我们需要更进一步分析金字塔模型。如图:

1-3.jpg

  在金字塔结构中,总体上有两个方向的逻辑关系,即纵向逻辑关系和横向逻辑关系。一个好的金字塔结构,需要在纵向关系上满足结论先行、以上统下;在横向关系上,满足归类分组、逻辑递进这四个基本原则。用一句话概括,就是“论证类比”。

  纵向:纵向是层次关系,上一层次思想是对其下一层次思想的概括,下一层次是对上一层次的解释和支持。

  横向:横向是关联关系,每组中的思想必须属于同一逻辑范畴,必须按照逻辑顺序组织。

  在对金字塔结构的进一步梳理后,我们可以将结构化思维能力归结为如下三点:

  归纳信息能力--横向类比能力

  海量信息的收集并不能完全帮助我们分析和解决问题,归纳信息有助于帮助我们的大脑记忆,梳理逻辑和思路。

  下面推荐一个分类法则:

  MECE法则(Mutually Exclusive Collectively Exhaustive),即相互独立、完全穷尽。分解问题时运用MECE原则可保证形成的观点最清晰、最完整,不重不漏。

  其中常用的方法有6种,我们其实在工作中也经常应用:

  1、二分法

  这个分类方式在日常生活中比较常见,其实就是把信息分成A和非A两个部分。比如:

  国内、国外,他人、自己,已婚、未婚,成年人、未成年人,左右,男女,收入和支出,专业和业余等等。

  2、过程法

  也就是按照事情发展的时间、流程、程序,对信息进行逐一的分类。比如:

  在日常生活当中制定的日程表,解决问题的6个步骤,达成目标的3个阶段,其实都属于过程分类。 过程分类法特别适合用于在对项目进展和阶段的汇报上。

  3、要素法

  我们在生活当中也经常会使用到要素法,这种分类方法是用于说明事物的各个方面特征的。比如:

  说优秀员工的7种品质、公司的组织架构图等等,其实都是把一个整体分成不同的构成部分。可以是从上到下,从外到内,从整体到局部。

  4、公式法

  公式法就是可以按照公式设计的要素去分类,只要公式成立,那这样的分类就符合MECE原则。比如:

  价格=单价*数量,按照公示,单价和数量即为要素

  5、矩阵法

  比如我们在安排工作的时候,有一种分类方式,是把你的工作分成以下四种:1)重要紧急,(2)重要不紧急,(3)不重要但紧急,(4)不重要也不紧急。

  然后可以把它们填到4个象限当中去,这4个象限就是2×2矩阵。 这种分类方式就叫做矩阵法。

  6.特定场景的分类法则

  对于大部分情况来说,MECE法则是一个较为通用的分类法则,但在某些场景下我们还有更直接的模型,可以把现有的信息,分类放到一些分类模型当中去。

  针对以上的分类方法我们不一一例举,那我们如何在我们的职场中应用这些分类法则呢?

  举个例子,最近系统不稳定,连续出现了一些比较严重的P1故障,老板让你组织开一个全员大会,提升大家的质量意识。你准备发出一个会议通知:

  为了提升质量意识,召集大家在10月22日下午3点在3号楼205培训室召开全员大会。会议议程是首先复盘一下最近故障出现的原因,然后制定策略防止类似故障再次出现。目标是为了在下半年不再出现P1故障,确保线上系统稳定性。

  然而,这个内容不够清晰,更好的做法是可以使用5W2H模型对内容进行结构化的表达:

  目标:提升全员质量意识,下半年不再出现P1故障。 时间:10月22日下午3点。 地点:3号楼205。 议程:1)故障复盘。2)制定故障防控策略。

  对比两个会议通知,不难发现,特定场景下,5W2H的结构让我们的表达更有条理,更加清晰。

  提炼信息结论的能力----纵向论证能力

  当我们归纳到所有信息,我们如何加强提炼信息结论的能力?这个其实就是展示了金字塔模型中纵向论证到能力。

  在提炼信息结论的能力中,最常用的有两个方法,这两个方法在很多书中都有介绍,下面简单介绍一下这两类方法。

  1.演绎法

  演绎是一种线性的推理方式,最终是为了得出一个由逻辑词“因此”引出的结论。在金字塔结构中,位于演绎论证过程上一层次的思想是对演绎过程的概括,重点是在演绎推理过程的最后一步,即“因此”引出的结论。最经典的是亚里士多德的三段论:

  大前提:所有人都会死。 ?小前提:苏格拉底是人。 ?结论:苏格拉底会死。

  在日常工作中我们也经常会用演绎法去总结结论,比如:

  已知规则:需求频繁变动容易导致bug 具体事件:快上线了,业务方要加需求,加不加 结论:不加

  用演绎法我们需要注意的是:

  ·常常对规则持怀疑态度(规则是变化的,规则不对则结论不成立) 。

  · 需要增加知识量,使其保持“可用状态”(已知规则越多,则越容易得出结论)。

  2.归纳法

  归纳逻辑比演绎逻辑要难,因为归纳需要我们有很好的抽象能力,抽象出新的概念,去统领其下面的子概念。在归纳的时候,大脑去要去发现事物(思想、事件、事实)具有共性、共同点,然后将其归类到同一个组中,并说明其共性。归纳逻辑不是线性的,它需要在已有信息的基础上,提升一个抽象层次,得到新概念。比如:

  苹果和橘子的上一个抽象层次是“水果”,这种抽象层次的提升,可以让“水果”在纵向关系上统领苹果和橘子。“水果”这个新概念的抽象需要我们具备相关的知识背景。

  在了解归纳法的逻辑以后,我们应用的时候需要注意:

  · 摒弃思维定势,认真选取样本(样本是否有代表性,数量是否足够多)

  · 需要增加经验,扩大势力范围,多看,多吸收,增加事实。

  3.表达信息的能力----自上而下

  思考是一个隐形的过程,最终我们要将结论显现出来,这就体现了结构化思维中表达信息的能力。

  我们在日常沟通中经常会出现如下的误区,很多人会在毫无意识的情况下把自己的思考过程直接传递给对方,举个例子:

  在某一次会议中,你跟你的领导反馈说:“我发现最近技术支持那边提出的登陆问题咨询量有点多,我猜测可能是登陆功能出现了问题,然后我让同事排查了一下,发现是xx 迭代,xx误操作导致了接口登陆报错。因为这个问题很影响用户体验,因此需要尽快让xx去解决。"

  咋一看貌似没有问题,把过程中的所有细节都跟你描述清楚了,但是在汇报的过程中看似合理的由依据到结论到输出,使得阐出框架相对比较单薄,重点结论没有突出,信息的接收者不能立马有效的识别你的重要信息。

  假如我们用结构化思维去汇报这件事,会变成:

  1.先提出结论:目前登陆接口有问题,导致线上bug,已经找到原因,需要xx尽快解决 。

  2.再具体阐述:出现问题的原因是xxx,这个问题已经持续xx天,非常影响用户体验,这几天技术支持已经产生好几个类似问题的咨询。 

  3.最后总结:因此一定要快速解决,尽量今天把问题解决。

  相比之下,自上而下,有结构的表达,从结论到依据再强化结论的过程可以让信息的接收者快速获得你想要表达的信息,并使得你的结论更具有说服力。

  那如何训练自上而下的去思考和沟通呢?下面给几个小tips:

  我们可以灵活的运用现有的一些模型框架,比如问题-原因-解决方案/SWTO等等,快速的套框架进行逻辑化思考和沟通。

  可以将自己的表达逻辑可视化,比如一句话的描述等等不断去强化自己的语言和逻辑输出,提高自己的沟通表达能力。

  四、小结

  结构化思维方式不仅会展现你高效的传递信息的能力,更体现了我们在职场中分析和解决问题的能力。

  希望本次的总结分享能够给大家的职场助力,带去一些启发和思考。


作者:自动化测试冰茶    

来源:http://www.51testing.com/html/02/n-7792202.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   今日,百度、字节、商汤、中科院旗下紫东太初、百川智能、智谱华章等 8 家企业 / 机构的大模型产品已经首批通过《生成式人工智能服务管理暂行办法》备案,可正式上线面向公众提供服务。外界注意到,阿里通义千问、360 智脑、科大讯飞星火大模型不在首批获批名单中。  据《科创板板日报》报道,针对大模型应用开放问题,记者今日以投资者身份致电科大讯飞,接电人员表示,科大讯飞已首批顺利完成备案。首批通过备案的企业名单,预计将在 1 周内陆续由各地方相关管理部门通知大家。  而早些时候贝壳财经也报道称,从多位独立信源处获悉,国内将有 11 家大模型陆续通过《生成式人工智能服务管理暂行办法》备案,首批将在 ...
            0 0 786
            分享
          •   1 JMeter日志概览  jmeter日志文件保存在bin目录中,名称为jmeter.log。我们可以在面板中直接察看日志,点击右上角黄色标志物可以打开日志面板,再次点击收起。  另外,JMeter可以很方便地设置日志输出级别:  通过这种方式修改日志级别,只是零时修改,不会改变配置文件中的值。当Jmeter重启后,又会恢复为默认的日志级别。  在Jmeter/bin 路径下打开 log4j2.xml文件,修改日志级别,这里修改该是永久性修改  通过修改Root level 值改变日志级别,该修改是永久性的。对Jmeter 的GUI页面运行脚本和命令模式运行脚本都会生效。  2...
            0 1 1220
            分享
          • 一、背景。最新一年(2019)的软件测试大赛即将拉开帷幕,今天与往年相比,增加了自主可控的分赛项,进一步的丰富了比赛的内容,各项评分依据也更加明确,因此能够根据分数更有针对性的找出自己的代码问题了,从而获得更好地分数,提高脚本编写能力。评测工具完善速度之快,超出个人想象,可以看得出来主办方费心了,预祝软件测试大赛发展的越来越好。自主可控赛项的比赛内容有三部分构成,分别为:功能测试、性能测试、众包测试,其中功能测试的内容就是利用Selenium测试工具对Web应用进行功能测试。之所以称作为自主可控,是因为待测试Web应用是部署在国产的应用服务器上面的,采用的国产CPU、操作系统等,具备完全自主知...
            12 13 3321
            分享
          •       一、简介      Locust是一个易于使用,分布式,用户负载测试工具。它用于负载测试web站点(或其他系统),并计算出一个系统可以处理多少并发用户。在测试期间,一大群虚拟用户访问你的网站。每个测试用户的行为由您定义,集群过程由webUI实时监控。这将帮助您在让真正的用户进入之前进行测试并识别代码中的瓶颈。      Locust完全是基于事件的,因此在一台机器上支持数千个并发用户是可能的。与许多其他基于事件的应用程序不同,它不使用回调。相反它通过gevent使用轻量级协...
            0 0 2229
            分享
          • 为什么需要MockK在MockK之前,已经有一大批测试库可以用于Mocking,其中有名的也有很多,比如Mockito, PowerMock,Jmockit等等,但是他们都有各自的缺陷,这些缺陷也和Kotlin的特性有关。关键字在 Kotlin 里面 when是关键字,Mockito 的when ,必须加上反引号才能使用:`when`(xxxx).thenReturn(xxx)如果看起来不舒服,也可以舍弃 Mockito 改用 mockito-kotlin。在 mockito-kotlin中使用了whenever代替when,也有更简洁的写法,但是归根到底还是在使用Mockito的Api,所以...
            0 0 5055
            分享
      • 51testing软件测试圈微信