测试在IT行业各岗位中来说,相对入门的门槛比较低。初级测试工程师,对技术要求不高,只要了解了一定的业务知识,会熟练使用电脑和常用软件,就可以开始从事软件测试工作。但要想把测试做好,则没那么简单,需要综合素质非常高。比如:沟通表达能力、技术能力、逻辑思维能力、业务分析能力等等。
结合自己12年的测试经验,总结了一下要想做好测试,需要具备的一些能力。当然,这些能力很多我也都还没达到,但这些确实是成为一个优秀的测试工程师,必须具备的能力。测试管理人员也不例外,所有的管理人员,同时也要具备突出的一线工作的能力,而不是说做到管理岗,就脱离一线工作了。
业务分析能力。
分析业务需求文档。
系统始终是为业务服务的,系统只是实现业务需求的工具。所以,了解和熟悉业务需求,是测试开始的前提。
分析系统业务流程。
不了解系统业务流程,是无法执行测试的,也会导致测试功能点遗漏。
分析测试业务数据。
了解整个业务系统里的基础数据、业务数据有哪些。哪些是配置实现的,哪些是自己操作系统生成的,哪些需要模拟真实数据,哪些可以随便录入假数据。
明白整个系统的数据库结构,知道哪一个数据是从哪个表里带出来的,不同表之间的数据逻辑关系如何。前台业务流和后台数据流如何匹配。
分析被测试的功能模块。
整个系统有哪些功能模块,每个功能模块实现怎么样的业务功能,不同功能模块之间的逻辑关系。
分析测试完成的目标。
我的功能测试目标是什么?我的性能测试目标是什么?
性能目标,比如我要达到并发5000人的时候,CPU占用率不能高于70%,内存占用率不能高于60%,响应时间不能超过5秒。
功能目标,比如整体的业务流程都跑通,所有的分支流程都没有问题,所有的接口都能够互相调用,整体的UI界面没有问题,兼容性没有问题等。
把这些问题都弄清楚了,测试的思路会非常的清晰。
发现问题能力。
一般问题发现的能力
至少要满足按照需求文档、测试用例发现一般问题的能力,这个是最基本的,如果连最简单的一般问题都发现不了,则连最基本的测试工程师要求都没打到。
隐性问题发现的能力
在测试过程中,有一些缺陷藏的比较深,有的是性能方面的问题,有的是功能方面的问题,它需要有一些设定特定的条件的情况下才会出现这样的问题。这样的问题的发现能力一定要比别人更强,要找到一些别人可能发现不了的bug。
关联问题发现的能力
当发现了一个缺陷之后,能够想到通过这个缺陷可能会引发其他哪个地方出现问题,这就叫做连带的问题。而不是说发现这一个bug之后提了这一个就算完了,一定要有一个察觉,可能其他地方也存在这样的问题。
发现问题隐患的能力
有些系统里边可能有一些功能模块,或者是接口,表面上没有什么问题,但是它是有隐患的,比如说这个接口写的不稳定,当他传的数据有一些问题的时候,可能它最后返回的结果就是报错等。
尽早发现问题的能力
经常有开发人员对测试人员抱怨,为什么不早点报BUG。所以测试的时候要能分清主次,分析出重点,尽早发现主要问题。降低版本临近封板了,还发生比较大的变动的风险。
发现问题根源的能力
要知道这个BUG它到底是由什么原因产生的,是属于什么类型的缺陷,是前端逻辑的问题,还是后台数据存储的问题?
不仅发现BUG,还要知道这个BUG产生的原因,甚至提出解决方案,这样的测试人员是非常棒的,而且很受人尊敬和信任。
团队合作能力。
合理进行人员分工
合理的进行人员分工是提高效率的重要保证。
协助同事解决问题
如果其他同事碰到问题,或者说测试再赶进度,协助其他同事解决问题就显得比较重要和关键。
配合完成测试任务
一个项目里边的人员分工,各自任务都是不一样的,这就是咱们说的配合。你的东西做完了,要轮到我了,我的性能测完了之后该轮到你了,所以整个的一个流程下来之后,大家应该是各司其职,配合得非常紧密的一个过程。
配合开发重现问题
测试给开发提BUG,开发修改BUG,大家的目的都是一样的,就是让系统变得更好。另外,有时候我们记录的问题确实存在描述不清,让别人看不懂的情况。就更有义务配合开发重现问题了。
督促项目整体进度
既然是一个团队协作的过程,就一定要互相的去督促对方,包括督促开发去改BUG,因为开发人员他们有时候工作很忙,他们不知道要先改哪些问题,要后改哪些问题,但是往往有一些缺陷,它影响了测试的这个时间,影响了测试的进度,那么这个时候就需要测试员去督促开发人员,让他尽快的去解决你棘手的问题。这个东西能够提高咱们的测试效率。
出现问题勇于承担
自己测试出现疏忽,就要勇于承担责任。有担当的人才能更让人信任,才有更好的发展。
测试技术能力。
掌握测试基础知识
基础知识是我们开展测试的基础,基础掌握了,才能更有效的向上提高和发展。测试理论可以更好的指导我们的测试工作。让我们的测试工作更专业,降低产品质量风险。
熟练使用测试工具
掌握各种常用功能、性能、接口测试的小工具。熟悉工具和熟练使用工具完全是两个概念,熟悉工具基本上等同于不会,遇到过很多简历上写会使用什么什么工具,都没有实际能力。比如loadrunner只会一个简单的录制,增强一下脚本,觉得会用了,那知识会用了1/5,其他4/5 都不会。
了解工具操作原理
工具是用什么样的方式给服务器发送请求,是用什么样方式监控系统运行,把这些问题搞清楚,有助于我们更好的使用这些工具,包括一些请求协议,每个协议代表什么意思,适用于哪种系统和测试场景。
自主完成测试任务
一定要能够自己完成一个独立的内容,独立的工作,这件事情领导你交给我好了,放心我能给你搞定,要的是这样的人。
找出问题出现的原因
找出缺陷的时候,不仅要看它的表面,还要看它的本质。
提出问题解决方案
发现问题不是能力,发现问题并提出解决方案才是真的能力。
提供完整的各种测试文档
测试计划、测试方案、测试报告等测试文档,比较考验测试基本功。测试文档能够说明你表达的清不清楚?领导能不能看懂?还有就是能不能够把你整个测试的过程给它梳理得非常详细,人家能够通过你的文档,能够了解到整个的项目的情况,而不是只了解一个片面的情况。
了解相关技术领域
触类旁通,知识面越广,对测试越有帮助。
逻辑思维能力。
判断逻辑的正确性
大家笔试时都做过逻辑题,逻辑题能够分析出来一个人的思维有没有?活跃不活跃?还有思考问题的维度、包括想问题的全面性,都能考察出来。
我们测试时,如果功能实现的基础业务逻辑都错了,没有实现正确的话,那整个业务也就不用再测试了,继续也是在错误的基础上测试,没有意义。以后还需要重新在测试一遍。
对可行性逻辑分析
要去测试一个系统的逻辑的时候,一定要先思考这一个业务流程可能涉及那些逻辑,这些逻辑哪些是可行的,哪些是不可行的。有些是正向逻辑,有些是逆向逻辑,都要考虑全面,而不是说只把正向逻辑测试全面了,逆向不考虑。其实往往最容易出错的,恰恰是逆向逻辑。
用思维导图梳理思路
思维导图是一个非常好用的工具,功能够让你更清晰地梳理思路,更有效的进行测试。
站在客户角度思考
做测试的时候,不要仅仅站在测试人员的角度上考虑问题,对系统进行测试。系统最终是要提供给用户使用的,要站在用户角度,替用户考虑。
问题解决能力。
技术上的能力
要把自己的个人能力提升起来,多跟别人请教,多注重自我学习,长期学习,多去自己想办法解决问题。
工作中的问题
在任何一家公司工作,肯定会遇到一些工作中不愉快的事情,不可能什么事情都会让你很顺心。所以要去处理好这些事,不要因为这些不愉快影响你后续的工作,也不要把工作上不愉快的事带到生活上。尽可能的去跟别人沟通、去解决。
同事间的问题
在工作当中,经常需要更开发人员沟通、跟需求人员沟通、跟运维人员沟通、跟客户沟通等,和不同岗位的人员沟通,需要用不同的沟通方式。
领导的问题
如果你觉得你的领导某些工作方法不好,或者对领导有一些好的建议,不要和其他同事去抱怨好吐槽领导坏话,这样不能解决问题。领导需要的是解决问题的人,而不是制造问题的人。建议直接和领导沟通,把自己的想法谈成的谈出来。绝大部分领导,都还是挺通情达理的。
沟通表达能力。
和开发人员的沟通
跟开发人员阐述问题时要简明明了,清晰易懂。当发现严重问题时,也不要大惊小怪,要协助开发人员尽快解决问题。而不是漠不关心或嘲讽,炫耀自己发现问题的能力。
和需求人员的沟通
对业务需求有不确认的地方,要及时和需求人员沟通确认。以需求人员的结论为主,切忌一切都听开发的,或以开发的“二手需求”、“代码实现”为准。
和客户的沟通
和客户沟通,首先要体现尊重,其次是注意规范和要提前做准备。例如:发邮件没主题、要沟通的事表达不清楚等,会给客户很不专业的感觉,从而降低信任度。
和上级领导的沟通
和领导沟通要有大局观,不能只考虑自己的情况。并且与领导沟通时,尽量直奔主题,不要拐弯抹角。当与领导意见不一致时,也不要直接反驳,应该先给予认可,再阐述自己的想法。让别人把话说完,不打断,是沟通中最基本的素质。
在集体会议中的沟通
在集体会议中,不要一味的突出自己的个人能力,不要当话痨,也不要默默无闻,要适当的提出一些自己的见解,有助于让大家更加重视你的存在。切记不要在多人会议中,去指责别人和推卸问题。都是一起工作的同事,都要面子的。
和下级员工的沟通
与下级沟通时不要摆高姿态,应该更多的为下级解决问题。服务好其他的同事,才能更好的产生凝聚力。你之所以是领导,是因为有下级兄弟们的帮衬。职位的高低,只是工作分工的不同而已,切不可有盲目的优越感。
测试管理能力。
控制测试时间
测试周期的时间控制,应当采取多种方法去衡量,例如人员能力,人员数量,项目复杂程度,同类项目的测试经验等多方面去衡量。
控制测试成本
成本指的是人力成本和时间成本。要找到资源投入和测试效果的一个平衡点。绝大部分项目,都要做到项目收入能覆盖成本支出。
制定测试计划
测试计划是一个项目的核心关键,它的存在是为了让项目过程有据可查,指导整个项目进程。所以测试计划的制定,一定要切合实际情况,经过思考和衡量。并注意项目情况发生变化,测试计划也要及时变更和调整。
控制员工情绪
员工的情绪可以直接影响测试进度跟测试的质量,当有员工出现思想问题时,应当及时沟通,采取一些必要的措施去解决问题,而不能装看不见。
进行风险评估
任何项目在进行期间都存在许多潜在的风险,例如,人员离职,生病请假,需求变更等。应当提前做出相应的解决方案,以免到时候手忙脚乱。“居安思危”,在项目管理中同样重要。
控制测试方向
测试的方向是指测试的目标和测试的范围,很多项目的测试是有针对性的,例如性能测试,所以在测试中,一定要随时清楚测试的目标和目的是什么,以免把时间浪费在无关紧要的业务上。
结合自己12年的测试经验,总结了一下要想做好测试,需要具备的一些能力。当然,这些能力很多我也都还没达到,但这些确实是成为一个优秀的测试工程师,必须具备的能力。测试管理人员也不例外,所有的管理人员,同时也要具备突出的一线工作的能力,而不是说做到管理岗,就脱离一线工作了。
业务分析能力。
分析业务需求文档。
系统始终是为业务服务的,系统只是实现业务需求的工具。所以,了解和熟悉业务需求,是测试开始的前提。
分析系统业务流程。
不了解系统业务流程,是无法执行测试的,也会导致测试功能点遗漏。
分析测试业务数据。
了解整个业务系统里的基础数据、业务数据有哪些。哪些是配置实现的,哪些是自己操作系统生成的,哪些需要模拟真实数据,哪些可以随便录入假数据。
明白整个系统的数据库结构,知道哪一个数据是从哪个表里带出来的,不同表之间的数据逻辑关系如何。前台业务流和后台数据流如何匹配。
分析被测试的功能模块。
整个系统有哪些功能模块,每个功能模块实现怎么样的业务功能,不同功能模块之间的逻辑关系。
分析测试完成的目标。
我的功能测试目标是什么?我的性能测试目标是什么?
性能目标,比如我要达到并发5000人的时候,CPU占用率不能高于70%,内存占用率不能高于60%,响应时间不能超过5秒。
功能目标,比如整体的业务流程都跑通,所有的分支流程都没有问题,所有的接口都能够互相调用,整体的UI界面没有问题,兼容性没有问题等。
把这些问题都弄清楚了,测试的思路会非常的清晰。
发现问题能力。
一般问题发现的能力
至少要满足按照需求文档、测试用例发现一般问题的能力,这个是最基本的,如果连最简单的一般问题都发现不了,则连最基本的测试工程师要求都没打到。
隐性问题发现的能力
在测试过程中,有一些缺陷藏的比较深,有的是性能方面的问题,有的是功能方面的问题,它需要有一些设定特定的条件的情况下才会出现这样的问题。这样的问题的发现能力一定要比别人更强,要找到一些别人可能发现不了的bug。
关联问题发现的能力
当发现了一个缺陷之后,能够想到通过这个缺陷可能会引发其他哪个地方出现问题,这就叫做连带的问题。而不是说发现这一个bug之后提了这一个就算完了,一定要有一个察觉,可能其他地方也存在这样的问题。
发现问题隐患的能力
有些系统里边可能有一些功能模块,或者是接口,表面上没有什么问题,但是它是有隐患的,比如说这个接口写的不稳定,当他传的数据有一些问题的时候,可能它最后返回的结果就是报错等。
尽早发现问题的能力
经常有开发人员对测试人员抱怨,为什么不早点报BUG。所以测试的时候要能分清主次,分析出重点,尽早发现主要问题。降低版本临近封板了,还发生比较大的变动的风险。
发现问题根源的能力
要知道这个BUG它到底是由什么原因产生的,是属于什么类型的缺陷,是前端逻辑的问题,还是后台数据存储的问题?
不仅发现BUG,还要知道这个BUG产生的原因,甚至提出解决方案,这样的测试人员是非常棒的,而且很受人尊敬和信任。
团队合作能力。
合理进行人员分工
合理的进行人员分工是提高效率的重要保证。
协助同事解决问题
如果其他同事碰到问题,或者说测试再赶进度,协助其他同事解决问题就显得比较重要和关键。
配合完成测试任务
一个项目里边的人员分工,各自任务都是不一样的,这就是咱们说的配合。你的东西做完了,要轮到我了,我的性能测完了之后该轮到你了,所以整个的一个流程下来之后,大家应该是各司其职,配合得非常紧密的一个过程。
配合开发重现问题
测试给开发提BUG,开发修改BUG,大家的目的都是一样的,就是让系统变得更好。另外,有时候我们记录的问题确实存在描述不清,让别人看不懂的情况。就更有义务配合开发重现问题了。
督促项目整体进度
既然是一个团队协作的过程,就一定要互相的去督促对方,包括督促开发去改BUG,因为开发人员他们有时候工作很忙,他们不知道要先改哪些问题,要后改哪些问题,但是往往有一些缺陷,它影响了测试的这个时间,影响了测试的进度,那么这个时候就需要测试员去督促开发人员,让他尽快的去解决你棘手的问题。这个东西能够提高咱们的测试效率。
出现问题勇于承担
自己测试出现疏忽,就要勇于承担责任。有担当的人才能更让人信任,才有更好的发展。
测试技术能力。
掌握测试基础知识
基础知识是我们开展测试的基础,基础掌握了,才能更有效的向上提高和发展。测试理论可以更好的指导我们的测试工作。让我们的测试工作更专业,降低产品质量风险。
熟练使用测试工具
掌握各种常用功能、性能、接口测试的小工具。熟悉工具和熟练使用工具完全是两个概念,熟悉工具基本上等同于不会,遇到过很多简历上写会使用什么什么工具,都没有实际能力。比如loadrunner只会一个简单的录制,增强一下脚本,觉得会用了,那知识会用了1/5,其他4/5 都不会。
了解工具操作原理
工具是用什么样的方式给服务器发送请求,是用什么样方式监控系统运行,把这些问题搞清楚,有助于我们更好的使用这些工具,包括一些请求协议,每个协议代表什么意思,适用于哪种系统和测试场景。
自主完成测试任务
一定要能够自己完成一个独立的内容,独立的工作,这件事情领导你交给我好了,放心我能给你搞定,要的是这样的人。
找出问题出现的原因
找出缺陷的时候,不仅要看它的表面,还要看它的本质。
提出问题解决方案
发现问题不是能力,发现问题并提出解决方案才是真的能力。
提供完整的各种测试文档
测试计划、测试方案、测试报告等测试文档,比较考验测试基本功。测试文档能够说明你表达的清不清楚?领导能不能看懂?还有就是能不能够把你整个测试的过程给它梳理得非常详细,人家能够通过你的文档,能够了解到整个的项目的情况,而不是只了解一个片面的情况。
了解相关技术领域
触类旁通,知识面越广,对测试越有帮助。
逻辑思维能力。
判断逻辑的正确性
大家笔试时都做过逻辑题,逻辑题能够分析出来一个人的思维有没有?活跃不活跃?还有思考问题的维度、包括想问题的全面性,都能考察出来。
我们测试时,如果功能实现的基础业务逻辑都错了,没有实现正确的话,那整个业务也就不用再测试了,继续也是在错误的基础上测试,没有意义。以后还需要重新在测试一遍。
对可行性逻辑分析
要去测试一个系统的逻辑的时候,一定要先思考这一个业务流程可能涉及那些逻辑,这些逻辑哪些是可行的,哪些是不可行的。有些是正向逻辑,有些是逆向逻辑,都要考虑全面,而不是说只把正向逻辑测试全面了,逆向不考虑。其实往往最容易出错的,恰恰是逆向逻辑。
用思维导图梳理思路
思维导图是一个非常好用的工具,功能够让你更清晰地梳理思路,更有效的进行测试。
站在客户角度思考
做测试的时候,不要仅仅站在测试人员的角度上考虑问题,对系统进行测试。系统最终是要提供给用户使用的,要站在用户角度,替用户考虑。
问题解决能力。
技术上的能力
要把自己的个人能力提升起来,多跟别人请教,多注重自我学习,长期学习,多去自己想办法解决问题。
工作中的问题
在任何一家公司工作,肯定会遇到一些工作中不愉快的事情,不可能什么事情都会让你很顺心。所以要去处理好这些事,不要因为这些不愉快影响你后续的工作,也不要把工作上不愉快的事带到生活上。尽可能的去跟别人沟通、去解决。
同事间的问题
在工作当中,经常需要更开发人员沟通、跟需求人员沟通、跟运维人员沟通、跟客户沟通等,和不同岗位的人员沟通,需要用不同的沟通方式。
领导的问题
如果你觉得你的领导某些工作方法不好,或者对领导有一些好的建议,不要和其他同事去抱怨好吐槽领导坏话,这样不能解决问题。领导需要的是解决问题的人,而不是制造问题的人。建议直接和领导沟通,把自己的想法谈成的谈出来。绝大部分领导,都还是挺通情达理的。
沟通表达能力。
和开发人员的沟通
跟开发人员阐述问题时要简明明了,清晰易懂。当发现严重问题时,也不要大惊小怪,要协助开发人员尽快解决问题。而不是漠不关心或嘲讽,炫耀自己发现问题的能力。
和需求人员的沟通
对业务需求有不确认的地方,要及时和需求人员沟通确认。以需求人员的结论为主,切忌一切都听开发的,或以开发的“二手需求”、“代码实现”为准。
和客户的沟通
和客户沟通,首先要体现尊重,其次是注意规范和要提前做准备。例如:发邮件没主题、要沟通的事表达不清楚等,会给客户很不专业的感觉,从而降低信任度。
和上级领导的沟通
和领导沟通要有大局观,不能只考虑自己的情况。并且与领导沟通时,尽量直奔主题,不要拐弯抹角。当与领导意见不一致时,也不要直接反驳,应该先给予认可,再阐述自己的想法。让别人把话说完,不打断,是沟通中最基本的素质。
在集体会议中的沟通
在集体会议中,不要一味的突出自己的个人能力,不要当话痨,也不要默默无闻,要适当的提出一些自己的见解,有助于让大家更加重视你的存在。切记不要在多人会议中,去指责别人和推卸问题。都是一起工作的同事,都要面子的。
和下级员工的沟通
与下级沟通时不要摆高姿态,应该更多的为下级解决问题。服务好其他的同事,才能更好的产生凝聚力。你之所以是领导,是因为有下级兄弟们的帮衬。职位的高低,只是工作分工的不同而已,切不可有盲目的优越感。
测试管理能力。
控制测试时间
测试周期的时间控制,应当采取多种方法去衡量,例如人员能力,人员数量,项目复杂程度,同类项目的测试经验等多方面去衡量。
控制测试成本
成本指的是人力成本和时间成本。要找到资源投入和测试效果的一个平衡点。绝大部分项目,都要做到项目收入能覆盖成本支出。
制定测试计划
测试计划是一个项目的核心关键,它的存在是为了让项目过程有据可查,指导整个项目进程。所以测试计划的制定,一定要切合实际情况,经过思考和衡量。并注意项目情况发生变化,测试计划也要及时变更和调整。
控制员工情绪
员工的情绪可以直接影响测试进度跟测试的质量,当有员工出现思想问题时,应当及时沟通,采取一些必要的措施去解决问题,而不能装看不见。
进行风险评估
任何项目在进行期间都存在许多潜在的风险,例如,人员离职,生病请假,需求变更等。应当提前做出相应的解决方案,以免到时候手忙脚乱。“居安思危”,在项目管理中同样重要。
控制测试方向
测试的方向是指测试的目标和测试的范围,很多项目的测试是有针对性的,例如性能测试,所以在测试中,一定要随时清楚测试的目标和目的是什么,以免把时间浪费在无关紧要的业务上。