乐趣区

关于java:我在阿里做测开

本文是《聊下本人转型测试开发的历程》的下篇,上篇讲述我的职业历程,这篇讲述我在阿里工作一年对测开岗位的体感以及给想转测试开发的敌人一些倡议:如何转型测试开发。

1. 我对阿里测试开发岗的意识

       对测开岗位的了解:测试开发仍属于“测试”,测试工程师偏重“被动”的品质保障,即通过惯例的测试伎俩保障业务品质,但随着公司业务场景的简单以及研发周期的一直缩短,这种传统的品质保障伎俩已不能满足新研发模式下对产品质量的要求,如何在活多人少的状况下保障高质量,这就须要测试人效的晋升(同样的工夫做更多的活)和化“被动发现”为“主动出击”提前发现问题的能力。如何做到这些就必须借助于技术手段了,而这也就体现测试开发中的“开发”能力了。但测开最终的指标仍是品质保障,所以我认为测开仍属于测试。

当然知乎上有相似问题的帖子:《测试开发是什么?为什么当初那么多公司都要招聘测试开发?》

我在阿里做什么

1. 阿里测开类型

大家能够在招聘网站看到阿里巴巴凋谢的 品质岗位 基本上都是测试开发岗,而入职后具体从事的工作内容是要视你面试的团队而定(面试过程会通知你大略的工作内容的)。据我理解,阿里的测试开发能够分为两类:

  • 一种是纯技术型的,专一品质工具和各种“神器”的开发,他们服务于业务团队,旨在解决业务测试遇到的各种难题(比方测试有效性,参见南门大佬的文章《阿里研究员:软件测试中的 18 个难题》)。
  • 一种是业务测试 + 技术专项,基本上 7 / 3 分,偶然业务量重的时候 10/ 0 分(当然了,团队外部的测试人员技术水平有高下,而技术绝对较好的同学可能业务量略微轻一些),因为业务测试是发现各种测试难题的先决条件,而解决业务测试难题往往要借助于技术手段,所以技术专项由此而来,而专项课题个别来自于团队内部测试人员遇到的测试难题。

2. 我在阿里的工作内容

我在阿里所在的团队是承当业务测试的团队,研发 / 测试比大概在 4:1。测试团队每个成员独自负责一块业务测试还兼做专项,例如提效工具 / 机器人、巡检、测试覆盖率的课题等。

  • 业务测试就是功能测试,不外乎点点点。当然基于技术架构不同,阿里更偏重测试左移和右移。左移如参加 code review、异样测试等;右移如器重线上监控、应急这些。(平安、性能测试这些都有专门的团队做,你只需提工单即可)
  • 接口测试用例开发,个别是在提测前开始,利用团队的接口测试框架开发接口测试用例,除了增量测试用例,还要保护存量测试用例。
  • 写文档,其实这块和功能测试领域有重合,我为什么要独自拎进去呢?是因为我入职来文档统计数据显示我每天至多一篇文档的产出,而我 居然毫无觉察
  • 对外提供反对。对兄弟域联调 & 提供造数等工具反对
  • 协调 & 沟通。不得不说在阿里做我的项目的沟通老本是比拟高的,因为你的兄弟域可能散布在 ” 四面八方 ”,甚至是国外。如果你是主测,那么你就要负责全链路品质保障的责任,协调 & 沟通各域的测试同学的测试进度、项目风险;上线时候要紧盯线上监控和报警等问题。
  • 专项测试就是我上文说到的,课题来源于测试过程遇到的难题。例如如何证实你的测试是无效的?如何尽可能快的监控到线上报出的问题?

3. 反复造轮子问题

兴许你会问,都在做专项、做测试平台?是不是在反复造轮子?

首先通知你论断,的确是在反复造轮子,而且我认为是必然的。

我入职至今,曾经接触(应用)多达 3 个接口自动化测试框架,这么多框架的由来也是有起因的,例如旧框架降级老本高,导致老业务的自动化测试用例没有齐全迁徙到新测试框架,进而保护多套测试框架;还有就是咱们常常波及到跨域测试 (补位),而不同域有本人的一套测试框架,所以你也要把握。然而我对反复造轮子的态度是中立的,并不拥护,咱们应该从 多方面 对待这个事件。

  1. 从阿里本身业务架构看,阿里的产品业务复杂度高,技术实现架构是微服务,不同业务模块 (也称为域,例如资金、金融、领取等) 是不同的测试团队负责,各域间既是单干又是独立的关系
    1. 从全链路角度看,各域是相互合作的,缺一不可,任何一个域呈现问题最终都会影响到用户体验。
    2. 从团队角度看,各域又是互相独立的,这是因为各域的老板(个别是 8)是不同的,而不同老板对团队的管理策略可能是不同的;其次团队间也有肯定的“竞争”关系(哈哈,这也可能是大家经常挂在嘴边的“内卷”吧)。
    3. 各域间的品质要求可能不尽相同。例如资金域,对资损是 0 容忍的。因而各域间对业务品质保障采取的测试策略和办法可能略有不同。
  2. 当然从侧面阐明阿里的品质基建建设曾经比较完善了,在国内曾经是 top 级别了,毕竟通过了 20 多年的倒退。
  3. 从测试 (特地是小 P) 本身看,我认为技术产出绝对业务产出来说,显得更重要。因为做好业务测试是根本工作,话说人无我有,技术产出 对于掂量团队成员间绩效就显得十分重要了(不可否认一部分轮子的确生而为绩效)。
  4. 主观来看,正像国家提出的“公众翻新,万众翻新”的口号一样,提供一种竞争气氛也未尝不可,黑猫白猫捉到老鼠就是好猫。也正是泛滥轮子的存在,才衬托出最终“赢家”的可贵。

当然了,反复造轮子的毛病就是人力资源的节约,对于公司来说是一种用人老本损失,我置信国内的大厂都会有相似的问题。

2. 测试开发职位要求

2.1BAT 测开岗位要求

BAT 对开发岗位的要求总结:

与国外测试开发(SDET)岗位职责的比拟

1. 自动化用例开发

  • 精通我的项目语言(Java、Javascript、C#)
  • 与开发人员合作 review 单元测试和集成后果以进行覆盖率剖析
  • 设计、开发、执行和调试自动化测试用例和脚本

2.CI/CD

  • 为高质量的自动化可交付成绩创立分支策略
  • 继续集成,将自动化脚本集成到 CI/CD pipeline。

3. 测试框架

  • 为团队测试框架选型
  • 应用不同的自动化工具和技术进步自动化效率和覆盖率

4. 品质度量

  • 设计实时自动化仪表板以掂量构建品质并向麻利交付团队提供反馈

综合比拟下,国外对测开要求和国内的差异不是太大,倡议大家能够参心仪公司的招聘要求筹备,哪里不会补哪里。当然了,肯定要有我的项目根底哦。

2.2 测开 VS 测试薪资比照

间接看图比照曾经比拟直观了,测开和测试薪资之间差一个测试工程师

2.3 职业发展前景

测试开发岗位增速是测试岗位的将近 4 倍,预测将来仍会放弃高增速。现阶段来看,测试将来是就是测试开发!

3. 测试工程师如何转型测开

3.1 摆好心态 & 凋谢眼界

      我始终认为 把握技术最重要,title 不重要。测试工程师和测开只是 title 不同,工作内容并没有明确的边际,这个齐全取决你对测试的认识!有可能一些公司的测试工程师做的是某些公司测开的干的活,而一些公司的测开可能做的是某些公司测试工程师的活。就像我在字节时候,title 是测试工程师,工作内容是业务测试 + 接口测试平台开发 7 / 3 分。而在阿里则也是差不多(甚至阿里的业务还更重些)。对于我来说两家公司的工作内容是没什么区别的,只是 title 不一样而已。

      对于想转测开的测试工程师倡议:调整心态,不要以“测开”唯是,晋升本人的技术能力才是重点,要养成继续学习的习惯,多接触一些常识,拓展本人的眼界,在业务测试过程养成“偷懒”的习惯,多思考自动化伎俩缩小手工测试工作。

3.2 夯实 & 使用技术

1. 编程能力要过关

至多精通一门语言。而且应用该语言开发过工具或平台最佳。一是测开通常要手写代码,这个是门槛。二是有开发教训能侧面证实你对开发语言的熟练程度。

至多把握一个开发框架。例如 spring boot、flask、Django、VueJS 等。

2. 根底算法要相熟,学习的同时倡议联合 LeetCode 练习。

1 疾速排序算法

2 堆排序算法

3 归并排序

4 二分查找算法

5 BFPRT(线性查找算法)

6 DFS(深度优先搜寻)

7 BFS(广度优先搜寻)

8 Dijkstra 算法

9 动静布局算法

10 奢侈贝叶斯分类算法

3. 有所特长(亮点)

前文说到过的一个情理,人无我有。在大家都把握雷同“技能”的前提下,你能做的更深刻或者有标新立异的 idea,则这就是你的亮点。例如善于性能测试、善于效率工具开发、善于平台搭建等。当然这个因人而异,视各人趣味点而定。

4. 多利用技术手段解决业务问题

我认为这个是最重要的。纵然你把握上述能力后,然而不足使用技术解决理论问题的能力,依然是夸夸其谈。正如第 2 节所说的,测试开发岗位职责都要求解决简单问题的能力。而我在面试中问到的最多的问题就是 为什么做这个货色?你这做的货色解决了什么问题?前面我会附上面试教训分享,外面蕴含所有面试题目。而如何晋升解决问题的能力,第一步就是要长于发现问题,这就要求工作中大家放弃狐疑心态。

3.3“翻新”意识

不可否认翻新是属于多数人的专利。然而并非大多人不能翻新。咱们能够二次“翻新”,能够将前人作出的成绩二次翻新使用到咱们的业务中并解决肯定的问题,我感觉对于普通人来说这就足够了。

如何放弃凋谢心态,倡议大家多加入测试沙龙和论坛,业界比拟业余的测试论坛 如:每年两届的 MTSC 大会,议题品质是相当高的,根本都是 BAT 议题占了半壁江山,能够说 BAT 的议题成绩就是国内测试界的倒退标杆和方向(尽管 BAT 的议题可能是他人玩剩下的)。

此外,关注各大厂品质相干技术公众号,多看看他们发的文章晋升眼界。

3.4 我的阿里测开面试题分享

技术题

  1. 理解多线程吗?理解 Python 的 GIL 锁吗?
  2. 说一下过程和线程
  3. 过程间通信的形式有哪些?
  4. 说一下什么是乐观锁和乐观锁?
  5. AOP
  6. 什么是 IOC?
  7. list 和 map 相干
  8. 解释一下工厂模式?
  9. 内存透露
  10. 会做性能测试吗?容量测试 / 稳定性测试?
  11. Python2 和 3 的区别?
  12. DNS 解释一下?
  13. 用户名、明码、验证码哪个校验程序?
  14. Linux 依据过程查端口 / 端口查过程
  15. 罕用的 Linux 指令?
  16. 排序算法

围绕工具开发

  1. 工具是如何开发的?
  2. 为什么要开发这个工具?
  3. 公司外部没有相似平台吗?
  4. 效力工具蕴含哪些?举几个例子?
  5. 介绍一下自研的接口自动化框架?
    1. 有哪些模块组成?
    2. 相比其余框架有哪些劣势?毛病有哪些?
    3. 介绍一下框架的代码生成模块是怎么实现的?
    4. 应用你的框架测一个接口须要做哪些步骤?
    5. 接口的断言怎么做?
    6. 接口测试带来的收益?
    7. testng 和 junit 优缺点
  6. 造数据工具,如何开发、提效多少。

大数据测试

  1. 怎么测试数据的准确性?

算法测试

  1. 算法测试做哪些工作?
  2. 如何进行算法评测?
  3. 不同的算法类型,评测规范是不同的
  4. 介绍一个最近的算法测试案例?
  5. 如何抉择测试集?测试集的特色如何抉择?
  6. 说一些填空题小空辨认算法的 badcase?
  7. 如何保障算法品质?

编程题

  1. 词频统计
  2. 线程交替打印奇偶数
  3. 最长回文子串

我的项目经验

  1. 介绍一下负责的我的项目?
  2. 针对老零碎(僵尸代码)如何保证质量?
  3. 做过的我的项目遇到的最大危险点?
  4. 怎么保障我的项目的品质?
  5. 如何解决紧急需要?
  6. 我的项目的迭代形式?
  7. 说一下最近我的项目推动胜利的案例?
  8. 说一下本人人力调配?

继续集成

  1. 理解 CI 吗?解释一下 CI
  2. 如何掂量测试用例品质?
  3. 说说你对测试的了解?或者说品质的了解?

团队治理

  1. 团队治理上有没有什么难点?
  2. 你冀望一个怎么的测试团队?
  3. 团队的测试开发比是怎么的?
  4. 如何掂量全职 / 外包比例?
  5. 外包的忠诚度如何保障?
  6. 你能为团队带来什么?

HR 问题

  1. 为什么跳槽?
  2. 为什么抉择阿里?
  3. 前几家公司播种
  4. 有什么问题要问的?
  5. 工作中最大的挑战(最大挫折),如何克服的?
  6. 最大的有点和毛病?各自说一个?
  7. 将来的职业 3 - 5 年倒退布局?

PS:文中观点仅代表集体意见,如果有说的不对的中央,各位同行大佬还望包涵和指教。

退出移动版