软件测试课程 学习指南_第1页
软件测试课程 学习指南_第2页
软件测试课程 学习指南_第3页
软件测试课程 学习指南_第4页
软件测试课程 学习指南_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

11/11软件测试课程学习指南一、引言本课程学习指南是该课程的主讲教师针对学习者如何学好本课程而提出的一些建议与指导性说明的文本,旨在帮助学习者如何学习和怎样掌握软件测试的基本知识、基本技术和设计、规划、实施测试工程的方法论,并能运用所学去分析和解决实际的软件测试问题。能在软件行业、企业的软件测试领域,软件质量保障或软件设计、开发等岗位从事专业技术性工作,同时也为学习者进一步学习测试知识和运用测试技能,提高测试技术水平和专业综合素质,奠定较扎实的基础。本文将以解说与漫谈的方式问答“为什么要学习软件测试、本课程要学习些什么内容、怎样进行有效的学习?”三个学习者普遍比较关注的问题。主讲教师建议学习者在学习初始时即对该指南进行初阅,经过一段时间的课程学习与实践体会后,再回头进行二次阅读,可能会有一些新的认识和体会,并产生自己的学习方法和见解。本学习指南期望起到“抛砖引玉”的作用。因为,对于理论知识的认识与技术实践能力的构建,最终为每个个体的特性。二、为什么要学习和掌握软件测试我们先来说说,为什么现在有必要强调学习软件测试知识和掌握软件测试技能。现今世界上软件发达国家,如,欧美、印度、爱尔兰等国的软件企业软件开发(设计、编码等)岗位职务人数与软件测试与质量保障岗位职务之比基本上都在1:1左右,一些优秀知名的企业,如IBM、微软、塔塔等软件测试与质量保障职位人数甚至超过了开发人员数量;一个软件产品(系统)的研发过程中测试所用时间和耗费的资金都接近和超过了50%。这表明软件测试的工作岗位和职业已不是可有可无、而在软件产业中不可或缺,人类存在,软件存在,软件存在软件测试就存在。是什么缘故,使得软件的质量以关系到人类社会生活的各方面,甚至是生命和财产的安危。这是因为在军事领域、航空航天、核电工业、金融系统、以致与人们日常生活联系密切的航空运输、高速铁路、医疗卫生、电子商务、汽车电子等等产品中都深度嵌入了软件系统或需要软件来支撑其运行。因此,其产品(系统)质量的优劣都关乎到人们的生命财产安全和社会各方面的正常运转、社会效率的发挥。对软件产品来说,质量是一项极其重要的问题。我们常说‘质量是产品的生命线’,这在软件产品中的表现很突出,尤为一些重要的、关键性的软件。我们不时的有所耳闻目睹,全世界不断地曝光与揭露因为软件质量的问题而导致或发生的重大事故及灾难性的事件。首先,现在我们大家的工作、学习、生活几乎都离不了计算机、网络和各种软件的运行和使用。但也常常遇到因软件质量问题所造成的各种影响和损失(仅更新版本、下载‘补丁’,消除‘病毒’预防和检测系统,所耗费的电力、时间与人力成本、机器损耗等,全球、全国加起来基本上都是‘天文数字’。更不要说因软件质量(存在的缺陷和故障)造成的毁灭性事件。这样的例子比比皆是。举个大家十分熟悉的例子,全球使用计算机,包括我们每人都离不开的手机等,时不时的要更新软件(为排除故障、修正缺陷、消除‘病毒’、更新系统等等),大家有没有想过,这要耗费多少时间和能源啊?还有蒙受到的各种损失……。其二,为什么软件的质量问题‘层出不群’?让我们来体会差不多每一人每日使用的Windows软件系统(操作系统、应用系统等)从产品发布、投入运行到现在(在没有宣布产品的终止使用前)今日发现一个‘漏洞’,明日出现一个‘故障’(Bug),…….没完没了。哪天是一个头,才能终结。这是何原因?这是因为,软件是人类逻辑思维的一种‘产品’,是一个看不见、摸不着的、与常规各种产品相比是有着‘特殊性’的智力表现与集成。而人的逻辑思维常常会犯错,并且几乎不能从根本上杜绝这种现象的发生。也就是说,只要是人类设计生产了软件,就一定会存在着错误(这里指复杂或大型的软件系统)。惟一的办法就是从软件的需求开始,在软件产品的各个环节,直至软件的生命周期结束(不再使用了),软件的维护与更新工作就会永不停止。软件存在、测试过程就会存在,相伴相随。这如同,一个人从受孕、出生、成长到死亡,一生中总会去医院,会和医务人员‘打交道’。如果说,医务人员生是人类生命的维护者,那么,软件生命的维持者就是测试专业工作者。只要人类生存依赖着软件,软件测试的职业和工作就会存在下去。从这里的分析,你可以看出,为什么现在的软件测试与质量保障人员的数量会达到甚至超过开发人员。当然,在目前中国的软件企业中,测试岗位和人数还远未达到国际先进软件企业的常规水平。目前国内企业软件测试与软件开发人员之比,近几年的统计结果,大约为1:7-8左右。一些企业甚至还没有专门的测试组织、机构和配备专职的软件测试人员。这对于中国软件产业和企业都想尽快地提高国际竞争力的预期和发展都不匹配或极为不利。而我们大家都知道,软件产业是最能体现国际化这一特征的。据国内一些软件专家分析,目前中国的软件技术水平与欧美发达国家之间的差距约为10-15年之间,其中主要的因素之一,是软件技术人员的专业知识、技能水平、应用能力还相对的落后。举例说,国内的一些软件企业,这些年在积极推进和运用敏捷开发技术,所遇到的最大问题之一是研发人员的素质和能力不济,具备敏捷开发能力是需要具备娴熟和运用软件测试技能的。国内,软件测试的职业岗位和工作充满了很大的机会和持久性。当然,抓住这个机遇,设想未来在该领域里工作、职业成长,专业的、系统化的软件测试理论学习和技能训练应该是必不可少的。实际上,这些年来,社会一些培训机构‘很火’,开办了不少的软件测试培训班和某种测试技能的速成班,来满足软件人才市场上测试人才的市场紧缺和需求,特别是受过系统化学习和专业训练的、富有经验的中、高端测试人才的价值在不断地提升,出现了‘一将难求’的局面。其三,现在国际国内,软件已经与计算机科学与技术学科处在了同等的地位,已从从属的二级学科上升为一级学科。从软件工程角度看,软件测试是其五个主要的组成部分。软件测试近40年的发展已使其成为了独立的研究学科与技术领域,并已产生和积累为复杂的系统的、丰富的知识体量与技术内涵,形成了系列化的学科分类、技术规范与国际标准,并在技术应用方面呈现出工程化的特征,这些都极大的丰富了软件测试作为独立课程的学习内容。同时,作为一个现代的软件技术专业人员,关于软件测试与质量保方面的知识与专业技能已不再是可有可无,而是其必备的专业人才素质与知识内涵组成。高等学校始终是软件技术人才培养的主要途径之一,国内、外皆同。适时在高校开设软件测试课程,进行软件测试知识的传授、学习,培训测试专业技能,是软件专业发展‘与时俱进’的必然,也是满足软件学科进步、产业发展、满足对软件测试专业人才社会需求的必须。三、本课程将要学习的主要内容1.课程内容构建原则本课程涉及了比较系统的软件测试知识域覆盖,针对软件工程师/测试工程师职业,以职业素质所要求的知识和能力为先导,采用“逆向制定法”来设计课程。也就是说,先根据软件测试专业(职业)工作的内涵,分析其对应的知识、技能与职业素质要求,来构造课程体系及确定课程的层次,并使课程基本上实现模块化,建立模块相互之间的关联逻辑和相对的独立,确立模块的知识与技能要求,选取相应内容,并能够使之便于学习和掌握。当然,实际的软件测试实施中,这些知识与技术,是需要综合运用的。以知识为基础才能开展工作,完成任务,软件测试是属于这种典型的工程专业的。本课程建立以基础知识、技术理论和工程应用为主线的课程架构,实现知识传授与技能培养并重,体现知识、能力、素质培养的“三合一”特征。理论部分突出基本知识和基本概念的表述,知识域覆盖范围,着重把握理论知识的深度和要领,为技术方法及工程运用提供全面的技术理论支撑。该课程知识涵盖原则是“必须的不缺”,对技术原理(方法)分析试图“举一反三”,对工程实践能力的训练采用“项目运作”的学习方法。软件测试是一项技术性很强的工程,需要综合运用很多测试的知识和技术方法,其过程规范的运用是以技术方式实施和展开。因此,本课程的构建、组织是以技术与工程为主线,围绕软件工程项目的测试进程展开,体现工程特点与专有技术的特征。因此,该课程内容及教学设计通过项目活动及过程呈现问题、运用相关理论知识解析问题,通过工程方法解决问题。技能训练也是本课程的重要组成。通过技能训练学习者掌握主流测试技术和实际运用过程,将理论知识与工程过程密切结合。在技能培养实现上,通过软件测试全过程的解析和引导,通过测试项目的运作,以“学中干、干中学”的方式形成专业能力。以理论知识、技术理论指导工程实践的意义,是让学习者明确某项活动为何要采取某个策略或技术,而非其他。这里涉及了很多方面,如,任务目标要求、实施的有效性、工作效率、运行成本,等等。明确认识和把握针对不同目标应采用相应策略与技术,明确运用技术方法的依据与预测结果。为达到这个教学目标,对实践的内容与教学形式设计为项目教学模式,尽可能的反映、接近实际。但教学(学习)总会与实际工作(情况)存在差异,例如,工作经验的获得,仅有课程的学习,而缺乏了实际的体验,是难以有深刻的认识和体会的。本课程共分为7个部分(章节),分别是:第一章软件测试概述;第二章软件生命周期的测试;第三章软件测试的静态技术;第四章软件测试的动态技术;第五章软件自动化测试技术;第六章软件测试管理;第七章软件测试工程实践。这些知识和内容的选取和安排,应该是一个专业测试人员的必备知识与能力构成,是一个能跨入软件测试领域(入职测试岗位)、从事软件测试工作的坚实基础,也是一个能持续发展软件测试专业能力以及职业生涯的基础。2.课程基本内容说明(1)软件测试基本概念这里包含了软件测试产生与发展的陈述与每个阶段的特点分析,它体现了软件测试概念的变迁、深入和一步一步迈向本质问题的历程,软件测试技术的产生与方法手段,以及技术的进步和测试效率的提高。这对我们认识软件测试的本质问题建立概念,对所要学习和运用的技术会有清醒的认识和理解。软件测试的本质:以各种策略与技术方法寻找软件的缺陷(Bug),对软件质量进行度量。(2)软件测试基本要素的构成与测试基本原理的形成软件测试的基本要素是确定测试对象、选择测试策略、设计测试用例、执行测试过程、分析测试结果。软件测试的理论研究与长期实践,学者和工程师总结出了7项基本原理。这是从理论分析与实践总结的角度的集中的概括,对这些原理的深刻认识,需要在不断学习的过程中去理解和体会,使其真正体现在对测试实际工作的思维和行为中,而不是仅仅‘记住’它。(3)软件质量体系与测试策略从软件开发模式与测试的关系,导出软件测试模型;从软件质量概念与质量模型的概念,导出软件质量体系与测试策略。这里,我们介绍了软件业界当前所运用的一些主流的软件开发与测试的模型、策略方法。这些策略与技术方法都关联着如何预防、寻找软件生产(产品)、运行过程中的故障,来保障软件(生命周期)的质量。(4)软件生命周期的概念及测试层级。将软件以生命周期的概念进行描述(V模型),反映出软件测试在生命周期中的地位和作用。软件测试的实施存在于软件的需求分析、设计过程、投入使用、更新维护等阶段与环节中,这反映了测试这一活动随软件生命周期的产生和完结,即测试即可发生在防止软件故障、缺陷出现的前期而实施,也可发生在软件生成的过程中,也可进行在软件运行、维护的阶段。软件的‘前期’、‘中期’和‘晚期’都会介入测试的活动。前期,我们可看作是‘预防Bug’的过程,中、晚期,可以看作是‘消除Bug’的行为。当然,不同的阶段,有不同的测试策略与方法。这有点如同我们对身体进行的体检、保健、疾病治疗的过程。软件存在、测试就存在这是一个思维与行为的理念,也是一切测试活动的出发点,并从本质上反映出测试是软件质量保证的根本性措施。(5)软件测试的主要类型。主要有组件测试、集成测试、系统测试、确认测试与验收测试四个层级。其中,每个阶段的测试策略和内容各异,针对的需解决问题存在逻辑关联和阶梯特性。(6)软件测试的静态测试技术(工程方法)。这方面包含静态测试概念、静态测试的常用方法,如数据流分析、控制流分析和程序复杂度计算等等。同时,静态测试分析工具与其应用也是需要学习和掌握的内容。软件评审的策略与方法常适用在软件开发过程的早期阶段,如需求分析阶段、方案设计阶段及代码走查的过程。软件(程序)的质量度量也常常采用静态分析的方法。(7)软件测试动态测试技术。动态测试技术的分析方法:针对测试对象的不同侧面,实施全方位测试。基于规格说明的动态测试(黑盒测试),它反映出从软件(程序)外部考察软件或程序的功能是否达到最初的用户需求与预期。等价类划分法、边界值分析法、因果图法与决策表法、状态转换法、正交实验法(配对法)等等都是常用的、主流动态测试技术,这些技术方法的学习提供的最终目标是能针对不同软件类型和特征,采用相应的策略与方法,最终能完成测试用例的设计。(8)基于程序结构的动态测试(白盒测试)。这是从软件(程序)内部考查其质量的度量,检查缺陷和错误。这里要学习的是逻辑覆盖(语句覆盖、分支覆盖、分支/条件覆盖、MC/DC覆盖)技术,路径测试(基本路径测试、循环路径的测试),针对这些覆盖的准则要求,设计相应的动态测试用例。黑盒测试与白盒测试,分别从两个不同的侧面去检验程序是否正确,有无缺陷和存在错误,保证其软件质量。这两类方法都基于这样的前提:软件(程序)具有比较规范的、与可依据的文档及源代码等。若达不到这些条件时,或文档不足以提供测试用例的设计依据时,上述测试方法均无法实施。由此问题就而产生了基于经验的测试方法。鉴于该课程是为初学软件测试的对象而开设,针对基于经验的测试方法,这方面的内容并没有过多涉及。显而易见,掌握这种测试技术需要具有实际测试的经验的作为基础。静态测试技术和动态测试技术是本课程要学习和掌握的重点。(9)软件自动化测试。这也是本课程学习和掌握内容,包含:软件自动化测试的概念、软件自动化测试的方法学,软件自动化测试系统的构建,自动化测试用例与脚本的知识,自动化测试工具及运用,以及软件系统的自动化测试应用。自动化测试现在是测试的发展趋势,实际测试过程比较完善的软件企业与机构,都在采用自动化测试的策略,与手工测试结合,完成测试工作。自动化测试有一定的优势,如测试的工作效率提高,解决某些人工无法完成的测试任务,如性能测试的压力、负载测试等。本课程介绍自动化测试的一些基本方法与策略。鉴于课程课时和教学方式条件的限制,并没有过多和大量的内容,对测试平台或工具种类的介绍和学习使用也无法实现全面、深入的说明、讨论。这一章节的测试工具以介绍性、测试原理与实现机制上为主,示范的作用更强一些,实际学习时,可以做相应的变通。这是基于自动化测试的原理是一致的。(10)软件测试管理。作为一门包含工程性质和内容的课程,自然缺不了关于测试管理的内容。本课程从测试管理概念,软件测试管理的框架、软件测试组织的管理、软件测试计划的管理、软件测试过程的管理、软件测试事件(缺陷、用例)的管理,以及软件测试的配置管理(配置和文档)做了测试管理较全面的说明和介绍。实际的企业测试过程,管理为必不可缺,虽然实施的程度和具体作法有所不同,但其中的测试管理的基本内容基本上都涵盖于此。(11)作为工程方法的学习。本课程以实践教学的方式引入,虽然提供的教学形式仍主要是课堂讲授,但这是必要的。工程方法的学习从两个方面入手,首先是方法的介绍和说明,其次是学习这些方法理论后,进行项目测试的实践,学习者需要通过“学中做”去领会与体验方法。从而获得对工程的理解、认识和把握,培养与形成能力。本课程软件测试工程的实践内容,主要设计了组件测试、功能测试和性能测试。掌握了这些学习内容和完成了项目的体验过程。基本上可达到从事实际测试工作的进入‘门槛’。软件组件测试:组件测试的步骤及过程,典型的组件测试工具与应用介绍,测试工具的测试原理及实现机制,组件测试项目及实践。软件系统功能测试:功能测试概要、功能测试的需求分析、功能测试计划的制定、功能测试测试用例的设计、正交实验法设计功能测试用例、用PICT测试工具生成测试用例的方法工程,发现并报告缺陷,软件项目功能测试的实施(以项目教学形式实施)。软件系统性能测试:性能测试概要知识、性能测试的需求分析、性能测试的设计开发、性能测试(RPT)测试平台的功能介绍与应用分析,性能测试项目实施(项目教学形式实施)。本课程并未包含所有的软件测试学科知识与技术方法,而是选取设计了基本的理论知识和技术方法,以及工程应用。这里的学习及内容应是一个较高的起点和建立扎实的基础,就工程问题,也还有一些问题没有涉及到,如软件测试风险的分析技术与防范策略,性能测试为深入和全面的性能测试(如、数据库系统、服务器的硬件和支持软件运行的性能状况及变化、关于软件安全性方面的测试等等),都不是一门课程的容量和有限课时所能贯彻和解决。这已超出本课程的目标与任务,也为学习者留有进一步深入研究、学习和实践的空间。四、课程怎样学与学得好首先,学习软件测试课程需要具备在软件技术领域方面的一些基本的知识和基本技能(实践能力),也就是说,最好能在学习该课程前学习过下列内容:计算机系统及组成的知识、操作系统方面的和必要知识和实际的应用能力、数据结构方面的知识、数据库系统知识、计算机网络等方面的知识,还有,比较重要的程序设计与编程方面的知识和一定的实践体验。特别需要强调的是,软件测试是一项比较有创造性的工作,不单纯体现为更多的重复性高(过程可能规范,但内容却多为不同)的工作,所面对的测试问题是各种各样的,未来实际工作中所遇到的各种问题也不尽相同,比如,你未来从事的测试领域是嵌入式软件、移动互联软件、游戏软件等等方面,可能在这样一门短期课程内(约需花费100多个小时)并没有能面面俱到和深入地研究。重要的是,我们需要掌握真正的针对软件测试实际工作、实际问题的分析问题和解决问题的能力,去面对这些‘新问题’。这需要的是扎实的知识基础与技术能力。即,需要把课程学足、知识学牢、能力用活。软件技术领域所有的专业知识与技术掌握都需要有良好的逻辑思维能力,软件测试也不例外。这在课程学习的后期及未来的工作成长中显得尤为重要。如该课程的学习者达到前述学习、授课的要求,将可能获得较好的学习成效。举个例子,你要完成对某个C/C++或JAVA程序的走查评审或单元测试的白盒测试工作,若你对这类程序设计和编程没有多少实际的训练、数据结构课程的内容学习掌握的也不够好,则可能很难找出程序的问题在哪里?甚至别人告知了程序的缺陷和问题在哪里,也不能很好的理解和体会。又如,性能测试时软件产品系统性测试中涉及其他计算机系统、软件专业知识领域最多的一项测试工作。如,Web应用系统(如一个电子商务网站)的性能测试的过程将涉及计算机网络系统的带宽和传输方面的知识、服务器系统的硬件性能指标(CPU、内存、存储)了解,操作系统方面的一些性能指标(通过计数器或其他的测试方法获得),数据库方面的知识,Web系统或其他的C/S系统方面的协议知识,当然也少不了对应用系统领域业务背景的正确认识和理解,以及数理统计方面的基本知识(如平均值、方差等)等等。性能测试所做的针对是服务器端、网络传输过程和网络终端的三方面的时间响应因素和用户的并发访问最大容量和极限值等,这需要发现是在哪个环节上影响了系统的性能,可认为是‘瓶颈’的问题。通过测试后,大量的统计分析数据你需要结合上述领域的知识才能够较好的分析、理解,发现关于时间问题的‘故障’。学会和掌握这些,需要打好或具备上述所说的相关的知识的基础。有些人会说,现在软件测试都是自动化测试工具在运行,我会使用操作就可以了。这实际上是很幼稚、并不真切了解软件测试本质的不正确想法。自动化测试工具的运用是需要由人来操控运行的,而这类软件的运用于测试问题(对象)、测试概念、测试知识、与基本的测试技术息息相关,与程序的识别、分析和设计编写,测试用例设计(测试场景设计)密切关联。一个自动化测试系统真正掌握用好了,不少一件容易的事。软件测试的实质是采用各种技术措施和方法对软件中存在的错误、缺陷进行探测与寻找的过程,同时对软件的质量特性进行度量的行为。面对几前、几万、几十万、几百万、甚至上千万行程序组成的软件系统,要找出各种存在问题(软件测试原理已证明这是一定的),绝非易事。测试的这个原理与医生给病人诊断,发现和寻求病情很相似,而度量类似人的体检一样,通过各种技术手段、方法对预定的检查项目一项项的检测,最终得出综合的体检报告,指出哪些方面存在病症或体症。体检不仅需要医疗检测仪器,更需要的医学的专业知识,你看医生操作这些仪器并不复杂,但要从检测结果中发现问题就那么简单了。测试也同样需要测试工具或平台,仅仅会用工具是远远不够的,掌握基本的使用还解决不了什么实际的问题。所以,先认真学习和理解基本的概念和知识完全是必须的、必要的。学习测试专业技术,不仅要‘知其然’,而要‘知其所以然’。也就是说,要理解概念和技术的原理。软件测试,从名称就能顾名思义,它是一门重视实践的学科,测试是一项过程(活动),现在这项活动已跟体现为工程特征。也就是说,学习本课程,要按照工程的方法论去考虑问题和着手实际上的过程。所以这门课程有大量的关于测试工程的内容,有工程的技术规范和标准,有工程需求问题、工程设计问题、工程实施的问题、工程成本的问题等诸多的影响工程的因素。因此,学习需要实践和体会,反复琢磨,掌握工程方法,并要反复深刻理解和认识测试理论知识和技术原理,从而为能够解决实际测试问题而建立基础和自觉思维到测试的加护规范和工程标准。本课程的最终目标使你真正认识和形成对软件测试的概念、基本技术方法掌握、并能以工程的方法形成思路,能够参与和解决实际的测试任务与工作问题。同时,也对你今后的深入研究专门的测试学科和测试技术奠定基础。达到这个目标,需要两方面的基础:理论的和实践的。该课程的学习者应该充分明确,课程所介绍的各个实例(案例或项目),基本上都是学习活动与工程体验过程的教学载体,并不是最终掌握的唯一目标。我们的学习所追求的目标是“举一反三”的能力

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论