软件测试方向介绍

软件测试方向介绍

2023年7月16日发(作者:)

软件测试方向介绍

什么是软件测试?

软件测试是软件工程不可或缺的重要环节之一,是软件质量保证(Software

Quality Assurance)的重要手段。软件测试的定义:“使用人工和自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。”(IEEE 1983)

软件测试的目的,简单的说,是通过寻找错误,尽可能地为修正错误提供更多的信息,从而保证软件系统的可用性。

软件测试是贯穿软件工程始终的一个活动,由测试计划、单元测试、集成测试、系统测试、验收测试组成。此外,完整的测试活动还要有相应的缺陷跟踪系统,从而完成整个软件工程迭代开发的过程。

测试计划

当软件的系统需求确定之后,就可以制定软件的测试计划了。下面提供了一个测试计划的模版,其内容可以根据实际的项目内容进行调整。

一. 引言

1、测试目的:说明本测试计划的具体编写目的,职称预期读者范围

2、背景:对被测对象及目标进行简要说明

3、定义:列出本文件中用到的专门术语的定义和外文首字母组词的原词组

4、参考文档:制定本计划所使用的工程文档

二. 测试计划

1、软件说明:以图表形式并逐项说明被测软件的功能、输入和输出等质量指标

2、测试进度:测试的进度安排,包括进行测试的日期和工作内容

3、测试环境:测试工作对硬件环境、软件环境、测试人员等资源的要求

4、测试工具:软件测试所使用的工具

5、测试培训:为被测对象的使用提供培训的计划

三. 测试设计

1、数据库测试:对数据库和数据库进程作为一个独立的子系统进行测试

2、接口测试:系统各组件之间的接口进行测试

3、单元测试:系统的各独立单元进行测试

4、集成测试:对软件各子系统进行测试,验证业务流程与数据处理是否达到要求

5、系统测试:对系统的功能、性能、压力、安全、用户界面等进行测试

6、验收测试:确保系统在交付客户能够正常的安装与配置

四. 评价准则

1、优先级与处理方式:缺陷的分类与响应等级、处理方式

2、范围::所选择的测试用例能够检查的范围及其局限性

3、尺度:用来判断测试工作是否能通过的评价尺度

单元测试

在了解单元测试前,首先应掌握白盒测试与黑盒测试的概念。所谓白盒测试,指盒子(被测对象)是可视的,测试人员对软件系统的内部结构和原理十分清楚。白盒测试是一种覆盖型的测试,它要求被测模块所有独立的路径都被执行一遍。相反,黑盒测试是一种功能型测试,它关注被测对象的功能实现,测试人员是不清楚软件的内部逻辑。

单元测试是一种白盒测试,它是对软件基本组成单元进行的一种测试,是整个软件测试过程中最基本的活动,通常由开发人员与测试人员协同完成。单元测试的对象可以是一个类、一个功能模块或是一个组件。

执行单元测试,需要注意以下几方面:

单元测试的目标和任务:明确测试的目标,即被测功能模块能够被顺利的执行。

单元测试的依据与规范:明确测试依据,如系统需求与设计描述。要有统一代码书写规范。

单元测试的方法与技术:一般采用白盒测试,有手工测试和自动测试等多种方法。

单元测试的过程与结果:应有详细的单元测试描述与计划文档,对测试结果也应编制成结果分析报告。

单元测试的评估与管理:通过缺陷跟踪系统提交测试结果,对于出现的严重的问题应做及时的反馈与跟踪。

集成测试

集成测试是在单元测试完成之后开始,是对某个子系统所有功能模块的测试。集成测试介于白盒测试与黑盒测试之间,因此也被称为灰盒测试。

集成测试是软件测试活动中最为关键的,从上图可以看到,它发生在单元测试完成之后,与系统设计相对应,之后是系统测试,集成测试的成功执行是系统测试开始的基础。

执行集成测试,要把握以下几方面内容:

制定集成测试策略:针对被测子系统的特点,制定适合的策略,如自顶向下的集成、自底向上的集成、三明治集成等。

加强集成测试分析:应编制集成测试分析报告,它对集成测试的用例设计具有指导作用,是整个集成测试中最重要的一个步骤。

设计执行测试用例:集成测试的主要内容。

系统测试

系统测试是将软件、硬件、数据、人员、文档结合在一起、在正式的运行环境中,进行的一种综合性测试。系统测试可以分为功能性和非功能性两大类,其中功能测试是系统测试的基础,主要用来验证软件系统是否严格按照需求规格说明的功能要求予以实现。非功能性测试主要包括性能测试、压力测试、容量测试、用户界面测试、安全性测试、可靠性测试、容错性测试、安装测试等内容。

在进行系统测试之前,要搞清楚系统测试与集成测试的区别。首先,二者测试的对象不同。系统测试是对整个系统及其环境进行的综合性测试,集成测试仅对某一个子系统进行测试,不涉及到软件环境。其次,二者关注的领域不同。系统测试更多从用户的角度出发,除关注软件功能能否实现外,更注重系统的性能、安全、界面效果等非功能特性。而集成测试则主要关注各模块间的接口能否实现成功调用。

软件系统的特点是错综纷纭的,因而系统测试的侧重点也有所不同。对基于J2EE架构的B/S应用软件,系统测试更偏重于性能、压力、用户界面等方面的测试。因此,系统测试要根据软件特点来制定与执行。

验收测试

验收测试发生在系统测试之后,是一种黑盒测试。它是系统开发人员与用户共同进行的一项测试工作,其目的是按照之前约定的验收标准,通常在需求分析说明书中列出详细标准,使用户对系统进行验收和签字。

软件测试的目的

软件测试的目的,第一是确认软件的质量,其一方面是确认软件做了你所期望的事情(Do the right thing),另一方面是确认软件以正确的方式来做了这个事件(Do it right)。

第二是提供信息,比如提供给开发人员或程序经理的反馈信息,为风险评估所准备的信息。

第三软件测试不仅是在测试软件产品的本身,而且还包括软件开发的过程。如果一个软件产品开发完成之后发现了很多问题,这说明此软件开发过程很可能是有缺陷的。因此软件测试的第三个目的是保证整个软件开发过程是高质量的。

软件质量是由几个方面来衡量的:一、在正确的时间用正确的的方法把一个工作做正确(Doing the right things right at the right time.)。二、符合一些应用标准的要求,比如不同国家的用户不同的操作习惯和要求,项目工程中的可维护性、可测试性等要求。三、质量本身就是软件达到了最开始所设定的要求,而代码的优美或精巧的技巧并不代表软件的高质量(Quality is defined

as conformance to requirements, not as “goodness” or “elegance”.)。四、质量也代表着它符合客户的需要(Quality also means “meet customer

needs”.)。作为软件测试这个行业,最重要的一件事就是从客户的需求出发,从客户的角度去看产品,客户会怎么去使用这个产品,使用过程中会遇到什么样的问题。只有这些问题都解决了,软件产品的质量才可以说是上去了。

测试人员在软件开发过程中的任务

1、寻找Bug;

2、避免软件开发过程中的缺陷;

3、衡量软件的品质;

4、关注用户的需求。

总的目标是:确保软件的质量

软件测试的现状

一, 软件开发中出现错误或缺陷的机会越来越多.

市场对软件质量重要性的认识逐渐增强.所以,软件测试在软件项目实施过程得到越来越多的重视。但也还存在一些认识上的误区。

(1)误区之一:软件开发完成后进行软件测试

人们一般认为,软件项目要经过以下几个阶段:需求分析,概要设计,详细设计,软件编码,软件测试,软件发布.据此,认为软件测试只是软件编码后的一个过程.这是不了解软件测试周期的错误认识.软件测试是一个系列过程活动,包括软件测试需求分析,测试计划设计,测试用例设计,执行测试.因此,软件测试贯穿于软件项目的整个生命过程.在软件项目的每一个阶段都要进行不同目的和内容的测试活动,以保证各个阶段的正确性.软件测试的对象不仅仅是软件代码,还包括软件需求文档和设计文档.软件开发与软件测试应该是交互进行的,例如,单元编码需要单元测试,模块组合阶段需要集成测试.如果等到软件编码结束后才进行测试,那么,测试的时间将会很短,测试的覆盖面将很不全面,测试的效果也将大打折扣.更严重的是如果此时发现了软件需求阶段或概要设计阶段的错误,如果要修复该类错误,将会耗费大量的时间和人力.

(2)误区之二:软件发布后如果发现质量问题,那是软件测试人员的错

这种认识很打击软件测试人员的积极性.软件中的错误可能来自软件项目中的各个过程,软件测试只能确认软件存在错误,不能保证软件没有错误,因为从根本上讲,软件测试不可能发现全部的错误.从软件开发的角度看,软件的高质量不是软件测试人员测出来的,是靠软件生命周期的各个过程中设计出来的.出现软件错误,不能简单地归结为某一个人的责任,有些错误的产生可能不是技术原因,可能来自于混乱的项目管理.应该分析软件项目的各个过程,从过程改进方面寻找产生错误的原因和改进的措施.

(3)误区之三:软件测试要求不高,随便找个人多都行

很多人都认为软件测试就是安装和运行程序,点点鼠标,按按键盘的工作.这是由于不了解软件测试的具体技术和方法造成的.随之软件工程学的发展和软件项目管理经验的提高,软件测试已经形成了一个独立的技术学科,演变成一个具有巨大市场需求的行业.软件测试技术不断更新和完善,新工具,新流程,新测试设计方法都在不断更新,需要掌握和学习很多测试知识.所以,具有编程经验的程序员不一定是一名优秀的测试工程师.软件测试包括测试技术和管理两个方面,完全掌握这两个方面的内容,需要很多测试实践经验和不断学习精神.

(4)误区之四:软件测试是测试人员的事情,与程序员无关开发和测试是相辅相成的过程

需要软件测试人员,程序员和系统分析师等保持密切的联系,需要更多的交流和协调,以便提高测试效率.另外,对于单元测试主要应该由程序员完成,必要时测试人员可以帮助设计测试样例.对于测试中发现的软件错误,很多需要程序员通过修改编码才能修复.程序员可以通过有目的的分析软件错误的类型,数量,找出产生错误的位置和原因,以便在今后的编程中避免同样的错误,积累编程经验,提高编程能力.

(5)误区之五:项目进度吃紧时少做些测试,时间富裕时多做测试

这是不重视软件测试的表现,也是软件项目过程管理混乱的表现,必然会降低软件测试的质量.一个软件项目的顺利实现需要有合理的项目进度计划,其中包括合理的测试计划,对项目实施过程中的任何问题,都要有风险分析和相应的对策,不要因为开发进度的延期而简单的缩短测试时间,人力和资源.因为缩短测试时间带来的测试不完整,对项目质量的下降引起的潜在风险,往往造成更大的浪费.克服这种现象的最好办法是加强软件过程的计划和控制,包括软件测试计划,测试设计,测试执行,测试度量和测试控制.

(6)误区之六:软件测试是没有前途的工作,只有程序员才是软件高手

由于我国软件整体开发能力比较低,软件过程很不规范,很多软件项目的开发都还停留在"作坊式"和"垒鸡窝"阶段.项目的成功往往靠个别全能程序员决定,他们负责总体设计和程序详细设计,认为软件开发就是编写代码,给人的印象往往是程序员是真正的牛人,具有很高的地位和待遇.因此,在这种环境下,软件测试很不受重视,软件测试人员的地位和待遇自然就很低了,甚至软件测试变得可有可无.随着市场对软件质量的不断提高,软件测试将变得越来越重要,相应的软件测试人员的地位和待遇将会逐渐提高.在微软等软件过程比较规范的大公司,软件测试人员的数量和待遇与程序员没有多大差别,优秀测试人员的待遇甚至比程序员还要高.软件测试将会成为一个具有很大发展前景的行业,软件测试大有前途,市场需要更多具有丰富测试技术和管理经验的测试人员,他们同样是软件专家.这两年来国内软件测试人员的需求不断增大,越来越多的IT企业认识到了软件测试的重要性。

尽管这是一门崭新的学科,目前在国内的发展仍处于"婴儿"阶段,但看到越来越多的软件公司为软件测试招兵买马,看到越来越多的技术人员投入到软件测试中,我就情不自禁地感叹:机会来了!这机会不仅仅是某一个人的,而是所有人的,它对每个人都是公平的,学的领域需要新的理论新的工具新的方法,由于国内的软件测试还处在一个比较初级的阶段,没有人确切地知道它需要什么样的基础,也没有人确切地知道它应该怎样发展,因此这个领域需要大家来共同革命,以促进它的深入发展.

随着软件产业的发展,软件产品的质量控制与质量管理正逐渐成为软件企业生存与发展的核心.几乎每个大中型IT企业的软件产品在发布前都需要大量的质量控制,测试和文档工作,而这些工作必须依靠拥有娴熟技术的专业软件人才来完成.软件测试工程师就是这样的一个企业重头角色.业内人士分析,该类职位的需求主要集中在沿海发达城市,其中北京和上海的需求量分别占去33%和29%.民企需求量最大,占19%,外商独资欧美类企业需求排列第二,占15%.然而,目前的现状是:一方面企业对高质量的测试工程师需求量越来越大越大,另一方面国内原来对测试工程师的职业重视程度不够,使许多人不了解测试工程师具体是从事什么工作.这使得许多IT公司只能通过在实际工作中进行淘汰的方式对测试工程师进行筛选,因此国内在短期将出现测试工程师严重短缺的现象.根据对近期网络招聘IT人才情况的了解,许多正在招聘软件测试工程师的企业

很少能够在招聘会上顺利招到合适的人才.在具体工作过程中,测试工程师的工作是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试用例,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估.对软件测试工程师而言,必须具有高度的工作责任心和自信心.任何严格的测试必须是一种实事求是的测试,因为它关系到一个产品的质量问题,而测试工程师则是产品出货前的把关人,所以,没有专业的技术水准是无法胜任这项工作的.同时,由于测试工作一般由多个测试工程师共同完成,并且测试部门一般要与其他部门的人员进行较多的沟通,所以要求测试工程师不但要有较强的技术能力而且要有较强的沟通能力.

软件测试的前景

软件测试的前景是测试人员非常关心的问题,下面我们来具体谈一下。

1、软件测试学科

软件测试一门非常崭新的学科,目前仍然处在研究探索阶段,还没有上升到理论层次。软件测试需要什么样的专业基础还没有定论,而且目前还没有一种很好的标准来衡量测试人员。但无可置疑,软件测试越来越受到软件公司的重视,软件测试工程师的作用也逐渐被人们所认可。

2、软件测试工程师需求

(1)企业的需求

几乎每个大中型IT企业的软件产品在发布前都需要大量的质量控制、测试和文档工作,而这些工作必须依靠拥有娴熟技术的专业软件人才来完成,软件测试工程师担任的就是这样一个企业重头角色。 (2)许多IT企业没有专职的测试机制

软件产品的质量控制与管理越来越受重视,并逐渐成为企业生存与发展的核心。在许多IT企业中,软件测试并非只担当“挑错”的角色,没有专职的测试机制。越来越多的IT企业已逐渐意识到测试环节在软件产品研发中的重要性。此类软件质量控制工作均需要拥有娴熟技术的专业软件测试人才来协作完成,软件测试工程师作为一个重头角色正成为IT企业招聘的热点,其中软件测试工程师成为IT就业市场的最新风向标。

(3)软件测试工程师的需求量

由于我国企业对于软件测试自动化技术在整个软件行业中的重要作用认识较晚,因此,软件测试工程师的数量不足,开发和测试人员的比例不合理。据调查,较好的企业中测试人员和开发人员的比例是1∶8,有的是1∶20,甚至没有专职的测试工程师。软件测试专业技术人员在供需之间存在着巨大的缺口。据有关数据显示,我国目前软件从业人才缺口高达40万人。即使按照软件开发工程师与测试工程师1∶5的岗位比例计算,我国对于软件测试工程师的需求便有数十万之多。业内专家预计,在未来5~10年中,我国社会对软件测试人才的需求数字还将继续增大。在国展举办的一次招聘会上,多家企业纷纷打出各类高薪招聘软件测试人员的海报,出人意料的是收到的简历尚不足招聘岗位数的50%,而合格的竟不足30%。有行业专家表示,软件测试人才供远小于求的现实问题正影响着我国软件业的健康发展。

(4)网络测试的需求量

包括微软在内的公司对基于网络测试也没有一套完整的体系,仍处于探索中。网络测试是一个全新的、富有挑战性的工作,软件测试工程师的职业之路充满希望。

3、软件测试工程师未来的发展空间

软件测试工程师未来的职业发展方向如下:

走技术路线,成长为高级软件测试工程师,再向上可以成为软件测试架构设计师。

向管理方向发展,做项目管理。

做开发人员,很容易转去做产品编程。

软件测试个人发展怎么定位呢?

在测试很多的时候都会陷入迷茫阶段,自己到底投身那块比较好?(针对没很强开发经验的)

第一,测试在第一、二年是积累经验了解流程。(不排除牛人。。短短几个月就确定的。。) 第二,当自身已经适应了软件测试这个职业,也有兴趣投入到其中的时候,就可以分析自己比较喜欢那块了。当下行业主要也就是分几个大的行业金融、通信、网络等等。

第三,确定了目标之后投入其中,但是也不能死抱着不去改变。要恰如其分的运用自身的能力,可以适当的超负荷运作,但是没有必要过劳死。

第四,当测试进入到4~5年(这个阶段也有3~4年的)。可以考虑投入到管理层或者作高级技术人员。也就是pm或者自动化测试专家这2块。

第五,做一个PM需要有很强的项目经验,或者很强的团队管理能力和团队融合能力,并且懂得如何去和开发,客户沟通。善于制定计划和处理应急事故等等。

第六,自动化测试专家,就需要有良好的开发基础,善于分析测试之后的结果,掌握某项工具的全部技术,懂得自我创新研究脚本搭建测试框架等等。

至于目前的行业分析。其实无论那块都会有很强的发展潜力。

国外的公司以及国内的大型企业,都已经逐渐醒悟了,对国内的测试能力以及及其便宜的劳动力都非常看好,已经将自身的测试部门以及测试这块逐渐引入到了国内,而相对的开发这块由于近几年的饱和优秀人才的匮乏已经逐渐淡出到了周边国家如印度和新加坡等等。

前程无忧2008年的薪酬报告显示,软件测试工程师在IT行业中越来越受到重视,其薪资也节节高升。测试工程师的起薪从2000~5000元/月不等,若有四年工作经验的话,薪资在6000~8000元/月左右,具体视不同地域、不同性质企业、测试工程师的不同能力而定。

测试工程师以后的发展可以存在多种方向:

发展方向 职位 职位描述 月薪 年薪 就业地区

管理方向

技术方向

一般5人以下团队,能够同时测试组长 承担2-3个较小项目或者1个中、大型项目

可以管理多个小型测试团队,能够承担多个中型及较大型项测试经理

目的测试,及具备至少1个大型项目的测试管理能力。

这个由开发人员转过来的比较白盒测试 多,一般技术上要至少达到技术经理的水准。

自动化测试熟练使用一种以上自动化测试方向 工具。

主要职责是对系统的测试结果进行综合的分析,例如缺陷分测试分析师析、性能分析等。不但测试技/技术总监 术能力较强,还要具备数据库、操作系统等多方面的技术知识。

五千元以上

一万元以上

二十至三十万

北京、

二十至 上海、

七千元以上

三十万 大连、

深圳等

地区

六千元左右

一万元左右 行业测试专

一万元以上

软件测试方向发展应该具备那些专业知识和素质:

测试工程师一般分为以下几个等级:测试工程师、高级测试工程师和资深测试工程师。测试工程师一般承担以下工作:利用测试工具按照测试方案和流程对产品进行功能和性能测试,检查产品是否有缺陷,性能是否稳定;高级测试工程师一般的职责是:不但能够编写测试工具,而且能够设计和维护测试系统,编写测试方案,编写测试文档、编写安装和使用手册;资深测试工程师的职责要求更高:不但能够具有初级测试工程师和高级测试工程师的能力,而且能够对测试方案可能出现的问题能够进行分析和评估。

一、操作系统

s 操作系统的安装、维护;Windows操作系统的安全管理、用户管理;使用ghost对Windows进行备份和恢复;

系统介绍/系统安装;系统管理工具的使用;软件安装与维护;系统的启动与关闭;存储管理;安全管理;任务与进程管理;系统备份与恢复磁带机的使用;

系统介绍/系统安装;系统管理工具的使用/软件安装与维护;系统的启动与关闭;存储管理/安全管理/任务与进程管理;系统备份与恢复;

二、程序设计

编程基础 ,Java Web, J2EE编程;

2.C/C++;

三、数据库知识

语言及应用开发技术:DML、DDL、DQL、子查询、多表查询、游标、存储过程、用户定义函数、触发器、数据库设计;

Server数据库安装配置:SQL Server的安装、管理;SQL Server数据库备份和恢复;

数据库安装配置:Oracle基础知识;indows/Linux上Oracle数据库的安装;Windows/Linux上Oracle数据库的卸载;用户管理;网络连接;数据库备份与恢复;Oracle中的函数和存储过程;

四、软件工程:Rational Unified Process(RUP);

五、软件测试理论基础

单元测试、集成测试、外部功能测试、回归测试、系统测试、安装测试及验收测试;版本控制方法、源码管理工具VSS/CVS的使用;BUG Tracing、测试计划、测试用例等;测试文档的书写;

六、测试工具

系统学习软件测试的各类工具,包括自动测试工具Quick Test Professional、压力测试工具LoadRunner、测试管理工具Test Director等;

七、IT职业技能素养:职业规划、沟通技巧、团队合作、专业技术规范、面试技巧等职业技能培训;

发布者:admin,转转请注明出处:http://www.yc00.com/news/1689456424a251185.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信