版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章
面向对象的
软件测试目录2第一节
面向对象的基本概念第二节
面向对象软件的测试策略第一节面向对象的基本概念面向对象的基本概念4
面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围,成为20世纪90年代以来软件开发的主流。面向对象的软件开发以抽象、继承、封装、重载、多态为基本特征。抽象5
类的定义中明确指出类是一组具有内部状态和运动规律的对象的抽象。抽象是一种从一般的观点看待事物的方法,它要求我们集中于事物的本质特征(内部状态和运动规律),而非具体细节或具体实现。面向对象鼓励我们用抽象的观点来看待现实世界,也就是说,现实世界是一组抽象的对象——类组成的。继承6它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。继承是指这样一种能力:通过继承创建的新类称为“子类”或“派生类”。被继承的类称为“基类”、“父类”或“超类”。继承的过程,就是从一般到特殊的过程。继承7接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力可视继承是指子窗体(类)使用基窗体(类)的外观和实现代码的能力实现继承是指使用基类的属性和方法而无需额外编码的能力继承概念的实现方式有三类:封装8
封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装9面向对象的类是封装良好的模块,类定义将其说明(用户可见的外部接口)与实现(用户不可见的内部实现)显式地分开,其内部实现按其具体定义的作用域提供保护。对象间的相互联系和相互作用过程主要通过消息机制得以实现。对象之间并不需要过多的了解对方内部的具体状态或运动规律。封装1010类是封装的最基本单位封装防止了程序相互依赖性而带来的变动影响。在类中定义的接收对方消息的方法称为类的接口。多态11
多态性(polymorphism)是指同名的方法可在不同的类中具有不同的运动规律。在父类演绎为子类时,类的运动规律也同样可以演绎,演绎使子类的同名运动规律或运动形式更具体,甚至子类可以有不同于父类的运动规律或运动形式。不同的子类可以演绎出不同的运动规律。
多态性多态1201覆盖实现多态,有两种方式:02重载是指子类重新定义父类的虚函数的做法。是指允许存在多个同名函数,而这些函数的参数表不同。类和对象13类是一个对一组像是对象的一般性描述(如,模板、模式或蓝图)。通过定义,存在于类中的所有对象继承其属性和用于操纵属性的操作。父类是类的集合,子类是类的实例。这些定义蕴含了类层次的存在,父类的属性和操作被子类继承,而子类也可以加入自己“私有的”属性和方法。属性14属性依附于类和对象,并且以某种方式描述类或对象。Champeaux及其同事给出了如下的关于属性的讨论:现实的实体经常用指明其稳定特性的词来描述。大多数物理对象具有形状、重量、颜色和材料类型等特性;人具有生日、父母、名字、肤色等特性,特性可被视为在类和某确定域之间的二元关系。面向对象的开发方法1515传统的面向过程的开发方法是以过程为中心,以算法为驱动因此,面向过程的编程语言是程序=算法+数据面向对象的开发方法是以对象为中心,以消息为驱动因此,面向对象的编程语言是程序=对象+消息。面向对象的开发方法1601软件重用性差传统开发方法开发软件存在的问题02软件可维护性差03软件稳定性差面向对象的设计17基本步骤第二步商业策略第一步第四步第三步获取功能需求。确定类的结构、主题、属性和方法。根据功能和参与者确定系统的对象和类。建造对象模型。面向对象的设计18面向对象的设计(ObjectOrientedDesign,OOD),是根据OOA中确定的类和对象,设计软件系统,以作为面向对象的编程的基础。整个设计过程分为系统设计和对象设计。面向对象的设计19系统设计过程包括:系统分解确定并发性设计任务管理子系统设计任务管理子系统设计数据管理子系统面向对象的模型20
模型是对实体的特征和变化规律的一种表示或抽象,即把对象实体通过适当的过滤,用适当的表现规则描绘出的模仿品。该模型主要关心系统中对象的结构、属性和操作,它是分析阶段三个模型的核心,是其他两个模型的框架。在面向对象的开发中,有对象模型、动态模型和功能模型这三种常用模型。
模型对象模型21
对象模型使表示了静态的、结构化的系统数据性质,描绘了系统的静态结构,它是从客观世界实体的对象关系角度来描绘的,表现了对象的相互关系。在该模型中包括以下几方面的元素。对象和类关联和链层次结构01020304GOAL动态模型22动态模型是与时间和变化有关的系统性质。该模型描述了系统的控制结构它表示了瞬间的、行为化的系统控制。它关心的是系统的控制、操作的执行顺序。它从对象的事件和状态的角度出发,表现了对象的相互行为。功能模型23功能模型描述了系统的所有计算。功能模型指出发生了什么动态模型确定什么时候发生对象模型确定发生的客体功能模型24功能模型由多张数据流图组成。01020304处理数据流动作对象数据存储对象第二节面向对象软件的测试策略面向对象软件的测试策略26
面向对象测试的目标和传统的结构化软件测试相同,都是需要在现实和时间范围内利用有限的时间和工作量尽可能多的发现错误。面向对象软件的测试策略27面向对象系统测试一般都包含以下主题:单元测试类的集成测试系统测试回归测试面向对象测试的相关模型面向对象的单元测试28当考虑到面向对象软件时,单元测试的概念发生了变化。面向对象软件引入了封装和类的概念,这意味着每个类的实例(对象)包装有属性(数据)和处理这些数据的操作(函数)。封装的类常是单元测试的重点,然而,类中包含的操作是最小的可测试单元。面向对象的单元测试29以方法为单元可以将面向对象单元测试归结为传统的(面向过程的)单元测试。以方法为单元方法几乎等价于过程,所以可以使用所有传统功能性和结构性测试技术。面向对象的单元测试30在以类为单元的测试中不再孤立的对单个操作进行测试,而是将其作为类的一部分。以类为单元在以类为单元的测试中不再孤立的对单个操作进行测试,而是将其作为类的一部分。面向对象的设计31以类为单元不能测试抽象类,因为它不能被实例如果使用充分扁平化的类,则还要在单元测试结束后将其“恢复”为原来的形式如果不使用充分扁平化的类,则为了编译类需要在继承树中高于除该类外的所有其他类。面向对象的集成测试32对于面向对象系统,由于测试重点是重用和类,因此测试这种集成单元是至关重要的。多态性中存在的一种方式是通过动态绑定实现的多态,这也为测试带来了很大的挑战。面向对象的集成测试33两种不同的策略一种是基于线程的测试,集成影响系统的一个输入或者事件所需的一组类,每个线程单独的集成和测试。应用回归测试以确保没有其他关联产生。一种方法是基于使用的测试,通过测试很少使用服务类的那些类(独立类)开始构造系统,独立类测试完成后,利用独立类测试下一层的类(依赖类)。继续依赖类的测试,直到完成整个系统的测试。面向对象的集成测试34
需要注意以下几点:34面向对象系统下组件的开发一般更具并行性,因此对频繁集成的要求更高。由于并行性提高,集成测试时需要考虑类的完成顺序,也需要设计驱动器来模拟外没有完成的类功能。面向对象的系统测试35面向对象的系统测试是针对非功能需求的测试,它所包含的范围是所有功能需求以外的需求以及注意事项。面向对象的系统测试36面向对象系统测试有三个主要目的:验证产品交付的组件和系统性能能否达到要求;定位产品的容量以及边界限制;定位系统性能瓶颈。面向对象系统的回归测试37将集成测试的讨论再向前推进一步,回归测试对于面向对象系统非常重要。作为面向对象系统强调依赖可重用组件的结果,对任何组件的变更都可能对使用该组件的客户引入潜在的副作用,对于面向对象系统测试来说,频繁运行集成和回归测试用例是很有必要的。此外,由于继承等性质导致的变更级联效果,尽可能早地捕获缺陷是很有意义的。面向对象系统的回归测试38回归测试需要时间、经费和人力来计划、实施和管理。为了在给定的预算和进度下,尽可能有效力地进行回归测试,需要对测试用例库进行维护并依据一定的策略选择相应的回归测试包。第三节面向对象软件的测试用例设计面向对象软件的测试用例设计40面向对象测试与传统测试相类似,但它们的测试策略是不同的。由于面向对象分析与设计模型在结构和内容上与面向对象程序相类似,因此,测试从对这些模型的评审开始。当代码产生后,面向对象测试则是从设计一系列用例检验类操作的小型测试和类与其他类进行协作时是否出现错误开始。面向对象软件的测试用例设计41当集成类形成一个子系统时,结合基于故障的方法,运用基于使用的测试对相互协作的类进行完全检查。最后,利用用例发现软件确认层的错误。相比于传统的结构化程序测试通过软件的【输入】-【处理】-【输出】视图或者单个模块的算法细节来设计测试用例的方式,面向对象测试侧重于设计适当的操作序列来检查类的状态。面向对象测试用例设计的基本概念42类经过分析模型到设计模型的演变,它成为测试用例设计目标。由于操作和属性是封装的,从类的外面测试操作通常是不现实的。尽管封装是面向对象的基本特征之一,但可能成为测试的阻碍。面向对象的单元测试43前面描述的白盒测试方法可以应用于类中定义的操作。基本路径、循环测试或者数据流技术有助于确保测试一个操作的每一条语句。但是,因为类的操作结构简洁,所以通常采用白盒测试方法来测试类的层次的测试。与利用传统的软件工程方法开发的系统一样,黑盒测试方法同样也适用于面向对象系统测试。用例可以为黑盒测试提供有用的输入。面向对象编程对测试的影响44面向对象编程可能对测试有几种方式的影响,依赖于面向对象编程的方法。某些类型的故障变得就不可能(不值得去测试)某些类型的故障变得更加可能(值得进行测试)出现某些新的故障类型面向对象编程对测试的影响45测试面向对象的类操作类似于测试一段代码,它设置了函数参数,然后调用该函数。继承是一种方便的生产多态的方式,在调用点,关心的不是继承,而是多态。FourThreeTwoOne基于故障的测试46在面向对象系统中,基于故障的测试的目标是设计最有可能发现似乎可能的故障的测试。集成测试在消息链接中查找似乎可能的故障,在此语境下,会遇到三种类型的故障:非期望的结果、错误的操作/消息使用、不正确的调用。基于场景的测试47基于故障测试忽略了两种主要的错误类型:不正确的规格说明子系统间的交互基于场景的测试48基于场景的测试关心用户做什么,而不是产品做什么。这意味着需要通过用例捕获用户必须完成的任务,然后在测试时使用它们及其变体。场景可以发现交互错误。为了达到这一标准,测试用例必须比基于故障的测试更复杂且更切合实际。基于场景的测试倾向于用单一的测试检查多个子系统,用户并不限制自己一次只使用一个子系统。表层结构和深层结构的测试49但是,无论接口是什么,测试仍然是基于用户任务进行的。捕捉这些任务涉及理解、观察以及与有代表性的用户进行交谈。许多面向对象系统的用户可能不是完成某个功能,而是得到以某种方式操纵的对象。表层结构是指面向对象程序的外部可观察的结构,即对最终用户显而易见的。表层结构和深层结构的测试50深层结构指面向对象程序的内部技术细节,即通过检查设计和代码来理解的数据结构。设计深层结构测试来检查面向对象软件设计模型中的依赖关系、行为和通信机制。分析模型和设计模型用作深层结构测试的基础。Four030102ThreeTwoOne第四节面向对象的软件测试案例HelloWorld类的测试52每一种语言在其学习用书的第一个例子通常都是最简单的HelloWorld。面向对象的单元测试53为了对HelloWorld类进行测试,可以编写以下测试用例,它本身也是一个Java类文件。Date.increment方法的测试54首先对于类CalendarUnit,它提供一个方法在所继承的类中设置取值,提供一个布尔方法说明所继承类中的属性是否可以增1。Date.increment方法的测试55要测试Date.increment方法需要开发类testIt用做测试驱动,即创建一个测试日期对象,然后请求该对象对其本身增1,最后打印新值。Date.increment方法的测试56Date类的CRC卡中的信息类名:Date责任:Date对象由日期、月份和年对象组成。Date对象使用所继承的Day和Month对象中的布尔增量方法对其本身增1;如果日期和月份对象本身不能增1(例如月份或年的最后一天),则Date的增量方法会根据需要重新设置日期和月份。如果是12月31日,则年也要增1。printDate操作使用Day、Month和Year对象中的get()方法,并以mm/dd/yyyy格式打印出日期。协作者:testIt,Day,Month,Year
Date.increment方法的测试57Date类的CRC卡中的信息面向对象的单元测试58设计测试用例某些类型的故障变得就不可能(不值得去测试)某些类型的故障变得更加可能(值得进行测试)出现某些新的故障类型正如黑盒测试部分所介绍的,等价类测试是逻辑密集单元的明智选择。Date.increment操作处理日期的三个等价类:Date.increment方法的测试59设计测试用例实际上对应Date.increment程序图中的三条路径:P1:9-10-18P2:9-10-11-12-13-14-17-18P3:9-10-11-15-16-17-18他们构成了Date.increment的基路径,不难算成Date.increment程序图的圈复杂度为3.另外,这些等价类看起来是松散定义的,尤其是D1,引用了没有月份说明的最后日期,即没有指明是哪个月份。这样,问题又进一步转化为Month.increment方法的测试。小结60
本章首先简要介绍了面向对象的基本特征、分析与设计以及模型,然后介绍了面向对象的单元测试、集成测试、系统测试以及回归测试的策略,继而介绍了面向对象软件的测试用例设计的相关内容,最后对HelloWorld类和Date.increment方法进行了测试。FourThreeTwoOne谢谢观看第7章软件质量保证PowerPointDesignCONTENT目录软件质量保证概述质量保证在软件开发周期中的角色040605030201软件质量保证概述PowerPointDesignPART01软件质量包括运行时可观察到的正确性、性能、安全性、可用性、易用性,以及运行时不可观察到的可修改性、可移植性、可测试性、可集成性、可重用性等。质量属性分类质量保证的定义质量保证与软件测试的关系软件测试是质量保证的重要组成部分,用于验证软件的功能、性能和可靠性;质量保证支持测试活动的有效实施。质量保证是软件开发生命周期中通过计划、实施、监控和改进活动确保软件质量的方法,覆盖从规划到维护的各个阶段。软件质量的定义提升客户满意度质量保证确保提供高质量的产品或服务,满足客户需求和期望,增强客户满意度和忠诚度。有效风险管理质量保证有助于降低项目风险,减少不合规的风险,并避免声誉损害,是确保项目成功的必要条件。通过预防质量问题、减少缺陷和重工,质量保证有助于降低总体成本,节省的资金可用于投资其他关键领域。降低成本质量保证的重要性质量保证在软件开发周期中的角色PowerPointDesignPART02制定质量政策和目标,明确项目的质量目标并与项目管理团队合作制定政策和目标,包括功能性要求、性能标准、安全要求等。项目规划阶段参与需求审查,确保需求明确、一致,并满足质量标准,检查需求规范,提供反馈和建议。需求分析和设计阶段进行代码审查,确保编码符合编程标准、性能要求和安全性要求。开发和编码阶段质量保证在软件开发生命周期中的作用测试自动化质量保证团队致力于建立自动化测试框架,以确保在短时间内完成全面的测试,减少手动测试的负担,并提高测试的可靠性和效率。持续集成和交付敏捷开发中强调连续集成和交付,质量保证团队负责确保代码的连续集成,并在每个迭代中进行持续测试。设定质量标准和目标在敏捷开发中,质量保证团队与开发团队和产品负责人合作,明确项目的质量标准和目标,确保团队对可接受的质量水平有清晰的认识。敏捷开发中的质量保证CONTENT目录质量度量和监控质量保证计划和策略软件评审持续集成和持续交付(CI/CD)040605030201质量保证计划和策略PowerPointDesignPART03质量保证计划包括质量目标的明确定义、质量标准的制定、质量活动的计划、资源的分配、风险管理策略和沟通计划。质量保证计划要素质量保证策略包括组织的质量愿景、政策、目标、策略和持续改进原则,有助于建立质量文化。质量保证策略内容在电商平台项目启动阶段,制定质量保证计划,明确质量目标、质量活动计划、资源分配、风险管理策略和沟通计划。质量保证计划示例质量保证计划和策略的定义质量度量和监控PowerPointDesignPART04度量质量是使用各种指标和方法来评估产品或服务的质量水平,包括性能、可用性、安全性和功能完整性等方面。度量质量监控质量监控质量是在项目整个生命周期中跟踪度量结果,以确保项目始终保持质量水平,并在必要时采取纠正措施。持续改进质量持续改进质量是质量管理的核心原则之一,强调通过监控质量并采取纠正措施来不断提高质量水平。质量度量和监控概述0201度量质量通过多种指标评估电商平台的质量,包括网站访问量、用户注册量、交易量、用户评价、性能测试结果等。监控质量部署监控系统来实时跟踪网站的运行状况,包括服务器性能、数据库连接和网站响应时间等方面。质量度量和监控示例软件评审PowerPointDesignPART05软件评审包括需求审查、设计审查、代码审查和测试用例审查等活动,通过审查发现问题、确保符合质量标准,并提供反馈和改进建议。软件评审活动01评审的目标是发现问题、确保符合质量标准,并提供反馈和改进建议,提前发现和解决问题,降低后期修复成本。软件评审目标02代码评审:每次代码提交前进行严格的代码评审,通过GitHub或者GitLab进行代码审查,引入静态代码分析工具,自动检测代码中的潜在问题和安全漏洞。软件评审示例03软件评审概述持续集成和持续交付(CI/CD)PowerPointDesignPART06开发团队频繁地将代码集成到共享存储库中,并通过自动化测试来验证新代码的质量,确保新代码的集成不会破坏现有的功能。持续集成01持续交付着重于自动化的部署和交付流程,以便团队随时能够交付可部署的软件,实现快速反馈和持续交付的目标。持续交付02获得更快的反馈、提升运行过程的可视性、早期错误检测。实施CI/CD的好处03CI/CD的概念和原则010203代码提交阶段开发人员将代码提交到版本控制系统(如Git),触发CI/CD流程的启动。持续集成新特性或者新的代码会被集成,借助质量平台进行代码质量检查并获取反馈,同时CD/CD工具会执行一系列单元测试和其他有效的测试。构建阶段执行编译、打包和构建应用程序的过程,生成可部署的软件包或者容器镜像。CI/CD管道阶段Jenkins是一个流行的开源持续集成和持续交付工具,能够支持各种编程语言的项目构建,兼容多种第三方构建工具,与不同的版本控制系统无缝集成,拥有庞大的插件生态系统。GitlabCI是Gitlab8.0版本之后自带的持续集成系统,通过Webhook检测到代码变化后,会自动触发相应的CI/CD流程,用户可以自定义脚本来执行各种操作,与GitLab平台紧密结合。GitlabCI持续集成和持续交付示例项目中,持续集成(CI)流程采用了Jenkins作为核心工具,持续交付则采用了Docker和Kubernetes技术,实现了环境隔离和一致性,提高了交付速度和可靠性。JenkinsCI/CD工具的选择谢谢大家PowerPointDesign第8章敏捷项目测试目录敏捷项目简介敏捷项目管理敏捷测试小结第一节第二节第三节第四节第一节敏捷项目简介“敏捷”的含义是反应快速且灵敏什么是“敏捷”将敏捷应用到软件开发领域,给软件开发带来了变化测试也不再是瀑布式开发流程中的一个环节,而是整个开发流程中的全部参与。敏捷项目简介新型软件开发方法人员在整个迭代过程中全力协作应对快速变化需求的软件开发能力。团队是高度跨职能的敏捷项目简介敏捷管理的特点尽早交付01团队投入持续改进充分测试灵活管理03040205敏捷项目简介优势提高了软件发布后的产品的期望值大大降低变更成本可以用后面迭代的低级需求置换需求传递的准确性大幅提高使项目中的评估针对性更强敏捷项目简介敏捷团队角色项目中所有属于“业务”一方的人(业务分析师、产品经理),编写用户故事和需求发布的功能集业务人员项目IT人参加发布代码的任何人(包括测试人员、程序员、架构师等)敏捷指导在敏捷推广初期知道敏捷流程并提出改进建议。第二节敏捷项目管理敏捷项目的需求管理应尽早地开发有价值的需求和持续不断地满足客户的要求,以体现软件的价值。成熟的敏捷产品可以在短期内持续发布有价值的产品。从本次版本的众多需求中进行登记划分,价值越高的需求优先级越高,风险越高的优先级越高,高风险高价值有限进行迭代在明确本次迭代的需求后,确定需求基线和需求范围,召开迭代计划会议,制订详细的迭代计划需求的分配提倡需求领取的方式,鼓励每个人自主认领需求对于每个需求,产品经理会写对应的用户故事敏捷项目的时间管理敏捷开发采用时间盒的方法,即限定时间而不限定范围。敏捷项目中的时间是固定的。常见影响项目计划时间的因素如下(1)计划时间本身存在偏差(2)人员技能不足(3)需求设计漏洞(4)客户主动变更需求敏捷项目的质量管理质量管理实在测试过程中决定的在敏捷项目中,在团队建设的初期,会有敏捷教练的角色加入。敏捷教练是熟悉敏捷运作流程的专业人士,指导项目团队的流程运作测试人员除了具有专业知识,测试技能,还要对敏捷项目的运作深入理解和把控。软件项目的质量管理需要提高自动化测试的比重第三节敏捷测试
敏捷测试概述质量管理是在测试过程中决定的
敏捷测试敏捷开发的最大特点是高度迭代,有周期性,并且能够及时、持续响应客户的频繁反馈。敏捷测试不仅仅是测试软件本身,也包括软件测试的过程和模式,敏捷测试的目的是尽可能是发布功能与客户预期一致,确保开发、管理过程正确。探索式测试探索式测试是一种自由的软件测试风格,强调测试人员同时开展测试学习、测试设计、测试执行和测试结果的评估等活动,以持续优化测试工作。探索式测试更关注的是测试过程中学习的重要性,测试人员不断学习探索,一次探索结果后,总结前一阶段的执行结果,病以此调整下一个阶段的执行过程。对于他探索式测试需要使用模范化的机制对测试工作进行组织和管理,JonBach和JamesBach提出了基于会话的测试管理方法。基于Scrum的敏捷测试流程在敏捷测试中可以采用已有的各种方法,包括白盒方法,黑盒方法;在敏捷中可以采用探索式测试,也可以采用基于脚本的测试Scrum是一个实现了敏捷思想的框架,是一个增量的,迭代的开发过程,能够帮助团队快速前进和学习,高效并创造性地交付尽可能高价值的产品。第四节小结小结четыретри
дваодин本章主要介绍了敏捷项目、敏捷项目管理以及敏捷测试的相关内容。敏捷开发是一种能应对快速变化需求的软件开发能力,更注重软件开发中人的作用。敏捷项目管理需要在需求管理、时间管理和质量管理方面开展。在敏捷测试中,更强调自动化测试和探索式测试的作用。本章还介绍了探索式测试中基于旅行者的测试方法,以及基于Scrum的敏捷测试流程。谢谢观看第9章软件自动化测试1目录103软件自动化测试概述自动化测试的原理和方法软件自动化测试的开展选择自动化测试的方案第一节第二节第三节第四节软件自动化测试概述自动化测试自动测试的优点手工测试自动测试的缺点自动化测试105105根据软件质量工程协会关于自动化测试的定义:自动化测试就是利用策略、工具等减少人工介入的非技术性、重复性、冗长的测试活动。软件自动化测试就是执行用某种程序设计语言编制的自动测试程序,控制被测试软件的执行,模拟手动测试步骤,完成全自动或者半自动的测试。01020304GOAL自动化测试全自动测试就是指在测试过程中,完全不需要人工干预,有程序自动完成测试的全部过程半自动测试就是指在自动测试的过程中,需要由人工输入测试用例或选择测试路径,再由自动测试程序按照人工制订的要求完成自动测试。手工测试107
通常,软件测试的工作量很大,会占到40%的开发时间,对于一些可靠性要求非常高的软件,测试时间甚至会占到开发时间的60%。手工测试在实际软件开发生命周期中,手工测试具有以下局限性:ABCDEF通过手工测试无法做到覆盖所有的代码路径简单的功能性测试用例在每一轮测试中都不能少,而且具有一定的机械性、重复性,工作量较大许多与时序、死锁、资源冲突、多线程等有关的错误,通过手工测试很难捕捉到;进行系统负载、性能测试时,需要模拟大量数据或大量并发用户等各种应用场合时,很难通过手工测试来进行进行系统高可靠性测试时,需要模拟系统运行达数年或数十年之久的情况,以验证系统能否稳定运行,这也是手工测试无法实现的如果有大量的测试用例,需要在短时间内完成,手工测试也很难做到F如果有大量的测试用例,需要在短时间内完成,手工测试也很难做到手工测试109测试步骤手工测试/小时自动化测试/小时改进百分率测试计划制定2240-82%测试程序开发26211755%测试执行4662395%测试结果分析1175850%错误状态/纠正监视1172380%报告生成961683%总持续时间109027775%自动测试的优点110BC提高了测试执行的速度,节省了时间提高了测试效率。手工测试存在效率问题,这在软件产品的研发后期尤其明显,因为随着产品的日趋完善,功能日渐增多,需要测试和检查的内容越来越多,很容易遗漏。加之产品发布日期日益临近,人工重复进行回归测试的难度加大,很难在短时间内完成大面积的测试覆盖提高了准确度和精确度。测试员尝试了几百个测试用例后,注意力可能会分散,并开始犯错误。而测试工具可以重复执行同样的测试,并毫无差错地检查测试结果E有的测试用例的测试条件需要的人数或设备数目很大,或者模拟的条件很苛刻,现实无法实现,测试工具却可以模拟这种情况F具有一致性和可重复性,有利于解决测试与开发之间的矛盾;D更好地利用资源。手工测试需要测试人员在场,而自动测试可以7×24小时随时工作。还可以使位于全球不同地点、不同时区的团队监视和控制测试,提供全球时区的覆盖;G修改性比较低,经济角度考虑,也更有优越性A111自动测试的缺点自动测试缺点软件自动测试并不能代替人的工作,尤其是带有智力性质的手工测试测试用例的设计,测试人员的经验和对错误的猜测能力是工具不可替代的界面和用户体验测试,人类的审美观和心理体验是工具不可模拟的正确性的检查,人们对是非的判断和逻辑推理能力是工具不具备的软件测试自动化可能降低测试的效率自动测试并非像测试工程师所期望的那样能发现大量的错误技术问题、组织问题和脚本维护第二节自动化测试的原理和方法自动化测试的原理和方法113直接对代码进行静态和动态的分析软件测试自动化实现的基础是可以通过设计特殊程序来模拟测试工程师对计算机的操作过程、操作行为,或者类似于编译系统那样的对计算机程序进行检查。测试过程的捕获和回放测试脚本技术虚拟用户技术和测试管理技术原理和方法代码分析114代码分析类似于高级语言编译系统,一般针对不同的高级语言去构造相应的分析工具,在工具中定义类、对象、函数、变量等规则、语法规则;在分析时对代码进行语法扫描,找出不符合编码规范的地方;根据某种质量模型评价代码质量,生成系统的调用关系图捕捉回放115捕捉和回放则是一种黑盒的测试的自动化方法。捕获是将用户的每一步操作都记录下来。这种记录的方式有两种:一种是记录程序用户界面的像素坐标或程序显示对象(窗口、按钮、滚动条)的位置,另一种方式是记录相应的操作、状态变化或是属性变化。所有的记录转换为一种脚本语言所描述的过程,以模拟用户的操作。回放时,将脚本语言所描述的过程转化为屏幕上的操作,然后将被测系统的输出记录下来同预先给定的标准结果比较。录制回放116
所谓“录制/回放”就是先由手工完成一遍需要测试的流程,同时由计算机记录下这个流程期间客户端和服务器端之间的通信信息,这些信息通常是一些协议和数据,并形成特定的脚本程序。然后在系统的统一管理下同时生成多个虚拟用户,并运行该脚本,监控硬件和软件平台的性能,提供分析报告或相关资料。这样通过几台机器就可以模拟出成百上千的用户对应用系统进行负载能力的测试。录制回放117录制回放过程测试工具读取测试脚本,激活被测试软件,然后执行被测试软件测试工具执行的操作以及有效输入到被测试软件中的信息和测试脚本中描述的一样。在测试过程中,被测试软件读取初始阅读文档中的初始数据,在执行脚本中的命令后将最后结果输出到编辑文档中测试过程中,日志文件也随之生成,里面包括测试运行中的所有重要信息,通常日志文件包括运行时间、执行者、比较结果以及测试工具按照脚本命令要求输出的任何信息。脚本技术118脚本是一组测试工具执行的指令集合,也是计算机程序的一种形式。脚本可以通过录制测试的操作产生,然后再做修改,这样可以减少脚本编程的工作量。当然也可以直接用脚本语言编写脚本。脚本语言和编程工具语言非常相似,更接近于网页脚本语言。它有自己的语法规则、保留字等。也遵循着软件工程的原则,需要考虑结构化设计和文档的健全编写。
脚本中包含的是测试数据和指令,一般包括如下信息:同步(何时进行下一个输入);比较信息(比较内容、比较标准);捕获何种屏幕数据及存储在何处;从哪个数据源或从何处读取数据;控制信息。脚本技术119脚本技术分类是数据驱动脚本的逻辑扩展关键字驱动脚本是录制手工执行的测试用例得到的脚本线性脚本类似于结构化程序设计,具有各种逻辑结构(顺序、分支、循环),而且具有函数调用功能;结构化脚本是指某个脚本可被多个测试用例使用,即脚本语言允许一个脚本调用另一个脚本共享脚本将测试输入存储在独立的数据文件中数据驱动脚本自动比较120在自动化比较之前的活动是准备期望输出,根据输入计算或估计被处理的输入所产生的输出,然后在期望输出和实际输出之间进行比较。在这里,产生比较错误的一个可能就是期望输出中有错误,这样测试的一部分报告会显示比较结果中此处有比较差,这是测试错误,而非软件错误。
自动比较包括:静态比较与动态比较;简单比较与复杂比较;敏感性测试比较和健壮性测试比较;比较过滤器。第三节软件自动化测试的开展引入原则成本人员要求生命周期导入时机确定对象、范围软件自动化测试的开展122在进行自动测试之前,先要考虑以下5个方面的问题测试自动化类似于软件开发过程测试自动化是一个长期的过程确保测试自动化的资源,包括人员和技能循序渐进地开展自动测试确保测试过程的成熟度软件自动化测试的引入原则123对软件测试自动化之前,通常已经有许多已实现的、详细的手工测试用例,从中选择可以自动化的手工测试用例进行自动化。自动化已经实现的手工测试用例在对某一应用进行自动化测试之前,首先需要确保该应用足够稳定自动化对稳定应用进行的测试对软件进行的性能测试,包括在不同的系统负载下进行的测试。这些测试需要采用工具辅助完成,非常适合自动化;自动化性能测试从软件测试自动化的目的知道,软件测试自动化所获得的好处来自于自动化测试工具的重复使用,回归测试应该作为自动化测试的首要目标自动化回归测试如果一个测试经常使用,并且使用这个测试不方便,那么就应该考虑自动化这个测试。自动化重复性测试软件自动化测试的生命周期124自动化测试生命周期方法ATLM(AutomatedTestingLifecycleMethodology)为包括6个主要过程:612345自动化测试决策自动化测试工具获取自动化测试引入过程测试项目评审自动化测试的执行和管理自动化测试计划设计和开发自动化测试决策125在这一阶段,企业要根据自身的实际情况分析算法应该引入自动化测试,客服不正确的自动测试期望,认识得到自动化测试的好处;同时,测试工程师需要列出自动化测试工具的备选方案,以获得管理层的支持。01020304GOAL01020304GOAL自动化测试工具获取126在得到决策者的支持之后,测试工程师要选择合适的测试工具来支持自动化测试。首先,测试工程师要审查企业系统,制订一个工具的评审标准,确保测试工具与本企业内部操作系统、编程语言以及其他技术环境尽可能多的兼容。然后,要评审可以得到的测试工具,选择一个或多个特定的获选测试工具。最后,确定测试工具,与工具供应商联系产品演示事宜,如果有可能,对全体测试人员进行测试工具的培训。自动化测试引入过程127自动化测试的引入过程主要就是分析测试过程的目标、目的和策略,然后验证测试工具是否能够支持大多数项目的测试需求。测试过程分析确保整个测试过程和测试策略适当,必要时可以加以改进,以便成功地引入自动化测试。测试工具考察阶段,测试工程师根据测试需求、可用的测试环境和人力资源、用户环境、平台以及被测的应用产品特性,研究将自动化测试工具或使用程序引入测试是否对项目有好处。01020304GOAL自动化测试计划、设计和开发128在测试计划阶段,要特别注重确定测试的文档,制订能够达到测试目的和支持测试环境的计划,编制测试计划文档。它包括风险评估、鉴别和确定测试需求的优先级,估计测试资源的需求量,开发测试项目计划以及给测试小组成员分配测试职责。01020304GOAL自动化测试计划、设计和开发129测试设计阶段需要确定所要执行的测试数目、测试方法,必须执行的测试条件以及需要建立和遵循的测试设计标准;测试开发,即开发自动化测试脚本,为了使自动化测试可重用、可维护、可扩展,必须定义和遵循测试开发的标准。01020304GOAL自动化测试的执行和管理130在这个阶段,测试人员必须根据测试的日常安排来执行测试脚本,并改善这些脚本。在这个过程中还必须评审测试的结果,以避免错误的结果。系统的问题应该通过系统问题报告记录在案,并帮助开发人员理解和重视这些问题。最后,测试团队需要进行回归测试来追踪和关闭这些问题。01020304GOAL自动化测试项目评审131测试项目的评审必须贯穿于整个自动化测试的生命周期,以利于测试活动的不断改进,必须有想应的标准来衡量评审的效果。01020304GOAL自动化测试的执行和管理132在这个阶段,测试人员必须根据测试的日常安排来执行测试脚本,并改善这些脚本。在这个过程中还必须评审测试的结果,以避免错误的结果。系统的问题应该通过系统问题报告记录在案,并帮助开发人员理解和重视这些问题。最后,测试团队需要进行回归测试来追踪和关闭这些问题。01020304GOAL软件自动化测试的成本133应该能抽出专职的测试人员进行自动测试脚本的开发,并且抽调的测试人员不会对已有的手工测试人员造成影响,需要保证自动测试的开展不会影响到手工测试的正常进行。自动测试可能需要额外的测试设备,例如,测试执行的机器、文件服务器、数据库等。应该能为自动测试准备。软件自动化测试的成本134有引入测试工具或开发测试工具的成本预算,缺乏工具的自动测试是不可能实现的。在开始一个项目的自动测试之前应该进行测试工具的引入准备、开展测试工具的培训工作等。成功开展自动化测试必须考虑自动测试的成本问题。成本包括测试人员、测试设备、测试工具等。某些项目选用了很多第三方控件或自定义的控件,而这些控件的可测试性非常差,那么对这个项目进行自动测试的成本会非常高,不适宜进行自动测试。自动测试只有在多次运行后,才能体现出自动化的优势,只有不断地运行自动测试,才能有效预防缺陷,减轻测试人员手工的回归测试的工作量。如果一个项目是短期的,并且是一次性的项目,则不适合开展自动测试,因为这种项目得不到自动测试的应有效果和价值体现。过早的自动化也会带来维护成本的增加,因为早期的程序员界面一般不够稳定,处于频繁更改的状态,这时候进行自动测试往往得不偿失,疲于应付“动荡”的界面。在开发人员着手开发一些核心代码时,可能会同时开发一些核心可重用的控件,而且是那种自定义的个性化控件,那么就需要在这个阶段取到这些控件,并且尝试使用自动化工具来测试这些控件。软件自动化测试的导入时机软件自动化测试的人员要求136R此外,自动测试工程师与手工测试的工程师一样,需要具备设计测试用例的基本方法和能力,具备软件设计的基本业务的理解能力。而且,应该有把测试用例转换成自动测试用例的能力。了解各种编程语言、编程工具以及各种标准控件、第三方控件,也会对自动化测试脚本的编写大有裨益。自动测试工程师应该具备一定的自动测试基础,包括自动测试工具的基础、自动测试脚本的开发基础知识等;还需要了解各种测试脚本的编写和设计方法,知道在什么时候选取什么样的测试脚本开发方式,知道如何维护测试脚本;需要具备一定的编程技巧,熟悉某些测试脚本语言的基本语法和使用方式。软件自动化测试存在的问题不现实的期望缺乏经验期望自动测试发现大量的缺陷安全性错觉组织问题自动化测试的维护性技术问题010203确定自动化测试的对象和范围138在开始自动化测前,需要花很大的精力取得管理层的承诺。自动化一般要耗费大量的工作量,也并非一次性活动。自动化的测试用例还需要维护,知道产品退出市场。由于开发和维护自动化工具需要大量的工作量,因此取得管理层的承诺是一项很重要的活动。为了符合“重要的事情先做”的原则,重要的是要首先自动化产品的关键和基本功能。为此,所有测试用例都要根据客户预期分为高、中、低优先级,自动化要从高优先级的测试用例入手,然后覆盖中、低优先级需求的测试用例。
作为自动化范围的总结,就是要选择自动化那些能够以最少的时间延迟换取最大投入回报的工作。8.4
选择自动化测试的方案139项目的影响:自动化测试能否对项
目进度、覆盖率、风险有积极的作用,或者让开发更具敏捷时间:自动化测试的实现需要多少时间?复杂度:自动化测试是否易于实现(包括数据和其他环境的影响)?早期需求和代码的稳定性:需求或早期代码是否能证明是在一定范围内变化的?维护工作量:代码是否能长期保持相对稳定?功能特性是否会进化?覆盖率:自动化测试能否覆盖程序的关键特性和功能?资源:测试组是否拥有足够的人力资源、硬件资源和数据资源来运行自动测试?自动测试执行:负责执行自动测试的小组是否拥有足够的技能和时间去运行自动测试
使用简单的录制回放的方法,测试工程师使用这种方法来自动地测试系统的流程或某些系统测试用例。它可能包含某些多余的,有时候并不需要的函数脚本,但录制与回放可避免重复执行测试用例。
由于所录制的脚本可以回放很多次,所以可以减少测试工作。除了可以避免重复工作,录制和保存脚本也很简单。但是这一代工具也有一些缺点。脚本中可能包含一些硬编码的取值,因此很难执行一般类型的测试。脚本编写方法录制与回放脚本编写方法141结构化结构化脚本的编写方法在脚本中使用结构控制。结构控制让测试人员可以控制测试脚本,或测试用例的流程。在脚本中,典型的结构控制是使用“if-else”,“switch”,“for”,“while”等条件状态语句来帮助实现判定,实现某些循环任务,调用其他覆盖普遍功能的函数。脚本编写方法142结构化商业策略测试用例在脚本中定义。需要测试员的调整编码技巧编程的成本要比录制回放编写方法略高一点。需要某种程度上的计划、设计脚本编写方法143R结构化测试数据也是在脚本中被硬编码因为相对稳定一点,所有需要相对少的脚本维护,维护成本比录制回放脚本编写方法的要相对低。处理编程知识外,还需要一些脚本语言的知识。脚本编写方法数据驱动数据驱动脚本编写方法把数据从脚本分离出去,存储在外部的文件中。这样,脚本就只是包含编程代码了。这在测试运行时要改变数据的情况下是需要的。这样,脚本在测试数据改变的情况下也不需要修改代码。有时候,测试的期待结果值也可以跟测试输入数据一起存储在数据文件下脚本编写方法145需要更多的计划和设计。数据独立存储在数据表或外部文件中。脚本维护成本较低。推荐在需要测试正反数据时候使用。数据驱动脚本编写方法的特点脚本的结构化的方式编程的。测试用例由测试数据或脚本定义。由于脚本参数化和编程成本,这种方法的开发成本跟结构化脚本编写方法比较要相对高。需要测试人员较高的代码调整方面的编程技巧脚本编写方法关键字驱动关键字驱动脚本编写方法把检查点和执行操作的控制都维护在外部数据文件中。因此,测试数据和测试操作序列控制都是在外部文件中设计好的,除了常规的脚本外,还需要额外的库来翻译数据。脚本编写方法关键字驱动脚本编写方法是数据驱动测试方法的扩展
综合了数据驱动脚本编写方法、结构化脚本编写方法测试用例有数据定义;开发成本高,因为需要更多的测试计划和设计、开发方面的投入;要求测试人员有很强的编程能力;关键字驱动特点
最初的计划和设计、管理成本会比较高维护成本较低数据在外部文件中存储需要额外的框架或库,因此,测试员需要更多的编程技巧脚本编写方法行为驱动行为驱动这种技术是外行也可以创建自动测试的测试用例。运行过这样的测试用例不需要提供输入和预期输出条件。应用程序中出现的所有行动都会以自动化定义的一般控件集为基础进行自动测试。脚本编写方法行为驱动特点最初的计划和设计、管理成本很高维护成本较低需要有创建框架的设计和体系结构技能需要有多个产品的通用测试需求测试用例有框架自动生成开发成本更高,需要框架的设计、开发的多方面投入要求测试人员有很强的编程能力选择自动化测试脚本开发方法总结对于开发的成本来说,随着脚本编写方法从录制回放到行为驱动的改变而不断地增加对于维护的成本来说,随着脚本编写方法从录制回放到行为驱动的改变而在降低。对于编程技能要求来说,随着脚本编写方法从录制回放到行为驱动的改变,对一个测试人员的编程数量程度的要求在增加。选择自动化测试脚本开发方法总结对于设计和管理的需求来说,随着脚本编写方法从录制回放到行为驱动的改变,设计和管理自动化测试项目的要求在增加。因此,应该合理地选择自动化测试脚本的开发方法,在适当的时候、适当的地方使用适当的脚本开发方法。第9章软件自动化测试2目录
自动化测试工具的特征
自动化测试工具作用和优势
自动化测试的工具
自动化测试工具的选择第一节第二节第三节第四节第一节自动化测试工具的特征什么自动化测试工具事务认知实践积累信息处理近年来,软件已经成为商业的重要组成部分。减少软件开发费用并增强软件测试质量已经成为软件行业的重要目标。为此,软件按组织也付出了很大的努力,并且许多公司也已经成功地开发了一些软件测试工具。理解决策自动化测试工具的特征1561、支持脚本化语言这是最基本的一条要求,脚本语言具有编程语言类似的语法结构,可以对已经录制好的脚本进行编辑修改。
2、对程序界面对象的识别能力测试工具必须能够将测试程序界面中的所有对象区分并标记出来,录制的测试脚本才具有更好的可读性、灵活性和更大的修改空间。如果只通过位置坐标来区分对象,它的灵活性就差很多了。自动化测试工具的特征1573、支持函数的可重用如果支持函数调用,可以建立一套比较通用的库函数,一旦程序做了改动,只需要把原来脚本中的相应函数进行更改,而不用把所有可能的脚本都修改,可以节省很大的工作量。
4、支持外部函数库除了对被测系统建立库函数外,一些外部函数同样能够为测试提供更强大的功能,如Windows程序中对文件的访问,C/S程序中对数据编程接口的调用等。自动化测试工具的特征1585、抽象层抽象层的作用是将程序界面中存在的所有对象实体一一映射成逻辑对象,帮助减少测试维护工作量。第二节自动化测试工具作用和优势自动化测试工具的分类在实际应用中,测试工具可以从两个不同方面去分类
根据测试方法的不同,自动化测试工具可分为:白盒测试工具和黑盒测试工具。
根据测试的对象和目的,自动化测试工具可分为:单元测试工具、功能测试工具、负责测试工具、性能测试工具、Web测试工具、数据库测试工具、回归测试工具、嵌入式测试工具、页面链接测试工具、测试设计与开发工具、测试执行与评估工具以及测试管理工具等。自动化测试工具的作用16101确定系统最优的硬件配置自动化测试工具的作用02检查系统的可靠性03检查系统硬件和软件的升级情况04评估新产品自动化测试工具的优势优势商业策略记录业务流程并生成脚本程序的能力记对各种网络设备(客户机、服务器、其他网络)的模仿能力用有限的资源生成高质量虚拟用户的能力对于整个软件和硬件系统中各个部分的监控能力对于测试结果的表现和分析能力第三节自动化测试的工具白盒测试工具白盒测试工具一般是针对被测源程序进行测试,测试所发现的故障可以定位到代码级。根据测试工具工作原理的不同,白盒测试的自动化工具可分为静态测试工具和动态测试工具。常用的动态自动化测试工具有:Jtest、Jcontract、C++Test、CodeWizard、Insure++、BoundsChecker、TrueTime、FailSafe、Jcheck、TrueCoverage、SmartCheck、XUnit系列开源框架等功能测试工具WinRunner:企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行,自动执行重复任务并优化测试工作。QARun:自动回归测试工具,在.NET环境下运行,它还提供了与TestTrackPro的集成。功能测试工具RationalRobot:RationalTestSuite中的一员,对于VisualStudio6编写的程序提供非常好的支持,同时还提供JavaApplet、HTML、OracleForms、PeopleTools应用程序的支持。FunctionalTester:Robot的Java实现版本,是在Rational被IBM收购后发布的。QuickTestPro:Mercury公司出品的B/S系统的功能测试工具。性能测试工具LoadRunner:预测系统行为和性能的负载测试工具。QALoad:Compuware公司性能测试工具套件中的压力负载工具,QALoad是客户/服务器系统、企业资源配置(ERP)和电子商务应用的自动化负责测试工具。性能测试工具BenchmarkFactory:是一种高扩展性的强化测试、容量规划和性能优化工具,可以模拟数千个用户访问应用系统中的数据库、文件、Internet及消息服务器,从而更加方便地确定系统容量,找出系统瓶颈,隔离出用户的分布式计算环境中与系统强度有关的问题。无论是服务器,还是服务器集群,BenchmarkFactory都是一种成熟、可靠、高扩展性和易于使用的测试工具。性能测试工具SilkPerformance:是业界最先进的企业级负载测试工具。它能够模拟成千上万的用户在多协议和多种计算环境下的工作。SilkPerformance可以让你在使用前,就能够预测企业电子商务环境的行为——不受电子商务应用规模和复杂性影响。JMeter:是一个专门为运行和服务器负载测试而设计、100%的纯Java桌面运行程序。性能测试工具WAS:是Microsoft提供的免费的Web负载压力测试工具,应用广泛。OpenSTA:全称是OpenSystemTestingArchitecture。OpenSTA的特点是可以模拟很多用过户来访问需要测试的网站,它是一个功能强大、自定义设置功能完备的软件。PureLoad:一个完全基于Java的测试工具,它的Script代码完全使用XML。常用的测试管理工具TestDirectorTestManagerQADirectorTestLinkBugzillaJIRAMantis第四节自动化测试工具的选择自动化测试工具的选择市场上的测试工具非常多,没有哪个工具在所有环境下都是最优的,所有的工具在不同的环境下都有他们各自的优点和缺点。需要从以下方面来考虑:·确定需要的测试生命周期工具类型。确定各种系统架构·了解被测试应用程序管理数据的方式·了解测试类型·了解进度小结
语法
语义
蕴涵小结本章首先给出了自动化测试的定义,对比了自动测试和手工测试的优缺点。其次介绍了自动化测试的原理和方法,包括直接对代码进行静态和动态的分析、测试过程的捕获和回放、测试脚本技术、虚拟用户技术和测试管理技术,
语法
语义
蕴涵小结然后讲述了在开展软件自动化测试时应注意的引入原则、生命周期、成本、导入时机、人员要求以及在实施中存在的问题,从而引出了确定自动化测试的对象和范围以及选择自动化测试的方案和脚本编写方法。最后介绍了自动化测试工具的特征、作用、优势、选择、分类以及局限性。谢谢观看第10章缺陷跟踪管理
目录缺陷管理工具概述项目管理工具Redmine项目管理工具Bugzilla问题跟踪工具JIRA小结第一节第二节第三节第四节第五节第一节缺陷管理工具概述缺陷管理的目的与意义181收集缺陷数据并根据缺陷趋势曲线识别测试过程的阶段;决定测试过程是否结束有很多种方式,通过缺陷趋势曲线来确定测试过程是否结束是常用并且较为有效的一种方式;收集缺陷数据并在其上进行数据分析,作为组织的过程财富。缺陷的跟踪管理一般而言有如下目的:缺陷管理工具的分类182纯粹的缺陷管理工具包含缺陷管理模块的项目管理工具Bugzilla,Bugzero等属于这一类,它们能够为软件组织建立一个完善的缺陷跟踪体系,包括报告缺陷、查询缺陷记录并产生报表、处理解决缺陷等;第二类是以Redmine,JIRA为代表的项目管理工具,它们集项目计划、任务分配、需求管理、缺陷跟踪于一体,功能强大,易于使用。缺陷管理作为其中的一个子功能而发挥作用。缺陷管理工具的选择183是否具备能满足团队需求的缺陷跟踪管理功能是首先需要考虑的,良好的缺陷管理工具应当能方便得查找到缺陷的来源、详细信息、严重程度、优先级、缺陷负责人、缺陷流转状态、解决方案等。缺陷跟踪管理基本的选择注意事项缺陷管理工具的引入不应当加大开发人员的工作量,所以安装配置简单、使用方便是需要着重考虑的点。学习成本的考量缺陷管理工具的选择184好的工具应该具有良好的项目管理和人员权限管理功能,支持多项目管理,每个项目中有单独的人员管理,不同人员有不同的权限,使管理工作清晰明了。权限管理基本的选择注意事项缺陷管理工具有些是收费的,有些是免费的。应当在能满足团队需求的情况下尽量减少对工具的资金投入。资金成本的考量好的缺陷管理工具应该能与其他过程管理工具集成,同时支持二次开发功能,以支持未来不满足工作需求时的功能扩展。可扩展性第二节项目管理工具RedmineRedmine的特点186多项目和子项目支持。用户可以在一个Redmine实例中管理所有的项目和项目下的子项目,每个项目可以单独为每个用户设置不同的角色,项目可被设置为所有人可见或仅项目成员可见。可配置的用户角色控制。用户可以很方便得设置项目成员角色和角色对应的访问权限。Redmine的特点187可配置的问题追踪系统。可以自定义问题类型和状态,并能为每种问题类型和角色赋予不同的状态变更权限。甘特图和日历。Redmine能基于问题开始和到期日期自动绘制甘特图和日历。支持Blog形式的新闻发布、Wiki形式的文档撰写和文件管理。每个项目可以配置独立的Wiki和论坛模块。Redmine的特点188版本库管理。每个项目都可以附上已有的代码库。Redmine可以让用户浏览代码内容,查看变更信息,并提供了能标注不同版本代码的差异内容的代码阅读器。订阅和邮件通知。可订阅内容包括项目活动、变更集、新闻、问题、问题变更。Redmine的特点189支持多LDAP
用户认证。支持用户自注册和用户激活。多语言支持。支持包括简体中文在内的49种语言。多数据库支持。Redmine的缺陷跟踪——问题列表190点击“问题”选项卡,默认将看到该项目中所有处于打开状态的问题。每个项目可以配置独立的Wiki和论坛模块。用户可以通过点击“+”号按钮,为过滤器字段选择多个值。这时会出现一个选择列表,按住“ctrl”后,可选择多个值。在新建自定义查询的界面输入自定义查询的名称,以及过滤器和其他属性的设置。点击保存之后,新建的自定义查询将会出现在问题列表界面的右边栏中。概述过滤器的应用自定义查询快捷菜单、批量编辑问题、边栏Redmine的缺陷跟踪——路线图191点击“路线图”选项卡,就可以查看当前项目的进展状态:版本名称、版本的完成日期、进度条、根据问题状态所占的百分比(即问题的完成度),统计出目标版本的完成度、目标版本相关连的问题列表如果权限合适,可以为版本添加一个wiki页面,用于描述当前版本的一些主要事件。概述路线图提供了一个更高级别的基于项目版本的对于整个问题跟踪系统的概述,它可以帮助制定项目计划,管理项目开发。管理路线图边栏Redmine的缺陷跟踪——版本概述192版本名称版本完成时间版本的进度条wiki(如果管理员配置了wiki页面)相关的问题列表时间跟踪区域分组显示区域日历提供了一个按月份显示的项目预览。在这里可以看到一个任务状态的起止日期。日历在问题列表页面,点击右边栏的“甘特图”链接,即可进入甘特图界面。甘特图显示问题的起止日期以及版本的截至日期。甘特图Redmine的缺陷跟踪——日历与甘特图第三节项目管理工具BugzillaBugzilla的特点195--基于Web方式安装简单、运行方便快捷、管理安全。--有利于缺陷的清楚传达系统使用数据库进行管理,提供全面详尽的报告输入项,产生标准化的Bug报告。提供大量的分析选项和强大的查询匹配能力,能根据各种条件组合进行Bug统计。Bugzilla的特点196--可获取的历史记录当错误在它的生命周期中变化时,开发人员、测试人员、及管理人员将及时获得动态的变化信息,允许你获取历史纪录,并在检查错误的状态时参考这一记录。Bugzilla的特点197--系统灵活强大的可配置能力Bugzilla工具可以对软件产品设定不同的模块,并针对不同的模块设定开发人员和测试人员;这样可以实现提交报告时自动发给指定的责任人;并可设定不同的小组。设定不同的用户对Bug记录的操作权限不同,可进行有效的控制管理。Bugzilla的特点198--允许设定不同的严重程度和优先级可以在错误的生命期中管理错误,从最初的报告到最后的解决,都有详细的记录,确保了错误不会被忽略,同时,可以让开发人员将注意力集中在优先级和严重程度高的错误上。Bugzilla的特点199--自动发送Email通知相关人员根据设定的不同责任人,自动发送最新的动态信息,有效的帮助测试人员和开发人员进行沟通。Bugziila的缺陷跟踪200创建账户01录入Bug。点击New或者FileaBug链接,选择发现Bug的项目。02处理Bug。Bug的解决方式有以下几种:FIXED问题已经修复、DUPLICATE描述的问题与以前的某个Bug重复、WONTFIX描述的问题将永远不会被修复、WORKSFORME无法重现Bug、INVALID描述的问题不是一个Bug、LATER描述的问题将不会在产品的这个版本中解决。03查询Bug04生成报表05第四节问题跟踪工具JIRAJIRA的特点202灵活可配置的工作流。提供用于缺陷管理的默认工作流。工作流可以自定义,工作流数量不限。每个工作流可以配置多个自定义动作和自定义状态。每一个问题类型都可以单独设置或共用工作流。可视化工作流设计器,使工作流配置更加直观。自定义工作流动作的触发条件,工作流动作执行后,自动执行指定的操作。JIRA的特点203问题(Issue)管理。自定义问题类型,适应组织管理的需要。自定义问题安全级别,可以限制指定用户访问指定的问题。如果一个问题需要多人协作,可以将问题分解为多个子任务,分配给相关的用户。自定义面板。可以在面板中添加任何符合OpenSocial规范的小工具。可以简单地创建、复制,生成多个面板,分别管理不同的项目。面板布局灵活,支持拖拽。JIRA的特点204强大的查询功能。快速查询,输入关键字,马上显示符合条件的结果。简单查询,只需点选,就可以将所有条件组合,查找出符合条件的问题。查询条件可以保存为过滤器,并能共享给其他用户。支持JQL搜索语言,可以使用"lastLogin","latestReleasedVersion","endOfMonth","membersOf"之类的函数,支持自动补完。JIRA的特点205安全。JIRA的用户可以交由LDAP验证。允许设置匿名访问,任何使用管理员功能的进程,都需要额外验证,并且10分钟过期,以保证JIRA的安全。查看所有登录到JIRA的用户状况。将用户归属与用户组,用于维护安全权限和操作权限。允许每个项目单独定义项目角色成员,打破用户组权限的限制,减轻系统管理员对于项目权限的维护工作量。每个项目可以独立设置自己的安全机制。限制某些用户访问指定的问题,即使该用户拥有这个项目的访问权。白名单机制,限制外部链接直接访问JIRA数据。JIRA的特点206高度可配置的通知方案。通过邮件通知方案,配置在JIRA工作流关键阶段自动发送通知邮件。即使用户不参与问题的解决,只要有权限,也可以关注一个问题。只要关注的问题有任何变化,用户都可以接受到邮件通知。定期接收JIRA的指定报告,如超期未解决的问题列表、5天未更新的问题列表等。JIRA的特点207易于和其他系统实现集成。通过插件生态平台marketplace,有300种以上的插件可供选择,用以提高JIRA扩展性或提高JIRA的易用性,插件还在持续增加中。通过插件,JIRA可以将报告的缺陷与源代码建立联系,以便于了解缺陷在哪部分代码中被修复。JIRA提供全面的remoteAPIs——包括EST,SOAP,XML-RPC等——并且Atlassian提供开发教程和示例。JIRA的缺陷跟踪——录入Bug208--对话框中字段含义如下:Project:Bug所在项目。IssueType:问题类型,取值可以是bug/newfeature/story等。Summary:一句话概述Bug内容。Reporter:Bug的上报者。Components:Bug所在项目的组件。Description:对Bug的详细描述,包括发现Bug的操作步骤,出现的问题,期望结果等。Priority:Bug优先级,取值包括Highest,High,Medium,Low和Lowest。Labels:填写该字段有助于以后过滤出特定类型的Bug。LinkedIssue:选择依赖或者被依赖的Bug。Assignee:负责解决Bug的人。EpicLink:Bug所属的Epic。Sprint:Bug所属的Sprint。JIRA的缺陷跟踪——处理Bug209--处理结果包括:Fixed:已修复。Later:在以后的版本中修复。Invalid:描述的问题不是一个Bug。Won’tFix:该Bug将不会被修复。Duplicate:描述的问题与以前的某个Bug重复。CannotReproduce:不能重现该Bug。JIRA的缺陷跟踪——查询Bug210导航栏的右侧提供一个快速搜索框,输入几个关键词即可匹配出当前项目中的对应Bug。此外,输入某些特殊关键词可以出现下拉列表供用户选择,如图8.3所示,输入my会出现所有分配给当前登录用户的Bug。快速导航JIRA的查询方式高级查询允许用户构造查询语句来查找Bug,一个简单的JIRA查询语句(JQL)包括字段、操作符以及值或者函数高级查询JIRA的缺陷跟踪——生成报表211JIRA为每个项目提供了各种不同的报表,帮助分析项目的进度、Bug、时间线、资源使用情况等。JIRA将报表分成敏捷、缺陷分析、预测与管理、其它这四类。第五节小结小结本章首先对缺陷管理的目的和意义做了简要说明,并按工具的功能对市面上的缺陷管理工具作了分类。然后给出了
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年港口与航道工程造价工程师考试真题
- 2026年初级银行从业考试(银行业专业实务个人理财)模拟题库及答案(广东省)
- 2026天真蓝面试题及答案
- 2026团建中心面试题及答案
- 2026网络论坛面试题目及答案
- 2026微众银行面试题目及答案
- 2026文化经济面试题及答案大全
- 2026五大行面试题目及答案
- 2026乡村医生单招面试题及答案
- 2026小商小贩面试题目及答案
- 2026年广西公需科目《人工智能国家战略与政策通识》题库
- 2026年九年级道德与法治知识点
- 2026年广东省东莞市中考历史选择题复习(附答案解析)
- 2026年高中历史学业水平合格考试知识点归纳总结(复习必背)
- 2026康养文旅市场专题研究报告-远翔神思咨询
- 2025-2026学年人教版(2024)二年级数学下册第四单元《万以内的加法和减法》综合素养评价卷(含答案)
- 广东省汕头市龙湖区2024-2025学年七年级下学期期末生物试题(含答案)
- 2024年湖南怀化洪江区招聘事业单位工作人员考试真题
- 2026年山东泰安市中考化学真题试题(含答案)
- 2026年重庆市地理生物会考真题试卷+解析及答案
- (2026版)《中华人民共和国国家发展规划法》解读
评论
0/150
提交评论