lsekfe 发表于 2016-7-18 13:55:54

成为一个优秀的测试工程师需要具备哪些知识和经验?

作者:钱蓓蕾
链接:https://www.zhihu.com/question/39085335/answer/107278436
来源:知乎

根据我的观察,优秀的测试人员可以做的事情可以包括如下3点:

[*]由单纯的测试变成项目质量保证工作
[*]持续集成探索和推动和自动化测试技术研究
[*]测试相关工具的开发

1、我们先来讲第一点,由单纯的测试变成项目质量保证工作

测试,从狭义的角度来讲,包括如下这些环节:
测试计划和测试用例编写-测试执行-质量报告书写
测试人员一般会在开发阶段就进行测试计划和测试用例的编写和准备工作;在测试阶段,我们一般先会做功能测试,等项目功能基本稳定,bug较少了,就开始做兼容性测试、性能测试、安全性测试。兼容性测试保证了产品在多浏览器、APP在产品在不同机型下的兼容性;性能测试保证了产品在海量用户大流量下的服务能力;安全测试能发现产品可能会被攻击的各个隐患。做完了这些测试以后,人员发布质量报告,产品上线。

不过,优秀的测试人员需要向上游和下游拓展测试的领域,把自己放在“质量保障”的角色上,推动整个项目组一起保证质量,上游的工作包括:

[*]在产品刚立项、进行需求确认的时候,测试人员就会参与进去,仔细地Review需求,看需求是不是完整、有没有漏洞,这个时候还没有进入正式开发,修改需求对于项目组来说代价是最少的。在这个环节,测试人员凭借缜密的推演、发散性的思维,往往能发现很多需求的漏洞,提高了项目的整体效率。
[*]另外,测试人员在完成测试计划、测试用例以后,会邀请开发、策划一起来评审测试用例,在这个环节,由于测试人员把每个需求如何细化测试都体现在了用例里面,就相当于再次把需求分析了个透,往往还能发现很多需求的漏洞。这也是提早发现需求漏洞的有效环节。
下游的工作包括:

[*]在产品完成了测试以后,就是发布的环节了,测试人员在发布的环节也能发挥作用,首先,测试人员为了部署测试环境,研究自动化部署的技术,可以把上线部署的环节也自动化,以前需要2个小时的部署环节压缩到半个小时甚至更少,而且更佳准确可靠。
[*]如果有些版本修改比较多,上线的质量风险大,测试人员会跟产品一起制定灰度发布的方案并在技术上进行实现,让版本先面向一小部分用户开放,如果发现Bug了,影响的用户也比较小,Bug改掉以后,再逐渐扩大用户范围。
另外,优秀的测试人员还会发动项目组的其他人一起来保证项目质量,比如推动开发进行代码Review;引入冒烟自测流程,让开发先自测以后再提交给测试做冒烟测试;通过在项目组分析Bug,让开发提高自测,降低Bug数量等;引入策划、交互、视觉在测试阶段进行走查,等等各种措施。

2、持续集成探索和自动化测试技术研究

业界都在说持续集成,那持续集成究竟是个什么鬼呢?

持续集成原本的意思是让开发每提交一次代码就自动化测试一次,如果自动化测试发现问题了,测试用例就会失败,开发就会马上发现这个失败,并修改代码。

要做到持续集成可有很多工作要做。

[*]首先就是编译环节,要把所有编译的环节都自动化起来,开发每次提交代码都能进行自动编译;
[*]编译完成后,就是静态代码检查的环节,通过静态代码检查的工具检查代码的问题,比如,数据库连接池没有释放,数组越界等。
[*]静态代码检查完成后,就是单元测试了,单元测试用例一般是开发人员或者测试人员编写,或者开发和测试合作编写,保证的是开发内部函数的正确性。一个健康的自动化测试方案中,单元测试用例的占比是最高的。
[*]然后就是接口测试,一般保证的是后端开发提供给前端开发的HTTP接口测试,接口一般也比较稳定,用例比较容易维护,所以,接口测试的占比也比较高。
[*]在接口测试的上层就是针对用户界面的UI测试了,就像测试人员手工执行一样,UI自动化测试能操作页面的元素,完成自动化。不过,由于用户界面常常要重构,所以我们常常会控制UI自动化测试的规模,只覆盖主干的用例。
优秀的测试人员可以把自己的工作尽量自动化,并用持续集成框架串起来,提高工作效率和质量。

3、测试相关工具的开发
优秀的测试人员会开发其他好用、趁手的工具来提高工作效率,比如数据自动生成、报表自动生成、报bug工具等。

其实归根结底就是一句话:测试人员最核心的工作就是保障项目的质量,各类测试流程、技术、工具和平台的发展让我们可以更好地保证项目的质量。


lsekfe 发表于 2016-7-18 13:59:33

我认为成为优秀的软件测试最核心的是为你所负发布的版本负责。
1.在测试开始之前,一定要明白整个产品的业务逻辑,核心的用户故事,用户的操作,而这样的操作到底会对系统带来什么样的影响。最好是把自己当做使用这个系统的人,才会理解系统。
2.在测试中,明白测试的责任并不是提bug,也不是在意这些bug研发到底解决与否,只要研发给解决时限和解决方案,发给产品,研发,上级领导确认即可。这样会大程度的避免与开发的矛盾。其实测试的核心任务并不是提bug,而是模拟用户的各种常用的场景。一定要明白后端存储,系统与系统之间的交互,日志记录,数据库每个字段的变化。
3.版本发布之后,注意发布版本之后系统变化,所修复的bug到底生效没,核心流程受影响没,不要版本发布了就离开。如果用户反馈bug,不要把事情丢给研发或者运维,版本经你手发布出去,要为发布的版本负责,极力复现用户使用场景,督促研发修改,运维发布,直至最终问题被解决。有bug其实是很正常的事情,测试担当责任无可厚非,但是最终要的是解决客户的问题。

lsekfe 发表于 2016-7-18 13:59:18

说下知识方面吧,首先计算机基础一定要好!计算机基础一定要好!计算机基础一定要好!
主要几个方面一定要有一定的深刻理解:
1.计算机网络方面:tcp/ip,通信协议(http,soap等)
2.操作系统:Linux,如果是移动端也要看下相关知识,学好Linux其他系统学起来会很快
3.编程语言:不要求你像开发那样多熟练掌握,但最起码编程思想、python等脚本语言要掌握
不要信什么掌握自动化工具或性能测试工具就能高薪就业,工具只是辅助而已,重要的是计算机基础知识和你的测试思路,懂原理才能进行更好的测试,否则测出问题一是不好排查,二是测试数据的真实性有可能都说服不了自己,就不要怪开发看测试报告鄙视你了。
另外,测试基础一定要熟练掌握,最起码做到实际工作中可以随意运用的程度,这方面建议报考下国家软考的中级测试工程师考试,这证没啥用,但学习下来对软件测试的系统理解会有很大提升。
再者多多参加线下沙龙,关注行业动态,多和同行交流,不要一问自动化就qtp,一问性能测试久loadrunner

作者:joy some

seagull1985 发表于 2016-7-18 14:15:55

根据我的观察,优秀的测试人员可以做的事情可以包括如下3点:
由单纯的测试变成项目质量保证工作
持续集成探索和推动和自动化测试技术研究
测试相关工具的开发

这三点总结得通俗易懂,顶。。。。。。个人非常认同。

jingzizx 发表于 2016-7-18 14:53:04

总结的太好了,值得每一个测试人员学习和思考

雨天的月亮 发表于 2020-10-19 10:24:54

lsekfe 发表于 2016-7-18 13:59
我认为成为优秀的软件测试最核心的是为你所负发布的版本负责。
1.在测试开始之前,一定要明白整个产品的业 ...

说得好

Miss_love 发表于 2020-12-30 13:45:02

支持分享
页: [1]
查看完整版本: 成为一个优秀的测试工程师需要具备哪些知识和经验?