一个2.75年测试开发的成长经验

在这里插入图片描述

一、之前

计算机专业出身的我,在2017年秋招的时候,需要做一个选择。这是离开校园对人生做出的第一个选择,“是做开发?”“是做产品?”“是做其他的?”。当时这个选择困扰了我很久,我是一个期望接触更多业务形态,扩展自己的视野和见解的人。

偶然,我发现了这个测试/测试开发岗位,还记得当时看着各个测试开发的经验贴,想到本科做课程设计,一看到同学的输出bug就能定位到问题原因的那个自己,觉得自己有独特的天赋,而且我向往那个测试需要有着独特的“大局观”。

这,不就是自己期待的岗位吗?

决定了自己的方向,放弃了之前所有投递的开发岗位,用一晚的时间啃完了一本《软件测试教程》,开启了我测试开发的求职之路。

2017年9月,搜狗选择了我,2017年10月,我选择了搜狗。

二、开始

2018年1月,毕业后1周,我入职了。

1、自动化

入职后,我的leader考虑到我的兴趣,结合我自己对岗位没有明确的认识,带领我的“小师傅”给我了一个自动化的项目,Python+unittest+Jenkins+SVN,做了一个对线上接口的自动化监控。每天报告里面看到自己补充的200+个接口的运行结果,工作的成就感、热情也从此而来。这是我的自动化入门,也是我给测试开发的第一个标签: 自动化。

2、问题定位

我入职的这天,还有一个巧合:我们项目正式发布1.0版本,是项目的线上诞生日。一个只在校园中做过小系统的测试开发新手,对整个项目的把控是迷茫的,我不知道从何入手,不知道我能做什么。

这时候leader和“小师傅”安排我从客户端入手,跟着组内的同学开始做客户端需求。这时候我遇到了我的第一个大挑战: “这里有bug,但是原因是什么呢?”这个问题应该是所有测试同学入门都会面临的问题:如何定位bug/问题。组内的同学一步步帮助了我,我学会了如何定位问题出现在客户端,还是前端,还是服务端。随着逐步的业务理解深入、测试深入,我还学会了如何定位问题所在的代码行,甚至有几次因为开发同学没时间修改,自己直接上手改代码。

这是我给测试开发的第二个标签: 问题定位。

3、时间管理

之后,我又遇到了陆陆续续的小问题,设计测试用例的熟练度不足,功能-子功能-检查点-影响因素的结构始终不会归纳,写用例的时间预估永远不足;测试过程中,用例执行逐条执行,不会合并执行,浪费时间;组内、项目工作不会协调,工时不够用;无法频繁切换任务……无论如何,工作时间都不够自己完成任务,就咨询组内同学、自己学习GTD(Getting Things Done),逐步学会了合理安排任务、动脑执行任务,管理自己的工作时间。这是我给测试开发的第三个标签: 时间管理。

4、效率提升

我工作半年后遇到了一个大挑战。因为各种原因,我需要几乎是独立完成一个新产品线1.0的前端、后端测试。印象十分深刻,这个版本的测试持续了近3个月。项目过程中,我遇到了测试数据构造、删除时执行SQL脚本效率低下的问题,依赖我最擅长的桌面开发能力,3天的时间用Java+Swing“撸出了”我们测试小组的第一个工具,这个工具至今都是频繁使用,给组内同学的测试效率带来极大提升。这一次经历,让我学会了使用技术手段改进/提升测试保证质量的效率。这是我给测试开发的第四个标签: 效率提升。

三、转折

4、协作推进

项目测试完毕后,这还只是一个阶段。它还要依托公司的另一个业务跟我们配合,跨团队协作的项目,中间结点的问题频繁发生。因为节点路径又多又长,经常阻塞最下游的我们进行测试。当时这个问题,我努力定位到了最可能发生问题的两个节点,同步给项目组,同步给整个链路的各个合作团队。所有团队的人在一起,此时已经有了问题定位的大概节点,便快速解决了问题。这是我给测试开发的第五个标签: 协作推进。

5、学习&实践

之后的我在“开发”层面遇到了新的问题,团队2019年年度的目标定在测试质量左移,其中一部分依托于我需要做的主流程自动化。

第一次做自动化无从下手的我,调研了一些框架,最终结合项目链路分支少的特点,选择了自己二次封装Appium,搭建了一个客户端层面的自动化框架,还调研了一些封装了unittest的包,给我们的框架增加了更多可能性。在组内同学的配合下,我们完成了客户端主流程95%以上的覆盖。这是我给测试开发的第六个标签: 学习&实践。

2019年,我对测试开发这个岗位有了更深刻的认识:测试开发的职责是测试,目标是质量,技术是手段。这一年自己写了几十个脚本,根据项目&组内中暴露的问题改进了多个流程,定位了近百个各类问题并推进解决。这一年,获得了项目组各团队的专业度认可、也获得了的荣誉。

在这里插入图片描述

四、现在

2020年,开头就注定了这是有挑战的一年。“小师傅”从我们项目离开了,团队交到了我的手里。深刻记得产品leader、开发leader、我的leader在我刚接手小组说的很多话、给我的指导;“质量、效率、深入”这三个词会铭刻在我未来测试开发职业的道路上。从此,多了一份对组内成员的责任,多了一份对项目整体测试质量的责任,多了一份协调推进的责任,多了一些测试开发体系化的想法和概念。

这时候,我感觉好像体会到了测试/测试开发的“大局观”。

7、思考&总结

2020年也到了年末,我还想说我给测试开发的第七个标签: 思考&总结。

做项目、做测试改进的两年半多实践,给我最大成长的就是思考,刚入职的我不会表达自己的想法、不能细致全面地考虑问题,测试开发经历让我学会了如何思考。另外,每一次的问题总结、项目复盘总结,组内问题的个人/小组总结等,也让我们有了更明确的目标和方向。

写在最后

这2年9个月:

  • 学会了用例设计
  • 做了接口自动化
  • 搭建了客户端自动化框架
  • 开发了多个测试工具
  • 编写了几十个测试脚本
  • 创建了测试组的Git、WiKi
  • 提交了700多个bug
  • 定位且解决了上百个各类问题
  • 探索并推进了质量左移、右移的方案
  • ……

测试/测试开发在很多技术同学眼里,是最不能选的路,因为门槛低反而被认为“没前途”。在我看来,是因为他们看不懂,看不明白,我认为测试/测试开发的上限是所有技术岗位里最高的。

引用我在测试开发领域最佩服的大牛的一句话作为结尾—“探索一个软件工程师的无限可能”。

另外,欢迎加入软件测试技术交流群 313782132 ~进群可领取免费软件测试资料以及群内测试大牛解惑!

测试工程师职业发展路线图

功能测试 — 接口测试 — 自动化测试 — 测试开发 — 测试架构师

加油吧,测试人!如果你需要提升规划,那就行动吧,在路上总比在起点观望的要好。事必有法,然后有成。

资源不错就给个推荐吧~

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面我将基于 Vue.js 和 Three.js 实现一个简单的 demo,用于展示如何结合使用这两个库开发可视化项目。 首先,你需要安装 Vue.js 和 Three.js。你可以使用以下命令来安装它们: ``` npm install vue three --save ``` 接下来,在 Vue.js 应用程序中创建一个组件,用于渲染 Three.js 场景。以下是一个简单的组件代码: ```vue <template> <div ref="renderer"></div> </template> <script> import * as THREE from 'three'; export default { name: 'ThreeScene', data() { return { width: 800, height: 600, scene: null, camera: null, renderer: null, cube: null, } }, mounted() { // 创建 Three.js 场景 this.scene = new THREE.Scene(); // 创建 Three.js 相机 this.camera = new THREE.PerspectiveCamera( 75, // 视角 this.width / this.height, // 宽高比 0.1, // 近处平面 1000 // 远处平面 ); // 创建 Three.js 渲染器 this.renderer = new THREE.WebGLRenderer(); // 设置渲染器大小 this.renderer.setSize(this.width, this.height); // 将渲染器添加到 HTML 元素中 this.$refs.renderer.appendChild(this.renderer.domElement); // 创建一个立方体 const geometry = new THREE.BoxGeometry(1, 1, 1); const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 }); this.cube = new THREE.Mesh(geometry, material); // 将立方体添加到场景中 this.scene.add(this.cube); // 设置相机位置 this.camera.position.z = 5; // 渲染 Three.js 场景 const render = () => { this.renderer.render(this.scene, this.camera); requestAnimationFrame(render); } requestAnimationFrame(render); } } </script> ``` 上面的代码创建了一个 Three.js 场景,添加了一个立方体到场景中,并通过 requestAnimationFrame() 方法实现了场景的渲染。在组件的 mounted 钩子中,我们创建了 Three.js 场景、相机、渲染器,并将它们添加到 HTML 元素中。然后,我们创建了一个立方体,将其添加到场景中,并设置相机的位置。最后,我们使用 requestAnimationFrame() 方法渲染场景。 接下来,你可以在 Vue.js 应用程序中使用这个组件,例如: ```vue <template> <div> <three-scene></three-scene> </div> </template> <script> import ThreeScene from './components/ThreeScene.vue'; export default { name: 'App', components: { ThreeScene, }, } </script> ``` 这样,你就可以在 Vue.js 应用程序中使用 Three.js 创建一个简单的可视化场景了。当你运行这个应用程序时,将会看到一个绿色的立方体在屏幕上旋转。你可以尝试修改代码,添加更多的 Three.js 物体和动画,实现更复杂的可视化场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值