我理解的测试开发与实践总结——新人篇
写在前面: 写这篇文章的目的是为了能够更好的帮助刚入职的新人了解这个岗位和自己的工作,也想谈谈自己工作一年来对这个领域的了解程度,做一个小小总结吧~
一、我理解的测试开发
1. 首先,从岗位名字看区别:先明确一下简称,由于这几个岗位名字看着比较像,很多人都不知道这三者的区别与联系,软件开发工程师(SWE ),测试开发工程师(SWT),测试工程师(TE)。
一类是 基于业务驱动型的测试开发 。可以理解为业务测试工程师,只是具备了开发能力和质量改进思维,这类测开人员需要扎进业务中,主动挖掘业务过程中各个环节质量的薄弱点并且想办法去解决,通过流程改进、开发出得心应手的工具,让自己的测试工作能够持续高效。
一类是 基于框架平台型的测试开发 。这类型的测试开发,需要站在更高的纬度来看待产品的质量,他们会对整个研发过程或者某个大的专项去开发一些测试平台、框架,并且将这些能力以服务的形态提供给各个业务线使用,以此来保障全局内建质量。
不管是哪一类,测试开发岗位的核心仍然是“测试”,开发的目的是为了更好的服务测试,测开应该看重的是对测试的理解,以及在这个基础上设计、能开发设计帮助测试人员或者开发、运维人员提高效率并解决实际业务问题的工具。
二、测试和开发、产品的关系
在平时工作中,我们接触到最多的角色就是开发和产品,那这三者的关系是如何? 从一个产品交付流水线来看,可能有的人会简单地认为,产品、开发、测试是一个线性关系,产品评审完需求之后,开发进入开发过程,完成开发工作之后,测试开始进行测试,最后完成整个需求的上线。但是实际上,这三者之间其实是一个三角关系,产品在需求评审阶段、开发在技术评审阶段、测试在TC评审阶段都需要这三者在场,站在自己的角色视角提出相关建议,更高质量地交付产品上线。
三、测试开发需要具备的技能
1)业务理解能力 一切的测试都不能脱离业务,所以一开始进到一个组之后,首先要熟悉的就是业务,业务测试也是在我们工作中占了大比重的,所以我们需要花日积月累的时间来锻炼自己的业务理解能力。 2) 测试能力四、我们在测试过程中需要做到什么程度
其实从问题的生命周期来看,可以分为:发现问题->定位问题->解决问题->预防问题- 级别1:发现问题,提出bug让开发去定位产生问题的原因;
- 级别2:定位问题,知道出现问题的原因是什么,这个需要去查数据库、日志甚至代码来定位问题。在提bug的时候,给开发一些可能的建议,帮助开发定位到问题,这本身是测试价值的一种体现。
- 级别3:解决问题,如果测试能够解决问题,那就没开发什么事了,或者说能够更好的去协助开发去解决bug。
- 级别4:预防问题,解决问题后需要有能够预防此类问题产生的策略,更好的进行质量保障
五、我们需要具备的素质
工作了一年之久,在平时工作中也总结了一下,我觉得作为一名测试开发同学,应该是最好需要具备以下几个素质吧: 1)沟通能力 测试需要和大量的人打交道,需要很强的沟通能力,如果讲不清楚,那么工作就无法进行,而交流过程中,我们首先要组织好语言和逻辑,其次是要客观的反馈事情的真相。这个对我有点社恐的人来说其实一直是一个比较有挑战性且有趣的工作,其实一个好的人际交往的能力对工作效率也会有很大的提升。 2)细心、耐心 测试是辅助研发定位错误,帮助研发快速完成开发工作,所以我们需要非常细心去发现一些细小的错误。对于有的测试过程可能是反复枯燥的,这个需要很大的耐心。尤其是业务型测试,我们经常同样的操作步骤需要重复很多次,这也是为什么大家想用自动化来解放双手。 3)逻辑思维、分析问题 遇到问题,测试需要快速分析定位问题,并且能够复现,理清楚逻辑给到研发,尽量减少研发定位bug和反复修改的工作,这其实意味着我们需要对产品有着非常强的熟悉程度,这样才能更快速精准的定位问题所在。 4)快速学习 测试学的东西比较广泛,需要掌握的知识和技能也非常多,所以拥有快速学习的能力是至关重要的,否则就很容易被淘汰,不过好在公司有很多的知识库以及技术味浓的ATA,这其实对于一个新人来说,是一个很好的学习机会,不过有时候东西太多,也要慧眼斟酌一下。 5)责任心 测试的工作是要保证产品上线的质量,所以需要很强的责任心,这个我觉得每个岗位的工作者都需要有这样的素质,就不用多说了。 6)团队协助 测试工作会与各个人员打交道,在做好本职工作的同时,应该积极并且有意识的关注项目的进度和组内情况,要有大局观,团队利益至上,要愿意共享个人经验,同时也善于从同事那里进行学习,团队协作能力也是测试需要具备的基本素养。 7)文档编写 优秀的文档沉淀可以给自己也给后人带来福利,我一直很喜欢做文档沉淀,原因是我觉得好记性不如烂笔头(是我记性不好),有时候以文字的方式记录下来可以提醒到自己,也可以锻炼自己的总结能力,当别人有需要的时候也可以分享给别人,真是一举三得呀~六、测试工作流程及关注点有哪些
首先我们应该在需求评审阶段就需进行介入,并且在每个工作阶段,测试都需要有相应的关注点和输入输出,接下来总结一下我平时工作的测试工作流程和每个阶段测试需要做的事情吧~ 1. 需求评审阶段【关注】- 测试人员需要进行需求分析,熟悉技术实现方案、设计是否涵盖了业务需求、存在的风险,为测试分析和测试用例设计提供输入。
-
主要关注点: 架构合理性、风险评估、测试策略(手工测试or自动化测试or其它)。
- 根据需求大小判断是否测试人员测试还是开发自测(可根据情况判断是否提供冒烟测试用例)
- 根据prd编写测试用例、冒烟测试
- 编写冒烟测试用例(看项目大小而定,如果项目改造比较大,或者是新项目,建议编写,用例评审时提供给相关开发人员,冒烟测试用例通过后,正式提测)。
- 项目中测试同学需要给研发同学提供冒烟测试用例,且和前端同学达成一致,冒烟测试用例要求总用例的10%。
- 时间在原定提测时间前1-2天,根据项目大小和时间决定是否需要该环节
-
输出: 用例评审会议纪要、修改版测试用例、冒烟测试用例(给开发)
-
规范: 按照测试用例评审的冒烟测试用例由开发进行预演,若冒烟测试用例均通过,则测试接受测试,否则打回并发邮件说明冒烟测试不通过并预计下次提测时间
-
输出: 冒烟测试结果邮件(通过与否都需要发邮件,并给出预计发布时间点、风险)
- 提测后第一时间投入测试,若预演未通过,要告知风险
- 测试阶段需要提前准备好测试环境、测试用例、测试数据等;
-
测试过程中需要及时提交缺陷、跟进缺陷,bug一般采用aone进行管理,缺陷格式最好采用: 【需求名称】具体缺陷名称 ,便于后续搜索和归类;
-
业务相关咨询: PD+业务 ; 产品样式相关咨询: 产品+UED ; 开发相关咨询: 前端+后端;
aone缺陷处理规范 1. 缺陷修复后,开发同学需要fixed bug(研发) 2. 缺陷修复后,需进行对应的缺陷修复验证。(测试同学) 3. 缺陷验证通过,closed关闭缺陷前需对该缺陷对应的缺陷类型及缺陷原因进行归类。(测试同学) 4. 缺陷验证不通过,可将该缺陷reopen后继续提交开发处理。(测试同学)6. 发布预演【功能验收(可多轮)】
- 测试人员提前预定会议室,发会议邀约给相关人员
-
会议记录: 预演过程中,要记录会议摘要,哪些bug需要修复后上线,哪些bug后期再迭 代(pd+业务评估)
- 发布计划的编写人员主要是开发和测试;
-
目的: 编写测试计划,测试人员明确本次测试的重点和回归重点,开发人员明确发布应用和发布顺利,避免漏发、发布顺序搞错等原因造成线上bug,从而代码回退。
- 跟踪发布情况,可要求开发在群里同步发布节奏,发布完成后,第一时间线上验证(发布后,@pd+业务,他们可同时进行线上验收);
- 不同的业务可能有不同的发布窗口期,需要注意是否在发布窗口期,否则可能需要紧急审批;
- 由于很多线上问题都是由于变更导致的,所以再发布的时候格外注意是否有漏发的情况出现;
- 一般发布过程中有灰度观察期,这个期间可观察线上流量是否有异常出现。
七、平时常用的一些小工具和测试技巧
1)一个简单又好看的json格式化工具:
4)【 LightProxy】
可以本地mock后端返回的数据,直接通过请求名 file://文件路径的方式就可以mock数据,很方便。
1. 然后点击Console控制台选项卡
2. 然后输入: document.body.contentEditable = "true"
3. 按下回车,现在你就可以任意编辑 网页 了
写着最后 看到这篇文章的人有觉得我的理解有误的地方,也欢迎评论和探讨~