软件测试教程 第一节 答疑篇
软件测试教程 第一节 答疑篇
在进入软件测试的正式课程之前,我们需要对这个行业有一个整体的了解,并以此来决定是否从事这个职业。这个决定是需要慎重考虑的。
当我们从软件开发转向软件测试的时候,多数公司是欢迎的,而且难度也小。反之,当我们从软件测试转向软件开发的时候,难度将会变得很大。
在这里我们将回答以下问题:
- 什么是软件测试
- 软件测试岗位有哪些
- 软件测试在不同类型公司的定位
- 软件测试的职业规划
- 软件测试的薪资怎么样
- 软件测试和研发的区别
- 软件测试工作的优缺点是什么
- 我适合做测试么
什么是软件测试
软件测试是不是就是找bug?
软件测试就是证明软件不存在错误的过程
软件测试就是为了证明程序能够正确运行
-
1979年,Glenford Myers(美 梅尔斯),<软件测试艺术>[The Art of Software Testing]:为了发现错误而执行程序或者系统的过程
-
1983年,Bill Hetzel在《软件测试完全指南》(Complete Guide of Software Testing)一书中指出:测试是以评价一个程序或者系统属性为目标的任何一种活动。测试是对软件质量的度量。
-
1983年,IEEE软件工程标准术语:使用人工或自动手段,来运行或测试某个系统的过程。其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。
软件测试的定义随着发展而不断扩展,但是不可否认的是软件测试最基本的活动就是找bug。而不同的定义只是说明了测试的目的以及如何来衡量测试是否成功。
软件测试的发展:
- 软件调试
- 独立的软件测试(1950~)
- 软件测试的第一次定义(1973~Bill Hetzel),软件测试就是对程序能够按预期的要求运行建立起一种信心
- 软件成为专门的学科(1980~)
- 开发与测试的融合(2000~)
测试与调试的区别:
完成的任务不同
–测试的任务是发现程序中的缺陷;调试的任务是定位并且解决程序中的问题。
执行的人不同
–测试主要是由测试人员和开发人员来执行,黑盒测试主要由测试人员完成、单元/集成测试主要是由开发人员执行。调试由开发人员完成。
执行的周期不同
–测试贯穿整个软件开发生命周期,调试一般在开发阶段。
软件测试岗位有哪些
-
软件测试开发工程师(SET),software engineer in test。google的角色划分
开发角色,工作重心为可测试性以及通用测试基础框架。编写单元测试框架和自动化测试框架。SET关注质量提升和测试覆盖率。
-
测试工程师(TE),test engineer。google的角色划分
与SET关系密切,但把用户放在第一位来思考。TE组织整体测试实践,并进行分析总结,驱动测试执行,构建端到端的自动化测试。
-
软件开发测试工程师(SDET),software development engineer in test,微软的角色划分
通常称为测试人员(Tester),负责高标准的测试和质量保证,需要编程能力
-
其他分类:自动化测试工程师,功能测试,性能测试,安全测试等
-
按级别:初级、中级、高级、资深、组长、主管、经理、总监等
软件测试在不同类型公司的定位
- 无组织性
- 专职VS.兼职
- 项目性VS.职能性
- 综合性
-
无组织性
慎入!
最简单的软件测试组织形式就是没有任何组织的测试,几个人就把所有软件测试工作做完,这样做没有任何分工、没有任何层次结构。
简单的软件测试组织带来的问题是:软件测试依附在软件开发的组织下,不能真正发挥软件测试的威力。
一两个人的软件测试缺乏交流和思维的碰撞,导致测试人员的进步非常有限。缺乏测试的组织,导致测试无计划进行,测试人员疲于应付各项突如其来的测试任务,测试经验也得不到很好的总结。
- 专职VS.兼职
按照测试人员的职责明确程度,可以划分成兼职测试和专职测试两大类。目前在很多软件企业,尤其是小规模的软件企业,往往没有专职的测试人员。在做测试工作的同时还要兼顾软件幵发、配置管理、技术文档编写、用户教育、系统部署实施等工作。
即使是在一些比较大规模的软件企业,拥有专门的质量部门,也会有兼职的情况,最常见的兼职工作是测试+配置管理,或者测试+QA。这种方式的好处是节省成本,可以充分利用资源。但是这样测试人员缺乏专门的独立的发展空间,不利于测试的纵深方向的发展,很难把测试做得精细,也不利于测试经验的积累和测试知识的传播。
当然,由于目前软件企业的现状,很多企业还是使用这种方式。新入行的测试人员来说,可以认为这是对自己很好的锻炼机会。
测试本身的要求就是知识面要广,而这些工作有助于从不同层面、不同角度、不同角色的位置考虑软件的相关问题。
- 项目性VS.职能性
按测试人员参与项目的形式来划分,可分成项目型和职能型。
项目型的测试组织是指测试人员作为项目组成员之一紧密地结合到项目中,与项目组其他人员紧密协作,一般是从头到尾跟着项目走。当然,也有些项目是到了中后期才考虑把测试人员加入到项目中。这种类型的测试组织一般不会有测试组长,测试的管理由项目的主管或项目经理负责。当然,在一些大的项目中,会划分出幵发组长、也会划分出测试组长,但是最终报告的对象都是项目经理。因此项目经理是负责测试资源调配和测试计划的主要人员。
而职能型的测试组织是指测试人员参与到项目中是以独立的测试部门委派的方式进入的。
在这种结构中,一个测试人员有可能不仅仅测试一个项目的产品,可能会同时测试多个项目的产品。测试人员也可能不是长期稳定地从头到尾参与一个项目。
测试人员不向项目主管或项目经理报告工作,而是向自己所在的部门经理报告工作。并且这种结构的项目经理也可能是虚拟的,或者由多个部门经理共同担当。
这两种方式各有利弊。项目型的好处是测试人员参与的力度很强,能深入了解项目方方面面的信息,有利于稳定持续有效地测试出更多细节问题;但是同时也有弊端,就是测试人员受项目负责人的管理,在对待Bug的处理意见上往往受到约束,同时由于过于亲密,很可能出现“网开一面”,不能严格要求的惜况。并且由于缺乏独立的组织,测试人员的知识可能局限在项目组内传播,不利于测试经验在不同项目组之间的传播。某些测试人员在这种组织中可能会感到孤独和无助。
而职能型的好处是能避免项目型的部分问题,并且能节省部分测试资源,充分利用各个项目阶段之间的时间差来合理利用测试资源;但是也不可避免地存在一些问题。例如,深入程度不够,尤其是对项目涉及的领域知识和业务知识理解可能不够深入,导致测试的问题比较表面。
项目性:
1.PNG职能性:
2.PNG
-
综合性
3.PNG尽管独立的测试部门会有一些不可避免的问题,例如参与项目的深入程度,容易导致“扔过墙”的测试。但是很多软件企业还是倾向于建立一个相对独立的软件测试组织。一个理想的软件测试组织可以是综合和兼容了几种结构方式的组织。 例如,可以将项目型结构和职能型结构组合并加以改造。测试部门是独立的部门,测试部门经理根据各项目组中项目经理的请求,结合公司对项目的投入和重点方向,决定委派哪些测试人员加入到项目组,并且长期稳定、持续地跟进项目,在项目的各个阶段都参与并做测试的相关工作内容。测试人员作为一种服务资源供项目组调用,测试的结果和报告作为评估软件产品质量的必要参考信息,为项H经理做出产品发布的决定提供参考价值。
软件测试的职业规划
4.png软件测试的薪资怎么样
5.PNG地域差别-地域差别大,一线与二线差距较大
增长速度-低端慢,专业测试增长快
不同岗位-专业测试领域和普通功能测试领域差别较大
软件测试和研发的区别
难易程度 开发广度小,专业度高。测试广度大,专业度低
工作环境 基本类似
薪水 中小企业总体比研发低,自动化等专业测试领域和研发基本无差距。大厂研发测试基本无差别
发展前景 自动化测试、安全测试等领域发展前景和研发基本一致,但在转产品经理或者项目经理上比开发具备更多优势
繁忙程度 一般比研发轻松,但敏捷模式下差距不大,产品发布前压力比较大
技能要求 测试要求更广泛:业务能力,设计和架构分析能力,测试手段和工具使用,用户模型分析和理 解,编程能力
软件测试工作的优缺点是什么
测试工作是不是很无聊?
测试工作是不是很简单?
测试工作是不是很轻松?
测试是不是不要求技术?
测试行业真的很繁荣?
测试的薪水是不是高?
我适合做测试么
测试岗位更适合谁?
我们做测试的优势是什么?
为什么选择测试而不是研发?
-
思维模式
逆向思维:开发盖房子,测试拆房子。不走寻常路。
案例:手机中有两条通话记录,进行删除。删除为0后,继续删除。
发散性思维:探求多项答案
案例:测试一台自动售票机。正向,逆向,边界,压力,性能,耗电量,断电,外观,没零钱.....
-
兴趣
真的有兴趣么?而不是开发加班多,不想编码?
-
性格特征
好奇心
成就感
敏感
不浮躁
善于怀疑
批判性思维:清楚--准确、切题--深刻,有意义,有逻辑性--公正、全面
-
能力
快速学习能力
沟通能力
文字能力
开发能力
-
责任感和压力
责任感:测试往往是产品的最后一个检验者;测试的工作成效很难衡量,测试用例执行、bug数目的多少都无法说明产品是否能够交给用户使用。所以,责任感是最重要的测试必备素质之一。
压力:来自开发人员、用户、上级、自己的压力。测试人员的压力比想象中的要大。