软件测试方法和技术ppt课件.ppt
软件测试方法和技术,1 系统集成的模式2 功能测试3 系统测试,回归测试4 性能测试5 压力测试6 安全性、可靠性和容错性测试7 验收测试,1 系统集成的模式,软件集成测试前的准备,人员安排测试计划测试内容测试方法,集成测试的模式,渐增式测试模式与非渐增式测试模式非渐增式测试模式:先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序,如大棒模式。渐增式测试模式:把下一个要测试的模块同已经测试好的模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试。,2 功能测试,目的和内容,程序安装、启动正常,有相应的提示框、错误提示等 每项功能符合实际要求 系统的界面清晰、美观 菜单、按钮操作正常、灵活,能处理一些异常操作 能接受正确的数据输入,对异常数据的输入有提示、容错处理等 数据的输出结果准确,格式清晰,可以保存和读取 功能逻辑清楚,符合使用者习惯 系统的各种状态按照业务流程而变化,并保持稳定 支持各种应用的环境 能配合多种硬件周边设备 软件升级后,能继续支持旧版本的数据 与外部应用系统的接口有效,功能测试的方法,等价类划分法边界值分析法错误推测法因果图法组合分析法,我要测试所有的功能,等价类划分法,划分好等价类测试:防止遗漏测试案例。,边界值分析法,例子:排序程序,边界条件有: 序列为空; 序列仅有一个数据; 序列为满,用猜错法补充一下测试用例; 序列已经按要求排好序; 序列的顺序与要求的顺序恰好相反; 序列中的所有数据全部相等。,因为错误最容易发生在边界值附近,所以边界值分析法对于多变量函数的测试很有效,尤其是对于像C/C+数据类型要求不是很严格的语言有利 。,错误推测法,这个错误到底在哪?,因果图法,组合分析法,组合分析是一种基于每对参数组合的测试技术,主要考虑参数之间的影响是主要的错误来源和大多数的错误起源于简单的参数组合。,在产品汉化过程中哪个组合出错了?,3 系统测试,压力测试 (Stress test) 容量测试 (Capacity test) 性能测试 (Performance test) 安全测试 (Security test) 容错测试 (Recovery test),回归测试的目的 所做的修改达到了预定的目的,如错误得到了改正,新功能得到了实现,能够适应新的运行环境等; 不影响软件原有功能的正确性。 回归测试的方法 再测试全部用例 基于风险选择测试 基于操作剖面选择测试 再测试修改的部分,回归测试,回归测试,4 性能测试,性能测试通常会使用特定的测试工具,来模拟超常的数据量、负载等,监测系统的各项性能指标,如CPU和内存的使用情况、响应时间、反应速度等。,一定要设法破坏它!,性能测试概念和目的,性能测试的目的: 为了验证系统是否达到用户提出的性能指标,同时发现系统中存在的性能瓶颈,起到优化系统的目的。性能测试指标的来源:用户对各项指标提出的明确需求;如果用户没有提出性能指标则根据用户需求、测试设计人员的经验来设计各项测试指标。(需求+经验)主要的性能指标:服务器的各项指标(CPU、内存占用率等)、后台数据库的各项指标、网络流量、响应时间,性能测试要点,测试环境应尽量与产品运行环境保持一致,应单独运行尽量避免与其他软件同时使用。性能测试一般使用测试工具和测试人员编制测试脚本来完成。性能测试的重点在于前期数据的设计与后期数据的分析。性能测试的用例主要涉及到整个系统架构的问题,所以测试用例一旦生成,改动一般不大,所以做性能测试的重复使用率一般比较高。,性能测试的方法和技巧,两种负载类型“flat”测试ramp-up测试对于企业级的系统,性能测试的方法主要有:性能规划测试渗入测试峰谷测试,两种负载类型,“Flat”测试: 对于一次给定的测试,应该取响应时间和吞吐量的平均值。精确地获得这些值的唯一方法是一次加载所有的用户,然后在预定的时间段内持续运行。,虚拟用户的数量,两种负载类型,Ramp-up测试: 用户是交错上升的(每几秒增加一些新用户)。ramp-up测试不能产生精确和可重现的平均值,这是因为由于用户的增加是每次一部分,系统的负载在不断地变化。其优点是,可以看出随着系统负载的改变,测量值是如何改变的据此选择要运行的flat测试的范围。,性能规划测试,性能规划类型的测试其目标是找出在特定的环境下,给定应用程序的性能可以达到何种程度。例如,如果要以5秒或更少的响应时间支持8,000个当前用户,需要多少个服务器?要确定系统的容量,需要考虑几个因素:用户中有多少是并发与服务器通信的。每个用户的请求间时间间隔是多少。,如何加载用户以模拟负载状态?最好的方法是模拟高峰时间用户与服务器通信的状况。如果用户负载状态是在一段时间内逐步达到的,选择ramp-up测试,每隔几秒增加x个用户;如果所有用户是在一个非常短的时间内同时与系统通信,就应该使用flat测试,将所有的用户同时加载到服务器 什么是确定容量的最好方法?结合两种负载类型的优点,并运行一系列的测试 如:首先使用ramp-up测试确定系统支持的用户范围该范围内不同的并发用户负载进行一系列的flat测试,更精确地确定系统的容量。,性能规划测试 (2),渗入测试,渗入测试是一种比较简单的性能测试。渗入测试所需时间较长,它使用固定数目的并发用户测试系统的总体健壮性。这些测试将会通过内存泄漏、增加的垃圾收集(GC)或系统的其他问题,显示因长时间运行而出现的任何性能降低。 建议运行两次测试一次使用较低的用户负载(要在系统容量之下,以便不会出现执行队列),一次使用较高的负载(以便出现积极的执行队列)。,峰谷测试,兼有容量规划ramp-up测试和渗入测试的特征,目标是确定从高负载(例如系统高峰时间的负载)恢复、转为几乎空闲、然后再攀升到高负载、再降低的能力。,性能测试的过程,故障转移测试,Failover 测试:故障转移(Failover)和故障恢复(Failback).服务器的Failover测试的目的: 检查系统是否具备某种灾难性恢复的手段. 当系统局部或全部出错时, 能否在指定时间内修正错误. 具有良好故障恢复的系统, 当遇到软件原因或无法克服的自然原因时, 能够进行故障的转移与恢复. 使用户最低限度的感受到故障的发生.在服务器的Failover测试中, 将包括多种情况, 如:客户机或服务器掉电; 客户机与服务器网络中断; 服务器相关的程序CRASH; 系统中全部或部分CORE SERVER出现掉电/网络中断情况.,Failover测试的方法和技巧,将测试系统全部对象描绘出来-系统结构图对图中的所有可能发生的故障点设计测试用例.,5 压力测试,在一种需要反常(如长时间的峰值)数量、频率或资源的方式下,执行可重复的负载测试,以检查程序对异常情况的抵抗能力,找出性能瓶颈。从本质上来说,测试者是想要破坏程序。步骤:,测试压力估算 测试环境准备 问题的分析 累积效应,压力测试例图,试试这个游戏站点的承受力,压力测试类型,并发性能测试(重点) 疲劳强度测试 大数据量测试,并发性能测试,考察客户端应用的性能,测试的入口是客户端并发性能测试的过程,是一个负载测试和压力测试的过程。即逐渐增加并发虚拟用户数负载,直到系统的瓶颈或者不能接收的性能点,通过综合分析交易执行指标、资源监控指标等来确定系统并发性能的过程。并发性能测试是负载压力测试中的重要内容。ramp-up测试,疲劳强度测试,通常是采用系统稳定运行情况下能够支持的最大并发用户数或者日常运行用户数,持续执行一段时间业务,通过综合分析交易执行指标和资源监控指标来确定系统处理最大工作量强度性能的过程。 疲劳强度测试案例制定的原则是保证系统长期不间断运行的业务量,并且应该尽量去满足该条件。,大数据量测试,独立的数据量测试 针对某些系统存储、传输、统计、查询等业务进行大 数据量测试 综合数据量测试 和压力性能测试、负载性能测试、并发性能测试、疲劳性能测试相结合的综合测试方案,系统瓶颈分析举例-1,交易的响应时间如果很长,远远超过系统性能需求,表示耗费CPU的数据库操作,例如排序,执行aggregate functions(例如sum、min、max、count)等较多,可考虑是否有索引以及索引建立的是否合理;尽量使用简单的表联接;水平分割大表格等方法来降低该值。,系统瓶颈分析举例-2,UNIX资源监控(NT操作系统同理)中指标内存页交换速率(Paging rate),如果该值偶尔走高,表明当时有线程竞争内存。如果持续很高,则内存可能是瓶颈。也可能是内存访问命中率低。“Swap in rate”和“Swap out rate”也有类似的解释。,系统瓶颈分析举例-3,UNIX资源监控(NT操作系统同理)中指标CPU占用率(CPU utilization),如果该值持续超过95%,表明瓶颈是CPU。可以考虑增加一个处理器或换一个更快的处理器 。合理使用的范围在60%至70%。,系统瓶颈分析举例-4,UNIX资源监控(NT操作系统同理)中指标磁盘交换率(Disk rate),如果该参数值一直很高,表明I/O有问题。可考虑更换更快的硬盘系统、重新部署业务逻辑等,另外设置Tempdb in RAM,减低max async IO,max lazy writer IO等措施都会降低该值。,6 安全性测试,可靠性和容错性测试,安全性测试、可靠性测试和容错性测试的测试目的不同,其手段和方法也不同,但都属于系统测试的范畴,有一定的联系,如软件可靠性要求通常包括了安全性的要求。安全性测试、可靠性测试和容错性测试的技术比较深、实施比较难,但在应用系统中越来越重要。,安全性测试,根据CMMI3的定义,安全性是“使伤害或损害的风险限制在可接受的水平内”。,安全性测试,安全性测试是检查系统对非法侵入的防范能力。安全测试期间,测试人员假扮非法入侵者,采用各种办法试图突破防线。例如: 想方设法截取或破译口令; 专门开发软件来破坏系统的保护机制; 故意导致系统失败,企图趁恢复之机非法进入; 试图通过浏览非保密数据,推导所需信息等等。理论上讲,只要有足够的时间和资源,没有不可进入的系统。因此系统安全设计的准则是,使非法侵入的代价超过被保护信息的价值,此时非法侵入者已无利可图。,可靠性测试,可靠性(Reliability)是产品在规定的条件下和规定的时间内完成规定功能的能力,它的概率度量称为可靠度。软件可靠性是软件系统的固有特性之一,它表明了一个软件系统按照用户的要求和设计的目标,执行其功能的可靠程度。软件可靠性与软件缺陷有关,也与系统输入和系统使用有关。理论上说,可靠的软件系统应该是正确、完整、一致和健壮的。,规定的时间 规定的环境条件规定的功能,可靠性测试结果的评估,成熟性度量可以通过错误发现率DDP(Defect Detection Percentage)来表现。在测试中查找出来的错误越多,实际应用中出错的机会就越小,软件也就越成熟。DDP=测试发现的错误数量/已知的全部错误数量已知的全部错误数量是测试已发现的错误数量加上可能会发现的错误数量之和。,容错性测试,容错性测试是检查软件在异常条件下自身是否具有防护性的措施或者某种灾难性恢复的手段。如当系统出错时,能否在指定时间间隔内修正错误并重新启动系统。容错性测试包括两个方面:,输入异常数据或进行异常操作,以检验系统的保护性。如果系统的容错性好的话,系统只给出提示或内部消化掉,而不会导致系统出错甚至崩溃。灾难恢复性测试。通过各种手段,让软件强制性地发生故障,然后验证系统已保存的用户数据是否丢失、系统和数据是否能尽快恢复。,从质量三个纬度看系统测试,从质量三个纬度看系统测试 (2),7 验收测试,7.1 验收测试的过程和主要内容7.2 产品规格说明书的验证7.3 用户界面和可用性测试7.4 兼容性测试7.5 可安装性和可恢复性测试7.6 验收测试报告和用户验收测试,什么是验收测试,验收测试(Acceptance Test):在软件产品完成了功能测试和系统测试之后、产品发布之前所进行的软件测试活动它是技术测试的最后一个阶段,也称为交付测试。,7.1 验收测试的过程和主要内容,前提: 系统或软件产品已通过了系统测试的软件系统。测试内容:验证系统是否达到了用户需求规格说明书(可能包括项目或产品验收准则)中的要求,测试试图尽可能地发现软件中存留的缺陷,从而为软件进一步改善提供帮助,并保证系统或软件产品最终被用户接受。主要包括易用性测试、兼容性测试、安装测试、文档(如用户手册、操作手册等)测试等几个方面的内容。,测试步骤,制定测试计划,测试项,测试策略及验收通过准则,并经过客户参与的计划评审。建立测试环境,设计测试用例,并经过评审。准备测试数据,执行测试用例,记录测试结果。分析测试结果,根据验收通过准则分析测试结果,作出验收是否通过及测试评价。测试项目通过;测试项目没有通过,并且不存在变通方法,需要很大的修改;测试项目没有通过,但存在变通方法,在维护后期或下一个版本改进;测试项目无法评估或者无法给出完整的评估。此时必须给出原因。如果是因为该测试项目没有说明清楚,应该修改测试计划。 提交测试报告,验收标准和注意事项,验收测试完成标准:完全执行了验收测试计划中的每个测试用例。在验收测试中发现的错误已经得到修改并且通过了测试或者经过评估留待下一版本中修改。完成软件验收测试报告。注意事项:必须编写正式的、单独的验收测试报告验收测试必须在实际用户运行环境中进行由用户和测试部门共同执行。如公司自开发产品,应由测试人员,产品设计部门,市场部门等共同进行。,7.2 产品规格说明书的验证,产口规格说明书的审核 从客户的角度和立场进行审核工作。 检验套用标准的正确性,不要和行业规范相抵触。 审查、研究同类产品。 验证产品规格说明书的完整性、准确性、一致性、合理性等特性。产口规格说明书的验证 已经实现的特性标识为通过。 特性没有实现,报告bug并在报告中体现。 特性基本实现,但与产品说明书内容不一致,报bug并在报告中体现。 特性基本实现,但存在一些问题或错误。,什么是适用性( usability)?,容易发现(Easy to discover) 简单易学(Easy to learn) 易于使用(Easy to use) 可用性(Availability),Microsoft的适用性测试,180 适用性测试工程师 25 适用性测试实验室,7.3 用户界面和可用性测试,用户界面的7个要素: 符合标准和规范。 直观性。 一致性。 灵活性。 舒适性。 正确性。 实用性。易用性测试没有具体量化的指标,主观性较强。,符合标准和规范,通常标准是已经确立的,多数用户已经熟悉并接受了这些标准和规范、或已经认同了这些信息所代表的意义。例:如果软件在某一个平台上运行,就需要把该平台的标准和规范作为产品规格说明书的补充内容,在建立测试案例时和产品规格说明书一样作为依据,直观性和一致性,直观性:- 首先了解所需的功能或期待的响应应该明显,并在预期的地方出现。- 其次要考虑用户界面的组织和布局是否合理。一致性:- 包括软件本身的一致性,以及软件与其他软件的一致性。,灵活性,用户喜欢可以灵活选择的软件,软件可以选择不同的状态和方式,完成相应的功能。但灵活性也可能发展为复杂性,太多的状态和方式的选择增加的不仅仅是用户理解和掌握的困难程度。多种状态之间的转换,增加了编程的难度,更增加了软件测试人员的工作量。例:,舒适性、正确性、实用性,舒适性: 恰当的表现、合理的安排、必要的提示或更正能力等是要考虑的因素,包括容错处理和性能。正确性: 正确性的问题一般都很明显,比较容易发现。 实用性: 实用性不是指的是软件本身是否实用,而仅仅指的是具体特性是否实用。大型软件的开发或周期较长经过几次反复的软件开发中容易产生一些没有实用性的功能。,7.4 兼容性测试,软件兼容性测试是指验证软件之间是否正确地交互和共享信息。 注意:从项目管理的角度出发,使平台清单在满足客户要求的前提下尽可能的小是十分重要的,否则将会给编码和测试带来巨大的工作量。 兼容性包括: 硬件兼容。 软件之间兼容。 数据之间兼容。,向前和向后兼容,向后兼容是指可以使用软件的以前版本。 向前兼容指的是可以使用软件的未来版本。,多版本的测试,一个庞大而又艰巨的任务,需要对所有可能的软件组合等价分配,验证软件之间正确交互的最小有效集合。 通常我们的做法是: 将软件分类。例如:字处理,电子表格,数据库,图形处理,游戏等。从每种类型中选择部分测试软件。 按软件的流行程度选择较流行的软件。 按年份,选取一定年份内的程序和版本。,7.5 可安装性和可恢复性测试,可安装性测试: 系统软件安装 应用软件安装 产品升级安装 等等,可安装性测试,安装测试注意事项: 是否需要专业人员安装。 安装说明书有无对安装环境做限制和要求。 过程是否简单、易掌握。 过程中是否有明显的、合理的提示信息。 是否会出现不可预见或不可修复的错误。 安装程序是否占用系统资源与原系统冲突,是否会影响原系统安全性。 软件安装的完整性和灵活性。 许可证号码与注册号码的验证。 升级安装后原有程序是否可正常运行。 卸载测试。,可恢复性测试,恢复测试主要检查系统的容错能力。当系统出错时,能否在指定时间间隔内修正错误或重新启动系统。 恢复测试首先要通过各种手段,让软件强制性地发生故障,然后验证系统是否能尽快恢复。 对于自动恢复需验证重新初始化、检查点、数据恢复和重新启动等机制的正确性; 对于人工干预的恢复系统,还需估测平均修复时间,确定其是否在可接受的范围内。,怎样进行文档测试,好的文档能达到提高易用性、提高可靠性、降低技术支持的费用的目的,从而提高了产品的整体质量。 非代码的文档测试主要检查文档的正确性、完备性和可理解性。验证正确性验证完备性验证可理解性软件驱动的文档还得像程序一样运行起来测试。,7.6验收测试报告和用户验收测试,测试是指软件开发公司组织内部人员模拟各类用户行对即将面市软件产品(称为版本)进行测试,试图发现错误并修正。经过测试调整的软件产品称为版本。紧随其后的测试是指软件开发公司组织各方面的典型用户在日常工作中实际使用版本,并要求用户报告异常情况、提出批评意见。然后软件开发公司再对版本进行改错和完善。验收测试报告,也称为发布报告(Release Report),Q & A,