软件测试培训ppt课件.ppt
《软件测试培训ppt课件.ppt》由会员分享,可在线阅读,更多相关《软件测试培训ppt课件.ppt(117页珍藏版)》请在三一办公上搜索。
1、软件测试,测试的基本理论及方法 公司测试工作的规划 自动化性能和压力测试,测试的基本理论及方法,对软件测试的误解如何理解软件测试软件测试的定义软件测试的对象软件测试分类和比较软件测试的目的软件测试组织软件测试规范软件测试的内容和技术WEB应用测试,对软件测试的误解,如果发布出去的软件有质量问题,那是软件测试人员的错.软件测试技术要求不高,至少比编程容易多了.软件测试随便找一个能力差的人就能做.有时间就多测试一些,来不及就少测试一些.软件测试是测试人员的事,与开发人员无关.设计-实现-测试,软件测试是开发后期的一个阶段,如何理解软件测试,软件测试是一种有效的提高软件质量的手段,但即使在投入上有所
2、保证,测试也不能百分为百发现所有质量隐患.况且软件质量并不仅仅是测试出来的.很多人认为软件测试就是运行一下软件,看看结果对不对.但实际上,如何在有限的投入下,提高软件测试的效率和产出是一件很见功底的事.好的测试人员不仅要掌握各种测试技术,还要具备丰富的编程经验和对BUG的敏感.测试的复杂之处,除了测试技术问题之外,还有测试管理问题.测试不是可有可无,随心所欲的.规范化的软件开发需要对软件测试早做计划,分配必要的时间,人力和财力等资源,并将其作为项目管理的一个部分加以控制和协调.开发和测试是软件项目相辅相成的两个过程,人员间的交流,协作和配合是提高整体效率的重要因素.,软件产品开发完毕,再进行测
3、试的观念是有悖于生命周期理论的.软件产品质量问题越晚发现,修复的代价越大.,需求,设计,编程,内部测试,外部测试,发布,修正BUG的代价,一些常识和经验之谈测试能提高软件的质量,但是提高质量不能依赖测试。 测试只能证明缺陷存在,不能证明缺陷不存在。“彻底地测试”难以成为现实,要考虑时间、费用等限制,不允许无休止地测试。我们应当祈祷:软件的缺陷在产品被淘汰之前一直没有机会发作。 测试的主要困难是不知道如何进行有效地测试,也不知道什么时候可以放心地结束测试。 每个开发人员应当测试自己的程序(份内之事),但是不能作为该程序已经通过测试的依据(所以项目需要独立测试人员)。 80-20原则:80的缺陷聚
4、集在20的模块中,经常出错的模块改错后还会经常出错测试应当循序渐进,不要企图一次性干完,注意“欲速则不达”。,软件测试的定义,软件测试是为了发现错误而执行程序的过程软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程.,软件测试不等于程序测试.软件测试贯穿于软件定义和开发的整个期间.需求分析,概要设计,详细设计,以及程序编码等各个阶段所得到的文档,包括需求规格说明,概要设计规格说明,详细设计规格说明以及源程序,都是软件测试的对象.,软件测试的对象,软件生存各个阶段间的确认和验证,软件配置
5、:包括软件需求规格说明、软件设计规格说明、源代码 等; 测试配置:包括测试计划、测试用例、测试驱动程序等。实际上,在整个软件工程过程中,测试配置只是软件配置的一个子集。 测试工具:为提高软件测试效率,可使用测试工具支持测试工具。例如:测试数据自动生成程序、测试结果分析程序等。,测试的目的,测试是程序的执行过程,目的在于发现错误;一个好的测试用例在于发现至今未发现的错误;一个成功的测试是发现了至今的错误的测试.,测试的种类,测试的分类与比较,测试方式白盒测试:关心软件内部设计和程序实现,主要测试依据是设计文档黑盒测试:不关心软件内部,只关心输入输出,主要测试依据是需求文档 测试阶段单元测试、集成
6、测试、系统测试、验收测试。是“从小到大”、“由内至外”、“循序渐进”的测试过程,体现了“分而治之”的思想。 单元测试的粒度最小,一般由开发小组采用白盒方式来测试,主要测试单元是否符合“设计”。 集成测试界于单元测试和系统测试之间,起到“桥梁作用”,一般由开发小组采用白盒加黑盒的方式来测试,既要验证“设计”又要验证“需求”。 系统测试的粒度最大,一般由独立测试小组采用黑盒方式来测试,主要测试系统是否符合“需求规格说明书”。 验收测试与系统测试非常相似,主要区别是测试人员不同,验收测试由用户执行。,软件测试过程模型,V模型是最具有代表意义的测试模型 。V模型是软件开发瀑布模型的变种,它反映了测试活
7、动与分析和设计的关系 。从左到右,描述了基本的开发过程和测试行为,非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系 。箭头代表了时间方向,左边下降的是开发过程各阶段,与此相对应的是右边上升的部分,即各测试过程的各个阶段。,软件测试过程模型,相比于V模型,W模型更科学。W模型可以说是前者自然而然的发展,它强调:测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、功能和设计同样要测试。 测试与开发是同步进行的,从而有利于尽早地发现问题。以需求为例,需求分析一完成,我们就可以对需求进行测试,而不是等到最后才进行针对需求的验收测试。 测试不
8、仅仅是评定软件的质量,测试还可以尽可能早地找出缺陷所在,从而帮助改进项目内部的质量。,测试内容接口与路径测试。 功能测试、健壮性测试、性能测试、用户界面测试、安全性测试、压力测试、可靠性测试、安装/反安装测试,黑盒测试与白盒测试的比较,问题1:有了“黑盒”测试为什么还要“白盒”测试?黑盒测试只能观察软件的外部表现,即使软件的输入输出都是正确的,却并不能说明软件就是正确的。因为程序有可能用错误的运算方式得出正确的结果,例如“负负得正,错错得对”,只有白盒测试才能发现真正的原因。白盒测试能发现程序里的隐患,象内存泄漏、误差累计问题。在这方面,黑盒测试存在严重的不足。 问题2:由于单元测试要写测试驱
9、动程序,非常麻烦,能否等到整个系统全部开发完后,再集中精力进行一次性地单元测试呢? 如果这样做,在开发过程中,缺陷会越积越多并且分布得更广、隐藏得更深,反而导致测试与改错的代价大大增加。最糟糕的是无法估计测试与改错的工作量,使进度失去控制。因此为图眼前省事而省略单元测试或者“偷工减料”,是“得不偿失”的做法。 问题3:如果每个单元都通过了测试,把它们集成一起难道会有什么不妥吗?集成测试是否多此一举?要把N个单元集成一起肯定靠接口耦合,这时可能会产生在单元测试中无法发现的问题。例如:数据通过不同的接口时可能出错;几个函数关联在一起时可能达不到预期的功能;在某个单元里可以接受的误差可能在集成后被扩
10、大到无法接受的程度。所以集成测试是必要的,不是多此一举。,问题4:在集成测试的时候,已经对一些子系统进行了功能测试、性能测试等等,那么在系统测试时能否跳过相同内容的测试? 不能!因为集成测试是在仿真环境中开展的,那不是真正的目标系统。再者,单元测试和集成测试通常由开发小组执行。根据测试心理学的分析,开发人员测试自己的工作成果虽然是必要的,但不能作为成果已经通过测试的依据。 问题5:既然系统测试与验收测试的内容几乎是相同的,为什么还要验收测试?首先是“信任”问题。对于合同项目而言,如果测试小组是开发方的人员,客户怎么能够轻易相信“别人”呢? 所以当项目进行系统测试之后,客户再进行验收测试是情理之
11、中的事。否则,那是客户失职。 不论是合同项目还是非合同项目,软件的最终用户各色各样(如受教育程度不同、使用习惯不同等等)。测试小组至多能够模仿小部分用户的行为,但并不具有普遍的代表性。 问题6:能否将系统测试和验收测试“合二为一”? 系统测试不是一会儿就能做完的,比较长时间的用户测试很难组织。用户还有自己的事情要做,他们为什么要为别人测试呢?即使用户愿意做系统测试,他们消耗的时间、花费的金钱大多比测试小组的高。系统测试时会找出相当多的软件缺陷,软件需要反反复复地改错。如果让用户发现“内幕”,一是丢脸,二是会吓跑买主。所以还是关起门来,先让测试小组做完系统测试的好。,回归测试回归测试是指对某些已
12、经被测试过的内容进行重新测试。每当软件增加了新的功能,或者软件中的缺陷被修正,这些变更都有可能影响软件原有的功能和结构。为了防止软件的变更产生无法预料的副作用,不仅要对新内容进行测试,还要对某些老内容进行回归测试。,测试人员的组织,了解开发人员的测试心理测试的目的是找出尽可能多的缺陷。所以测试是“破坏性”的,而开发却是“建设性”的。开发人员总是喜欢欣赏程序的成功之处,而不愿看到失败之处。让开发者去做“蓄意破坏”的测试,就象杀自己的孩子一样难以接受。 开发者对自己的程序印象深刻,并总以为是正确的(自信是应该的)。倘若在设计时就存在理解错误,或因不良的编程习惯而流下了隐患,他本人很难发现这类错误.
13、开发者对自己的程序的功能、接口十分熟悉,他自己几乎不可能因为使用不当而引发错误,这与大众用户的情况不太相似,所以测试自己的程序不具备典型性。 结论:开发人员应当测试自己的程序,这是他分内的工作。但是开发人员在测试自己的程序时,很难做到客观、公正,所以自我测试不具有说服力。,如何组织测试人员:应当视企业的人力资源而定条件特别好的公司,可以为每一个开发人员分配一名独立的测试人员。这样的测试人员职业化程度很高,可以完成单元测试、集成测试和系统测试工作,能够实现开发与测试同步进行。条件比较好的公司,可以设置一个独立的测试小组,该测试小组轮流参加各个项目的系统测试。而单元测试、集成测试工作由项目的开发小
14、组承担。 条件一般的公司,养不起独立的测试小组。单元测试、集成测试工作由项目开发小组承担。当项目进展到系统测试阶段,可以从项目外抽调一些人员,加上开发人员,临时组织系统测试小组。 条件比较差的公司,也许只有一个项目和为数不多的一些开发人员。那么就让开发人员一直兼任测试人员的角色,相互测试对方的程序。如果人员实在太少了,只好让开发者测试自己的程序,有测试总比没有测试好吧!,避免开发人员与测试人员产生矛盾开发人员不能很好地测试自己的程序是因为做不到“无情”。但如果测试人员真的做到了“无情”却会引起开发人员的愤怒,遭人白眼。由于开发与测试存在“对立”关系,开发人员与测试人员很容易产生矛盾,这对项目而
15、言是一种伤害。开发人员的注意事项:(1)不要敌视测试人员。要理解测试的目的就是发现缺陷,是测试人员的工作职责。不要以为测试人员吃饱了没事干,存心找茬。(2)不要轻视测试人员,别说人家技术水平差,不配搞开发只好搞测试。测试人员的注意事项:(1)发现缺陷时不要嘲笑开发人员,别说他的程序真臭、到处是Bug。(2)在开发人员压力太大时或心情不好时不要火上浇油,发现缺陷时别大声嚷嚷。尽量不要相互讽刺对方,例如:A对B说:你唯一的特点就是无能。B对A说:你唯一的特点就是粗鲁。还要注意的是,如果测试人员与开发人员的关系非常好,可能会导致在测试的时候“手下留情”,这对项目也是一种伤害。,企业的测试策略,理念:
16、企业的主要目的是获取利润,降低测试成本也是盈利的一种方式。 用较低的代价实现有效的测试,不应为了追求完美的测试而不失一切代价。 如何合理地减少测试工作量减少冗余的测试白盒测试与黑盒测试的方式虽然不同,但往往有“异曲同工”之妙。在很多地方,白盒测试与黑盒测试会产生一模一样的效果(或者能推理出来),这样的测试是冗余的。在集成测试、系统测试阶段,可能要执行多次“回归测试”。每一次“回归测试”都会存在不少的冗余,应当设法剔除不必要的重复测试工作。 减少无价值的测试无价值的测试通常是由于不懂得测试技术引起的。例如功能测试,在等价区间之中,本来只要测试一个典型的输入就行了,如果有人在此区间测试了100次,
17、那么其中99次就是无价值的。 如何“偷工减料” 有一些“短、平、快”的项目,经费本来就少,用户对质量要求也马马虎虎。为了能多挣一点钱,开发方不得不采用“偷工减料”的方式来降低测试代价。偷工减料的途径无非就是减少测试的内容和频度。但不能砍得太狠,否则软件拿不出手。基本方法是找出软件中需要优先测试的部分,其它次要部分可以忽略或将来再测试。,“偷工减料”方法的测试优先级:哪些功能是软件的特色? 哪些功能是用户最常用的? 如果系统可以分块卖的话,哪些功能块在销售时最昂贵? 哪些功能出错将导致用户不满或索赔?哪些程序是最复杂、最容易出错的?哪些程序是相对独立,应当提前测试的?哪些程序最容易扩散错误?哪些
18、程序是全系统的性能瓶颈所在?哪些程序是开发者最没有信心的?,测试何时结束?一、基于测试用例的规则 (1)先构造测试用例(并请有关人员进行评审)。 (2)在测试过程中,当测试用例的不通过率达到20时,则拒绝继续测试,待开发人员修正软件后再进行测试。 (3)当功能性测试用例通过率达到100,非功能性测试用例通过率达到90时,允许正常结束测试。该规则的优点是适用于所有的测试阶段,缺点是太依赖于测试用例。如果测试用例非常糟糕,那么该规则就失效了。二、基于“测试期缺陷密度”的规则 把测试一个CPU小时发现的缺陷数称为“测试期缺陷密度”。绘制“测试时间缺陷数”的关系图,如果在相邻n个CPU小时内“测试期缺
19、陷密度”全部低于某个值m时,则允许正常结束测试。例如n大于10,m小于等于1。该规则比较适用于系统测试阶段。 三、基于“运行期缺陷密度”的规则 把软件运行一个CPU小时发现的缺陷数称为“运行期缺陷密度”。绘制“运行时间缺陷数”的关系图,如果在相邻n个CPU小时内“运行期缺陷密度”全部低于某个值m时,则允许正常结束测试。例如n大于100,m小于等于1。该规则比较适用于验收测试阶段,即客户试运行软件期间。,需求经常变更怎么办1、需求变更可能会让项目所有成员遭殃,如何“预防变更”以及“降低变更的代价”是软件工程的经典问题。本节仅论述需求变更对测试的影响。2、需求变更将导致软件设计和实现的变更,也导致
20、了测试变更。最让人难过的是上一次测试有可能白做了,如果软件变更比较大的话。3、测试人员不要只是自认倒霉,应当主动作些应变:(1)及时了解需求变更的详细情况,尽早调整测试计划,不要闷头按原计划测试。(2)将软件中稳定的部分与易变的部分区别对待,前者先测试,后者后测试。(3)向领导反映需求变更对测试造成的影响,为自己争取余地。(4)设计一些比较灵活的测试用例,能适应某些变更(不过技术难度比较高)。引申问题:如果在系统测试时,对照需求文档,发现软件多了功能或少了功能,该怎么办?如果发现软件少了功能,测试人员不可为了少干些活而隐瞒事实。如果发现软件多了功能,测试人员不可认为这些功能反正是“锦上添花”,
21、便自作主张地测试了事。两种情况都要报告给项目经理,有可能导致一系列的变更。,测试规范,测试流程第一步:制定测试计划。该计划被批准后转向第二步。 第二步:设计测试用例。该用例被批准后转向第三步。 第三步:如果满足“启动准则” ,那么执行测试。 第四步:撰写测试报告。 第五步:消除软件缺陷。如果满足“完成准则”,那么正常结束测试。,制定测试计划,设计测试用例,执行测试,写测试报告,消除软件缺陷,审批,审批,回归测试,完成测试,完成准则,启动准则,测试的信息流,测试信息流如下图所示:,软件测试的策略,在软件工程中,测试过程应该按4个步骤进行,即单元测试、组装(集成)测试、确认测试和系统测试。下图给出
22、了软件测试经历的4个步骤。,测试规范,测试启动准则同时满足以下条件,允许开始测试:(1)测试计划已经制定并且通过了审批;(2)测试用例已经设计并且通过了审批;(3)被测试对象已经开发完毕并等待测试。 测试完成准则对于非严格系统可以采用“基于测试用例”的准则。同时满足以下条件允许结束测试:(1)功能性测试用例通过率达到100;(2)非功能性测试用例通过率达到90时。对于严格系统,应当补充“基于测试期缺陷密度”的规则:(3)相邻n个CPU小时内“测试期缺陷密度”全部低于某个值m。例如n大于10,m小于等于1。,测试的文档,测试计划:指明范围、方法、资源,以及相应测试活动的时间进度安排表的文档。测试
23、方案:指明为完成软件或软件集成特性的测试而进行的设计测试方法的细节文档。测试用例:指明为完成一个测试项的测试输入、预期结果、预期执行条件等因素的文档。测试规程:指明执行测试时测试活动序列的文档。测试报告:指明执行测试结果的文档。,测试计划的参考模板,建立测试计划,定义测试目标开发测试矩阵软件模型结构特性批量测试的阶段和用例为在线系统作概念上的测试脚本软件测试矩阵定义测试管理测试计划的一般性信息定义测试里程碑定义管理上的检查点书写测试计划,评审测试计划,涉及评审的问题评审测试的开始时间是否会延期有没有抵触评审的角色一段时间内是否很难得到工作的检查信息。更换工具有可能导致他们反感评审工作评审结果可
24、能会影响对个人的工作评价对于最终成品的检查项目的需求规格说明书软件返工/维护的文档升级后的技术文档被更改的源程序测试计划用户手册(包括在线帮助),测试用例,测试用例的基本要素有:目的、前提条件、输入数据或动作、期望的响应。,建议测试方法,测试方法测试用例的概念是简单的建立有效的测试用例是复杂的设计测试文件测试用例应当包含合法的和非法的输入每一个动作只进行一次关键操作输入测试数据分析结果尝试将测试文件违反程序的规则进行输入压力测试的测试工具以大信息量的数据进行输入这是一个昂贵的测试,应根据需要来选择在线系统需要做压力测试,测试报告,目标表示出目前项目的实际状况明确什么是测试做的工作,什么是不作的
25、工作。给出系统的操作性能的评价明确什么时候系统可以进行产品化的工作关注点测试报告只有真正需要的时候才有用,需要配合市场和管理测试的信息是不充分的(对于评价一个项目来说)测试状况并不能真实的反应个人的状况,测试期间数据的收集,有关测试结果的积累数据测试任务,测试集合和测试事件的描述缺陷分析由于计划的问题,导致没有发现的缺陷的数据严重的缺陷缺陷类型为什么缺陷没有发现效果,测试报告,报告目前的软件状态功能/测试矩阵功能测试的状态报告,侧重点分析关于功能的工作时间轴期望发现 VS 实际发现的缺陷比没有发现的缺陷和改正的缺陷的差距按照类型分类,没有改正的缺陷的平均值缺陷分类报告测试活动报告,软件系统的主
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 测试 培训 ppt 课件
链接地址:https://www.31ppt.com/p-1411248.html