“被裁员之前,没得到任何风声,措手不及...” 一个在职6年测试工程师内心独白

Posted 程序员江念

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了“被裁员之前,没得到任何风声,措手不及...” 一个在职6年测试工程师内心独白相关的知识,希望对你有一定的参考价值。

前言

一个码农(软件测试工程师)的自白

小张:

我们用工作五年的积蓄,在这个一线城市买了房子,买了车子,然后领证。我也在6年前进入了一个很多人梦寐以求新的公司

码农的新生活开始了。在这家公司里,我第一次真正领略到“人外有人,天外有天”的含义。所在的团队各个都是猫头鹰界的扛把子,动不动就干到半夜。

我的工作量比上家公司少了很多,从开始的学习需求,到分析确认需求,再到真正扣代码,一个迭代中的小故事只要在三五天内完成就可以了。工作之余,大家在公司的吧台上一起喝咖啡,喝奶茶,偶尔谈笑风生,偶尔插插花

这跟我之前的码农生活相比,简直是天上人间。因此,我心存感恩,工作上仍然脚踏实地,一丝不苟

正当我在如诗如画的生活里憧憬未来的时候,我被裁员了!就像一场噩梦,但梦醒后,我已经失业!

被裁员之前,没得到任何风声

上周二上午,当我还在为最近的一个项目忙碌时,忽然收到钉钉消息“xx同学,请于15分钟后到xxx会议室开会,有一件重要的事情需要今天向你当面说明…… ”,其实看到消息一刹那就猜到接下去的剧情,近期的各种裁员传闻早已让大家多少有些准备,唯一在我意料之外的是我居然在这个名单里面!也没有任何被裁掉的风声

我很沮丧,我的心犹如坠入了无底的黑暗深渊,我绝望至极。我一路上跌跌撞撞,以为找到了一份稳定的工作,以为有了一份不菲的收入,以为,我可以在这个城市落脚。从会议室回到工位后不久,得知同组其他4位同学也收到了会邀,多少有点惆怅,因为他们很多是为了来腾讯专程从其他城市来这工作,被裁之后会遇到的各种问题可想而知。

事后得知,此次裁员比例在15%~30%,目标标准并不一致,有的是技术能力不够,有的是上了年龄...

我应该就是这里两个的集合体,虽然我有在不断努力提升自己技术,也不断的得到了领导的重视,但是,还是因为年龄的原因比不上小年轻,厄运总是突如其来,令我措手不及!我有车贷,有房贷,明天我该怎么生活?

我擦干眼泪,重新更新我的简历。不管怎样,码农的生活还要继续

未来,互联网跟金融行业,服务行业,制造业以及其他领域的结合会更深入更普遍。在经济与科技繁荣的城市,会有测试开发码农的天下

作为一个职场人来说,我们应该尽早懂得“职场永远是年轻人的天下”这个道理。

  • 拿着仅能温饱的薪水,过着安逸等“死”的日子
  • 认为年轻就是资本,还不着急的你
  • 温室环境,蒙蔽了你的双眼

别等到30岁了,才忽然惊醒。

那时已经晚了。

趁着年轻,把未来的路一步一个脚印走踏实了。

当遇到危机时,你才可以从容面对。

听听15年资深测试工程师分享的软件测试经验及发展方向,或许能帮助你解决很多工作中的迷惑!

从测试技术上看,你需要能够使用常见的测试框架或者工具,需要具有一定的自动化测试脚本的开发能力,这可以把你从大量重复的工作中解放出来。

一、想从事自动化,从哪里入手?

我们很多人都不甘于原地踏步,都希望自己能从事自动化测试这个岗位,更希望自己在每家公司都能站稳脚跟得到认可,但是目前该从哪里入手呢?而且时间又不多,怎么才能快速提升自己的能力呢?
明确提升目标、投入资源、提升方法以及取得的效果。

方案1.尽快上班:

1、先围绕面试的考核点,确定一个自动化测试的方向,确定一个项目,然后按照自动化测试的流程和技术要求进行部分项目实战

2、总结整理工作问题和自动化测试成果。

3、针对面试常见问题进行准备和整理,快速满足面试的要求

4、上班后并不是万事大吉了,无论公司是否提供自动化测试岗位和工作,我们必须利用业余时间,每天至少在自动化测试项目中投入1-2个小时

5、半年后必须有能力承担自动化测试的项目

方案2.至少先具备一定的自动化测试工作能力,再开始找有竞争力的工作:

1、拿出至少一个月的时间,以实际项目为背景

2、从头到尾完整演练整个自动化测试项目

3、达到能够独立完成某一个方向(web自动化/接口自动化/性能自动化/手机自动化)的自动化测试工作

4、能编写独立的自动化测试脚本

5、能够设计自动化测试框架

方案3.全面具备自动化测试工作能力,可以挑选好的工作

在方案2的提升模式下,具备四个自动化测试方向的独立工作能力。

无论选择哪个方案,最重要的就是要有一定的自动化测试项目工作经验,这是最基本的要求,因为企业用人的标准不是我们学过、看过自动化,而是需要我们亲自做过自动化测试,这个标准一定要达成才可以!

我的自动化测试之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,所以,我和朋友特意花了一段时间整理编写了下面的《自动化测试工程师学习路线》,也整理了不少【网盘资源】,需要的朋友可以点击末尾小卡片获取网盘链接。希望会给你带来帮助和方向。

二、按照以下步骤,提升自动化能力

测试大佬给了我们非常好的规划方向,但靠自己的能力和资源储备,光是找项目都不知道从何入手,而且也没有干过自动化测试工作,如何干?怎么干?靠自己的力量根本就做不到的!
理想和现实往往是有非常大的差距,但是只要有有效的方法还是可以快速拉近距离的。

要想快速提升自动化测试能力,可以按照以下步骤进行:

1、找一个项目

可以是自己以前做过的项目,也可以是开源的项目。

2、明确自动化测试方向

建议可以从web自动化/性能自动化/App自动化入手。因为接口自动化项目很少能找到开源完整的。

3、明确自动化测试工作流程。

一般而言,如果没有特殊情况下,自动化测试工作流程如下:

①前提条件:手工测试基本上完成,相应的bug也基本上修复
②产品需求或业务流程基本稳定,产品有长期运营的计划,不是只用一段时间
③明确自动化测试要达成的工作目标。

一般而言:

图标勾基于UI的自动化测试(web/app自动化测试)都是为了最大程度的提高回归测试的效率和覆盖度;

图标勾性能自动化测试主要是针对用户访问量或数据量较大的系统,测试系统的响应速度和系统的稳定性;

图标勾接口自动化测试主要也是为了提升回归测试的效率和质量的。和UI自动化测试不同的一点是,接口自动化测试不受业务流程变更和UI变更的影响,只要接口调用参数和返回值没有变更,脚本的稳定性是比较强的。

4、确定自动化测试范围。

一般而言先将使用频率高且业务需求稳定的内容纳入到自动化测试范围中,对于使用频率低或需求经常变更的内容可以暂时不放入自动化测试范围列表中。

5、设计并研发独立自动化测试脚本。

设计和实现流程如下:

①进行版本设计,由简到繁逐步完成脚本研发,版本设计原则参考如下:

  • 先以一组常量测试数据,快速跑通脚本,扫除语法技术障碍
  • 再将常量数据替换为一组变量数据,进行脚本参数化准备
  • 再使用列表/字典类型输入多组测试数据,进行少量的参数化
  • 如果想大幅度提升脚本的测试数据覆盖率,使用文件存储测试数据,并优化
  • 针对脚本的预期结果的验证进行优化
  • 用脚本编写自动化测试报告

②针对不同的版本进行类图设计

③针对类图进行每个方法的流程图设计(2和3两步在脚本技术熟练后,可以省略,初学时一定要先进行设计,整理好思路后再编写代码,切记!)

④按照类图和流程图设计分版本进行脚本的实现

⑤先写注释再写脚本程序,边写边调试运行,不要全部写完再运行,切记

⑥发现问题后,要使用调试技术进行问题的快速定位,然后分析并修复bug。)

如果你在软件测试行业有许多的不解的困惑,那么欢迎和我一起在业内的交流群里面沟通探讨。群里面有免费的视频资料以及各阶段测试资源,希望能帮助你突破眼前的瓶颈

三、自动化经验,与你共勉

1、多样化练习

完全按照视频里的操作方法,用视频里的网站,按部就班的写代码,效果不大,并不是说没有必要。因为课程里所使用的网站都是老师“精心挑选”的,主要针对某个模块某个知识点而来的,用来做例子的功能也是最简单,主要目的是让学员明白当前所讲的知识点。

但是在实际应用的过程中肯定会比这复杂。所以建议在按照视频里的例子练习完成后,多拿一些常用的网站或者工作中正在使用的网站多做练习,这样我们往往会获取到一些课程里没有的知识。

一开始不会没关系,就是照着现有脚本抄也要练习,因为只有练习才能熟能生巧。

2、虚心学习不自以为是

因为我之前是有代码基础的,所以在第一次学习的过程中将所有代码相关的课程都跳过了,所以导致了知识的断层。第二次学习的过程中,是将课程从头到尾的完整的看了一遍并进行了实际操作,才发现,之前被我跳过的内容隐藏了一些我从前并不知道的知识点。

3、有始有终

第一次学习时,学习完脚本录制之后,就停止学习了,并没有继续学习后续的内容。

第二次学习后发现,用录制的方式写脚本是很low的,很有局限性,并不能满足所有的需求,后来用WebDriver和UnitTest才是真正的高级,解决脚本录制不能解决的问题。

4、应用到日常的工作中

我们学习完自动化之后,不要学习完就行了,而要积极的将其应用到我们日常的工作中,如果放着不用,一段时间之后我们学习到的知识都会慢慢遗忘。将其应用到工作中后,不仅能对技术进行不断练习、优化、升级,还能提高工作效率,何乐而不为呢?

这是我自学自动化的历程,走了不少弯路,也没有专人的指导,只能靠自己去摸索,希望我自己犯的错误能让大家引以为戒。

5、全面了解,选好切入点

目前自动化测试方向大概有以下几个:

  • 辅助测试脚本方向:以Shell,Python为主来简化重复的工作,过滤日志等;
  • 接口自动化测试方向:Python+Unittest+htmlTestRuner+Jenkins和Java+Httpclient+TestNG+Jenkins,当然还有很多其他二次开发的框架或工具,不过核心是一样的;
  • 页面自动化方向,主要有Python+Webdrver+HtmlTestRunner+Jenkins,Java+Webdriver+TestNG+Jenkins,以及其他的框架和工具;
  • App自动化测试方向:以Robotium+Java+TestNG+Jenkins,  
  • Appium+Java+TestNG+Jenkins,Appium+Python+HtmlTestRunner为主。

当然这里介绍的都是简单的,最基本的实现方案,作为入门学习比较合适。其他五花八门的二次开发的框架,包含众多功能的方案留待你以后提升。先从这几方面了解入手,选择一个语言体系,建议从接口自动化入后,然后再去学习页面和app。

绵薄之力

做为一名自动化软件测试,接下来我想分享一下这些年来,我对于技术一些归纳和总结,和自己对作为一名高级测试者需要掌握那些技能的笔记分享,希望能帮助到有心在技术这条道路上一路走到黑的朋友!

 

1. 自动化测试必备Python编程内容 

 2. Web UI 自动化测试基础内容

3. Web UI 自动化测试实战内容

 4. APP UI 自动化测试基础内容

5. APP UI 自动化测试实战内容 6. API 接口自动化测试基础内容

7. API 接口自动化测试实战内容 8. CI/CD持续集成专项技术

9. 自动化测试框架实战技术

 上面就是我整理出来的一份自动化测试进阶路线。希望大家能在这个成长过程中收益良多。全方位提升测试技术,建立一套属于自己的技术体系。帮助大家不断学习和优化技术栈,跟进先进和主流的测试技术,给到大家带来的不仅仅是技术和薪资的提升,更多的是改变测试人在IT技术领域的地位和心态,拔高测试行业的技术深度。

 ​这些资料,对于想进阶【自动化测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….点击下方链接,免费获取网盘资源详细讲解及面试题答案

其实这些高附加值的知识和能力可以边工作边自学的。相信年薪30W+也是很简单的!关键就看你愿不愿意学!

合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

虽然学无止境,但只要功夫下的深,特棒磨成绣花针。共勉~

java 怎样获取每个月的第一天和最后一天

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 
//获取前月的第一天
Calendar   cal_1=Calendar.getInstance();//获取当前日期 
cal_1.add(Calendar.MONTH, -1);
cal_1.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天 
firstDay = format.format(cal_1.getTime());
System.out.println("-----1------firstDay:"+firstDay);

//获取前月的最后一天
Calendar cale = Calendar.getInstance();   
cale.set(Calendar.DAY_OF_MONTH,0);//设置为1号,当前日期既为本月第一天 
lastDay = format.format(cale.getTime());
System.out.println("-----2------lastDay:"+lastDay);

//获取当前月第一天:
Calendar c = Calendar.getInstance();    
c.add(Calendar.MONTH, 0);
c.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天 
String first = format.format(c.getTime());
System.out.println("===============first:"+first);

//获取当前月最后一天
Calendar ca = Calendar.getInstance();    
ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));  
String last = format.format(ca.getTime());
System.out.println("===============last:"+last);

追问

能用循环写吗?从 18年1月开始到12月

参考技术A package com.test.packager;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;

public class Test
private static String firstDay;
private static String lastDay;
public static void main(String[] args)
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

//获取前月的第一天
Calendar cal_1=Calendar.getInstance();//获取当前日期
cal_1.add(Calendar.MONTH, -1);
cal_1.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天
firstDay = format.format(cal_1.getTime());
System.out.println("-----1------firstDay:"+firstDay);
//获取前月的最后一天
Calendar cale = Calendar.getInstance();
cale.set(Calendar.DAY_OF_MONTH,0);//设置为1号,当前日期既为本月第一天
lastDay = format.format(cale.getTime());
System.out.println("-----2------lastDay:"+lastDay);

//获取当前月第一天:
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, 0);
c.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天
String first = format.format(c.getTime());
System.out.println("===============first:"+first);

//获取当前月最后一天
Calendar ca = Calendar.getInstance();
ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));
String last = format.format(ca.getTime());
System.out.println("===============last:"+last);


/**
* 字符串的日期格式的计算
*/
public static int daysBetween(String smdate,String bdate) throws ParseException
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.setTime(sdf.parse(smdate));
long time1 = cal.getTimeInMillis();
cal.setTime(sdf.parse(bdate));
long time2 = cal.getTimeInMillis();
long between_days=(time2-time1)/(1000*3600*24);
return Integer.parseInt(String.valueOf(between_days));

参考技术B 每个城市都有吧,成都当然也是有的,我家就是成都的,房子装修之后也做了甲醛治理,找的是绿色家缘,推荐

以上是关于“被裁员之前,没得到任何风声,措手不及...” 一个在职6年测试工程师内心独白的主要内容,如果未能解决你的问题,请参考以下文章

一分钟认识:Cucumber框架(一)

nl:::1:一::一、01!iw。n:一1::ld一11一:一、::.,

js 获取当前月和当前周的第一天和最后一天

获取一年中的第一天和最后一天

如何使用js获取某月的第一天和最后一天

测试一篇文章