最近有不少做开发的同学和刚毕业不久的同学咨询我,都想做测试,但是基本都不太清楚测试工程师在一个公司扮演什么样的角色以及未来的职业发展方向。接下来简单说一下我的个人观点,希望对想入坑的、刚入坑的、某些HR同学有些帮助吧~~。--By 小明
一.测试工程师在一个公司扮演的基本角色是怎样的?
先说一下理想中的业务流程:1.需求评审会。首先产品经理通过一系列的数据分析,灵感激发,用户调研,想出一系列的需求,然后整理成PRD(产品需求文档),以及做出原型。确立之后,产品经理号召开发人员,测试人员以及相关设计人员开一个需求评审会,会议中逐条讨论每一个需求的具体功能以及实现方案,设计、开发、测试同学从各自角度给出合理化建议,比如一个简单的功能,没必要用复杂的逻辑去实现;一个非关键性功能的引入是否会增加现在app的负载,影响性能等。确立好所有需求后,产品及时整理更新相关文档以及原型供设计、开发和测试人员参考使用。
2.下面将会是设计同学去设计图片资源,开发同学去开发相关需求。此时测试同学需要根据需求文档以及原型编写和设计测试用例(不知道测试用例是啥的请自行百度),一套叫每个人都能看懂的测试用例才是好用例。个人感觉写好一套测试用例会对以后的测试回归以及公司新人去了解app或者程序有很大的帮助。、
3.测试用例编写设计完毕之后会与产品经理和开发同学开测试用例评审会,讨论测试用例设计的合理性以及测试难易度复杂度。当然,这一步的话某些刚发展起来的或者需求量不断的公司都会省略,用节省下来的时间和人力成本去对接更多的需求,测试更多的需求以确保更多的新功能可以上线,但是这样多少会降低产品的质量或者用户体验,嗯,某些公司觉得这种牺牲是可接受的。有些人会想,开发在开发新功能,你测试用例也写完了,这时候你很轻松啊,还可以学习点新知识突破一下自己-,-。错了,某些公司的需求是源源不断的,开发同学把一个版本给你提测之后,你介入测试,他们开始开发下一版功能了,当你测试上一版需求,这一版开发完了又提测了。
4.接下来这一步是工作量最大的一步,是什么呢?没错,就是一个字“测”。根据之前设计好的测试用例,逐条测试。测试过程中出现bug需要提交到bug管理平台,说明bug的期望结果,实际结果以及复现步骤,标出bug的优先级等等信息,当然信息越全越好,这样开发同学可以快速定位问题,开发同学收到bug邮件后会进行bug的修复,修复之后会更改bug在用例管理平台中的状态,如“已修复”、“设计缺陷,不予改正”等。如果是已修复bug你需要待开发提交代码,你在打包平台上重新打包验证你所报告的问题;若提到了设计缺陷,这可能是开发同学觉得这不是需求文档中的功能,这时候你需要跟产品沟通确认需求。测试过程中常用的几个工具有抓包工具如Charles、fiddler等,数据库操作Navicat等数据库可视化工具。这些工具是帮助你去定位bug在哪块出现的问题,比如是客户端的问题还是接口返回的数据就不对,是服务的问题等。如果公司正规的话那么恭喜你,你可以看到结构明朗的接口文档以及数据库文档,这回给你节省大量的时间去定位问题,操作数据库等。如果这些都没有,那么你只能自己去问开发,口头沟通去把,嗯也许你问的时候他还在忙着写代码-,-一个程序员在敲代码的时候都不希望被打断思路,之后你该怎么做自己想把。。。
5.通过在测试环境的“摸爬滚打”,修复了预期存在着的bug,无论是客户端还是服务都达到了需求中的状态,此时可以邮件给产品,告知测试环境测试通过,可以申请线上的回归测试,等待服务部署到灰度或者线上后,可以进行一系列的回归测试,尤其回归之前出现的bug,将风险降到最低。最终线上环境功能正常后,那么你就又了解了一桩需求,那是你最释怀的时候,可以听听小歌,打把王者荣耀开心2分钟哦~之后就等着发版把,发版之后在线上再回归一下就OK了。以上几点差不多是一个刚入门的测试同学应该了解在公司中扮演的角色。
二.测试过程中所用到的管理平台和工具有哪些?
1.bug管理工具,这个平台很多,都是基于web的,基本功能全是类似的,无非是对bug进行跟踪定位,如禅道,mantis,readmine等,你会用一个,别的基本无压力了就。
2.项目管理工具,同上,平台也很多,会一个就好如readmine,trello等。
3.测试用例管理平台,其实最重要的是要会设计用例,而不是使用平台。平台有很多如禅道,testlink等。
4.抓包工具,这个是使用量最多的一个工具,比较好用的有Charles和Fiddler,原理都一样,同时也可以作为Mock测试使用,-,-不懂Mock测试的自行百度。
5.数据库操作可视化如:Navicat。要熟悉数据库的基本操作,最基础的增删改查得会把。
到此为止的话,你作为一个功能测试的话,把以上用熟用透基本就够用了,接下来说下未来职业的发展以及可能所涉及到的更多的工具。
三.测试工程师的职业发展方向有哪几类?
1.功能测试,也叫黑盒,无需掌握代码能力,只要将以上东西吃透就可以了,如果在金融公司或者业务负责度较高的公司,做久了你你可能对其中的业务逻辑了解的很透彻,未来可以做资深测试工程师。
2.自动化测试工程师,这个分几类,①UI自动化 ②接口自动化③性能自动化。
其中UI自动化是投入产出比最低的一个,因为公司都会有大量的功能测试,而且一些体验性功能是无法用UI自动化去简单断言的,所以这个要等到你的团队或者公司规模达到一定时候才可能去做的一个事情,简单讲,前期做的话无非就是花大量时间去做手动点击下就能解决的问题。涉及到的框架有Robotium、MonkeyRunner、Robotframework+appium以及python直接驱动appium;其中定位元素是UI自动化的关键,定位元素的工UI Automator,这个当然得需要你对安卓的布局有所了解以及xpath的定位方法,初学者建议robotframework+appium这套,易上手。当然了,每个公司可能都会用自己的框架,他们也有对框架自己的理解或者适合哪种框架。
接口自动化是一个投入产出比相对较高的一类,因为可以花费较短的时间集中对大量的接口进行测试,可以大大的节省人力成本,也是很多公司现在主要在去做的一件事情,涉及到的工具有Jmeter、Postman或者Robotframework,各有特点,Jmeter可以适合做接口性能测试,因为里面会有一些接口传递过程的具体数据如响应时间等;Postman比较轻量级了,简单的断言,就是对接口的是否正确性做判断;会问了咋又出现了Robotframework,没错,他的原理比较特殊,是借用各种已经封装好的library库,直接用关键字调用库中方法做驱动,因此只要加入了做接口测试用的库,就可以对接口进行自动化测试,当然他也可以做UI自动化,因此是多样性好。这三种都同时可以借用Jenkins部署自动化,可以集成自动化。
性能自动化也是一个投入产出比相对较高的一类,通过监控测试或者负载测试等等,对app或者程序进行监控数据或者压力测试,通过对数据的收集分析出性能的优劣,主要会涉及大的工具可能有:LoadRunner,Jmeter,Instruments(ios)以及Emmagee(安卓),后两者基本都是通过对内存、cpu、网路流量、电量以及安装启动跳转的响应时间做实时监控,然后分析数据,给出合理化结论。
3.测试开发工程师
我个人理解的测试开发是这样的,他需要比较强的代码能力,会开发其他好用、趁手的工具来提高工作效率,比如数据自动生成、报表自动生成、报bug工具等。与自动化测试合作优化测试框架,提高框架执行case的效率等。然后具有Review代码的能力,可以做白盒测试。
4.专项测试工程师
对某个领域有自己的专长测试,比如sdk测试,安全测试,兼容性测试等,目前还没遇到过这种类型的人才,我就不做过多描述了,哈哈因为我也不属于专项测试。别给大家往错误的道上引导。
5.Leader
走管理,需要做的是你个人的综合实力的提升以及管理经验。需要怎么做还得看你自己喽~
以上就是测试工程师未来可能会迈向的几个方向吧,选择好自己的方向,为自己的职业规划确立好最初的目标,希望能帮助到刚入坑或者要入坑的新人们~
我就是个做了半年Android开发,2年多测试的测试小菜鸟,身体不适在家写的一点这些年来对测试的一些浅谈,希望能帮助到需要帮助的人,纯手打,不喜勿喷,因为玻璃心,易破碎!~~
Thanks,ming~