资源描述
*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,系统测试,系统测试,内容,认识系统测试,测试设计,软件攻击,测试流程,测试工具,系统测试演练,2,认识系统测试,什么是系统测试,为了发现缺陷并度量产品质量,按照系统的功能和性能需求进行的测试,一般使用黑盒测试技术,一般由独立的测试人员完成,对于模块之间交互性比较强的软件,还会有单独的集成测试,用来发现模块接口之间的错误,3,认识系统测试,客户和用户,Customer v.s.User,都是利益相关者,但是终极关注的是客户,客户是衣食父母,不是上帝,尊重客户的需求,与客户沟通,让他理解你的困难和方案,给他咨询,客户是人,人就会犯错误,4,认识系统测试,系统测试的常见内容,1、功能测试,目标:对产品的功能进行测试,检验是否实现、是否正确实现,方法:覆盖产品的功能,工具:回归测试时候可以使用工具,5,认识系统测试,系统测试的常见内容,2、性能测试,目标:对产品的性能进行测试,检验是否达标、是否能够保持,方法:覆盖系统的性能需求,一般和负载测试结合使用,工具:在需要大访问量时候尤其需要使用工具,6,认识系统测试,系统测试的常见内容,5、疲劳测试,目标:在一段时间内(经验上一般是连续72小时)保持系统功能的频繁使用,检查系统是否发生功能或者性能上的问题,方法:人为设置不同功能的连续重复操作,工具:一般需要使用工具,9,认识系统测试,系统测试的常见内容,6、易用性测试,目标:检查系统界面和功能是否容易学习、使用方式是否规范一致,是否会误导用户或者使用模糊的信息,一般与功能测试结合使用,方法:可以采用用户操作、观察(录像)、反馈并评估的方式,10,认识系统测试,系统测试的常见内容,7、安装测试,目标:,检查系统安装是否能够安装所有需要的文件/数据并进行必要的系统设置;,检查系统安装是否会破坏其他文件或配置;,检查系统安装是否可以中止并恢复现场;,检查系统是否能够正确卸载并恢复现场;,检查安装和卸载过程的用户提示和功能是否出现错误,有时候将安装测试作为功能测试的一部分,11,认识系统测试,系统测试的常见内容,8、配置测试,目标:在不同的硬件配置下,在不同的操作系统和应用软件环境中,检查系统是否发生功能或者性能上的问题,方法:一般需要建立测试实验室,,IE4.0,测试实验室建立花费了$200万,12,认识系统测试,系统测试的常见内容,9、文档测试,目标:检查系统的文档是否齐全,检查是否有多余文档或者死文档,检查文档内容是否正确/规范/一致,检查,CI,是否正确,方法:一般由单独的一组测试人员实施,13,认识系统测试,系统测试的常见内容,10、安全测试(包括病毒、加密、权限),目标,检查系统是否有病毒,检查系统是否正确加密,检查系统在非授权的内部或外部用户访问或故意破坏时候是否出现错误,14,认识系统测试,系统测试的常见内容,11、恢复测试,目标:在人为使发生系统灾难(系统崩溃、硬件损坏、病毒入侵等)的情况下,检查系统是否能够恢复被破坏的环境和数据,15,认识系统测试,系统测试的常见内容,12、回归测试,目标:检查系统变更之后是否引入新的错误或者旧的错误重新出现,尤其是在每次,Biuld,之后和稳定期测试的时候,工具:一般使用工具,一般依赖于测试用例库和缺陷报告库,16,认识系统测试,系统测试的常见内容,13、健全测试,目标:检查系统的功能和性能是否基本可以正常使用,来确定是否可以继续进行系统测试的其他内容,方法:正常安装,并使用正常情况下的测试用例对主要功能进行测试;同时检查系统文档是否齐全,17,认识系统测试,系统测试的常见内容,14、交付测试,目标:关闭所有缺陷报告,确保系统达到预期的交付标准,方法:一般需要结合回归测试,并谨慎处理新出现的,Bug,交付测试也称为稳定期测试,有时候与系统测试独立划分,18,认识系统测试,系统测试的常见内容,15、演练测试,目标:在交付给用户之前,利用相似的用户环境进行测试,例如:奥运会,MIS,系统在2008年前用于其他比赛,19,认识系统测试,系统测试的常见内容,16、背靠背测试,目标:设置一组以上的测试团队,在互相不进行沟通的情况下独立进行相同的测试项目,用来评估测试团队的效果并发现更多的错误,开始用于测试外包,现在也用于内部测试,20,认识系统测试,系统测试的常见内容,17、度量测试,目标:在系统中人为地放入错误(播种),并根据被发现的比例来确定系统中遗留的错误数量,开始用于测试外包,现在也用于内部测试,21,认识系统测试,系统测试的常见内容,18、比较测试,目标:与竞争产品及本产品的旧版本测试同样的内容,来确定系统的优势和劣势,严格地说,比较测试属于系统测评的内容,BenchMarking,是一种特殊的比较测试,22,认识系统测试,系统测试的常见内容,实际上,以上18种测试内容并不是都要进行的,而是在制定测试策略和测试计划的时候有不同的侧重点,这与测试目标、测试资源、软件系统特点和业务环境有关。,23,认识系统测试,系统测试员和用户相似的地方,都是使用软件,一般不接触软件的代码,都是假设软件应该正确实现说明书的功能,系统测试员和用户不同的地方,使用软件的目的,测试员是发现错误,他的每一个操作都是为这个目的服务的,用户是获得功能,他的每一个操作都是为这个目的服务的,对待错误,测试员希望看到错误,他的每一个操作都是为了使软件出错,用户不希望看到错误,他的每一个操作都会尽量避免使软件出错,24,认识系统测试,测试员的效率,平均每个工作日发现3-5个,Bug,平均每修正3个,Bug,,会引进1个新的,Bug,平均75%的,Bug,会在单元测试阶段解决掉,平均20%的,Bug,会在集成测试和系统测试阶段解决掉,平均5%的,Bug,会被交付给用户,普通大型民用软件平均错误率5个/10,000,LOC,电信/银行/操作系统等软件平均错误率5个/100,000,LOC,25,认识系统测试,测试团队,测试团队一般4-5人,否则应该细分为测试组,测试经理/测试组长,制定测试计划和测试方案,分配测试任务并检查测试进度,代表测试团队与开发、产品、用户沟通,实际测试,测试员,设计测试用例,执行测试用例并填写缺陷报告,检查缺陷处理结果,26,认识系统测试,测试与开发的关系,独立,MSF,对立,破与立,统一,在目标上:,Shipping on Date/Quality/Scope/Cost,27,认识系统测试,测试与开发的比例,与产品大小、复杂度、质量要求相关,目前国内比例平均为1:6,2000,年,M$,全球52000人,利润$300亿,10000开发人员,15000测试人员,测试费用占研发费用的60%,Exchange2000,程序经理25人;开发人员140人;测试人员350人,Windows2000:$50,亿,程序经理250人;开发人员1700人;测试人员3200人,IE4.0,开发时间6个月,测试时间8个月,28,认识系统测试,系统测试的客观要求,系统测试需要以智力为核心、以系统为框架来实施,智力:灵活性和技巧性,系统:计划性和流程性,29,认识系统测试,系统测试中最关键的两个要素,测试设计,测试设计的主要任务是设计测试用例,测试用例库是一种经验的积累,是测试活动最宝贵的财富,测试用例的衡量标准:多、快、好、省,软件攻击是在系统测试中常用的一种设计测试用例的思路,测试流程,系统测试的控制过程,系统测试的度量过程,30,内容,认识系统测试,测试设计,软件攻击,测试流程,测试工具,系统测试演练,31,测试设计,测试设计步骤,1、理解软件和测试目标,2、设计测试用例,3、运行测试用例并处理测试结果,4、评估测试用例和测试策略,测试设计步骤既强调目的性也强调计划性,目标是追求测试效率和测试结果,文档化和按部就班一般会降低管理难度,增强计划性,文档化和按部就班有时候会适得其反,尤其是扼杀测试人员的经验作用和灵感,32,测试设计,1、理解软件和测试目标,目的:,建立软件故障模型,了解测试目标,来确定测试策略和测试计划,任务:,了解软件的功能和业务背景、用户环境,了解软件的开发背景和系统结构、技术选型,了解软件的质量历史、版本变化,了解测试目标和资源限制,确定测试策略和测试计划,33,测试设计,1、理解软件和测试目标,方法:,阅读软件使用手册,理解软件运行环境和用户行为,了解同类软件的功能和使用,了解软件要解决的问题域和解域(业务背景知识),试运行软件,熟悉软件功能,确定软件基本可以测试,了解软件体系结构、技术选型、开发环境和工具,阅读早期版本测试报告,以及单元和集成测试报告,确定测试人员限制和时间限制,制定初步测试策略和测试计划,确定测试结束标准,34,测试设计,1、理解软件和测试目标,成果:,1、建立错误模型,指导回答以下问题:,该软件可能的错误会出现在哪里?,用户环境与测试环境不一致,没有测试过的代码或功能,没有测试过的输入组合、极端环境或者功能使用方法、使用顺序,如何做才能发现这些错误?,35,测试设计,1、理解软件和测试目标,成果:,2、建立测试策略和初步测试计划,在了解测试目标和资源限制之后,按照错误的性能价格比制定设计测试用例的优先级,并确定初步的测试计划,36,测试设计,1、理解软件和测试目标,成果:,3、确定测试结束标准(退出机制),已经解决的错误没有重现,所有缺陷报告已经关闭,所有测试用例全部执行完毕,遗留的未发现错误数量可以被接受,错误播种,错误发生曲线分析,历史数据,市场和管理因素、预算和时间用完因素,不属于技术层层面的结束标准,实质上是测试失败或者部分失败的表现,37,测试设计,2、设计测试用例,目的:,设计尽可能多、快、好、省发现错误的测试用例,任务:,理解故障模型,理解现有的测试用例库,设计具体的测试用例,38,测试设计,2、设计测试用例,方法:,软件攻击法,基于故障模型,经验,历史数据/错误,软件开发和运行环境,需要创造性思维,要注意保证充分性(多、快、好、省),Testing is a War,小型系统或者系统的简单功能,因果图分析法,边界值分析法,No Silver Bullet,39,测试设计,2、设计测试用例,结果:,测试用例,没有标准文档格式,对于特殊人(,Ad Hoc),在特殊情况下可以在运行后才形成文档,包含的要素:,标题和编号、版本号、修改记录等,针对目标和假设前提/可能发现的错误,输入和数据/代码,测试步骤,预期输出和错误发现方法,IE4.0,的测试用例数目:10万,40,测试设计,3、运行测试用例并处理测试结果,目的:,使用测试用例发现错误并关闭错误,任务:,运行测试用例并记录结果,评估测试结果并记录缺陷,处理缺陷直至缺陷关闭,修改,延迟处理,不修改,不是错误,41,测试设计,3、运行测试用例并处理测试结果,方法:,选择测试用例库中的测试用例运行,选择新设计的测试用例运行,录制/,snapshot,或者笔录中间步骤和结果,记录下执行过程中的灵感,但不要轻易修改本次执行任务,对测试结果分析,并尽量重现和优化错误步骤,详细填写缺陷报告并提供尽可能多的信息,尽可能提供错误分析和修改建议,认真审核错误处理结果并及时关闭缺陷报告,42,测试设计,3、运行测试用例并处理测试结果,结果:,记录下的运行结果,记录下的新的测试用例设计思路,提交并处理的缺陷报告,43,测试设计,4、评估测试用例和测试策略,目的:,检验测试用理和测试策略的有效性,必要时进行完善和修改,增加测试经验,任务:,根据测试结果完善、修改、合并测试用例,如果没有文档化测试用例,此时需要文档化,维护测试用例库,增加新的测试用例(尤其是已经发现了错误的测试用例),删除不必要的测试用例(要谨慎,除非是功能改变),修改刚刚使用的测试用例(根据测试结果),合并部分测试用例,根据测试结果完善和修正测试策略和测试计划、产生新的测试用例设计思路,44,测试设计,4、评估测试用例和测试策略,方法:,基于经验,发现了什么问题?,这种问题出现的原因是什么?,为什么会测试用例发现这种问题?还可以更快地发现吗?,测试用例可以合并吗?,可能联想到还会出现什么问题?-新的测试用例,流程控制/尤其是测试用例库的维护可以借助于工具实现,45,测试设计,4、评估测试用例和测试策略,结果:,优化的测试用例库,优化的软件故障模型,优化的测试策略和测试计划,测试的经验和新的测试用例设计思路,46,测试设计,测试设计步骤,1、理解软件和测试目标,2、设计测试用例,3、运行测试用例并处理测试结果,4、评估测试用例和测试策略,测试设计步骤是循环往复的、并且每一步骤都可以返回前面的任何一个步骤,即使单独一个测试用例也可能经过以上步骤多次,47,内容,认识系统测试,测试设计,软件攻击,测试流程,测试工具,系统测试演练,48,软件攻击,什么是软件攻击(,Break Software),测试是一门艺术和工程的结合,测试目前是保证质量的最实用的手段,但是:,测试效果取决于测试资源、团队测试能力、客户和行业期望,团队测试能力依赖于测试管理流程和个人测试能力,个人测试能力依赖于经验和头脑,60年代开始有测试任务,80年代开始有测试职业,90年代开始有测试科学,2000年开始有测试专业,目前在测试科学本质、方法和技术上非常不成熟,测试在科学角度来看还是,Baby,49,软件攻击,什么是软件攻击,测试需要计划管理,但是目标导向更加重要,测试的目的就是发现错误,度量质量是次要目标,测试没有成熟的方法论指导,软件系统极其复杂(穷举测试是不可能的),导致:,Testing is a War,50,软件攻击,什么是软件攻击,Testing Is a War,知己知彼、百战不殆,攻其薄弱、避其锋芒,分而治之、逐个歼灭,软件攻击(,Break Software),寻找系统中最容易出现错误的地方进行测试,来保证多快好省地找出错误,寻找开发过程中容易出现疏忽的地方,核心是基于故障模型的测试用例设计,51,软件攻击,什么是故障模型,优秀的测试员知道:,选择测试什么,怎么测试才能发现错误,依靠的是:经验和直觉,故障模型,将测试员的经验和直觉尽量归纳和固化,使得可以重复使用,通过理解软件在做什么,来猜测可能出错的地方,并有目的地使它暴露错误,类似于系统设计中的,Pattern,思想,具体的攻击方法就是一个一个的,Pattern,52,软件攻击,如何建立故障模型,对于测试员来说,重要的是能够构造出一个准确的故障模型,并使用该故障模型决定测试策略,设计和运行测试用例,故障模型在框架上是通用的,但是建立具体的故障模型要针对具体的软件类型、应用环境、甚至开发工具,53,软件攻击,如何建立故障模型,故障模型的建立依赖于对软件行为的理解,软件行为,软件功能和技术特点,软件操作环境,54,软件攻击,考虑软件行为,1、软件功能和技术特点,输入,输出,数据,计算,2、软件操作环境,人类用户:用户界面,文件系统,操作系统环境,其它软件及操作系统,API,55,软件攻击,故障模型框架:2个维度,1、软件功能和技术特点,输入:只接受正确的输入并正确地处理,输出:只输出用户接受的并且正确的输出,数据:保持数据结构的完整性(数值、精度和位置),计算:自我保护的合法的计算、功能交互和数据共享,2、软件操作环境,人类用户:用户界面,数据系统:文件系统接口、数据库系统接口,操作系统环境:资源调配和管理,其它软件及操作系统功能,:API,使用,56,软件攻击,典型攻击方法(,Pattern),25种,1、用户接口输入攻击:6种,2、用户接口输出攻击:4种,3、用户接口数据攻击:3种,4、用户接口计算攻击:4种,5、文件系统介质攻击:3种,6、文件系统文件攻击:3种,7、操作系统和软件接口攻击:2种,57,软件攻击,典型攻击方法(,Pattern),描述方法:,1、,Where:,何时施加攻击,软件在实现什么功能的时候适合使用这种攻击,这种攻击针对的功能是什么,2、,Why:,什么样的软件故障会使攻击成功,本攻击方法主要会暴露实现过程中那方面的问题,在实现技术上是什么原因产生了这种错误,3、,What:,如何确定攻击暴露了失效,本攻击方法成功的标志是什么?,需要掌握业务背景知识,或者说理解什么是预期的输出结果,4、,How:,如何进行攻击,本攻击方法的操作步骤,58,软件攻击,用户接口输入攻击:6种,1、使用非法输入,所有非法输入有错误处理代码吗?代码正确吗?,2、攻击使用默认值的输入,变量初始化了吗?,3、使用特殊字符集和数据类型的合法输入,正确处理特殊字符和数据类型了吗?,4、使用使缓冲区溢出的合法输入,检查字符串/缓冲区的边界了吗?,5、使用可能产生错误的合法输入组合,输入之间的组合关系考虑吗?,6、重复输入相同的合法输入序列,循环处理的边界考虑到了吗?,59,软件攻击,用户接口输出攻击:4种,1、产生同一个输入的各种可能输出,一个正确的输入在不同情况下产生不同的输出,这些不同情况都考虑充分了吗?,2、强制产生不符合业务背景知识的无效的输出,开发人员了解解域/业务背景知识吗?是否会产生不符合业务背景的输出?,3、强制通过输出修改一些属性,初始化代码和修改代码同步吗?,4、检查屏幕刷新,屏幕刷新时机正确吗?屏幕刷新区域计算正确吗?,60,软件攻击,用户接口数据攻击:3种,1、制造使内部数据与输入的组合不相容的情况,处理输入的时候,考虑到内部数据的各种可能的组合了吗?,2、制造使已有内部数据结构集合溢出的情况,上溢:增加一个元素到集合中,下溢:删除集合中最后一个元素,或者从空集合中删除元素,3、制造使已有内部数据结构不符合约束的情况,初始化代码和修改代码同步吗?,61,软件攻击,用户接口计算攻击:4种,1、使用非法的操作数和操作符组合,攻击用户可以控制计算要求的情况,考虑到操作符和计算要求的合法性了吗?,2、使函数递归调用自身,考虑到循环/递归的中止了吗?,3、使计算结果溢出,考虑数据结构是否能够正确存储可能的计算结果了吗?,4、攻击共享数据或互相依赖的功能计算,一个函数在修改共享数据的时候考虑到其他函数对这个共享数据的假设/约束了吗?,62,软件攻击,文件系统介质攻击:3种,1、使文件系统超载,检查文件访问函数的返回值了吗?正确处理文件访问失败的情况了吗?,2、使介质处于忙或者不可用状态,检查文件/介质访问函数的返回值了吗?正确处理文件/介质访问失败的情况了吗?,3、损坏介质(这时候,OS,可能认为介质可用),检查文件/介质访问函数的返回值了吗?正确处理文件/介质访问失败的情况了吗?,63,软件攻击,文件系统文件攻击:4种,1、使用特殊字符/特殊长度/无效的文件名,处理文件名的代码考虑到各种情况了吗?,2、改变文件访问权限,访问文件的函数考虑到文件访问权限了吗?文件访问失败,有正确处理错误的代码吗?,3、使文件内容错误,并让系统使用这个文件,检查文件访问函数的返回值吗?错误处理代码正确吗?,64,软件攻击,操作系统和软件接口攻击:2种,1、记录-仿真攻击,模拟操作系统和操作环境故障,并记录软件对该故障的反应,软件正确处理内存故障/网络故障等操作系统和软件接口故障了吗?,2、观察-失效攻击,观察底层,API,调用,并动态修改,API,调用,制造错误,软件正确处理操作系统和软件,API,调用错误的情况了吗?,本攻击方法一般用于对于可靠性和稳定性要求非常高的软件,65,软件攻击,软件攻击工具,人类接口攻击以外的攻击方法一般需要使用软件攻击工具,文件系统介质攻击,文件系统文件攻击,操作系统和软件接口攻击,否则,攻击成本太高:比如物理毁坏介质,工作量太大:比如使用大文件填充硬盘、使用多任务抢占,CPU/,网络/内存等资源,有一些不容易实现:动态监控和修改,API,调用,实现这类攻击的一种工具:软件故障植入工具,66,软件攻击,软件故障植入,程序代码分为两类,功能代码:通过实现用户需求来完成软件任务,异常代码:通过异常或者其他错误处理机制来处理程序错误,故障植入的目标是强制执行异常代码,从而发现其中的错误,没有异常代码也是一种错误,故障植入方法分为两类,编译期植入,在源代码中插入引发故障,现象,的代码,运行期植入,在目标代码或运行环境中植入引发故障,现象,的代码,67,软件攻击,运行期软件故障植入,优势,0、不需要源代码,系统测试阶段经常没有源代码,1、可以达到模拟环境故障的目标,比如:网络中断、网络繁忙、内存匮乏,2、可以以,API,调用失败的方式模拟故障,在程序看来,任何环境故障实质上都是一系列的,API,调用失败,3、可以只影响被植入的程序,因为使用的是模拟,API,调用失败方式,68,软件攻击,运行期软件故障植入,实现机制:截获,API,1、基于调用源截获,找出程序中调用,API,的名字或,DLL,,然后用自己的函数替换掉,2、路径内截获,如果程序中使用,VTable,等技术间接记录调用,API,地址,则直接修改,VTable,中的,API,地址,用自己的函数替换掉,3、目的地截获,修改被调用,API,地址,修改头部代码,转向自己的函数,病毒方式,69,软件攻击,运行期软件故障植入,实现策略,1、基于模式的故障植入,模拟环境故障,记录故障特征和影响到的,API,,修改影响到的,API,记录-仿真攻击,canned HEAT(Hostile Enviroment Application Tester),2、系统的基于调用的故障植入,观察使用的,API,,并独立地、细粒度地修改影响任何一个,API,观察-失效攻击,Holodeck,70,软件攻击,训练软件攻击团队,经验是靠不断积累的,获得学士学位后,你会觉得你知道一切,获得硕士学位后,你会觉得有一些事情你不知道,获得博士学位后,你会觉得你其实不知道多少事情,好好学习,天天向上,71,软件攻击,训练软件攻击团队,1、隐错捕捉,攻击小组之间的良性竞争,增加实践、分享经验,2、星期五下午的隐错聚会,对攻击发现的错误报告分析研究、分享经验,引发思考和学习,一个新手如何尽快进入测试状态,1、讲解测试的理论原则,测试的流程要求,2、阅读软件文档和缺陷报告,3、参加测试,72,软件攻击,回顾,针对复杂系统进行系统测试时,软件攻击是最实用的设计测试用例的手段,软件攻击建立在故障模型的基础上,故障模型没有形式化的描述,可以使用文字描述,故障模型与特定类型的软件相关,随着软件攻击的不断进行,故障模型会不断优化和精确,软件攻击主要采用黑盒测试和灰盒测试技术,编程经验有助于跟有效率地确定软件攻击方向、设计软件攻击方法,每一次软件攻击要目标单一并明确,攻击开发过程中容易疏忽的地方,或者处理逻辑复杂的地方,73,软件攻击,回顾,要不断总结归纳软件攻击方法,形成,Pattern,Pattern,就是经验的总结,为特定环境下的特定问题提供经过检验的解决方案,对于关键应用,使用故障植入工具,基于模式的故障植入,canned HEAT,系统的基于调用的故障植入,Holodeck,对于软件攻击团队的训练,实践,捕捉隐错,总结学习,星期五下午的隐错聚会,74,内容,认识系统测试,测试设计,软件攻击,测试流程,测试工具,系统测试演练,75,测试流程,目标,多快好省地找出软件缺陷,问题,多人协作:数据要完整统一、步调要一致,开发与测试独立:沟通和评判标准,系统理解和业务背景知识的共享和传播:沟通和信息衰减,方案,基于文档控制的流程管理,流程,输入,处理,输出,角色和职责,使用流程管理和文档管理工具,76,测试流程,主要步骤:,1、计划测试工作,2、设计和跟踪测试用例,3、报告和管理缺陷,4、评估测试效果,77,计划测试工作,测试计划,是测试组与开发组交流测试意图的主要方式,ANSI/IEEE-829/1983,规定测试活动的范围、方法、资源和进度,明确正在测试的项目、要测试的特性、要执行的测试任务和进度、每个任务的负责人,相关风险,计划测试工作,目标:沟通测试小组内部与外部的意图,输出:测试计划,78,计划测试工作,计划测试工作成功的标准,不是形成了一份测试计划,而是通过制定和确认测试计划的过程,使得测试组内部和外部得到了一致的理解,当然,也形成了一份测试计划文档,每一个成员都要参与讨论并给出承诺,每一个成员都要了解测试计划的内容,79,计划测试工作,计划测试工作中,小组成员应该就那些问题达成一致?,产品质量目标,什么人/物、任务/作用是什么、在哪里、如何联系/使用,术语、产品、里程碑的定义,团队之间的责任,哪些要测试、哪些不要,测试阶段的划分,测试阶段的进入/退出标准,测试策略:使用的测试技术、测试工具、测试优先级,测试资源要求,每一个测试员的任务分配,测试用例设计和维护策略,缺陷管理办法,版本修改与提交的程序/方式/流程/频度/条件,测试度量,风险和问题,80,测试流程,主要步骤:,1、计划测试工作,2、设计和跟踪测试用例,3、报告和管理缺陷,4、评估测试效果,81,设计和跟踪测试用例,每一个测试员要做的最重要的工作,开始只能使用别人设计好的测试用例,随着经验的积累,可以自己设计测试用例并给别人使用,如何开始设计和跟踪测试用例的工作,误区,开发人员拿到需求说明后可以立刻编码,不必写开发计划,测试人员拿到测试计划后可以立刻设计测试用例,不必写测试设计计划,答案:从计划开始,组织性:测试用例应该充分,数目很大,重复性:测试用例不应该重复,测试跟踪:测试用例执行情况和效果应该可以被跟踪,测试证明:作为真正进行过测试的证据,82,设计和跟踪测试用例,测试设计/测试方案文档,ANSI/IEEE829:,提炼测试方法,明确需要测试的特性,指出测试用例、测试程序、测试通过准则,标题和标识符,要测试的特性或者功能,测试使用的测试技术和方法,使用的测试用例集合,测试通过/失败的准则,可以根据实际情况增减内容,83,设计和跟踪测试用例,测试用例文档,ANSI/IEEE829:,实际输入数值和预期输出结果,以及测试其他要求,标题和标识符,要测试的具体特性或者功能,输入说明,输出说明:预期输出和判断标准,环境要求,特殊要求,参照的测试用例,可以根据实际情况增减内容,84,设计和跟踪测试用例,测试程序,ANSI/IEEE829:,明确指出为执行测试设计而执行测试用例的具体步骤,标题和标识符,目的,特殊要求,程序步骤,日志,设置,启动,程序,衡量标准,关闭,终止,重置,偶然事件,可以根据实际情况增减内容,85,设计和跟踪测试用例,设计测试用例(包括测试设计和测试程序)的技巧?,软件攻击是一种方式,组织和管理测试用例,脑子记?,XXX,测试用例库,普通文档,如:,Word,电子表格,如:,Excel,数据库,如:,Access,86,测试流程,主要步骤:,1、计划测试工作,2、设计和跟踪测试用例,3、报告和管理缺陷,4、评估测试效果,87,报告和管理缺陷,回顾一下缺陷的定义,软件没有达到产品说明书表明的功能,软件出现了产品说明书指明了不会出现的错误,软件功能超出产品说明书的范围,软件没有达到用户期望的目标(虽然产品说明书中没有要求),测试员或用户认为软件的易用性差,不是所有缺陷都会修改,时间原因,产品说明书更改,测试员错误理解造成的缺陷,修改风险太大,修改性价比太低,缺陷报告不够有效,88,报告和管理缺陷,报告缺陷的原则,尽早报告发现的软件缺陷,修改成本小、修改风险小,避免报告同类缺陷,有效描述软件缺陷,简单、明确、具体,每个缺陷一份报告,简化和优化操作步骤,保证重现缺陷,缺陷描述客观公正,不带评价和感情色彩,保证每个缺陷被报告和处理,89,报告和管理缺陷,分离和再现缺陷的技巧,记下每一个操作步骤和中间结果,逐步尝试并缩小侦察范围,查找时间依赖问题,查找资源依赖问题,考虑软件和硬件配置不同的可能,所有的缺陷不是生来就平等的,严重性,优先级,严重性和优先级的定义依赖于特定的项目要求,甚至同一个项目的不同阶段,90,报告和管理缺陷,缺陷报告的状态/管理,草稿,待提交开发,已经提交开发,开发已经分配,开发正在处理,开发处理完毕,开发已经提交,测试正在重新测试,测试重新测试完毕,报告关闭,不是缺陷,不修改,已经修改,下一个版本修改,91,报告和管理缺陷,缺陷报告要素,编号,测试软件、版本号,测试环境,测试人、测试日期,标题,重现概率,重现步骤,附件,错误分析,修改建议,优先级别、严重程度、错误分类,测试经理、提交日期,优先级别、严重程度、制定修改人,开发经理、分发日期,错误原因、修改方式、修改结果,修改后软件版本号,修改人、修改日期,复审结果,开发经理、提交日期,重新测试结果,重新测试人、修改日期,测试经理、关闭/归档日期,92,报告和管理缺陷,缺陷报告管理系统,过程强制,权限控制,质量记录,文档管理,信息共享,度量和统计,93,测试流程,主要步骤:,1、计划测试工作,2、设计和跟踪测试用例,3、报告和管理缺陷,4、评估测试效果,94,评价测试效果,作用,调整测试进度和项目进度,调整测试策略和项目资源分配,测试人员与开发人员考核,精心设计,谨慎使用,度量软件质量、预期发布时间,数据最能反映真实情况,数据也最能制造假象,95,测试流程,主要步骤:,1、计划测试工作,2、设计和跟踪测试用例,3、报告和管理缺陷,4、评估测试效果,96,内容,认识系统测试,测试设计,软件攻击,测试流程,测试工具,系统测试演练,97,
展开阅读全文