这篇文章是《聊下自己转型测试开发的历程》的下一篇。第一部分讲述了我的职业历程。这篇文章讲述了我在阿里工作一年后在测试开发岗位上的经历和一些想转测试开发的朋友推荐:如何转型测试开发。一、我对阿里测试开发岗位的理解我对测试开发岗位的理解:测试开发仍然属于“测试”,测试工程师侧重于“被动”的质量保证,即通过常规的测试手段来保证业务质量,但是随着公司业务场景的复杂化和研发周期的不断缩短,这种传统的质量保证方式已经不能满足新研发模式下对产品质量的要求。如何在更少的工人的情况下保证高质量,需要考验人的效率。提高能力(同时做更多的工作),变“被动发现”为“主动攻击”,提前发现问题。如何做到这一点必须依靠技术手段,而这也体现了测试开发中的“开发”能力。但是开测的最终目的还是质量保证,所以我觉得开测还是测试。当然知乎上也有类似问题的帖子:《测试开发是什么?为什么现在那么多公司都要招聘测试开发?》我在阿里巴巴做什么1.阿里的测试类型?工作内容取决于你面试的团队(面试过程会告诉你大概的工作内容)。据我所知,阿里的测试开发可以分为两类:一类是纯技术的,专注于质量工具和各种“神器”的开发。他们服务于业务团队,旨在解决业务测试中遇到的各种问题。难点(比如测试有效性,看南门大佬的文章《阿里研究员:软件测试中的18个难题》)。一种是业务测试+技术专项,基本7/3分,业务量大的时候偶尔10/0分(当然,团队中测试人员的技术水平参差不齐,技术比较好的同学可能业务高体积略轻),因为业务测试是发现各种测试问题的前提,而解决业务测试问题往往需要技术手段,所以技术专项由此而来,而专项一般来自团队内部测试人员。测试问题。2.我在阿里的工作内容我在阿里所属的团队是负责业务测试的团队,研发/测试比例大概是4:1。测试组每个成员负责一个业务测试和专项项目,比如效率提升工具/机器人、巡检、测试覆盖率等。业务测试就是功能测试,无非就是一点点。当然,基于不同的技术架构,阿里更侧重于测试左右移位。左移表示参与代码审查、异常测试等;右移就是要重视在线监测和应急处置。(安全和性能测试全部由专门的团队完成,只需要提交工单即可)接口测试用例的开发一般在测试前开始,使用团队的接口测试框架开发接口测试用例,除了增量测试。用例,还要维护库存测试用例。写文档,其实这个区域和功能测试的范围是重叠的,为什么要单独拿出来呢?是因为我刚入职时,文件统计显示我每天至少生产一份文件,但我没有意识到。提供外部支持。与兄弟域协调沟通,提供打号等工具。不得不说,在阿里做项目的沟通成本是比较高的,因为你的兄弟域名可能分布在“五湖四海”,甚至国外。如果你是主测人员,那么你将负责整个环节的质量保证,协调沟通各领域测试学员的测试进度和项目风险;上线时要密切关注在线监控和告警问题。专项考试就是我上面说的,题目来源于考试过程中遇到的困难。比如,如何证明你的测试是有效的?如何第一时间监控网上反映的问题?3、重新发明轮子的问题可能你会问,你们都是做专项和测试平台的吗?你在重新发明轮子吗?首先告诉大家结论,确实是在重新发明轮子,我觉得是必然的。入职以来,接触(使用)的接口自动化测试框架多达3个。这么多框架的起源是有原因的。比如老框架升级成本高,导致老业务的自动化测试用例没有完全迁移到新测试框架上。然后维护多套测试框架;另外我们经常会涉及到跨域测试(填),不同的域有自己的一套测试框架,所以你要掌握。但我对重新发明轮子的态度是中立的,我没有异议。我们应该从多个角度来看待这个问题。从阿里自身的业务架构来看,阿里的产品业务高度复杂,技术实现架构是微服务。不同的业务模块(也叫领域,如资金、金融、支付等)由不同的测试团队负责。合作是一种独立的关系。从整个链路来看,各个域相互配合,缺一不可。任何领域的任何问题最终都会影响用户体验。从团队的角度来看,每个领域都是相互独立的。这是因为每个domain的boss(一般是8个)不同,不同的boss对团队的管理策略可能不同;其次,团队之间也存在一定的“竞争”关系(哈哈,这可能也是大家常说的“内卷”)。不同领域之间的质量要求可能不同。比如资本领域对资本零容忍因此,不同领域的服务质量保障所采用的测试策略和方法可能会略有不同,当然这也从侧面说明阿里的质量基础建设比较完备,在国内已经处于领先水平。毕竟经历了20多年的发展,从测试(尤其是小P)本身的角度,我觉得技术输出比业务输出更重要,因为做好业务测试才是基础工作。都说人无我有,技术输出对于衡量团队成员的绩效非常重要(不可否认,有些轮子确实是为绩效而生)。从客观的角度看,就像国家提出的“万众创新,万众创新”的口号一样,营造竞争氛围也未尝不可。黑猫和白猫抓到老鼠就是好猫。也正是众多轮子的存在,衬托出最后“胜者”的珍贵。当然,重新发明轮子的坏处是人力资源的浪费,对企业来说是一种用工成本的损失。相信国内的大厂商也会有类似的问题。2.测试开发职位要求2.1BAT测试开发职位要求BAT测试开发职位要求总结:与国外测试开发(SDET)职位职责对比1.自动化用例开发熟练项目语言(Java、Javascript、C#)与开发人员协作审查单元测试和集成结果进行覆盖率分析设计、开发、执行和调试自动化测试用例和脚本2.CI/CD创建分支高质量自动化交付的策略将脚本集成到CI/CD管道中。3.团队测试框架选择的测试框架使用不同的自动化工具和技术来提高自动化效率和覆盖率4.质量测量设计一个实时自动化仪表板来测量构建质量并向敏捷交付团队提供反馈没有太大区别开放要求和国内之间。建议大家可以针对自己喜欢的公司的招聘要求进行准备,不会补的地方补上。当然,要有项目基础。2.2试开VS试薪对比直接看图对比更直观,试开和试薪的区别是测试工程师。2.3职业发展前景测试开发岗位增长率是测试岗位的近4倍,预计未来仍将保持高增长率。现阶段,测试的未来就是测试开发!3.测试工程师如何转型为测试开发3.1摆好心态,开阔视野我一直认为掌握技术最重要,头衔不重要。测试工程师和测试开发人员只是职称不同,工作内容并没有明确的界限。这完全取决于你对测试的看法!有可能一些公司的测试工程师做一些公司测试开发人员的工作,一些公司的测试开发人员可能做一些公司测试工程师的工作。就像我在字节跳动的时候,职称是测试工程师,工作内容是业务测试+接口测试平台开发7/3分。在阿里,也是类似的(甚至阿里的业务更重要)。对我来说,两家公司的工作内容没有区别,只是职称不同。给想转测试开发的测试工程师的建议:调整好心态,不要把注意力放在“测试开发”上,提高自己的技术能力才是重点。要养成不断学习的习惯,多接触知识,开阔视野。在业务测试过程中养成“偷懒”的习惯,多思考自动化的方法,减少人工测试工作。3.2技术巩固与应用1.编程能力必须通过考试,至少精通一门语言。最好是用该语言开发了工具或平台。一是测试开通通常需要手写代码,这是门槛。二是有开发经验可以证明你对开发语言的熟练程度。掌握至少一种开发框架。比如springboot、flask、Django、VueJS等。2.必须熟悉基本算法。建议边学边结合LeetCode练习。1快速排序算法2堆排序算法3合并排序4二分搜索算法5BFPRT(线性搜索算法)6DFS(深度优先搜索)7BFS(广度优先搜索)8Dijkstra算法9动态规划算法10朴素贝叶斯分类算法3.专长(亮点)上面说的一个道理,别人没有的,我有。在大家“本领”相同的前提下,如果你能做得更深入或者有独特的想法,那么这就是你的亮点。比如擅长性能测试,擅长效率工具开发,擅长平台建设等等。当然这个因人而异,看每个人的兴趣。4、更多运用技术手段解决业务问题。我认为这是最重要的。即使掌握了以上能力,但缺乏运用技术解决实际问题的能力,仍然是纸上谈兵。如第2节所述,测试开发工作职责需要解决复杂问题的能力。我在采访中被问得最多的问题是我为什么要做这个东西?你解决了什么问题?后面会附上面试经验分享,里面包含了所有的面试题。至于如何提高解决问题的能力,首先要善于发现问题,这就需要大家在工作中保持怀疑的态度。3.3“创新”意识不可否认,创新是少数人的专利。但这并不是说大多数人不能创新。我们可以“创新”第二次。我们可以把前人的成果应用到我们的业务中,解决一些问题。我觉得这对普通人来说已经足够了。如何保持开放的心态,建议大家多参加测试沙龙和论坛。在业界的专业测试论坛中,比如每年举办两次的MTSC会议,话题质量都相当高。基本上BAT题目就占了半壁江山。可以说,BAT选题结果是国内测试行业的发展标杆和方向(虽然BAT选题可能是别人留下来的)。另外,关注各大厂商的质量相关技术公众号,多看他们发布的文章,开阔眼界。3.4我在阿里测试公开面试题技术题分享中是否理解多线程?Python的GIL锁你了解吗?进程和线程之间的通信方式有哪些?告诉我什么是乐观锁和悲观锁?AOP什么是IOC?List和map相关解释工厂模式?是否会测试内存泄漏的性能?容量测试/稳定性测试?Python2和3的区别?DNS解释?用户名、密码、验证码使用哪个验证序列?linux根据进程查端口/linux常用命令查端口查进程?围绕工具开发的排序算法工具是如何开发的?为什么要开发这个工具?公司内部没有类似的平台吗?性能工具有哪些?有多少例子?介绍一下自研的界面自动化框架?有哪些模块?与其他框架相比有什么优势?缺点是什么?介绍框架的代码生成模块是如何实现的?使用您的框架测试接口需要采取哪些步骤?接口的断言怎么做?接口测试的好处?testng和junit做数据工具的优缺点,如何开发,能提高多少效率。大数据测试如何测试数据的准确性?算法测试算法测试是做什么的?如何进行算法评估?不同的算法类型有不同的评价标准。介绍一个最近的算法测试用例?如何选择测试集?如何选择测试集的特征?说说填空小空格识别算法的一些badcase?如何保证算法的质量?编程题词频率统计线程交替打印奇偶数最长回文子串项目经验介绍一下您负责的项目?如何保证旧系统(僵尸代码)的质量?你做过的项目中遇到的最大的风险点是什么?如何保证工程质量?如何应对紧急需求?项目如何迭代?说说最近项目推广成功的案例?说说你们的人力分配?持续集成懂CI吗?解释CI如何衡量测试用例质量?说说你对考试的理解?还是对品质的理解?团队管理团队管理有没有困难?你期望什么样的测试团队?团队的测试与开发比率是多少?如何衡量全职/外包比例?如何保证外包的忠诚度?你能给团队带来什么?为什么HR问题会跳槽?为什么选择阿里?首批收获的几家企业要问哪些问题?你是如何克服工作中最大的挑战(最大的挫折)的?最大的优点和缺点?每人说一个?未来3-5年的职业发展规划?PS:本文观点仅代表个人观点。如有不妥之处,还请多多包涵,多多指教。
