Python测试人员的核心竞争力是什么

优秀的测试工程师需要具备提前预判、识别盲点的能力,以及项目实战经验、善用技术保障质量、扎实的测试基础与多维度测试思维、领域深耕知识、综合手段提升质量、持续学习能力和解决复杂问题的能力。测试人员不仅要有扎实的自动化测试和用例设计能力,还需理解产品、架构,具备用户和架构思维,以及多维度测试视角。同时,要在特定领域有深入理解和实践经验,不断学习新技术,以提升软件质量和效率。
摘要由CSDN通过智能技术生成

通过测试行业现状分析可以知道,企业招人与测试求职者供求难以匹配,而造成不匹配的原因归根到底还是能力要求不匹配。那么,测试人员的核心技能或者说测试人员的核心竞争力到底有哪些?测试人员应该思考这个问题,企业用人单位也应该思考需要什么样的测试人员。企业在招聘时,要求应聘者会使用各种框架、各种编程语言、各种工具。那在学会了测试技术、测试工具的使用之后,我们最后的核心竞争力到底聚焦在哪些方面呢?

在早期的软件行业中,存在一个普遍的现象,有些大学的本科生或者研究生去面试的时候会发现,面试的结果是他们的代码能力可能不太好,在这种情况下公司会问他们愿不愿意去做测试。但随着时代的变革,现在的软件测试工程师的知识面,以及需要掌握的内容已经远远超过了之前,甚至可以说测试工程师的知识面是远远超过开发工程师的,比如在一些技术的层面上,以及对产品的理解上。

在这种情况下,再提一个优秀的软件测试工程师的核心价值,我们可以很自信地说,测试工程师是不可替代的,并且属于一个专业细分的领域。前些年,我们谈到测试,就是软件测试,没有细分市场,但现在谈测试,领域就太多了,除了传统意义上的基于业务领域的测试,还有最近几年比较热门的测试开发。

关于测试工程师的核心竞争力是什么,行业领军代表人物茹炳晟曾在极客时间平台的《软件测试52 讲》专栏中有过详细的分享,他在专栏中将测试工程师按测试开发工程师、业务的功能测试工程师及性能测试工程师三种细分类别来阐述各自的核心关键能力。这里从整体出发,不细分测试岗位或领域,分享一下成为一名优秀的测试工程师应该具备的核心竞争力有哪些。

一名优秀的测试工程师具备的核心关键能力总的来讲概括为:

三项基本功+七大关键能力

 其中三项基本功用一句话概括是:优秀的测试人员需要具备提前发现研发过程中其他人员所无法或很难发现的问题且能准确识别出研发质量盲点的能力。

三项基本功

1) 提前预判

因为在研发过程中问题发现得越早,解决的成本就越低。如果在需求还未开发实现的时候就能提前发现需求的漏洞,那么显然这种发现的价值是最高的。

2) 别人无法或很难发现

所有人都能发现的问题,你发现了,那只能证明你是可以被替代的。别人发现不了,而你可以发现,那么你就形成了无法被替代的优势。

3) 识别盲点

测试人员在整个研发质量活动中,价值的最大化不在于用例的执行,而是能识别出系统或产品的质量盲点,让合适的人去进行合适的测试活动。比如告诉开发人员在做单元测试的时候要注意哪些点,让测试开发人员在做接口级的自动化测试的时候要注意哪些异常的接口行为等。

七大关键能力

1) 项目实战经验

为什么把项目实战经验放在首位,因为任何公司都希望招进来的人是可以直接为公司产生价值的,而对于求职者来讲,为新公司产生价值的多少,在很大程度上取决于过往的项目工作经验积累。能够讲清楚一件特别拿得出手的工作或者一个能证明你能力的案例是面试的时候最有用的投名状,特别是比较复杂系统的测试实战经验。

但是,如果你只是接触了一个简单的模块,甚至只是测试一个稳定模块的维护性开发,而不是通盘理解,就不能说测试过复杂系统。有从头到尾接触一个完整项目的经历很宝贵,所以当你遇到或者正在经历时,请珍惜并要懂得学会积累能复用的经验。

2) 善用技术来保障质量的能力

很多业务测试工程师认为,利用技术来保障质量,岂不是要具备开发能力了?而掌握开发技术不是那些测试开发工程师或者开发工程师才需要的吗?如果你持有这种观点,我劝你从这一刻起,消除这个观点,为什么?因为在这个时代,一个工程师,一个软件方面的工程师,一个工程技术人员,如果没有掌握开发技术,没有编码的技能,是不能被称为一个优秀的工程师的。

利用技术保障质量的能力中最常见的是自动化测试能力,自动化测试工具是提高测试效率的利器,将一些重复性的工作进行自动化处理,能够避免被繁杂的手工测试所拖累,从而专注于更有价值的测试工作。做好自动化测试,不仅仅要会使用工具、框架,更要对被测物特性、软件生命周期有很深的理解,并且要有很强的开发知识才行。

在实际中,很多人误认为用技术来保障质量,就一定要开发出高大上的自动化框架、测试平台之类的,其实研发过程中可改进的效率点无处不在,如测试环境、CI、数据构造、测试用例生成、数据比对等都是可以提升的效率点,经过适合的方法改进后都能有不错的提效产出。

3) 扎实的测试基础与多维度测试思维

首先,扎实的测试基础是优秀测试工程师的基本功,要能理解产品流程相关的东西,如需求分析、测试计划、缺陷跟踪等。其次,要有扎实的用例设计能力,能灵活运用“等价类划分”“边界值分析法”“流程分析法”等常见用例设计方法。另外,要具备很强的测试执行能力,移动端、Web 端、服务端的测试执行各有特点。测试本身是一个实践性很强的工作,扎实的基本功是不可或缺的。

除了要具备扎实的测试基础,还需要具备多维度测试思维。做好产品质量保障,需要从需求、用户、研发等多方角度考虑,要想为产品贡献最大力量,就不能只专注于做好测试保证质量这一方面,而应该从多个角度全面思考。

①培养用户思维

在工作中,一部分测试同行特别是初入行者在对待需求时都过于被动,不太会把产品各个模块的业务串联起来,最后成了因为需求来了所以做需求、纯粹看着需求文档就开始做测试用例,并没有想着先把需求理顺了、想明白了再开始着手。

其实这个阶段也是非常重要的需求分析及功能点拆解阶段,虽然这主要是产品经理的工作,但是他们也并非圣贤,对产品设计的细节考虑可能并不周全,甚至有时会出现较大的需求漏洞,产生较严重的影响。测试人员也应该具备该项能力,即使不能站在公司战略层面考虑该需求能给业务带来哪些促进,至少要站在用户的角度考虑该需求能给用户带来什么价值,能满足用户哪方面的需要,同时要能及时发现用户操作过程中的体验问题。

②提高架构思维

要想设计一份有效的测试用例,就必须要对软件开发设计思路有深入的了解,我们也经常遇到类似的事情,业务需求未做任何改变,而架构做了优化,这时单纯地拿着一份根据业务整理出的用例是无法准确而有效地测试的。架构的调整包括底层数据结构的调整(如分库分表)、服务化(SOA)、日志的收集处理及容灾处理等。

另外,为了能有助于测试的开展,我们同样需要了解开发技术,毕竟在测试环境的搭建、维护及测试过程中,各种场景的模拟,特别是异常情况及自动化测试,如果不借助于开发技术,自动化工作是很难开展的。比如被测系统依赖其他系统发的一条 MQ 消息而做相应的处理,那么在自动化测试代码中为了验证该逻辑,就需要 Mock 这条消息并且将其发送到某个管道中,让被测应用接收并处理它,如果连MQ 是什么都不知道,也不知道如何在代码中发送消息,那么这个部分的自动化测试就没法开展下去了。

③丰富测试思维

逆向思维

测试工程师在工作中需要具备逆向思维,比如我们需要对接口做测试,通过输入验证输出,如果我们使用各种输入都无法得到接口设计中的某一种输出,就需要从输出来逆向推导输入。再比如验证一些异常情况,接口需要返回一些 Error Code,使用正常手段是肯定得不到的,为了出现该 Error Code 就需要借助环境及工具来模拟。另外,我们在分析很多问题时,也离不开逆向思维。

组合思维

测试工程师在工作中需要善用组合思维,比如软件在多用户、多进程、多次执行等情况下,都可能出现意想不到的缺陷,甚至对于复杂的业务场景,在对同一份数据进行操作时,不同子业务并行执行的情况下,都有可能造成数据上的错误,特别是对于与核心数据有关的业务,是否添加行级锁。不同业务不同的操作顺序和组合方式,以及不同的维度等都有可能出现 Bug。

全局思维

凡是涉及跨团队开展的工作,就需要更多的沟通协调,以避免出现对业务理解不正确、接口定义有误等问题。要把握整个项目的多个方面、多个团队的任务及分工、整体的数据流及业务流,从全局思考业务需求,更多地关注上下游相关联的系统或接口等。具有全局思维的人才能在大型项目中游刃有余。

两极思维

学会适当地站在事情的两个极端来考虑,比如数据上的无穷大与无穷小,在数据存储上,数据库层面字段设置为 int 与 bigint 所支持的数量级是不一样的,基于业务数据,如果存在超过 int 的长度的数据,那么在存储上及代码中,都需要做相应支持,否则就只能显示到该类型的最大值。而且在业务层面也经常有两个极端的情况,比如商家入驻开店,很多时候都只是考虑开店该怎么做,却忽略关店的情况。在边界值用例设计方法中也用到了两极思维模式。

简单思维

简单思维表现在很多方面,比如,引起非常严重的 Bug 的原因可能只是犯了一个很简单的错误。在处理测试环境时经常出现无法正常访问的问题,也许可能只是因为磁盘空间满了或者一个简单的配置不正确。在日常工作中这样的例子非常多,我们也要善于一层一层剥开问题的现象,找到其本质,就好比剥洋葱一样,不要一开始就把问题想得过于复杂,其实事情往往并没有那么复杂。

比较思维

比较思维其实贯穿在整个测试生涯中,测试本来也就是一种验证,将实际结果跟预期结果进行对比。而且我们在平时工作中排查问题时,也有非常多的内容需要对比,比如配置文件的差异、环境的差异引起的不正常结果。此外,我们也通过 SVN 中代码 Diff 的差异来明确改动的范围、制定回归策略。在做一些前后两个版本数据差异分析时,都可以使用 Diff 的思想来开展,可以大大提高效率。

4)  在一个领域有深耕知识

人不可能什么都懂,但工作几年之后,在工作的领域中一定要有积累才行。

例如,你测试一个电商系统的交易模块三年了,你一定要熟练地讲出商品列表、购物车、下单、退单、废单、支付、发货、库存、退款、优惠使用等一系列业务流程,以及电商系统交易模块可能出现的坑(各类问题产生的资损、各类问题产生的服务不可用),不然根本无法体现你的经验沉淀和深入思考;你要能够画出系统的交互图,熟悉最核心的接口和最核心的参数,能够读懂开发的代码,熟练使用监控工具诊断定位线上问题。

当你做了四五年移动端测试后,在 Android 和 iOS 平台上都要具备一定的开发能力,能读懂开发人员的业务代码是最基础的,能够代替开发人员实现部分业务功能,完成部分组件开发是一个非常好的自检点。能够对移动端自动化工具、监控工具、内存泄漏检测、卡顿检测、耗电量、弱网、流量、埋点、灰度、版本控制、兼容性、用户体验、安全等的质量保障方案有通盘处理能力。

5) 学会使用综合手段来保障软件质量提升效能的能力

什么叫综合手段?比如,使用多种手段把崩溃率降低到千分之一以下,对于一个小团队来说,这是很不容易实现的。要做到这点,你需要了解如何收集崩溃率,如何使用一系列工具来定位核心问题,如何推动开发改动,并且要学会预防崩溃。

通过一系列的手段来推进,如静态代码扫描工具引入、阻止乱用不成熟的第三方插件、代码 Review 防止常见空指针引发的崩溃,以及推动开发养成良好的 Log 习惯,推动移动端防御性编程开发习惯,推动后端开发按照规范设计接口,帮助开发引入内存泄漏和卡顿分析工具、趋势报表、异常告警、各种灰度方式设置、线上监控等。可以发现一个数据的改进,背后需要有大量的质量相关工作。

这里提到的综合手段有别于专项测试能力,专项测试强调的是某一细分领域特长,凸显的是具体点的分析和定位问题的能力。而学会使用综合手段来提升质量更强调站在全局的角度,是以产品业务指标为导向的,综合各方面多因素共同提升。

6) 持续学习能力和复杂问题解决能力

做一个不被时代淘汰的优秀工程师,就需要学会与时俱进,时刻保持学习的状态。而学习的最佳方法是带着具体工作中的问题来持续学习。例如你近期的工作是帮助团队提升后台服务稳定性,你看到了Netflix 内部使用一个叫作 Chaos Monkey 的开源项目来随机对生产服务期进行攻击,逼迫工程师提高稳定性,所以你也实现了类似(更温和)的内部机制,推动团队稳定性的提高。

你怎么会知道这个叫作 Chaos Monkey 的东西呢?因为你会习惯性地浏览一线厂商的技术博客,参与行业大会,关注各类新技术。

7) 个人综合特质

在测试工作中越高阶的职位需要解决的问题越综合,需要打交道的人种类越多。除了要有较强的实战技能,对个人的综合能力要求也非常高,比如需要有很好的项目管理能力、软件架构能力、对产品的敏锐度、积极良好的沟通能力、团队合作能力、目标管理能力、快速学习能力、风险把控能力、质量管理能力,以及具备“成本、效率、质量”的综合能力等。

### 回答1: 作为一名工程师,想要构建一个强大的竞争力,需要不断地提升自己的技能和能力,不断地学习和实践,同时也需要具备较强的竞争力。以下是我认为可以提高工程师竞争力的一些方法: 1. 不断学习:作为工程师,需要不断地学习新的技能和知识,以跟上行业的发展和变化。可以通过参加培训、课程、会议等方式来学习新的技能和知识。 2. 实践经验:在学习的同时,需要不断地实践,积累实践经验。通过实践可以发现和解决问题,提升自己的技能和能力。 3. 团队合作:在工程师的工作中,团队合作非常重要。需要和团队成员密切合作,协作完成任务,提高团队的整体竞争力。 4. 沟通能力:工程师需要和不同的人进行沟通,如同事、客户等。需要具备良好的沟通能力,以便更好地理解和解决问题。 5. 解决问题的能力:工程师需要具备快速解决问题的能力,这也是提高竞争力的重要一环。 6. 热情和专注:工程师需要热爱自己的工作,保持专注,才能做好自己的工作。 总之,要成为一名出色的工程师,需要不断地学习和实践,提高自己的技能和能力,同时具备团队合作、沟通能力、问题解决能力等多种能力。 ### 回答2: 嵌入式工程师构建核心竞争力是基于扎实的技术能力和持续的学习成长。 首先,嵌入式工程师需要具备深厚的专业知识和技能。他们熟悉嵌入式系统的设计原理和开发流程,对微处理器、嵌入式操作系统和通信协议等有深入的了解。同时,他们需要掌握多种编程语言开发工具,如C/C++、Python、ARM、RTOS等,以满足不同项目的需求。 其次,嵌入式工程师需要具备解决问题和创新的能力。嵌入式系统往往面临复杂的技术挑战和实践问题,而嵌入式工程师需要能够从理论到实践,从硬件到软件,全方位地解决问题。他们需要具备良好的逻辑思维和分析能力,能够灵活运用技术知识解决各种实际问题,并提出创新的解决方案。 此外,持续的学习能力也是嵌入式工程师构建核心竞争力的重要因素。嵌入式技术发展迅速,各种新技术和方向层出不穷。作为嵌入式工程师,只有不断学习新知识、关注行业动态,才能够跟上技术的脚步,不被淘汰。他们可以通过参加培训课程、阅读专业书籍、参与技术交流和项目经验积累等方式不断提升自身能力,保持竞争力。 综上所述,嵌入式工程师构建核心竞争力包括扎实的专业知识和技能、解决问题和创新的能力以及持续的学习成长。只有不断追求进步和提升,嵌入式工程师才能在激烈的竞争中脱颖而出,为企业带来更大的价值。 ### 回答3: 嵌入式工程师是指专门从事嵌入式系统设计与开发的工程技术人员,他们通过将硬件与软件相结合,将计算机系统嵌入到其他设备中,以满足特定的功能和性能需求。 嵌入式工程师构建核心竞争力的关键在于以下几个方面: 首先,嵌入式工程师需要具备扎实的硬件和软件知识。他们需要熟悉各类处理器、微控制器、存储器、IO接口等硬件组件的原理和特性,同时还需要精通C、C++、汇编等编程语言,掌握嵌入式系统的开发工具和平台,以便高效地进行系统设计、调试和优化。 其次,嵌入式工程师需要深入了解所需应用领域的需求和技术趋势。他们要通过深入研究用户需求和市场趋势,紧跟技术的发展方向,了解潜在的机会和挑战,从而能够针对特定的行业或产品领域开发出具有竞争力的解决方案。 另外,嵌入式工程师需要具备良好的问题解决能力和团队协作能力。在嵌入式系统设计和开发过程中,可能会遇到各种技术上的难题和挑战,需要工程师能够快速准确地解决问题。同时,在团队协作中,嵌入式工程师需要与硬件工程师、软件工程师、测试工程师等进行密切合作,协同完成项目。 最后,嵌入式工程师还需要保持学习的态度和持续的自我提升。由于技术的不断更新换代,嵌入式工程师需要及时了解新的技术和方法,不断学习和积累经验,才能保持自己的竞争力,更好地应对市场的需求。 总之,嵌入式工程师构建核心竞争力需要全面的技术知识、了解应用需求、问题解决能力、团队协作能力和持续学习的态度,只有具备这些能力,才能在激烈的市场竞争中脱颖而出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值