2021-2022年收藏的精品资料软件测试第一章软件测试概述.doc
《2021-2022年收藏的精品资料软件测试第一章软件测试概述.doc》由会员分享,可在线阅读,更多相关《2021-2022年收藏的精品资料软件测试第一章软件测试概述.doc(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第1章 软件测试理论基础本章目标 了解软件测试基础知识 了解软件项目的运作流程与工作流程本章单词:test_requirement_unit_inteqration_system_track_customer_regression_1.1 行业背景近年来,计算机技术不断的发展,已在各行业得到广泛的应用,给整个社会带来翻天覆地的变化。各种各样的计算机技术出现我们身边,坐公交刷卡,买衣服上淘宝,书也可在当当网上买,这些计算机技术给我们带来的便利与我们的衣食住行相关;而对于国家国防来说,卫星导航、火箭发射等等一系列重要的工作,也都离不开计算机的支撑。计算机是由硬件与软件组成的。硬件,就像我们的基础设
2、置,是由专门的厂商去设置制造,而软件也是由专业的人员去开发测试。时代的发展,使得计算机的应用环境越来越复杂,从而提高了对硬件、软件的质量要求。从软件行业来讲,如何提高软件的质量,一直是当今软件生产活动中的热门话题。软件测试工作对于寻找软件系统中存在的缺陷、保证软件产品的质量,降低企业的生产成本,提高经济效益都具有不可替代的作用。同时,软件测试工作的实施又是一个非常复杂的过程,需要考虑人员、技术、管理、工具等众多因素,这些因素在软件生产活动中起着极其重要的作用。软件测试人员不仅仅要知道“做什么”,还要知道“为什么这么做”,以及“如何做”。随着软件业的发展,对于优秀的测试员的需求也越来越多。国内软
3、件行业的不断发展,国外的外包项目,甚至于本土项目都转移到中国来开发测试。龙象之争一书提出了中国软件与印度软件的关系,国外很多的公司在考虑将公司的主要业务转移到中国来,中国越来越趋向世界工厂,中国的劳动力成本与他们本国的成本相对来说要少了很多,这样的趋势就带来巨大的就业缺口。最新中国软件产业发展环境调查报告预测,未来5年,中国的软件市场销售规模将保持19.4%的复合增长率。不断发展的软件市场,带来了很多的就业机会,在未来的一段相当长的时间内,软件测试工程师作为软件生产活动中必不可少的角色,需求量将会非常大。目前我国软件测试人才严重匮乏,当前120万软件从业者中具备软件测试专业技术的人员不超过5万
4、,人才缺口达到30万。“在国内很多软件企业中,软件开发和测试人员数量之比仅能达到8:1,清华大学计算机教育专家谭浩强教授介绍说:“而与此同时,国际先进软件企业的同类数据却在1:1到1:2之间,差距十分明显”,造成这一结果的主要原因是国内软件测试人才教育相对滞后。据统计,目前我国开设计算机类专业的高校已超过1000所,而其中设立“软件测试”细分专业的高校几乎没有,绝大多数计算机专业的学生对软件测试都不了解。软件测试的发展陷入人才饥荒的困境。根据前程无忧()数据显示,2008年3月全国IT行业总的需求量达到了12万以上,与2月相比增加了近2万个职位,占据IT行业有效职位数城市榜单前五位的依次是:上
5、海、北京、深圳、广州、杭州等。在企业类型方面,除去其他类型企业,以民营/私营/非上市公司的需求量最大,其次为外商独资(欧美企业)。而纵观07年到现今,各大招聘网站如前程无忧、中华英才,每月的职位排行榜中,IT类的职位几乎月月折桂,软件测试工程师的需求量在IT类职位中又占据相当大的比例。种种现象、数据显示,软件测试工程师已经成为选择职业时不可不考虑的一门职业了。在市场需求量不断增加的环境下,软件测试工程师的待遇也在不断提高。目前在重庆有3年测试工作经验的薪金为8000左右,如图1-1,重庆软件测试工程师薪资趋势图。图1-1 薪金趋势图测试工程师的薪资高低主要受工作经验、技术能力以及外语因素所制约
6、,而与学历、年龄无关。一般的软件测试工程师,在无多少工作经验,技术能力与外语水平一般的情况下,基本能拿到2000到3000左右的待遇,随着工作年限的推移以及技术能力的提升,待遇会逐步提升。时间越久,技术能力越深厚的软件测试人员,待遇将与软件开发人员持平,甚至于高过开发人员。所以说,选择软件测试和其他职业一样,都能达到自身的职业要求,甚至于优于其他职业,只要坚持,相信自己的选择,同样可以达到自己心中所期望的高度。从自身的职业发展来看,软件测试工程师的发展方向如图1-2所示。图1-2 职业发展规划图如图1-2所示,有些软件测试工程师在工作几年后,会从技术路线来规划设计自己的职业发展,也可能选择管理
7、路线,甚至于转向软件开发,这些都是可以的,最重要的是要看自己适应哪种角色,能否坚持。一个理想的测试人员是应该有开发经验的,至少要有开发的概念。仅仅发现Bug是测试的初步,而分析出Bug的根本原因,却要有很深的功底。有了开发经历的测试人员工作起来就会更加得心应手,能够容易定位问题、发现潜在的缺陷。软件测试活动中本身就有测试工具的开发以及自动测试的开发,这些开发需要编写一些脚本,而脚本的编写比开发一个商品化应用系统简单不了多少。测试人员是开发人员中精通业务的佼佼者,再加上良好的测试观念和开发概念,这些都是一个合格的开发人员应该具备的,从软件测试转为开发,也是一个非常不错的选择。一般企业需要什么样的
8、软件测试人才呢?他们对软件测试人员的技术技能有哪些要求呢?一般地公司在招聘时都会提出以下几点要求:l 一年以上测试经验。l 计算机相关专业大专以上学历。l 了解软件工程,熟悉软件测试过程和标准、熟悉配置管理技术和工具。l 能够编写测试计划、设计测试用例、编写Bug报告和测试总结报告,使用测试工具、开发测试脚本。l 能熟练使用Windows、Unix、Linux中的某一种操作系统。l 熟悉一种以上编程语言,常见的有C、C+、Java、VB、Delphi、C#等。l 熟练使用SQLServer、Oracle等关系型数据库。l 了解业务领域(ERP、OA、电子商务、税务系统、电信计费系统.)优先。l
9、 熟练掌握至少一种以上的测试工具,如TestDirector、QTP、LoadRunner、Robot等。l 进取、合作、表达、沟通、责任心、耐心、认真程度。在这些招聘要求中,我们试着对照一下,自己具备哪些能力呢?由于新劳工合同法对员工的福利待遇提出了更高的要求,这点使得大多数公司在选择人才的时候更为慎重。企业希望招聘进来的员工能在短时间内适应工作环境,并投入到工作中去。由于现在职业培训的成本在增加,企业很少愿意对新进的员工进行培训,于是便提高应聘要求,希望应聘者具备一定的能力,以减少公司对员工的培训成本。而这些要求对于没有工作经验,或者想转行的人来说,无疑是一个巨大的困难。企业的要求这么高,
10、求职者该如何才能克服这些困难呢?这不仅需要有勤奋学习的精神,同时也需要一定的学习方法。本教程将由浅入深,理论和项目案例交互,理论为辅、实践为主的教学方式,浅显通俗的理论解释,结合真实的项目实战,使学者具备成为优秀的软件测试工程师的条件,并可与具有丰富实际经验和理论知识的老师进行双向交流,结合软件测试实践中遇到的问题进行研讨。对于软件测试初学者,我们提供了切合实际、循序渐进的学习线路,学者在实际学习过程中,可参考图1-3所示的软件测试学习路线图,从软件测试的理论基础,到项目实战,逐步学会软件测试的知识,掌握一定的技术技能,最终能够胜任公司的软件测试工作。图1-3 软件测试学习路线图无论是在学习还
11、是工作中遇到了问题,大家都可以到网上查询,网络给我们提供了丰富的学习资料。1.2 软件测试概述1.2.1 软件测试由来1950年左右,软件伴随着第一台电子计算机的问世诞生了。上世纪中叶,软件产业从零开始起步,在短短的50多年的时间里迅速发展成为推动人类社会发展的龙头产业,造就了一批百万、亿万富翁。随着信息产业的发展,软件对人类社会的发展越来越重要。过去,软件仅由懂一些开发知识的程序员编写。程序员不仅担负着编写代码的工作,还肩负着程序代码测试、保证代码质量的职责。实际上,程序员此时所做的测试工作并非真正意义上的软件测试。他们所做的测试,从本质上来说,应该称作“调试”。那么,什么是调试呢?通俗的理
12、解,就是在已知错误的情况下,对软件程序代码做出的一系列检查,校正的过程,而软件测试则是在未知错误的情况下,检查程序代码是否有问题的过程。真正区分测试与调试的意义在于,软件测试从软件质量保证的角度来检查程序代码是否有错误,而调试则是为了解决当前已知的错误,调试活动根本无法替代软件测试活动。以前,在大多数的企业、公司里往往把开发人员的调试过程当作测试,而不招聘专职的软件测试工程师,这样的观点是不正确的。由于早期的软件只有少量的代码,程序员完全可以应付。开发、调试、直至最后的发布使用。然而,随着真正的商用软件的出现,程序的规模经历了一次又一次的爆炸式的增长。程序规模从最初的几行或几十行类机器语言,到
13、现在的代码行数达到千万数量级,软件的复杂度不断增加,开发的难度也越来越难,随之而来的问题就是如何保证程序的正确性和可用性。此刻,软件再也不是一个只有程序员自己能够理解的黑盒子了,如何在软件程序自身的技术内涵和用户特定领域的需求间找到平衡点,成为学者和实践者们追寻的目标。此时,区别于调试的软件测试活动作为度量软件与用户需求间差距的手段登上了历史舞台。软件测试活动的出现,解放了程序员,使程序员能够专心的开发代码,优化算法,并能及时的修复测试人员所发现的代码缺陷,提高其工作效率。同时,各司其职的分工方式,也更适合于当今社会的发展模式。1.2.2 软件测试定义在学习软件测试定义之前,我们先来了解一下什
14、么是软件。软件这个词在我们的生活中出现的太多太多啦。财务软件,办公软件,聊天软件,播放软件等等,都不陌生,可有多少人能说出什么软件的定义吗?从软件的诞生到现在,经过了半个多世纪,它的发展从早期的简陋模式,到现在复杂模式。说简陋,是因为先前的软件定义仅限于代码,大多数人概念中的软件,是由一些可以运行的,可以实现某些特定功能的代码的集合。这种认识,其实忽略了软件所在的特定的社会环境,在一个真正的商业环境中,我们所生产的不仅仅只是程序代码,而是一个完整的产品,包括实现用户特定需求的程序代码,支撑程序代码运行的一切与之相关的文档,以及程序代码运行所必须的一切数据。就像我们购买一部手机,不仅仅只是手机,
15、还有手机的使用说明书、保修单等等。简单的理解就是软件是一个集合,包含上述的三个部分:程序代码、文档、数据。如图1-4所示。图1-4 软件构成结构图在了解软件的定义之后,我们再来学习什么是软件测试,前面介绍了测试与调试的区别,那么到底什么是软件测试呢?软件测试就是为了发现错误而审查软件文档、检查软件数据和执行程序代码的过程,其目的在于在软件交付使用前充分发现缺陷并协助相关部门定位、解决缺陷,最后交付一个高质量的软件给用户。软件测试是软件生存周期的一个重要阶段,其主要任务是对被测对象,从初期的需求规格说明书,到最后的系统交付使用,整个过程进行检查、验证,以确保软件质量。基于不同的立场,存在着两种完
16、全不同的测试目的。从用户的角度出发,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是否可接受该产品。而从软件开发者的角度出发,则希望测试成为表明软件产品中不存在错误的过程,验证被测软件已正确地实现了用户的需求,确立人们对软件质量的信心。那么软件测试人员在实际的工作过程中应该如何处理呢?根据软件测试的定义,不难得知,软件测试的目的是通过科学的测试方法,找出软件中存在的缺陷,最终得到一个高质量的软件产品,那么确保用户满意将是我们的服务宗旨,如何找到更多的软件缺陷,是我们工作的重点。所以,我们需要从客户的角度出发,按照正确的业务流程尽最大可能去模拟用户的行为习惯,找出产品中的缺陷。在此过程中
17、,应以需求规格说明书为基本依据,结合软件产品的设计文档,以及项目经验设计高效的测试用例,只有这样,才能达到测试的目的。从广义上讲,软件测试是指软件产品生存周期内所有的检查、评审和确认活动。如:设计评审、文档审查、单元测试、集成测试、系统测试、验收测试等。从狭义上讲,软件测试是对软件产品质量的检验和评价。它一方面检查、揭露软件产品质量中存在的质量问题,同时又需对产品质量进行客观的评价并能提出改进意见。在软件测试工作中会经常接触到这样一个名词Bug。软件测试活动中称寻找软件缺陷的过程为找Bug,那么到底什么是Bug呢?从字面来看,Bug就是小虫、臭虫的意思,这跟软件中的缺陷有什么关系呢?这里有个典
18、故。第一代的计算机是由许多庞大且昂贵的真空管组成,并利用大量的电力来使真空管发光。可能正是由于计算机运行产生的光和热,引得一只小虫子(Bug)钻进了一支真空管内,导致整个计算机无法工作。研究人员费了半天时间,总算发现原因所在,把这只小虫子从真空管中取出后,计算机又恢复正常。后来,Bug这个名词就沿用下来,表示电脑系统或程序中隐藏的错误、缺陷或问题。Bug的定义很广泛,在软件使用过程中所出现的任何一个可疑问题,或者导致软件不能符合设计要求或者不能满足消费者需求的问题都是Bug,即使这个Bug在实践中是可行的。有时候,Bug并不是程序错误。例如,软件没有按照一般用户的使用习惯来运行,此时也可以把这
19、个问题看成是该软件的一个Bug。从另外一个方面来理解,Bug就是缺陷、不完美的意思。一切不完美的地方,都可以认为其是一个Bug。Bug有很多种分类方法,可以按软件的生命周期分,比如需求分析阶段、产品设计阶段、产品维护阶段等;也可以按照软件的构成分,比如软件文档、软件代码、软件数据等;同样可以按照软件测试的工作点来分,比如UI界面、功能、性能等。不管使用哪种分类方法,都是为了有效的区分Bug所处的位置,便于尽快定位问题,并解决问题。1.2.3 软件测试基本分类在了解了软件测试定义后,我们来看看软件测试都有哪些分类。一般来讲我们可以通过软件开发周期和阶段、逻辑结构可见度、是否执行程序、测试方式和手
20、段四中方式来对软件测试进行分类。按软件开发周期和阶段分为单元测试、集成测试、系统测试、性能测试、用户测试和回归测试。按逻辑结构可见度分为黑盒测试、白盒测试和灰盒测试。按是否执行程序份为静态测试和动态测试。按测试方式和手段则分为手动测试和自动化测试。请看表1-1表1-1 软件测试分类软件开发周期和阶段逻辑结构可见度是否执行程序测试方式和手段需求测试黑盒测试静态测试手动测试单元测试白盒测试动态测试自动化测试集成测试灰盒测试系统测试性能测试用户测试回归测试下面我们一一对这些测试概念进行分析,由于本课程的体系是按照软件开发的周期和阶段来划分测试的,所以这一部分内容我们单独放在了1.3节中介绍。1、黑盒
21、测试软件测试行业,最常听到的名词就是黑盒测试,那么到底什么是黑盒测试呢?黑盒测试又叫功能测试、数据驱动测试或基于需求规格说明书的功能测试。该测试类别注重于测试软件的功能性需求。采用这种测试方法,测试工程师把测试对象看作一个黑盒子,完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。如图1-5所示,测试工程师无须了解程序代码的内部构造,完全模拟软件产品的最终用户使用该软件,检查软件产品是否达到了用户的需求。举个例子,我们购买了手机以后,很少有人拆开手机观察其内部的结构,大多数情况下,我们只是使用该手机的功能,从某种意义上说,此时这部手机就是我们
22、的测试对象,所采用的测试方法就是黑盒测试。黑盒测试方法能更好更真实的从用户角度来考察被测系统的功能性需求实现情况。在软件测试的各个阶段(如单元测试、集成测试、系统测试及确认测试等)都发挥着重要作用,尤其在系统测试和确认测试中,其作用是其他测试方法无法取代的。图1-5 黑盒测试示例图2、白盒测试与黑盒测试相对的软件测试方法,称为白盒测试。白盒测试又称结构测试、逻辑驱动测试或基于程序代码内部构成的测试。此时,测试工程师将深入考查程序代码的内部结构,逻辑设计等等。就像前面的例子,我们拆开手机,观察手机电路板的设计,液晶屏的构成等等。白盒测试需要测试工程师具备很深的软件开发功底,精通相应的开发语言,一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2021 2022 收藏 精品 资料软件 测试 第一章 软件 概述
限制150内