阅读 384

浅谈测试生涯如何转型升级


导读:

    所有的测试从业人员都想从业务测试转型成长为测试开发工程师,因为这是一个门槛,一种层级,一个上升自我,提高个人价值的重要驱动力。

    测试开发工程师是一个交又工作的角色。与开发工程师相比,测试开发工程师除了要具备写代码的能力,还需要掌握操作系统、数据库、网络、软件测试等相关领域的知识。与业务测试工程师相比,测试开发工程师拥有编写测试脚本、设计测试框架、搭建测试平台、维护测试环境等技能,但是可能没有业务测试工程师那种专业的业务知识背景。测试开发工作,本质就是为了保证测试能够正确且顺利进行而做的工作。测试开发要服务于业务测试,测试开发不是脱离业务而单独存在的。在软件系统生命周期过程中,业务测试工程师和测试开发工程师是并存的,并不会彼此替代。

那么,你为转型做好准备了吗?


1.2业务测试的挑战

1.2.1测试人员的挑战及新要求

在固定时间内快速迭代,进行高并发任务测试一直都是测试人员和测试团队所面临的挑战。除此之外,他们还要应对不断变化的用户需求,同时整个行业内开发人员和测试人员人数比例不平衡,传统测试之外的任务缺乏明确的方向和职业发展路径等,这些都是测试人员面临的问题。业务的多元化,以及公司战略调整和整个行业的不断发展,要求测试人员具备越来越多的技能,其承担的责任也就越来越大传统测试的角色已经无法满足工作的需要,同时测试人员也希望变得比以往更具技术性。如今的工作也要求测试人员具备比以往更高的执行力,能够提供快速反馈,有时不仅要是测试人员,还需要成为开发人员。

从流程上来看,测试介于产品和开发之间,需要和产品人员沟通,也需要和开发人员沟通,工作的特点也决定了测试人员要面临的挑战。现在大量的公司在招鸭测试工程师时,越来越需要综合性的测试人才,要求应聘人员掌握一定的开发技能,这样其可以更好地理解系统,发现更深层次的缺陷,与开发人员的交流也会更高效,在和产品人员沟通时也能提出更有建设性的意见。将来完全不懂技术或者代码的测试人员可能会被行业淘汰。


应对挑战的唯一方法就是不断适应和进步。测试人员必须了解他们的角色在如何变化,以及如何在不同的环境中为利益相关者提供最好的服务。测试人员需要具备很高的灵活性和适应性,不断学习新的技能和方法,并愿意承担新的角色和活动,这才是测试人员自身必须掌握的核心技能。

结合作者所在团队的实际情况,团队的目标是能够快速反应,支持业务快速迭代,同时要把测试人员从繁重的重复工作中解放出来,为内外“赋能”,提供好的测试平台、好用的测试工具和高效的测试方法等。这就对测试人员提出了一些新的要求。

1.编写代码的能力

具备编写代码的能力能够提高测试效率,独立或者辅助开发人员定位问题,而不是只报告问题。这也有助于测试人员了解编程过程,完善思维方式,提升测试形象。

2.工具思维与工具开发能力

工具思维有助于测试人员敏锐地发现可以节省人力的工作点。具备工具开发能力可以真正从繁重的重复工作中解放自己。

3.持续学习的能力,学会思考

持续学习不仅是一种态度,更是一种能力。持续学习新的技术和新的思想,了解新的动态趋势等,能够帮助测试人员更好地适应变化,在变化中进步。学会思考这个话题很宽泛,包括规避风险、项目推进、问题解决等测试人员需要的很多其他的认知过程。但是,如果测试人员不能持续学习,那么他的思考也会被限制。只有持续学习,不断思考,才能知道在不可知的未来我们能够提供什么,价值该如何体现

4.强大的内心

测试工作是一个不断质疑与被质疑的过程。测试人员每天会面对很多繁重的工作,随时随地都可能被别人挑战,还有可能在工作中遭遇质疑及误解。想要将工作进行下去,强大的内心对于测试人员来说极其重要。

5.测试思维

测试思维决定了测试人员能在测试这条路上走多远。测试的核心技能不是测试理论、也不是测试工具,而是试分析试设计测试架构和试补主:思美去長、び少矩地”一直是作者所在团队提侣的·学会分析任务,分清优先级,具备统一规划能力,能够使工作达到事半功倍的效果。


转型的基础及必要性


转型是为了更好地满足业务需求,更好地保证系统质量,也是为了能够更好地配合公司的战略。每个团队是否转型,以及转型的动机及基础,根据具体情况而不尽相同。作者所在团队主要负责业务的测试,年后新来了一位经验丰富的测试经理,所以同时存在测试开发的岗位,这也是团队转型的一个优势。

相信和作者情况相同的团队数量不少,那么这样的团队想要快速转型需要先搞清楚哪些问题呢?

1.转型的目的

更好地满足业务需求以配合公司的战略,同时考虑到行业的发展趋势,提升团队整体的技术水平,实现团队与个人的共同成长,实现良性循环

2.转型的方向

单元测试是非常重要而且非常有必要实施的。在敏捷开发模型的工作实践中,开发人员承担了单元测试的工作。由于公司战略的调整,UI层的自动化测试不再是团队的重点,因此自动化接口测试配合测试工具开发,是作者所在团队转型的首选方向。完善的接口测试体系能够在很大程度上保证产品的质量,而这部分的投入也快速收到成效,而且测试工具的开发能够将测试人员从大量的手工重复性工作中解放出来,提高效率。

3.转型的基础

团队转型要根据转型的目的以及需要解决的问题,选择转型的方案。大体上可以从转型意愿、转型所需时间、转型规划、转型前后技能、应用等方面选行准备。

(1)转型意愿

团队想要转型成功,除了需要考虑业务需求、行业趋势等外部环境因素外,还要考虑团队成员的转型意愿。团队成员主动转型的意愿是转型成功的关键因素。被迫转型与主动转型的差别在这里就不需要讨论了,取得的转型效果也是不同的。充分发挥团队成员的主观能动性能够让转型快速完成并取得令人惊喜的效果。

(2)转型所需时间

团队转型必须经历一个学习和练习的过程,这个过程需要时间。然而,测试工作的性质决定了其最缺少的恰恰又是时间。那么这部分时间从哪里来?需要团队成员达成共识,避免占用成员的业余时间而使他们产生抵触情绪

(3)转型规划

团队想要转型成功,在转型开始之前,要做好整个转型期间的规划,包括需要学习的技能、学习的进度、练习的时间、掌握程度的考核、备份学习材料和备用方案等转型期间要严格按照规划进行,确保转型有条不紊地进行。

(4)转型前后技能

根据团队转型的目的,要求团队掌握的技能也不尽相同,想要达到的效果也不同团队应根据业务的特点及面临问题的紧迫性来决定需要掌握的技能。转型前需要具备的技能基本大同小异,包括测试的基本知识、业务背景知识、数据库相关操作能力、主流编程语言开发能力(最好与公司开发语言一致)等。

(5)应用

团队转型想要取得好的成效,实战是不得不考虑的问题。如果没有实战应用,那么再多的理论支持也只能是纸上谈兵。在转型过程中,可以尝试将培训的技能应用到实际项目中。如果没有项目,也可人为地创造针对性的实战。只有通过实际应用,才能发现问题和解决问题,让转型真正发挥作用,取得好的效果。

13团队转型的目标及计划

1.3.1转型路上的迷茫

自动化测试是软件测试发展的一个必然结果。随着软件技术的不断发展,测试工具也得到了长足的发展,人们开始利用测试工具来帮助自己做一些重复性工作。软件测试的一个显著特点是重复性。重复会让人产生厌倦的心理,重复也使工作量倍增,因此人们想利用工具来解决重复的问题。

目前,自动化测试在行业中处于被热捧的时期。一方面,很多专业人士对自动化测试大加赞赏:另一方面,在移动互联时代,企业的生存环境发生着深刻的变化,各大互联网公司都在寻求自身发展的道路,公司的转型成了必然趋势。公司要转型,员工势必也要跟随发生变化。至今,作者都不能忘记团队成员第一次听说组件化测试时满脸的新奇。随着一轮又一轮地探讨如何做、怎么做,团队成员才慢慢意识到这将会是一条漫长的路,期间肯定有迷茫和痛苦。然而,更痛苦和严峻的挑战是团队的转型。转型是否可以达到应有的预期呢?

很多团队基本上会不同程度上的面临以下两大问题。

(1)人员水平参差不齐

团队转型不是一个人的转型,通常涉及十几人、二十几人的同步转型。其中每个人的水平参差不齐,学习能力也不尽相同。例如,之前大多数人从事的工作是功能测试,没有开发过自动化工具或者框架,用的自动化工具不多,也没有做过开发。那么,这就要求我们必须双管齐下,线上学习和线下培训同步进行。

(2)做什么及从何处做起Microsoft公司最初也设有只进行手工测试而不编写代码的职位,称为STESoftware Testing Engineer)。而现在所有测试工程师的职位都称为SDET( Software Development Engineer in Test)。从名字可以看出来,后者是需要掌握编程能力的,而掌握编程能力是为了更好地测试。

从STE转到SDET的充分条件是测试人员对软件及需求具有较强的理解能力,同时擅于站在用户的角度去理解需求,以及重视质量使得程序的返工率大大降低而必要条件是达到开发人员所具备的设计能力和编码能力。认清自己的不足,在以下方面不断提高自己的能力。

(1)对程序架构思想的理解:通过参加需求评审、设计评审、代码评审,学习设计方面的知识。

(2)编码能力:通过单元测试、自动化测试、测试工具和测试框架的开发等环节提高自己在编码方面的能力。

走出迷茫,有了奋斗的目标,只要拼命追逐、坚持不懈,终会看到成功的方向。

1.3.2树立目标

我们做任何事情都应该有一个目的。有了目的,就会产生一个对应的目标。然后基于这个目标,进行相关活动的实施,以此来达到目的。类似地,我们在进行自动化实施的时候,首先要明确自动化测试的目标,即实现了自动化测试到底能为我们带来什么好处,以及可以解决什么间题。我们不能为了自动化而自动化,必须在实施自动化测试之前明确自动化测试的目标。

1.提高测试人员的工作成就感和幸福感,减少手工测试中重复性的工作

目前。在大部分中小企业中,手工测试在日常测试工作占据的比例很大。测试人员必须跟随开发团队不断地进行选代式开发和测试。一个功能模块可能在整个测试周期中重复测试超过10次。

如何改变这个现状呢?进行自动化测试肯定是一个很好的选择。相应脚本写好以后,可以不断地重复运行。测试人员只需要单击某个按钮就可以开始测试工作了,然后看一下测试结果。就完成了以往手工测试需要花费很长时间才能完成的工作。此时,测试工作的成就感和幸福感油然而生,测试人员也会有意愿去主动地推进自动化测试在不同项目中的深入实施

2.提高测试用例的执行效率,实现快速的自动化回归测试,快速地给予开发团队质量反馈

使用手工方式来执行测试用例,执行速度必然是很慢的。人是一种生物,而不是机器,工作时间长了必然会觉得劳累,测试执行的速度自然就慢了下来。在测试用例非常多的情况下,测试一遍通所有测试用例的时间成本就会相当高。

如果使用自动化测试取代手工测试,那么测试用例的执行者就变成了机器。机器可以全天候不停地执行,可以不知疲倦、快速地完成测试脚本指派给它的测试任务。此种方式势必可以大大提高测试执行的效率,缩短测试用例的执行时间,提高测试执行的准确性。

目前,敏捷开发模式在各类软件企业中开始普及和应用。敏捷开发对被开发产品的质量反馈有着很高的要求,需要每周甚至每天开发出一个 Build版本,并且部署在测试环境上,同时希望测试人员能够给予快速的质量反馈。目前,只有通过自动化测试的方式,才能真正实现对于大型敏捷开发项目的质量反馈需求。缺少自动化测试的敏捷开发项目会大大增加项目失败的风险

为了验证是否达到了此目的,可以和以前手工测试的执行时间进行对比,看看是否明显缩短了测试用例的执行时间,询问开发人员项目的质量反馈速度能否为快速发布产品带来很大帮助。

3.减少测试人员的数量,提高开发和测试的比例,节省企业的人力成本在大部分IT企业的运营成本中,5006~706的成本是人工成本,如何更好地控制人工成本,对企业的发展有着重要意义。使用自动化测试方式,势必会减少手工测试的工作量,从而达到减少测试人员的目的,进而降低企业的人工成本,提高企业的盈利能力

4.在线产品的运行状态监控

在完成产品开发和测试工作后,产品会发布到生产环境中,正式为用户提供服务。但是,在生产环境的运营过程中,产品总是会由于各类原因产生这样或者那样的问题或故障。如何快速发现这样的问题呢?有人说:“出了问题一定会有用户给客服打电话,这样我们就可以发现生产环境中的问题了。”采用这样的处理方式,势必会降低用户对产品的满意度。另外,如果没有热心的用户进行反馈,那么生产环境中的问题被发现的时间会大大推迟。因此,仅仅依靠客户反馈的方式是不可取的。

为了保证快速、及时地发现生产环境中的问题,可以编写自动化测试脚本,以测试产品的主要功能逻辑。定时运行测试脚本,以检查产品系统是否依旧可以正常工作。如果运行测试脚本后没有发现任何问题,则休眠等待一段时间后再运行测试脚本,以检测产品系统的运行状态。如果测试脚本发现了产品系统的运行问题,在重试几次之后确认产品系统的问题依旧存在,则测试脚本会自动给系统运维的值班人员发出报警邮件和短信。相关人员收到报警信息后可以人工处理系统出现的运行故障,这样就达到了实时监控产品系统的目的,以便在第一时间发现和处

理系统的故障

5.插入大量测试数据

在系统级别的测试过程中,经常要插入大量的测试数据来验证系统的处理能力。例如,测试人员想要插入100个订单,并且每个订单都要有业务要求,使用手工的方式来插入这些数据势必会花费很长的时间和很多的精力。然而,如果我们有“

6.常见的错误目标:使用自动化测试完全替代手工测试

有人认为,转型后就是自动化测试了,不用手工测试了。对于任何项目,首选自动化测试,这是不可取的。在做出如何对待自动化测试的决定之前,首先要对自动化测试有一个清断的认识。自动化测试是对手工测试的一种补充。很多数据的正确性、界面美观程度和业务逻辑的满足程度等都离不开测试人员的人工判断。而仅仅依赖手工测试会让测试过于低效,尤其是回归测试的重复工作量会对测试人员造成巨大的压力。因此,人工测试与自动化测试都不可或缺,关键是在合适的地方使用合适的测试手段。


(未完待续)


关注下面的标签,发现更多相似文章
评论