什么是测试思维 – 测试工程师的核心技能

测试工程师的入门门槛不高,但升级到高级资深是有一定难度的。那如何从初级测试工程师进阶到高级,初级和高级的差异在哪里呢?今天我们来谈一谈测试工程师的核心技能,掌握了你就离高级不远啦!

一. 什么是测试思维?

茹炳晟在《测试工程师 全栈技术进阶与实现》里有提到,传统测试工程师的核心竞争力包括7项:

1. 测试策略设计能力
2. 测试用例设计能力
3. 快速学习能力
4. 探索性测试思维
5. 缺陷分析能力
6. 自动化测试技术
7. 良好的沟通能力

这7项核心技能中,测试策略设计一般由专项责任人或者团队的leader来制定;对于一线的测试工程师(Test Engineer,TE),更多的关注在于如何保证所做项目的质量。所以这里我谈的核心技能是:测试用例设计能力

大家都深有体会,一个产品从需求评审到发布上线,最烦心的不是发布前各种的问题,而是上线后才暴露的各种各样的线上bug。那么,作为专业保证产品质量的测试同学,如何最大程度地避免系统上线后的问题?——很明显,测试用例的设计是关键。

好的用例设计离不开好的用例设计思维,即我们说的测试思维。我们常听说用户思维、产品思维,什么是测试思维?

先回答什么是思维:通俗来说,思维是人思考问题的方式。面对同一个事物,不同的人的理解和感受是不同的。我们常说“一千个人有一千个哈姆雷特”,就是这个意思。那什么是测试思维?简单粗暴:作为一名测试工程师,你如何看待被测对象,通过怎样的思考方式来保证被测对象的质量,这个过程体现的就是测试思维。

看例子:如何测试微信支付功能(这里只关注功能,性能、安全、兼容性等先不考虑)

初级TE可能会有以下视角及测试点:

 

而专业的TE的视角及测试点可能包含以下方面:

 

 

可能大家会认为专业的TE是更熟悉业务。请停下来想一想,作为测试工程师的你(默认其他用户不会详细看到这里,哈哈),对微信支付的流程并不陌生,你也想到了全部这些测试点吗?

其实这里面是有方法论的。也就是说,专业的TE会先从整体的业务流程上来考虑。即微信支付的过程如下:

 

这样一来就清晰多了。完成这几个步骤就完成了整个的支付,因此根据这几个步骤进行测试,就不会有遗漏。

这里体现的首先是全局思维。其定义是,考虑问题时由点及线,由线及面地放大格局去思考。这是一种从微观拉伸到宏观,再从宏观聚焦到微观的思维过程。通俗来说,从整体和全过程的角度,站在一个相对的高度去“俯视”问题,看到问题的全貌,而不是“一叶障目,不见泰山”。应用在测试工作上,即首先知道这个业务的流程,从入口到结束,有哪些环节,首先从宏观上了解测试的范围。全局思维有助于我们迅速抓住问题的全貌,通过分解全流程的各个环节,寻找不同视角的测试点。

《结构思考力》关于全局思维有如下注解(P10):

运用结构思考力,……强调的是“先总后分”,从而把握事物的关键本质和问题的关键,就如同古诗中提到的“不识庐山真面目,只缘身在此山中”,想要全面清晰审视事务和问题,需要从总体到局部的鸟瞰,而不是拘泥于细节。

业务流程走通了,接下来再针对这些环节进行逐一拆解。以零钱支付金额为例,一般的TE可能验证最大值、最小值就OK了,其实出于健壮性考虑,这里还需要考虑以下场景:

 

聪明的你一定看出来了,这是用等价类结合边界值法设计出来的测试点(参考 软件测试入门必学--如何设计测试用例(附常见面试题))。无效类,可能有几种情况:1)无法输入,例如支付金额会唤起数字键盘,除了正常小数点,其他字符无法输入;负数无法输入;小数点最多可输入2位;2)可以输入但无法点击确认,例如输入付款金额0;3)可以正常点击确认,但支付失败,例如超过最大值。具体是哪种情况,要结合用户体验和产品需求来最终确定。

单单从用户界面上操作,这里的负数、非全数字,都是无法输入的,看起来是无需设计的。但是从接口的角度看,这些值都可以作为输入参数(接口测试我们以后再讲,这里只是先说明需要考虑这些点)。

这里体现的是正向思维逆向思维。其中正向思维是指人们在思考问题时,顺着某种“常见”“共识”去思考,或者是顺着客观事物本身所具有的某种顺序去思考。它是比较容易考虑到的,因为符合常规的思维。例如0、正数、小数的中间值及边界值等。

逆向思维是对司空见惯的似乎已成定论的事物或观点反过来思考的一种思维方式。例如非全数字、负数等。

总之:正向思维保证系统正常情况下的运行,逆向思维保证系统的健壮。

各个环节的细节都考虑之后,我们已经完成了主流程和细节的功能点的验证,但仅仅这些是不够的,因为用户的使用是千差万别,甚至都想象不到的,而测试工程师的重要职责之一就是,保证正常场景有正常的结果,异常场景有预期的报错,而不是出现未知错误甚至整个程序崩溃。所以要求测试工程师还要有发散思维,即进行探索性测试。

所谓发散思维,百科上定义如下:发散思维(Divergent Thinking),又称辐射思维、放射思维、扩散思维或求异思维,是指大脑在思维时呈现的一种扩散状态的思维模式。它表现为思维视野广阔,思维呈现出多维发散状,如“一题多解”、“一事多写”、“一物多用”等方式。

这里针对微信支付功能的发散测试(注意这里暂时只考虑功能,不考虑兼容性、性能、安全等),要思考微信支付还有哪些应用场景。对,还有第三方支付。譬如在美团上买东西,可以选择微信支付,如有必要,各大电商平台都要测试一下第三方微信支付是否正常。

除此之外,各个环节还需要发散一些异常的场景,例如:

当然还有其他的思维,例如组合思维,一般用于参数联动的场景。例如个人收款码只不支持信用卡付款,这种我们在设计测试用例时也需要体现出来。

二. 如何培养测试思维

本文以微信支付功能为例,给出了测试工程师必须要掌握的4种思维方式:全局思维、正向思维、逆向思维、发散思维。可以说,充分利用这几种思维方式就可以保证测试用例的覆盖度。
那如何培养测试思维呢?答案是:平时多读书多积累多思考多总结——这是句正确的废话。说句简单粗暴有用的——建议运用结构思考力,从MECE分析法入手
关于结构思考力,参考助你清晰思考、有力表达的万金油——《结构思考力》读书笔记看详细。
MECE(Mutually Exclusive Collectively Exhaustive),中文意思是“完全穷尽,相互独立”,好拗口,简单来说就是“不重复,不遗漏”。它告诉我们,在进行等价类划分时,一定要考虑全面,保证不重复不遗漏。例如,支付金额只支持数字,如果输入非数字例如字母a,会怎样?还是以余额支付金额的功能点为例,缺乏MECE思想的设计是普通的罗列:

这里列得也不少,但问你是否考虑了所有情况,似乎不敢确定。
符合MECE思想的设计如下:

 

可以看出,每一个层级,都是从一个唯一的维度来划分的等价类,这些等价类覆盖了所有的情况(不遗漏),且彼此不包含(不重复)。

三. 思考和总结

本文以微信支付功能为例,给出了测试工程师必须要掌握的4种思维方式:全局思维、正向思维、逆向思维、发散思维,并简单介绍了思维培养的入门方法。

事实上,MECE是麦肯锡提出的分析法(其出处是《金字塔原理》,参考人人都需要学习的《金字塔原理》),它不仅仅体现在测试中,还可以体现在其他的问题分析中。好好修炼吧,相信用心的你一定可以使问题分析得很“MECE”!

学习安排上

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。【保证100%免费】

视频文档获取方式:

这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

 

 

 

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码小怡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值