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