软件测试从零开始之一:认识软件测试

软件测试 的目的: 在项目开发阶段,软件测试主要的 工作 就是通过各种手段来发现开发过程的 bug ,从而保证被测试对象的质量。所以,这里的测试不仅仅是在产品形成后才开始,而是贯穿整个项目阶段。
下面以项目的整个开发阶段来简单描述开发和测试对应的工作和责任。当然,因为每个公司的发展情况和对测试的重视程度的不同,可能跟下面的描述会有一些差异,或者部分测试的工作也是由开发来完成的,特别是前期的一些工作,但是实际上由专业的测试人员来做效果会更好(前提是测试人员需要具备对应的能力)。
另外,这里可能有的人会有疑惑:里面怎么没有对自动化的描述?其实自动化仅仅是测试的一种手段或者说是一种工具而已。里面包括各个阶段的测试都会有各种对应的测试方法,而这些测试方法就是我们需要去学习的(后面会有详细的说明)。

阶段

开发的工作和责任

测试的工作和责任

需求阶段

根据客户的原始需求来完成需求说明书,并且保证需求文档没有问题

对需求说明书进行测试,发现问题跟开发一起确认,最终来保证整个需求说明书的没有问题

设计阶段

通过文档描述如何去实现需求文档里面对应功能,产出设计文档并且保证设计文档的质量

对设计文档进行测试,及时发现设计文档存在的问题并且跟开发一起确认,来保证整个设计文档的质量

编码阶段

通过代码来具体实现设计文档的描述的方法,并且保证其代码的质量

对代码进行测试,及时发现代码存在的问题并且跟开发确认,来保证开发编码的质量

测试阶段

修改前期引入或者后期引入的bug,并且保证修改bug的质量

对已经完成的产品进行测试,来及时发现隐藏的bug,并且对bug进行回归,来保证开发修改好了该bug并不会引发其他的bug


软件测试的职业发展:我们其实可以根据前面1.1描述的表格来将测试的职业发展分为如下几类。
l  需求分析工程师:专业去负责分析产品的需求,比如:挖掘出客户更加隐藏的需求,并且直接干掉一些没有价值的需求,从而让产品更加的满足客户的需要并且节省人力成本。通过不断的积累,并且在这块发挥展示出自己的才能,从而过渡到产品规划经理的岗位。
l  测试开发工程师:主要是在开发的设计阶段和编码阶段就开始发现问题,并且在这个时候去做测试框架和测试接口的开发,让开发编码的过程中能够实时的进行测试,而不用等到功能全部实现后再进行测试,让bug在前期就被发现,降低bug的修复成本。大家感兴趣可以看看《google软件测试之道》里面描述的SET的工作。
l  自动化开发工程师:主要是负责自动化平台或者框架的开发和维护,以及项目中将测试用例实现自动化,来减少项目过程中的手工测试。其实自动化开发工程师也属于测试开发工程师的一种,但是你可以专门在这个领域去发展
l  测试分析设计师:主要是在项目的过程中对测试用例、测试策略以及测试质量等进行分析,并且根据分析结果来不断的完善我们的测试用例以及调整我们的测试策略,来最终保证我们的产品质量(比如:通过分析发现了新的风险点)以及缩短我们的测试周期(比如通过分析发现一些用例无需行)。
l  测试架构师:除了在整个项目过程中负责整个测试架构和测试策略外,还需要负责团队的技术规划和人员培养,以及新的技术引入和研究等等。
l   测试管理:从管理项目到管理团队,从而走向管理岗位。
软件测试的几个误区:进入这个行业前需要先了解下这个行业的整个发展方向和趋势,这样才能够更好的评估自己是否适合进入这个行业,避免出现被所谓的培训机构和一些传言一鼓动,脑袋一发热就进来了,后面才觉得不合适从而浪费了自己的青春。
  这里仅仅提供笔者自己的几点看法:
1、自动化开发工程师其实属于开发岗位,如果你有条件的话可以直接去做开发。
2、至少70%的测试人员都是做黑盒测试的(至少主要是做黑盒测试的)。
3、白盒测试的工作更适合于开发自己去做
4、作为一个测试工程师,不管做什么事情,最主要的目的就是保证产品质量和加快产品的发布进度。
5、随着流程的规范,开发的单元测试、缺陷预防、自我测试以及自动化的普及等等一系列的工作的开展,对于纯手工测试人员的需求肯定是越来越小,而测试人员的工作本身就是干掉自己,只不过是时间早晚的问题。
6、测试行业本身不会消失,后面可能会慢慢的转型为做其他事情(相比纯手工测试),比如:需求分析师,缺陷预防工程师,系统测试架构师(探索性测试和测试分析领域),自动化开发工程师,白盒测试工程师,产品经理等等,而纯粹用例执行人员会慢慢的消失。
7、测试开发本身不会比开发更加有技术含量,而从开发转开发测试也是很简单的事情。
软件测试需要具备的技能:个人觉得至少要包括下面的几个方面吧,当然还有其他的一些技能能够掌握的话对测试的理解应该更加有帮助,比如:数据结构、编译原理。
操作系统原理:我们的代码是运行在操作系统上面,所以对操作系统的原理熟悉肯定对我们的测试是很有帮助的,特别是性能测试。比如:熟悉操作系统的内存管理机制后就能够更好的对我们的被测对象进行内存相关的测试。
一门计算机语言:有人说精通一门计算机语言后,学习其他的计算机语言只需要1个月的时间,充分说明了计算机语言之间是想通的。而熟悉一门语言后,能够让我们更好的去了解开发的代码以及更好的去发现开发常犯的一些错误。
计算机网络:如果被测试对象是跟网络相关的话,这个就需要去深入的学习了。
数据库如果被测试对象是跟数据库相关的话,这个就需要深入的去学习了。
测试的理论基础:进入测试行业,这些基础的东西总是的要了解的吧!而且随着测试的深入,测试的理论会越来越重要,所以需要经常的学习。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值