新秋伊始,收获在即。不知不觉,2017年也已经度过了四分之三,对那句"逝者如斯夫不舍昼夜"的体会也越来越深刻。我曾经听过一个从业8年多的老司机对我说过,IT圈的平均年龄和演艺圈是一样的,都是吃青春饭的。以这位老司机为代表的这群人看来,当你的年岁越来越大,状态越来越差,体力越来越不支,也就意味着你应该离开测试(不仅是测试IT圈的其他行业也是如此)这个行业领域了。我也有一段时间非常迷茫懵懂,不禁从心里发问,当我们的青春不在,测试工作还能继续干嘛?今天谈谈我内心的真实感悟。希望与测试工作中感到迷茫的你一起共勉,要是能给您点启发,那我会更加开心!
一、年轻测试与年老测试的辩证法
测试这个行业在我看来,其实应该是一个注重行业经验积累的行业,所谓经验的积累有两层含义。一是你对同一个功能点所表现出的多元化的测试思维,举个例子来说:叫你测试两个数求和这个功能点。作为一个经验丰富的老司机。脑子里肯定会迅速出现以下内容:
(1)实际真实的业务场景中的两个数是整数还是小数。
(2)两个数的相加结果是否遵循四舍五入,有效数字位数如何保留。
(3)提现老司机能力的地方:一定会先了解两个数的数据类型是什么?如果是int类型,那根据java的特性,默认初始值为空,它不支持小数相加是否满足业务需要?。
对于int的java特性这里我用一段简短的代码向大家详细说明下,有经验的测试人员肯定一看即懂。
package com.baofei.jisuan.com; class IntAdd{ public int a;//声明一个int类型a public int b;//声明一个int类型b public IntAdd(int a,int b){//构造方法用于赋值 this.a=a; this.b=b; } public void add(){//输出两个数相加的结果 System.out.println(a+b); } } public class IntDemo01 { public static void main(String[] args) { IntAdd i = new IntAdd(10, 20); i.add(); } }
此时运行出来的结果毋庸置疑为30。但是当我们测试一个接口的时候,本来定义的数据类型为int,且为必录项,但是真正的请求中没有按照接口文档中的约定传过来,此时会被默认成0,按照上面所示的代码本来我们预期的结果为30,此时a变为了0,此时b任然为20,此时计算出的结果为20,肯定不是我们预期想要的结果。
如果是double,那么有可能会发生数据溢出,为了说明下这个问题,请看下面所示代码的相加结果:
1 package com.baofei.jisuan.com; 2 class Double{//定义一个double类 3 private double d1;//定义一个double类型的变量d1 4 private double d2;//定义一个double类型的变量d2 5 public double getD1() { 6 return d1; 7 } 8 public double getD2() { 9 return d2; 10 } 11 public void setD1(double d1) { 12 this.d1 = d1; 13 } 14 public void setD2(double d2) { 15 this.d2 = d2; 16 } 17 public Double(double d1,double d2){//构造方法 18 this.d1=d1; 19 this.d2=d2; 20 } 21 public double add(){//声明一个两个double类型的数相加的方法 22 double sum; 23 sum = d1+d2; 24 return sum; 25 } 26 } 27 28 public class DoubleDemo { 29 30 public static void main(String[] args) { 31 Double d = new Double(121.57, 4.83); 32 System.out.println(d.add()); 33 } 34 35 }
将上面代码在Eclipse里运行的到的结果为:没错121.57+4.83不是我们直观计算出的126.4而是图中显示的126.39999999999999。
如果数据类型应该为bigdecimal,这应该是首选的定义类型,不会有数据溢出的风险而且支持大数据相加,是现在互联网项目的主流数据类型。
如果数据类型定义为String,那么相加的时候一定要有对应的trim()方法,这样才能避免相加报错。
经验积累的第二层含义:是你定位问题的能力突出,对BUG的阐述精确。再举个例子进行说明:你在测试一个web系统,每每提交一个form表单的时候,一般会弹出一个提示框,类似于这种。
(这是百度界面退出登陆的提示框),对于测试过这种功能的老司机肯定会清楚,这里一般会产生一个非常严重的问题,即聚焦失败。表现在哪里呢?用键盘上的Enter键无法点击确定按钮,或者按了Enter键提示框一直闪,处于死循环。
对于上面论述的情形,作为测试新人是无法和你比肩的。因为你走过的桥确实比他们走过的路要多的多。
二、树立正确的目标
当然,随着年龄的增长,经验的积累,对自己的要求也应该越来越高。前一段时间看人民的名义,达康书记对党员们说,有些同志觉得不升了,无所谓了,就白吃干饭不作为!作为测试也不能因为自己的职位没有提升,薪资没有持续保持高速增长,就对自己的要求开始松懈。要知道长江后浪推前浪。所以要树立正确的目标。任何行业对于职业发展的目标都不外乎于以下两类。一走管理路线,成为团队的决策者。二走技术路线,成为该领域的技术骨干,做到无可替代。我个人认为测试应该是一个前期追求技术卓越,中期逐步管理,后期管理与技术并重的过程。所以树立的目标一定要有步骤、有计划,先定一个切实可行的小目标,在制定大的目标。
拿技术来说。
1、先应该掌握实践基本的测试理论以及测试方法,直观的可视化产物包括:测试用例、测试计划、测试报告、BUG清单等产物。
2、其次开拓自己的测试思维,掌握敏捷测试、探索性测试、海盗派测试等主流的测试。直观的可视化产物包括:思维导图的构建、测试模型的构建。
3、掌握自动化测试原理。这个其实大家都知道,但是大家一直不知道好的自动化应该是什么样的?我个人认为优秀的自动化测试是低成本、高效且可塑性高的测试。可视化产物为:自动化框架的搭建、针对web/接口/服务器一体的自动化脚本的书写。
4、性能测试原理。这个不多说,本身各个企业用的不多,其实一直是处于一个地位很高用的很少的尴尬境地。
三、从事长时间测试的好处
从事长时间的测试,即使将来你离开了测试行业,我觉得这些行业经历也会是你毕生的财富,无论你从事哪个领域,都是对你大有裨益的。
首先,在测试身上,体现出对事物缜密的思维和冷静的判断。
其次,在测试身上,能够看到对事物孜孜不倦的坚持精神和不断探索的创新精神。
再次,在测试身上,浑身洋溢着自信和交流沟通的艺术,是圆滑处世的真实写照。
最后,我想说在测试身上,我们看到的是一群激情洋溢的年轻人和一群踏实靠谱的行业坚守者(这里指有经验的测试哈)为互联网事业做出的默默无闻的奉献!
我们有理由相信当我们的青春不在,只要我们对测试这份工作的热忱还在,为保证软件质量的拼搏热血还在沸腾,那么我想说,青春虽然不在,但我们不老!测试的领域依然是我们的天地!