软件测试工程师如何避免中年危机?【乐搏TestPRO】

近几年,网上对于“中年危机”的话题,不绝于耳,比如:

2017年,IT 界最严重的裁员事件,华为、微软、Oracle、IBM,到思科、HPE,再到雅虎,裁员潮不绝于耳

2018年,IT界规模最大的裁员事件:4.4万老员工一夜被裁 

2019年,各个大厂愈演愈烈的裁员风

测试工程师作为互联网兴起的岗位,也幸免不了,随着年龄越大,如果自身技能还停留在功能测试没有任何突破的话,前景甚是堪忧。

一、什么样的员工容易被裁

毋庸置疑,互联网行业可以说是技术更新迭代较快速的行业,随着技术的革新,自身的知识体系和结构也要跟上时代潮流,才能占据市场核心竞争力,不仅有好的发展前景和“钱”景,还能避免被市场淘汰的风险。下面来说说什么样的员工有被裁的风险:

1.  知识技能过于单薄,不能胜任企业的多样化需要
2.  工作内容单一且没有技术含量
3.  工作内容还算有技术含量,拿着较高的薪资,但还未到能完全被取代的地步。但是很多企业为了开源节流,宁愿招个年轻点的,培养个几个月来取代高薪人员。

二、如何避免中年危机

1.  思进取,多学习有价值的前沿技能知识
2.  多方位发展个人技能,以胜任及符合市场的大多数需求
3.  培养管理能力,向管理层发展,测试岗积累了一定的项目经验和技能后,向管理层发展是一件很容易的事。

三、软件测试当下市场趋势

我们先来看看从主流招聘平台截几个图给你看看软件测试岗的薪资体系(一线城市),毋庸置疑,软件测试岗在薪资体系越来越接近开发工程师了。

但相应地,对测试人员的技能要求要随之提高不少,如下:

那么软件测试的发展趋势又是什么样的呢?

1. 自动化技术应用越来越普遍

软件测试很大程度上是一种重复工作,这种重复性体现在同样一个功能点或是业务流程的测试需要借助于不同类型的数据驱动而执行很多遍。同时,由于某一个功能模块的修改有可能影响到其它模块,因此需要对可能影响的模块进行再测试(回归测试)。回归测试可以执行以前用过的测试用例。而自动化测试工具可以实现手工无法实现的工作,如性能的负载、压力测试,弥补了人工测试不足。目前常见的测试技术的应用体现为功能测试工具和性能测试工具。

2. 测试技术不断细分

纵观测试技术在国内的发展,可以看到,软件测试技术正在经历不断细分的过程,这种现象符合事物的发展规律,因为人们对事物的认识总是由浅入深,有最初粗浅的认识到越来越系统化。以下是几种主要的测试技术介绍:

Web应用软件测试:BS架构大行其道,催生了人们对Web应用软件测试的研究,随着Web应用的不断发展,同样衍生出一些新的研究方向,如云计算测试、针对SASS应用的测试等。

手机软件测试:手机在市场应用特别普及,使用范畴广,手机软件的类型也越来越丰富,但由于手机软件的特殊性,如使用一些专门的操作系统,加上手机内存及CPU相对小等特点,手机测试有其特殊的技术方法。

嵌入式软件测试:随着信息技术和工业领域不断融合,嵌入式系统的应用越来越广泛,可以预言,嵌入式软件将有更为广阔的发展空间。对于嵌入式软件的测试也将有着很大的市场需求。由于嵌入式软件自身的特点,如实时性(Real-timing)、内存不丰富、IO通道少、开发工具昂贵、与硬件紧密相关、CPU种类繁多等,嵌入式软件的开发和测试也就与一般商用软件的开发和测试策略有了很大不同,可以说嵌入式软件是最难测试的一种软件。

安全性测试:随着计算机网络迅速发展和软件广泛应用,软件的安全性已经成为备受关注的一个方面。安全测试贯穿整个软件生命周期,同时给软件测试人员带来了更多的机遇和挑战。

可靠性测试:软件可靠性是指"在规定时间内,规定条件下,软件不引起系统失效的能力,其概率度量称为软件可靠度"。软件可靠性是为了保证和验证软件的可靠性要求而对软件进行的测试

3.云技术、容器化和开源工具使测试成本下降

测试环境准备在过去是一个比较麻烦且昂贵的事情,很多条件没有条件准备多个测试环境,导致测试只能怪呢在有限环境中进行,从而可能遗漏一些非常重要的缺陷,测试的成本和代价很高。随着云技术的发展,多个测试环境不再需要大量昂贵硬件设备来支持,加上以Docker为典范的容器技术生态系统的成长与成熟,创建和复制测试环境变得更加简单,成本也大大降低。

云测试平台:云测试平台如雨后春笋般涌现,以下是几种常见的:

Sauce  Labs(http://saucelabs.com):提供自动化功能测试的运测试服务器公司,他的一个吸引人的地方就是写一个测试可以测试N个平台的M个浏览器的Z个版本。支持Web和App应用的Bug的持续集成,测试范围涵盖超过800种浏览器、操作系统和设备组合。

Xamarin Test Cloud

TestDroid:帮助开发者从事手机应用测试的云端服务

Google Cloud Test:谷歌为构建和测试提供了云平台

AWS Device Farm:应用程序测试服务,可以让你立即在很多设备上测试Android、iOS和web应用程序并与之交互

贯众云测试:中国移动旗下的运测试服务平台,目前超过60款市面主流终端,支持Android和iOS系统,提供兼容、功能、性能、稳定性测试及网络场景测试服务(2G、3G、4G)。缺点是终端数量少,优点是功能较为全面,且基本功能都是免费。

TestBird:最初从手游测试起步,在手游圈积累了较高的知名度,目前逐渐向APP测试领域进军。目前加入只能硬件测试领域。也开发出了云手机平台,提供3500部真机,支持Android和iOS,帮助开发者和测试者实现远程调试,自助功能测试和自动化回归测试。

腾讯优测:腾讯旗下的运测试服务平台,拥有超过1000款测试终端,机型熟练庞大,但仅支持Android,不支持iOS,提供兼容性测试服务,不提供功能、性能、稳定性测试服务。

Testin:国内较早涉足运测试领域的公司之一,Testin在云端部署了300多款、1000多部测试终端,种类和数量较全面,支持Android和iOS

百度MTC:百度开发平台旗下云测试中心,提供超过500款人机型,目前只支持Android,不支持iOS,提供的测试服务有兼容、功能、性能测试,并提供脚本录制工具。

阿里MQC:阿里巴巴旗下移动测试平台,提供上百款测试终端,支持Android及iOS系统,提供兼容、功能、性能测试及稳定性测试(1小时),测试脚本需使用Robotium和Appium测试框架编写,难度较高。还提供了远程真机调试,功能与腾讯优测相似。

开源测试工具:有了开源测试工具的帮助,测试工作将更加全面、真实地覆盖到要测试的平台、环境和数据,将会加快测试速度,降低测试成本,让测试人员有更多时间来做测试设计和探索式软件测试等更有挑战性的事情,使测试工作变得更加有趣。

4.测试驱动开发

传统的软件开发过程是先编码,编码完成后才写测试程序,以此来检查开发代码的正确性,如果有错误再一点点修改。而测试驱动开发(Test-Driven-Development)简称TDD,是一种不同于传统软件开发流程的新型开发方法,它要求编写某个功能的代码之前先编写测试代码,然后只编写使测试通过的功能代码,通过测试来推动整个开发的进行,这有助于编写简洁可用的高质量的代码,并加速开发过程。

测试驱动开发不是一种测试技术,它是一种分析技术、设计技术,更是一种组织所有开发活动的技术,相对于传统的软件开发方法,它具有以下优势:

TDD根据客户需求编写测试用例,对功能的过程和接口都进行了设计,而且这种从使用者角度对代码进行的设计通常更符合后期开发的需求,因为关注用户反馈,可以及时响应需求变更,同时,因为从使用者角度出发的简单设计,也可以更快的适应变化。

处于易测试和测试独立性的要求,促使我们实现松耦合的设计,并更多地依赖接口而非具体的类,提高系统的可扩展性和抗变性。TDD明显第缩短了设计决策的反馈循环,使我们在几秒或几分钟内获得反馈。

将测试工作提到编码前,并频繁地运行所有测试,可以尽量地避免错误和尽早地发现错误,极大地降低了后续测试及修复成本,提高代码的质量,在测试的保护下,不断重构代码,以消除重复设计,优化设计结果,提高代码的重用性,从而提高软件产品的质量。

TDD提供了持续的回归测试,是我们拥有重构的勇气。因为代码的改动会导致系统其它部分产生任何异常,而完整的测试会帮助我们持续第跟踪整个系统的专题,因此我们就不需要担心会产生什么不可预估的副作用了。

TDD所产生的单元测试代码就是最完美的开发者文档,他们展示了所有的API是如何使用以及如何运作的,而且他们与工作代码保持同步,永远是最新的。

TDD可以减轻压力,降低忧虑,提高我们对代码的信心、使我们拥有重构的勇气。

测试驱动开发已经得到越来越广泛的重视,但由于发展时间不长,相关应用并不是很成熟,而且测试驱动开发对开发人员要求比较高,更与开发人员的传统思维习惯相违背,因此实践起来有一定困难。

5.DevOps越来越流行

DevOps含义是开发运维质量保证(Development and Operations)的融合,按时交付符合质量要求的软件产品,使人们逐渐认识到开发、测试、交付的深度融合有助于实现组织的目标。DevOps重视开发人员贺运维人员的沟通合作,通过自动化流程来使软件构建、测试、发布更加快捷频繁可靠。DevOps强化了测试先行(测试驱动开发),测试和开发同步进行,持续开发、持续交付,是一种软件开发文化的转变。

6. 探索式软件测试

探索式测试可以说是一种测试思维技术,它没有很多实际的测试方法、技术和工具,但所有测试人员都应该掌握的一种测试思维方式。探索性测试强调测试人员的主观能动性,抛弃繁杂的测试计划和测试用例设计过程,强调在碰到问题时及时改变测试策略。

7.基于模型的软件测试

基于模型测试(Model Based Testing,MBT)基于模型分析设计思想在测试领域的应用,模型的引入可有效提升测试分析技术的质量和效率,并对前端的需求分析,甚至后端的测试执行均产生深刻影响。基于模型的测试工具有:

Spec Explorer:是微软发布的一款与Visual Studio紧密整合的MBT工具,用户可以通过Spec

Explorer对一个软件系统的期望行为进行建模,并自动生成能够在Visual

Studio测试框架下运行的测试代码,模型可以用当前主流的程序设计语言C#开发,然后通过code语言脚本对模型进行配置和裁剪。

Matelo:基于马尔科夫链模型的测试工具,来源于欧盟的一个项目,Metelo基于马尔科夫链模型和静态测试方法来自动构建测试用例,支持结果分析并生成质量报告可以再软件开发、测试过程中精确评估软件的可靠性和性能。

Conformiq Qtronic:用于嵌入式软件开发、测试的MBT工具,它是基于UML模型,关注自动化测试、执行和分析,使用C/C++,C#,Java作为建模语言,根据测试部署的API插件可以采用不同的方式执行测试。

GraphWalker:是一个开源的基于模型的测试自动化工具,它使用有向图表示测试模型,依据测试模型和生成规则生成测试用例。

今天的先分享到这里,每天持续更新软件测试行业趣闻、动态、技术干货,欢迎添加关注~~

扫码↓领取30G软件测试学习大礼包,共计75节课,内容涵盖功能、性能、自动化、测试框架、安全、接口、面试、测试简历模板。

推荐阅读更多精彩内容

  • 13.我的机能是被动的 说是读书笔记,更希望是借这个题目来记录对于自己的观察。 我们机能是被动的,被我所接触到的任...
    静雅_阅读 16评论 0 0
  • 日志心得 第三遍通背伤寒论,自觉前非,曾以为熟读即可,然而却不能举手投足运用自如,方知必须背诵至朗朗上口,才能在运...
    岐黄小白阅读 528评论 7 16
  • 最近总是在怀念以前的那些趣事,有看书写东西,有和家人共进晚餐,也想念约上小伙伴提上小桶河里徒手抓鱼。 那是...
    小脑袋_b60e阅读 11评论 0 0
  • (原文作者 无糖奶茶 此篇为原文 代发) 能够听从自己的内心,做自己的选择,在这个世界上已是无比幸运。很多人的身后...
    Annor恬阅读 38评论 0 1
  • 心肌梗死(塞)是怎么回事? 我们的心脏简单点说就是不断自主跳动的一堆肌肉和血管。血管向肌肉(心肌)提供包括氧气在内...
    AnnaLi_fed9阅读 71评论 0 0