测试&测开? 手工&自动化?需要具备的能力?

参考:
自动化测试与手工测试对比https://blog.csdn.net/wanglian2017/article/details/72191043
手工测试与自动化测试的区别https://www.cnblogs.com/testertechnology/p/10978683.html
软件测试工程师未来十年的职业规划https://blog.csdn.net/firefly_2002/article/details/8166786

软件测试工程师(Software Testing Engineer)指理解产品的功能要求,并对其进行测试,检查软件有没有错误(Bug),测试软件是否具有稳定性(Robustness),写出相应的测试规范和测试用例的专门工作人员。百度百科
 是测试人员;偏重于业务逻辑的测试。
发展方向:管理岗;项目经理,测试规划

软件测试开发工程师(Software Design Engineer in Test)SDET在敏捷软件流程1中起着越来越关键的作用,既要快速了解各项知识,又要对业务能够快速上手。 SDET是为了解决在推行敏捷过程中,软件测试效率无法突破,并且在快速迭代中测试无法面面俱到,而产生的一种保证开发与测试过程之间无缝转换的一种角色。
 是开发人员,是为测试人员开发测试工具的开发人员;偏重于自动化所测试工具的开发
发展方向:技术岗;高级软件工程师

一、手工测试 & 自动化测试概述

测试具有移植性和可重复性。好的测试脚本往往具有较好的平台移植性。

手工测试能通过人为的逻辑判断效验当前的步骤是否正确,同时用例的执行具有一定步骤跳跃性,能够清楚知道逻辑,细致定位问题。
如果修改bug所需时间稍长,那么想将手工测试应用于回归测试将变得异常困难。这是因为需要测试的测试用例太多,所以需要引入自动化测试。

自动化测试:通过自动化工具执行 定制好的测试脚本,可节省人力和时间成本,提高测试效率。
自动化测试并不能完全代替人工测试。自动化测试的目的仅仅在于让测试人员从繁琐重复 的测试流程中解脱出来,把更多的时间和精力放在更有价值的测试中,例如探索性测试。

二、自动化测试优缺点

  1. 覆盖率
    优势:在同等时间内,启动自动化测试能够覆盖更多的功能。
    劣势:只适合回归测试,开发中的功能不划算。对于开发中功能,需求或者实现的更改,都会导致自动化脚本的变更,维护脚本的工作量和开发这个功能不相上下,实在是不划算。
  2. 测试效率
    优势:完成同等数目的测试,启动自动化速度更快。
    劣势:脚本开发比用例开发耗时长,包括编写脚本、调试脚本、维护脚本;而手工测试也要对测试用例进行撰写、评审、修订。由于用例编写更多为自然语言,时间上肯定会少。这里也引申一个另外的一种观点,直接用自动化脚本替代测试用例,也不乏是很好的做法。
  3. 执行可靠性
    优势:可靠的按脚本执行,后续定位、复现有明确的配置路径可循。
    劣势:自动化的稳定来源于其死板,用例步骤之间关联性强;而人的智慧体现在思维的跳跃,但跳跃的思维也会导致后期不易定位。
  4. 资源利用率
    优势:设备、仪表资源能够7*24小时利用。
    劣势:无。
  5. 人力上限
    优势:可进行压力、负载、并发、重复等人力不易完成的任务。
    劣势:无。
  6. 人员培养
    优势:提升测试人员能力,提高与开发沟通的效率。
    劣势:培养一名自动化测试人员耗费资源更多,同时在团队中推广自动化配套的培训、测试管理、产品开发环节都要跟上。

三、需要具备的能力

在具体工作过程中,测试工程师的工作是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估,需要解决问题 的能力和逻辑思维 能力。

对软件测试工程师而言,必须具有高度的工作责任心和自信心
任何严格的测试必须是一种实事求是的测试,因为它关系到一个产品的质量问题,而测试工程师则是产品出货前的把关人,所以,没有专业的技术水准是无法胜任这项工作的。

同时,由于测试工作一般由多个测试工程师共同完成,并且测试部门一般要与其他部门的人员(产品,开发)进行较多的沟通,所以要求测试工程师不但要有较强的技术能力而且要有较强的沟通能力

1)基本常识类

1. 计算机基础知识(计算机网络,操作系统,数据结构算法,数据库,linux)
2. 软件测试基本知识(软件质量,软件质量管理基础知识,软件测试概念,软件测试标准,软件测试技术及方法,软件测试项目管理)
3. 软件开发基本知识(软件工程知识,理解软件开发方法及过程)

2)技术类

1. 程序语言
C/C++,VB,VC,Java,.net,ASP,Javascript等。
具体要求要视公司的具体项目或产品来定。但一般以C为基本要求。

2. 数据库知识
SQLServer,Oracle,Mysql,Sybase等。
要求会使用,熟练进行SQL语句进行增,删,改,查等操作。

3. 操作系统
Windows
Linux(常用的RedHat,SUSE,Debian)
Unix(FreeBSD,Solaris,HP-UX,AIX,Mac)
IOS,Android(移动端)

3)自动化测试工具类

1. 自动化测试概念/自动化测试框架
好多人觉得自动化测试就是使用自动化测试工具,其实各种工具只是自动化测试实施的一个有效利器,如何建立一个脱离工具的自动化测试框架远远比研究如何使用测试工具复杂,困难的多。
2. 自动化测试流程
3. 自动化测试工具的使用(功能/性能测试工具,缺陷管理工具,测试管理工具):

  • 自动化测试框架(流程)
  • GUI的功能测试自动化:UI测试-Selenium
  • 非GUI的功能测试自动化:接口/性能-jmeter;回归-qtp;性能-loadrunner;其他-python
  • 基本抓包:fidder
4)实战类(工作经验)

1. 公司的测试流程
2. 公司的具体缺陷管理流程(提交bug报告,追踪bug状态)
3. 测试环境的搭建及管理
4. 测试计划,测试用例,测试报告等相关文档的编写

5)自我分析

1.细心,关注细节
2.耐心,不怕麻烦
3.良好的沟通能力
4.优秀的学习能力,逻辑思维强
5.工作积极主动
6.上进性强,永远不满足现状
7. 团队合作精神

四、如何学习自动化测试

初找工作具备
自身条件:具备计算机专业学位,有一些手工测试经验。
具体工作:执行测试用例,记录bug,回归测试,通过qtp等测试工具录制回归测试脚本,并执行回归测试脚本。
学习方向:开发测试脚本并且开始熟悉测试生存周期和测试技术。


  1. 敏捷开发过程:在开发前罗列出用户最基本的需求,按需求的重要性、风险性设定不同的优先级。优先级高的需求先开发,及早开发出软件原型,与用户进行交流,让用户提出修改意见。在开发过程中,可以采用story card、story wall的方式,将每个需求做成story card张贴在story wall上,对于每个story card又可以分为小的story card迭代开发,指定专门的程序员负责该模块的开发,并设定该模块预期的开发时间。每天汇报该模块的开发进度,做到项目进度的可控,每个程序员的工作量也可控。 ↩︎

你可能感兴趣的:(软件测试)