软件测试-第一章-软件测试概述.doc

上传人:豆**** 文档编号:28549516 上传时间:2022-07-28 格式:DOC 页数:65 大小:343KB
返回 下载 相关 举报
软件测试-第一章-软件测试概述.doc_第1页
第1页 / 共65页
软件测试-第一章-软件测试概述.doc_第2页
第2页 / 共65页
点击查看更多>>
资源描述

《软件测试-第一章-软件测试概述.doc》由会员分享,可在线阅读,更多相关《软件测试-第一章-软件测试概述.doc(65页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date软件测试-第一章-软件测试概述软件测试-第一章-软件测试概述第1章 软件测试理论基础本章目标 了解软件测试基础知识 了解软件项目的运作流程与工作流程本章单词:test_requirement_unit_inteqration_system_track_customer_regression_1.1 行业背景近年来,计算机技术不断的发展,已在各行业得到广泛的应用,给整个

2、社会带来翻天覆地的变化。各种各样的计算机技术出现我们身边,坐公交刷卡,买衣服上淘宝,书也可在当当网上买,这些计算机技术给我们带来的便利与我们的衣食住行相关;而对于国家国防来说,卫星导航、火箭发射等等一系列重要的工作,也都离不开计算机的支撑。计算机是由硬件与软件组成的。硬件,就像我们的基础设置,是由专门的厂商去设置制造,而软件也是由专业的人员去开发测试。时代的发展,使得计算机的应用环境越来越复杂,从而提高了对硬件、软件的质量要求。从软件行业来讲,如何提高软件的质量,一直是当今软件生产活动中的热门话题。软件测试工作对于寻找软件系统中存在的缺陷、保证软件产品的质量,降低企业的生产成本,提高经济效益都

3、具有不可替代的作用。同时,软件测试工作的实施又是一个非常复杂的过程,需要考虑人员、技术、管理、工具等众多因素,这些因素在软件生产活动中起着极其重要的作用。软件测试人员不仅仅要知道“做什么”,还要知道“为什么这么做”,以及“如何做”。随着软件业的发展,对于优秀的测试员的需求也越来越多。国内软件行业的不断发展,国外的外包项目,甚至于本土项目都转移到中国来开发测试。龙象之争一书提出了中国软件与印度软件的关系,国外很多的公司在考虑将公司的主要业务转移到中国来,中国越来越趋向世界工厂,中国的劳动力成本与他们本国的成本相对来说要少了很多,这样的趋势就带来巨大的就业缺口。最新中国软件产业发展环境调查报告预测

4、,未来5年,中国的软件市场销售规模将保持19.4%的复合增长率。不断发展的软件市场,带来了很多的就业机会,在未来的一段相当长的时间内,软件测试工程师作为软件生产活动中必不可少的角色,需求量将会非常大。目前我国软件测试人才严重匮乏,当前120万软件从业者中具备软件测试专业技术的人员不超过5万,人才缺口达到30万。“在国内很多软件企业中,软件开发和测试人员数量之比仅能达到8:1,清华大学计算机教育专家谭浩强教授介绍说:“而与此同时,国际先进软件企业的同类数据却在1:1到1:2之间,差距十分明显”,造成这一结果的主要原因是国内软件测试人才教育相对滞后。据统计,目前我国开设计算机类专业的高校已超过10

5、00所,而其中设立“软件测试”细分专业的高校几乎没有,绝大多数计算机专业的学生对软件测试都不了解。软件测试的发展陷入人才饥荒的困境。根据前程无忧()数据显示,2008年3月全国IT行业总的需求量达到了12万以上,与2月相比增加了近2万个职位,占据IT行业有效职位数城市榜单前五位的依次是:上海、北京、深圳、广州、杭州等。在企业类型方面,除去其他类型企业,以民营/私营/非上市公司的需求量最大,其次为外商独资(欧美企业)。而纵观07年到现今,各大招聘网站如前程无忧、中华英才,每月的职位排行榜中,IT类的职位几乎月月折桂,软件测试工程师的需求量在IT类职位中又占据相当大的比例。种种现象、数据显示,软件

6、测试工程师已经成为选择职业时不可不考虑的一门职业了。在市场需求量不断增加的环境下,软件测试工程师的待遇也在不断提高。目前在重庆有3年测试工作经验的薪金为8000左右,如图1-1,重庆软件测试工程师薪资趋势图。图1-1 薪金趋势图测试工程师的薪资高低主要受工作经验、技术能力以及外语因素所制约,而与学历、年龄无关。一般的软件测试工程师,在无多少工作经验,技术能力与外语水平一般的情况下,基本能拿到2000到3000左右的待遇,随着工作年限的推移以及技术能力的提升,待遇会逐步提升。时间越久,技术能力越深厚的软件测试人员,待遇将与软件开发人员持平,甚至于高过开发人员。所以说,选择软件测试和其他职业一样,

7、都能达到自身的职业要求,甚至于优于其他职业,只要坚持,相信自己的选择,同样可以达到自己心中所期望的高度。从自身的职业发展来看,软件测试工程师的发展方向如图1-2所示。图1-2 职业发展规划图如图1-2所示,有些软件测试工程师在工作几年后,会从技术路线来规划设计自己的职业发展,也可能选择管理路线,甚至于转向软件开发,这些都是可以的,最重要的是要看自己适应哪种角色,能否坚持。一个理想的测试人员是应该有开发经验的,至少要有开发的概念。仅仅发现Bug是测试的初步,而分析出Bug的根本原因,却要有很深的功底。有了开发经历的测试人员工作起来就会更加得心应手,能够容易定位问题、发现潜在的缺陷。软件测试活动中

8、本身就有测试工具的开发以及自动测试的开发,这些开发需要编写一些脚本,而脚本的编写比开发一个商品化应用系统简单不了多少。测试人员是开发人员中精通业务的佼佼者,再加上良好的测试观念和开发概念,这些都是一个合格的开发人员应该具备的,从软件测试转为开发,也是一个非常不错的选择。一般企业需要什么样的软件测试人才呢?他们对软件测试人员的技术技能有哪些要求呢?一般地公司在招聘时都会提出以下几点要求:l 一年以上测试经验。l 计算机相关专业大专以上学历。l 了解软件工程,熟悉软件测试过程和标准、熟悉配置管理技术和工具。l 能够编写测试计划、设计测试用例、编写Bug报告和测试总结报告,使用测试工具、开发测试脚本

9、。l 能熟练使用Windows、Unix、Linux中的某一种操作系统。l 熟悉一种以上编程语言,常见的有C、C+、Java、VB、Delphi、C#等。l 熟练使用SQLServer、Oracle等关系型数据库。l 了解业务领域(ERP、OA、电子商务、税务系统、电信计费系统.)优先。l 熟练掌握至少一种以上的测试工具,如TestDirector、QTP、LoadRunner、Robot等。l 进取、合作、表达、沟通、责任心、耐心、认真程度。在这些招聘要求中,我们试着对照一下,自己具备哪些能力呢?由于新劳工合同法对员工的福利待遇提出了更高的要求,这点使得大多数公司在选择人才的时候更为慎重。企

10、业希望招聘进来的员工能在短时间内适应工作环境,并投入到工作中去。由于现在职业培训的成本在增加,企业很少愿意对新进的员工进行培训,于是便提高应聘要求,希望应聘者具备一定的能力,以减少公司对员工的培训成本。而这些要求对于没有工作经验,或者想转行的人来说,无疑是一个巨大的困难。企业的要求这么高,求职者该如何才能克服这些困难呢?这不仅需要有勤奋学习的精神,同时也需要一定的学习方法。本教程将由浅入深,理论和项目案例交互,理论为辅、实践为主的教学方式,浅显通俗的理论解释,结合真实的项目实战,使学者具备成为优秀的软件测试工程师的条件,并可与具有丰富实际经验和理论知识的老师进行双向交流,结合软件测试实践中遇到

11、的问题进行研讨。对于软件测试初学者,我们提供了切合实际、循序渐进的学习线路,学者在实际学习过程中,可参考图1-3所示的软件测试学习路线图,从软件测试的理论基础,到项目实战,逐步学会软件测试的知识,掌握一定的技术技能,最终能够胜任公司的软件测试工作。图1-3 软件测试学习路线图无论是在学习还是工作中遇到了问题,大家都可以到网上查询,网络给我们提供了丰富的学习资料。1.2 软件测试概述1.2.1 软件测试由来1950年左右,软件伴随着第一台电子计算机的问世诞生了。上世纪中叶,软件产业从零开始起步,在短短的50多年的时间里迅速发展成为推动人类社会发展的龙头产业,造就了一批百万、亿万富翁。随着信息产业

12、的发展,软件对人类社会的发展越来越重要。过去,软件仅由懂一些开发知识的程序员编写。程序员不仅担负着编写代码的工作,还肩负着程序代码测试、保证代码质量的职责。实际上,程序员此时所做的测试工作并非真正意义上的软件测试。他们所做的测试,从本质上来说,应该称作“调试”。那么,什么是调试呢?通俗的理解,就是在已知错误的情况下,对软件程序代码做出的一系列检查,校正的过程,而软件测试则是在未知错误的情况下,检查程序代码是否有问题的过程。真正区分测试与调试的意义在于,软件测试从软件质量保证的角度来检查程序代码是否有错误,而调试则是为了解决当前已知的错误,调试活动根本无法替代软件测试活动。以前,在大多数的企业、

13、公司里往往把开发人员的调试过程当作测试,而不招聘专职的软件测试工程师,这样的观点是不正确的。由于早期的软件只有少量的代码,程序员完全可以应付。开发、调试、直至最后的发布使用。然而,随着真正的商用软件的出现,程序的规模经历了一次又一次的爆炸式的增长。程序规模从最初的几行或几十行类机器语言,到现在的代码行数达到千万数量级,软件的复杂度不断增加,开发的难度也越来越难,随之而来的问题就是如何保证程序的正确性和可用性。此刻,软件再也不是一个只有程序员自己能够理解的黑盒子了,如何在软件程序自身的技术内涵和用户特定领域的需求间找到平衡点,成为学者和实践者们追寻的目标。此时,区别于调试的软件测试活动作为度量软

14、件与用户需求间差距的手段登上了历史舞台。软件测试活动的出现,解放了程序员,使程序员能够专心的开发代码,优化算法,并能及时的修复测试人员所发现的代码缺陷,提高其工作效率。同时,各司其职的分工方式,也更适合于当今社会的发展模式。1.2.2 软件测试定义在学习软件测试定义之前,我们先来了解一下什么是软件。软件这个词在我们的生活中出现的太多太多啦。财务软件,办公软件,聊天软件,播放软件等等,都不陌生,可有多少人能说出什么软件的定义吗?从软件的诞生到现在,经过了半个多世纪,它的发展从早期的简陋模式,到现在复杂模式。说简陋,是因为先前的软件定义仅限于代码,大多数人概念中的软件,是由一些可以运行的,可以实现

15、某些特定功能的代码的集合。这种认识,其实忽略了软件所在的特定的社会环境,在一个真正的商业环境中,我们所生产的不仅仅只是程序代码,而是一个完整的产品,包括实现用户特定需求的程序代码,支撑程序代码运行的一切与之相关的文档,以及程序代码运行所必须的一切数据。就像我们购买一部手机,不仅仅只是手机,还有手机的使用说明书、保修单等等。简单的理解就是软件是一个集合,包含上述的三个部分:程序代码、文档、数据。如图1-4所示。图1-4 软件构成结构图在了解软件的定义之后,我们再来学习什么是软件测试,前面介绍了测试与调试的区别,那么到底什么是软件测试呢?软件测试就是为了发现错误而审查软件文档、检查软件数据和执行程

16、序代码的过程,其目的在于在软件交付使用前充分发现缺陷并协助相关部门定位、解决缺陷,最后交付一个高质量的软件给用户。软件测试是软件生存周期的一个重要阶段,其主要任务是对被测对象,从初期的需求规格说明书,到最后的系统交付使用,整个过程进行检查、验证,以确保软件质量。基于不同的立场,存在着两种完全不同的测试目的。从用户的角度出发,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是否可接受该产品。而从软件开发者的角度出发,则希望测试成为表明软件产品中不存在错误的过程,验证被测软件已正确地实现了用户的需求,确立人们对软件质量的信心。那么软件测试人员在实际的工作过程中应该如何处理呢?根据软件测试的定

17、义,不难得知,软件测试的目的是通过科学的测试方法,找出软件中存在的缺陷,最终得到一个高质量的软件产品,那么确保用户满意将是我们的服务宗旨,如何找到更多的软件缺陷,是我们工作的重点。所以,我们需要从客户的角度出发,按照正确的业务流程尽最大可能去模拟用户的行为习惯,找出产品中的缺陷。在此过程中,应以需求规格说明书为基本依据,结合软件产品的设计文档,以及项目经验设计高效的测试用例,只有这样,才能达到测试的目的。从广义上讲,软件测试是指软件产品生存周期内所有的检查、评审和确认活动。如:设计评审、文档审查、单元测试、集成测试、系统测试、验收测试等。从狭义上讲,软件测试是对软件产品质量的检验和评价。它一方

18、面检查、揭露软件产品质量中存在的质量问题,同时又需对产品质量进行客观的评价并能提出改进意见。在软件测试工作中会经常接触到这样一个名词Bug。软件测试活动中称寻找软件缺陷的过程为找Bug,那么到底什么是Bug呢?从字面来看,Bug就是小虫、臭虫的意思,这跟软件中的缺陷有什么关系呢?这里有个典故。第一代的计算机是由许多庞大且昂贵的真空管组成,并利用大量的电力来使真空管发光。可能正是由于计算机运行产生的光和热,引得一只小虫子(Bug)钻进了一支真空管内,导致整个计算机无法工作。研究人员费了半天时间,总算发现原因所在,把这只小虫子从真空管中取出后,计算机又恢复正常。后来,Bug这个名词就沿用下来,表示

19、电脑系统或程序中隐藏的错误、缺陷或问题。Bug的定义很广泛,在软件使用过程中所出现的任何一个可疑问题,或者导致软件不能符合设计要求或者不能满足消费者需求的问题都是Bug,即使这个Bug在实践中是可行的。有时候,Bug并不是程序错误。例如,软件没有按照一般用户的使用习惯来运行,此时也可以把这个问题看成是该软件的一个Bug。从另外一个方面来理解,Bug就是缺陷、不完美的意思。一切不完美的地方,都可以认为其是一个Bug。Bug有很多种分类方法,可以按软件的生命周期分,比如需求分析阶段、产品设计阶段、产品维护阶段等;也可以按照软件的构成分,比如软件文档、软件代码、软件数据等;同样可以按照软件测试的工作

20、点来分,比如UI界面、功能、性能等。不管使用哪种分类方法,都是为了有效的区分Bug所处的位置,便于尽快定位问题,并解决问题。1.2.3 软件测试基本分类在了解了软件测试定义后,我们来看看软件测试都有哪些分类。一般来讲我们可以通过软件开发周期和阶段、逻辑结构可见度、是否执行程序、测试方式和手段四中方式来对软件测试进行分类。按软件开发周期和阶段分为单元测试、集成测试、系统测试、性能测试、用户测试和回归测试。按逻辑结构可见度分为黑盒测试、白盒测试和灰盒测试。按是否执行程序份为静态测试和动态测试。按测试方式和手段则分为手动测试和自动化测试。请看表1-1表1-1 软件测试分类软件开发周期和阶段逻辑结构可

21、见度是否执行程序测试方式和手段需求测试黑盒测试静态测试手动测试单元测试白盒测试动态测试自动化测试集成测试灰盒测试系统测试性能测试用户测试回归测试下面我们一一对这些测试概念进行分析,由于本课程的体系是按照软件开发的周期和阶段来划分测试的,所以这一部分内容我们单独放在了1.3节中介绍。1、黑盒测试软件测试行业,最常听到的名词就是黑盒测试,那么到底什么是黑盒测试呢?黑盒测试又叫功能测试、数据驱动测试或基于需求规格说明书的功能测试。该测试类别注重于测试软件的功能性需求。采用这种测试方法,测试工程师把测试对象看作一个黑盒子,完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功

22、能是否符合它的功能说明。如图1-5所示,测试工程师无须了解程序代码的内部构造,完全模拟软件产品的最终用户使用该软件,检查软件产品是否达到了用户的需求。举个例子,我们购买了手机以后,很少有人拆开手机观察其内部的结构,大多数情况下,我们只是使用该手机的功能,从某种意义上说,此时这部手机就是我们的测试对象,所采用的测试方法就是黑盒测试。黑盒测试方法能更好更真实的从用户角度来考察被测系统的功能性需求实现情况。在软件测试的各个阶段(如单元测试、集成测试、系统测试及确认测试等)都发挥着重要作用,尤其在系统测试和确认测试中,其作用是其他测试方法无法取代的。图1-5 黑盒测试示例图2、白盒测试与黑盒测试相对的

23、软件测试方法,称为白盒测试。白盒测试又称结构测试、逻辑驱动测试或基于程序代码内部构成的测试。此时,测试工程师将深入考查程序代码的内部结构,逻辑设计等等。就像前面的例子,我们拆开手机,观察手机电路板的设计,液晶屏的构成等等。白盒测试需要测试工程师具备很深的软件开发功底,精通相应的开发语言,一般的软件测试工程师难以胜任该工作。图1-6是白盒测试的示例图,相对于白盒测试工程师来说,软件产品内部构成是敞开的。图1-6 白盒测试示例图3、灰盒测试与前面的黑盒测试、白盒测试相比,灰盒测试介于两者之间。黑盒测试仅关注程序代码的功能性表现,不关注内部的逻辑设计、构成情况,白盒测试则仅从程序代码的内部构成考虑,

24、检查其内部代码设计结构,方法调用等。而灰盒测试结合这两种测试方法,一方面考虑程序代码的功能性表现,另一方面,又需要考虑程序代码的内部结构。通俗的讲,灰盒测试就是白加黑,通常性能测试、自动化功能测试就采用了灰盒测试的方法。图1-7是灰盒测试的示例图。图1-7 灰盒测试示例图4、静态测试静态测试,顾名思义,就是静态的、不执行被测对象程序代码而寻找缺陷的过程。通俗的讲,静态测试就是用眼睛看,阅读程序代码,文档资料等,与需求规格说明书中的客户需求进行比较,找出程序代码中设计不合理,以及文档资料有错误的地方。一般在企业、公司里会召开正规的评审会,通过评审的方式,找出文档资料、程序代码中存在缺陷的地方,并

25、加以修改。在进行代码的静态测试时,可以采用一些代码走查的工具,如QAC+、C+Test等。5、动态测试动态测试即为实际的执行被测对象的程序代码,输入事先设计好的测试用例,检查程序代码运行得到的结果与测试用例中设计的预期结果之间是否差异,判定实际结果与预期结果是否一致,从而检验程序的正确性、可靠性和有效性,并分析系统运行效率和健壮性等性能状况。动态测试由四部分组成:设计测试用例、执行测试用例、分析比较输出结果、输出测试报告。动态测试有三种主要的方法:黑盒测试、白盒测试以及灰盒测试。6、手动测试在未真正接触软件测试之前,很多人都认为,软件测试工作就是执行一些鼠标点击的动作来查找缺陷。的确,在手动测

26、试阶段,大部分的测试工作就是模拟用户的业务流程,来使用软件产品,从而发现软件产品中的缺陷。手动测试是最传统的测试方法,也是现在大多数公司都使用的测试形式。它是测试人员设计测试用例并执行测试用例,然后根据实际的结果去和预期的结果相比较并记录测试结果,最终输出测试报告的测试活动。这样的测试方法,可以充分发挥测试工程师的主观能动性,将其智力活动体现于测试工作中,能发现很多的缺陷。同时这样的测试方法又有一定的局限性与单调枯燥性。7、自动化测试随着软件行业的不断发展,软件测试技术也在不断地更新,出现了众多的自动化测试工具,如HP的QucikTestProfessional、LoadRunner,微软的W

27、AS,IBM的Rational系列产品等等。所谓的自动化测试,就是利用一些测试工具,模拟用户的业务使用流程,让它们自动运行来查找缺陷。也可以编写一些代码,设定特定的测试场景,来自动寻找缺陷。自动化测试的引入,大大的提高了测试的效率和测试的准确性,而且写出的比较好的测试脚本,还可以在软件生命周期的各个阶段重复使用。自动化测试的优点是能够很快、很广泛地查找缺陷,同时可以做很多重复性的工作,在回归测试阶段,可以利用QuickTestProfessional自动化功能测试工具进行,而无须大量的软件测试人员手动的再次执行测试用例,极大的提高了工作效率。在进行压力测试时,需要几万甚至几十万个用户同时访问某

28、个站点,以保证网站的服务器不会出现死机或崩溃的现象。一般来说,要几万人同时打开一个网是不现实的,就算能够找到那么多的测试者,成本也很高。但是,利用测试工具,比如LoadRunner,就可以非常容易地做到,并且测试工具还可以自动判断浏览结果是否正确。然而,自动化测试的缺点也很明显,它们只能检查一些比较主要的问题,如崩溃、死机,但是却无法发现一些一般的日常错误,这些错误通过人眼很容易找到,但机器却往往找不到。另外,在自动测试中编写测试脚本工作量也很大,有时候该工作量甚至超过了手动测试的时间。如今很多的软件产品生产,都是追求短(项目周期短)、平(成本低)、快(市场反应快),根本没有那么多的时间留给测

29、试。在这种情况下,如果我们盲目追求自动化测试,可能带来的不是好处,而是项目的失败。需要注意的是,在自动化测试活动中,测试工具的应用可以提高测试的质量、测试的效率。但是在选择测试工具进行测试时,可以看到,并不是所有的测试工具都适合我们使用;同时,有了测试工具、会使用测试工具并不等于测试工具真正能在测试中发挥作用。因此,测试者应该根据实际情况选择或者不选择测试工具,选择使用何种测试工具,千万不能为了使用工具而刻意的去使用工具。1.3 软件测试流程软件测试虽然是软件生存周期的一个独立阶段,但测试工作却渗透到分析、设计、编程的各个阶段中,如测试计划的编写从分析和设计阶段就开始了,而具体的测试工作随编程

30、工作的不断深入也在进行中。1.3.1 需求测试软件测试V模型要求我们在需求阶段就开始制定系统测试的计划,开始考虑系统测试的方法,但这还不够。全面的质量管理要求我们在每个阶段都要进行验证和确认的过程。因此在需求阶段还需要对需求本身进行测试。这个测试是必要的,因为在许多失败的项目中,70%85%的返工是由于需求方面的错误所导致的,并且因为需求的缘故而导致大量的返工,造成进度延迟、缺陷的发散,甚至项目的失败,这是一件极其痛苦的事情。因此通常要求在项目的源头(需求)就开始测试。在接到测试项目的前期,我们需要对被测软件的需求规格说明书、概要设计文档、详细设计文档、数据库设计文档等文档资料进行查阅,重点检

31、查需求规格说明书中是否存在描述不准确、需求定义模糊、需求用例不正确、语言存在二义性等等问题。如果不对这些文档进行检查,将可能在后期的测试工作中不断接到系统修改、需求变更等问题。需求测试主要从以下几个方面考虑:l 完整性每一项需求都必须将所要实现的功能描述清楚,从而为开发人员设计和实现这些功能提供所有必要的需求依据。l 正确性每一项需求都必须准确地陈述其要开发的功能。l 一致性一致性是指与其它软件需求或高层(系统,业务)需求不相矛盾,或者与项目宣传资料一致。l 可行性每一项需求都必须是在已知系统和环境的权能和限制范围内可以实施的。l 无二义性对所有需求说明的读者都只能有一个明确统一的解释,由于自

32、然语言极易导致二义性,所以尽量把每项需求用简洁明了的用户性的语言表达出来。l 健壮性需求的说明中是否对可能出现的异常进行了分析,并且对这些异常进行了容错处理。l 必要性“必要性”可以理解为每项需求都是用来授权你编写文档的“根源”。要使每项需求都能回溯至某项客户的输入,如需求用例或别的来源。l 可测试性每项需求都能通过设计测试用例或其它的验证方法来进行测试。l 可修改性每项需求只应在SRS(软件需求规格说明书)中出现一次。这样更改时易于保持一致性。另外,使用目录表、索引和相互参照列表方法将使软件需求规格说明书更容易修改。1.3.2 单元测试单元测试又称为模块测试,顾名思义,就是对程序代码中最小的

33、设计模块单元进行测试。单元测试是在软件开发过程中要进行的最低级别的测试活动。在单元测试中,主要采用静态测试与动态测试相结合的办法。首先采用静态的代码走查,检查程序代码中不符合编程规范、存在错误或者遗漏的地方;同时使用代码审查的方法,小组检查项目代码,以期望发现更多的问题;然后再使用单元测试工具,比如JUnit等工具进行程序代码内逻辑结构、函数调用等方面进行测试。据业界统计,单元测试一般可以发现大约80%的软件缺陷。单元测试对测试人员的要求相对较高,一般需要有几年的代码编写经验,并且要十分熟悉当前的被测系统,以及该系统是否与其他系统的接口关联情况。在大多数公司中,单元测试一般情况下由对应的开发工

34、程师负责。在实际的工作过程中,很多人认为单元测试没有必要,认为这个过程耽误了工作进度,没什么实际的效果;其实不然,软件测试活动贯穿于软件生产的整个过程,每个环节的检查测试都是不可缺少的,缺陷发现的越早,其修复的代价也就越小。单元测试在编码阶段占据着非常重要的地位。编码只是一方面,还需检查编码,保证代码的质量。所以说,在软件生产过程中及时的开展单元测试是非常有必要的,可以降低编码的错误率,提高编码质量。1.3.3 集成测试个体不代表全部,在单元测试阶段,发现并解决了部分的问题,但不能解决所有的问题。在当前环境下,我们可能觉得代码质量已经非常好了,至少我们的能力范围内不能再发现缺陷了。此时,仅仅是

35、一个代码模块,功能模块,一旦组合起来,可能相互之间的问题暴露了。集成测试,又称为组装测试,就是将软件产品中各个模块组装起来,检查其接口是否存在问题,以及组装后的整体功能、性能表现。在开展集成测试之前,我们进行了深入的单元测试(当然,实际工作中大多公司不会做单元测试,仅有程序员各自检查自己的代码),从个体来讲,可能解决了很多的缺陷,但所有的个体组合起来,就可能出现各种各样的问题。1+12的问题,此刻尤为突出。在单元测试阶段,我们无法发现资源争用、接口调用、时钟延迟等等问题。假如有两个模块A、B,一个数据在A处处理时因代码问题,延迟了0.01秒,然后流转到B模块处理,又延迟了0.01秒,那么对于个

36、体来讲,可能0.01秒算不了什么,但当数据流转的环节增加时,相应的延迟时间也在不断的增加,最终的累加数据可能带来非常严重的后果,二战期间的爱国者导弹实验,就给了我们深刻的教训。每个环节的缺陷在最终被放大后,可能会引起软件的失效。所以,单元测试阶段的成果并不能保证集成测试没有问题。采用科学有效的集成测试方法,在软件生产活动中是非常有必要的。集成测试一般可采用非增式集成方法、增式集成方法(自底向上集成、自顶向下集成、组合方式集成)等策略进行测试,利用以黑盒测试为主,白盒测试为辅的测试方法进行测试。集成测试人员一般有测试工程师担当,开发人员将经过单元测试的代码集成后合成一个新的软件版本,交由配置管理

37、员,然后测试组长会从配置管理员处提取集成好的版本进行测试。就像一个自行车生产线一样,工人将自行车的各个部件先检查,没有问题后再组装成一辆完整的自行车交由质检人员进行检查。软件测试工程师就像这里的质检人员,负责对集成组装后的软件版本进行检测。集成测试阶段主要解决的是各个软件组成单元代码是否符合开发规范、接口是否存在问题、整体功能有无错误、界面是否符合设计规范、性能是否满足用户需求等等。1.3.4 系统测试系统测试,是将通过集成测试的软件,部署到某种较为复杂的计算机用户环境进行测试,这里所说的复杂的计算机用户环境,其实就是普通用户的计算机环境。比如,我们开发了一套财务软件,软件中采用了EXCEL2

38、000版中的某些绘图控件,在集成测试阶段,大多数是在一种比较干净的系统进行测试。所谓的干净,就是在测试机上没有多余的软件,仅有所需的操作系统和被测软件。当集成测试完成后,就将被测软件置入比较复杂的运行环境下,进行集成和确认测试。在这个过程中,往往有很大的收获,比如进行安装测试的时候,会发现在集成阶段安装没有问题,而在复杂的用户环境下,却不能安装。举个例子,前面所说的财务软件,当我们的计算机中装有新版本的EXCEL时,如EXCEL2007,就可能出现无法正常使用该软件的问题,因为该财务软件所需的控件在EXCEL2007可能不存在,或者不适用。类似于这样的问题,就需要将被测软件置入一个较为普遍的用

39、户计算机环境中。系统测试的目的在于通过与系统的需求定义作比较,发现软件与系统的定义不符合或与之矛盾的地方。这个阶段主要进行的是安装卸载测试、兼容性测试、功能确认测试、安全性测试等等。系统测试阶段采用黑盒测试方法,主要考查被测软件的功能与性能表现。如果软件可以按照用户所期望方式来工作的时候,即可认为通过系统测试。系统测试过程其实也是一种配置检查过程,检查在软件生产过程中是否有遗漏的地方,在此时做到查漏补缺,以确保交付的产品符合用户质量要求。1.3.5 性能测试软件测试工作对于一般的软件产品而言,主要测试四个方面:文档、界面、功能、性能。前面大部分描述的是文档、界面与功能方面的测试。接下来了解性能

40、测试的概念。性能测试所包含的内容比较多,按照典型的概念来理解,就是要求被测软件在业务处理速度,处理能力和所耗用的硬件系统资源比率满足用户的需求。比如,对于某个论坛,我们需要测试该论坛支持10000个用户同时使用,并且在这种情况下,打开帖子的速度能否控制在4秒钟以下,论坛服务器的CPU使用率不超过80%,内存占用率不超过75%等等,这些就是典型的性能测试指标。实施性能测试,一方面可以验证被测软件是否符合用户需求,另一方面,可以得到相关的性能数据,为被测软件的优化提供参考。随着B/S结构软件流行,越来越多的用户希望他们的软件能够有比较好的性能表现,于是性能测试工作的地位被提升,重要性也日渐显露。那

41、么具体如何实施性能测试呢?计算机的处理速度是非常快的,如果想考查某项性能是否达到预定的需求,比如业务处理速度,我们不可能手动记录处理时间,因为这样是不现实的,也是不明智。同时,有些时候需要模拟大量用户使用系统的情况,比如测试新浪网能否承受100万网络用户的并发访问,那么是不是要找100万个人,100万台电脑在同一时刻登录新浪网呢?这显然是不可能实现的。一系列实际的问题告诉我们,不要尝试用手动方式进行性能测试,应当编写一段相应的程序或者使用专门的工具进行,比如利用LoadRunner自动化性能测试工具。性能测试的难度相对来说比较大,要求测试人员掌握编程语言,精通业务流程,拥有深厚的项目经验。所以

42、,想顺利的开展性能测试,需要测试工程师不断学习,掌握相应的知识。1.3.6 用户测试在系统测试完成后,将会进行用户测试。这里用户测试,其实可以称为用户确认测试。在正式验收前,需要用户对系统做出一个评价,用户可对交付的系统做测试,并将测试结果反馈回来,进行修改、分析。面向应用的项目,在交付用户正式使用之前要经过一定时间的用户测试。用户测试在整个软件生产流程中非常重要,这个环节是被测软件首次作为正式的系统交由用户使用,用户会根据他们的实际使用情况进行测试、试用,并提出实际使用过程中的问题。软件测试是尽可能的去模拟客户的业务行为,遵循既定的用户需求和软件生产规范,寻找软件产品中的缺陷。然而,测试工程

43、师并不是真正的最终用户。因为,在测试过程中仍会存在一些未能发现的实际业务缺陷,这对软件质量的保证并不是一个好消息。所以,在产品正式发布前,加入用户的测试是一个明智的选择,因为用户能从最终的业务角度来试用系统,并能发现很多有价值的缺陷,从某个角度来说,用户测试是软件生产流程中的最后质检关。1.3.7 回归测试简单说,回归测试就是过一段时间以后再回过头来对以前修复过的Bug重新进行测试,看该Bug是否会重新出现。回归测试一般发生的情况在用户发现缺陷反馈到公司后,测试部门将组织一次回归测试。或者,公司内部人员发现某软件存在某种缺陷时,也可以发起回归测试。回归测试阶段主要的目的是检查以前的测试用例能否

44、再次通过,是否还有需要补充的用例等等。有些公司会采用自动化测试工具来进行回归测试,比如利用QTP,对于产品级、变动量小的软件而言,可以利用这样的工具去执行测试。但一般情况下,都由测试工程师手动的执行以前的测试用例,来检查用例通过情况。回归测试可以发现在产品发布前未能发现的问题,比如时钟的延迟问题,软件的性能问题等等。本章总结l 软件测试流程:需求测试、单元测试、集成测试、系统测试、性能测试、用户测试、回归测试。l 软件运作流程:职场调研、可行性研究、产品立项、需求调研、设计开发、产品发布、产品维护、产品升级。作业一、选择题1、 下面关于软件测试描述错误的是( )。A软件测试就是为了发现错误而审

45、查软件文档、检查软件数据和执行程序代码的过程。B软件测试的目的是最后交付一个高质量的软件给用户。C软件测试在于在软件交付使用前充分发现缺陷并协助相关部门定位、解决缺陷。D软件测试是为了让客户满意操作体验。2、 下面关于单元测试描述错误的是( )。A单元测试对测试人员的要求比较高,一般要有几年的代码编写经验。B单元测试其实在实际的项目开发者中是没有必要的。C单元测试可以降低编码的错误率,提高编码质量。D单元测试又称为模块测试,就是对程序代码中最小的设计模块单元进行测试。3、 下面存在不属于测试部门人员构成的是( )。A采购员、市场调查员B环境保障员、配置管理员C测试程序员、测试工程师D测试主管、

46、测试组长4、 下面关于白盒与黑盒测试说法错误的是( )。A黑盒测试方法能更好更真实的从用户角度来考察被测系统的功能性需求实现情况。B白盒测试又称结构测试、逻辑驱动测试或基于程序代码内部构成的测试。C黑盒测试仅关注程序代码的功能性表现,不关注内部的逻辑设计、构成情况,白盒测试则仅从程序代码的内部构成考虑,检查其内部代码设计结构,方法调用等。D软件的黑盒 测试是对软件的过程性细节做细致的检查。5、 下面存在不属于测试部门人员构成的是( )。A采购员、市场调查员B环境保障员、配置管理员C测试程序员、测试工程师D测试主管、测试组长二、简答题1、 什么叫软件测试?软件测试的目的是什么?2、 软件测试的一般工作流程是什么?3、 软件测试的测试流程是什么?各阶段的工作内容重点是什么?-

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁