资源描述
2021/8/261软件质量保证与软件测试软件质量保证与软件测试北京唯英时代信息技术有限公司方修广2021/8/262开场白开场白l世界上不存在没有缺陷的软件。l可以通过两种途径开发出没有错误的软件:l在一开始就防止引入错误。l识别潜藏在代码中的错误,找到并消灭它们。2021/8/263大纲大纲l软件工程l软件质量保证l软件测试基础知识常用技能职业发展团队管理lQ&A2021/8/264软件工程软件工程l软件工程(Software Engineering,简称为SE)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面。2021/8/265软件质量管理软件质量管理质量与质量管理的概念l质量:是“反映实体满足明确和隐含需要的能力和特性综 合”。因此,质量是一种需要,“是一组固有特性满足要求的程度”。l质量管理:质量管理是指以组织为质量中心、企业全员参与为基础,为追求客户满意和组织所有受益者满意而建立和形成的一整套质量方针、目标和体系。质量管理通过质量策划设定组织的质量目标,并规定必要的过程和相关资源;通过质量控制监视内部质量过程,排除质量控制过程中可能存在的缺陷隐患;通过质量改进提高内部的质量管理能力,改善组织内部的质量过程;通过质量保证提供足够的信任证据,表明组织有能力满足客户的质量要求。2021/8/266软件质量管理软件质量管理l质量管理体系:它是质量管理的运作实体,由组织结构、程序、过程、资源4个基本部分组成。l质量策划:它是“确定质量以及采用质量管理体系要素和要求的活动”,包括产品策划、质量管理体系管理和运作策划、编制质量计划。l质量控制:为达到质量要求所采取的作业技术和活动。质量控制的对象是过程。l质量保证:是为了提供足够的信任证据,证明组织有关的各类实体有能力满足质量要求所实施并在必要时进行证实的有计划、有系统的活动。l质量改进:是为了向组织的所有受益者提供更多的收益所采用的提高质量过程和效率的各种措施。2021/8/267软件质量管理软件质量管理l质量管理的发展阶段 (1)产品质量检验阶段:这个时期特征是对产品的质量进行检验。产品质量的检验只是一种事后的检查,不能预防不合格品的产生。(2)统计质量管理阶段:它是运用概率论和数理统计的原理,提出控制生产过程,预防不合格产品的思想和方法。即通过小部分样品测试,推测和控制全体产品或工艺过程的质量状况。(3)全面质量管理阶段:从以质量管理专业人员为核心进行质量管理,发展到管理者推动、组织各部门的人员都来进行学习和实行质量管理。2021/8/268软件质量管理软件质量管理l从质量管理理论的发展历史可以看出:质量管理从单纯的对产品质量进行检验发展到对产品形成过程进行控制 控制方法从静态发展到动态的、持续的过程改进l质量管理理论发展到今天:其核心思想已表现为对过程的策划、控制和过程能力的持续改进 2021/8/269软件质量保证软件质量保证l是软件工程领域中的一部分l为了确保软件开发过程和结果符合预期的要求,而建立的一系列规程,以及依照规程和计划采取的一系列活动及其结果评价l软件开发过程是按照计划和规范实施的l软件开发结果包括完整的软件和文档,并且符合可预期的目标和检验标准2021/8/2610软件测试软件测试 软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码实现的最终审查,它是软件质量保证的关键步骤。通常对软件测试的定义有两种描述:l定义定义1:软件测试是为了发现错误而执行程序的过程。l定义定义2:软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计的一批测试用例,并利用这些测试用例运行程序以及发现错误的过程,即执行测试步骤。2021/8/2611TiplSQA:从流程和标准上来控制开发过程,从而提高软件质量。lSQC:通过测试发现软件的问题并确保问题被解决,从而提高软件质量2021/8/2612思考思考l质量是做出来的还是管出来的?2021/8/2613软件开发模式软件开发模式1、大棒开发法l源于能量爆发创造宇宙,万物都由能量和物质积聚而成的理论,但如果不是遵循某种正确的排列和组合,形成的将不是预先期望的事物。大棒模式与上述理论一样:一大堆能量(这里指开发软件所需的人力和物力)放在一起,巨大的能量进行释放,通常的结果可能是产生了优秀的软件产品或成为一堆“废品”(不成功的软件)。l优点:思路简单,通常可能是开发者的“突发奇想”l缺点:开发过程是非工程化的,随意性大l关于测试:有的较简单,有的则非常困难2021/8/2614软件开发模式软件开发模式(续)(续)2、边写边改法l采用边写边改法的软件开发通常只是有了比较粗略的想法就开始进行简单的设计、然后进行较长的反复编写、测试与修复这样一个循环的过程。在认为无法更精细的描述软件产品要求时,就发布产品。l优点:能够较为迅速的展现成果,适合需要快速制作而且用完就扔的小项目,如示范程序、演示程序等。l缺点:其编码和测试可能将是长期的循环往复的过程。2021/8/2615软件开发模式软件开发模式(续)(续)l 产品说明书代码编制、测试、修复代码编制、测试、修复 最终产品2021/8/2616软件开发模式软件开发模式(续)(续)瀑布法l瀑布模式是将软件生命周期的各项活动,规定为按照固定顺序相连的若干个阶段性工作,形如瀑布流水,最终得到软件产品。l优点:易于理解;调研开发的阶段性;强调早期计划及需求调查;确定何时能够交付产品及何时进行评审与测试。l缺点:需求调查分析只进行一次,不能适应需求变化;顺序的开发流程,使得开发中的经验教训不能反馈到该项目的开发中去;不能反映出软件开发过程的反复与迭代性;没有包含任何类型的风险评估;开发中出现的问题直到开发后期才能够显露,因此失去及早纠正的机会。2021/8/2617软件开发模式软件开发模式(续)(续)l 问题定义分析研究需求分析软件设计编码测试维护定义阶段开发阶段维护阶段2021/8/2618软件开发模式软件开发模式(续)(续)l 图1-9 螺旋开发模式详细设计风险分析评估方案累计成本提交线制定计划原型1原型2原型3可运行原型风险分析风险分析需求计划开发计划集成与测试软件需求软件产品设计需求确定设计确定实现编码单元测试集成测试验收测试2021/8/2619 软件开发与软件测试的关系软件开发与软件测试的关系图1-10软件测试与软件开发过程的关系需求需求分析分析说明书说明书详细详细设计设计说明书说明书源程序源程序代码代码单元单元测试测试集成集成测试测试确认确认测试测试概要概要设计设计说明书说明书2021/8/2620软件开发与软件测试的关系软件开发与软件测试的关系项目规划项目规划项目需求分析项目需求分析项目概要分析项目概要分析项目详细分析项目详细分析代码编写代码编写测试代码编写测试代码编写测试需求分析测试需求分析系统测试计划系统测试计划集成测试计划集成测试计划单元测试计划单元测试计划产品发布产品发布系统测试系统测试集成测试集成测试单元测试单元测试2021/8/2621单元测试单元测试l单元测试的内容:l1、模块接口测试l2、检查局部数据结构能否保持完整性l3、模块边界条件测试l4、模块执行路径测试l5、检查模块内部错误处理是否有效l单元测试方法:白盒测试为主2021/8/2622集成测试集成测试l集成测试(Integration test):将通过单元测试的多个模块组合成更大的模块或子系统或产品,然后进行测试。l测试内容:各单元的接口是否吻合、代码是否符合规定的标准、界面标准是否统一等。2021/8/2623系统测试系统测试l经过集成测试之后,分散开发的模块被联接起来,构成完整的程序,其中各模块间接口存在的种种问题都已基本消除。测试开始进入到系统测试的阶段。l为了发现缺陷并度量产品质量,按照系统的功能和性能需求进行的测试l一般使用黑盒测试技术l一般由独立的测试人员完成2021/8/2624系统测试系统测试(System test)l应该由若干个不同测试组成,目的是充分运行系统,验证系统各部件是否都能正常工作并完成所赋予的任务。这里所谓的系统不仅仅包括软件本身,而且还包括计算机硬件及其相关的外围设备,数据及其收集传输机构,甚至掌握计算机运行的人员及其操作等。l通常意义上的系统测试包括:功能测试、性能测试(Performance test)、用户界面测试、兼容性测试等。2021/8/2625UAT测试测试l系统测试结束后,在项目组看来开发和测试工作已经全部完成,可以交付使用,并与用户一起进行测试,以验证是否符合与用户事先约定的验收标准。l测试人员l产品经理或其他高级经理l开发工程师l测试工程师l用户2021/8/2626 测试级测试级目的目的执行者执行者测试环境测试环境测试方法测试方法单元单元从单个模块中从单个模块中发现逻辑、数据发现逻辑、数据和运算缺陷和运算缺陷软 件 工 程软 件 工 程师师单独的;桩单独的;桩和支撑程序和支撑程序白盒测试白盒测试集成集成发现模块间接口发现模块间接口缺陷缺陷软 件 工 程软 件 工 程师师单独的和单独的和/或或模拟;桩和模拟;桩和支撑程序支撑程序白盒测试白盒测试T o p-d o w n,bottom-up,或或outside-in系统系统测定软件是否满测定软件是否满足需求足需求软 件 质 保软 件 质 保组;组;软 件 确 认软 件 确 认组组实际的环境实际的环境(可能没有(可能没有最终的硬件最终的硬件)功 能 测 试 和功 能 测 试 和ALAC(ActLikeACustomer)回归回归确认软件经过一确认软件经过一些小的变更或修些小的变更或修改后是否仍满足改后是否仍满足所有的需求所有的需求软 件 质 保软 件 质 保组;组;软 件 确 认软 件 确 认组组实际的环境实际的环境(可能没有(可能没有最终的硬件最终的硬件)功 能 测 试 和功 能 测 试 和ALAC验收验收确定软件是否满确定软件是否满足客户的需求足客户的需求客 户,软客 户,软件 质 保 组件 质 保 组和和/或项目或项目组组实际的环境实际的环境(通常在客(通常在客户方)户方)功 能 测 试 和功 能 测 试 和ALAC(客户可(客户可能有自己的测试能有自己的测试方法)方法)2021/8/2627l性能测试l功能测试2021/8/2628性能测试性能测试l性能测试即测试软件处理事务的速度,一是为了检验性能是否符合需求,二是为了得到某些性能数据供人们参考。(Performance)l性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。2021/8/2629功能测试功能测试 功能测试(Functional testing),根据产品特征、操作描述和用户方案,测试一个产品的特性和可操作行为以确定它们满足设计需求。本地化软件的功能测试,用于验证应用程序或网站对目标用户能正确工作。使用适当的平台、浏览器和测试脚本,以保证目标用户的体验将足够好,就像应用程序是专门为该市场开发的一样。2021/8/2630常见名词常见名词l冒烟测试l压力测试l本地化测试l回归测试lAlpha测试lBeta测试l嵌入式软件测试l手机测试l应用软件测试l固件测试2021/8/2631l静态测试l动态测试2021/8/2632黑盒子测试黑盒子测试l黑盒测试是从用户观点出发的测试,它又称功能测试、数据驱动测试或基于规格说明书或用户手册的测试。它所依据的是程序的外部特性。l白盒测试又称结构测试、逻辑驱动测试或基于程序的测试,其测试过程如图所示l半透明盒子测试2021/8/2633自动化测试自动化测试l常用测试软件(HP,IBM,Borland)lQTP,LR,QCl如何学习自动化测试 2021/8/2634必做的测试:必做的测试:l安装测试l功能测试l值域测试l界面测试l可用性测试l说明书测试l配置测试l加密问题测试l裸机测试2021/8/2635可选的测试可选的测试l内存泄漏测试l接口测试l性能测试l并发性测试l安全性测试l破坏性测试l配套产品测试2021/8/2636测试计划:测试计划:l收集并组织测试计划信息,将软件细化为可检验的测试需求,建立测试计划 l目标:沟通测试小组内部与外部的测试意图l规定测试活动的范围、方法、资源和进度l明确测试项目的特性l测试要点l测试任务细分l任务进度以及负责人l输出:测试计划2021/8/2637测试用例测试用例l模板包含的内容:标题和编号、版本号、修改记录等模块功能名称设计可能有的操作(包括测试步骤和输入)预期输出和错误发现方法是否通过(是否与期望结果一致)与bug库对应的ID号2021/8/2638测试的执行及报告:测试的执行及报告:l选择测试用例库中的测试用例运行l选择新设计的测试用例运行l记录中间步骤和结果l记录下执行过程中的灵感l但不要轻易修改本次执行任务l对测试结果分析,并尽量重现和优化错误步骤l详细填写缺陷报告并提供尽可能多的信息,尽可能提供错误分析和修改建议l认真审核错误处理结果并及时关闭缺陷报告2021/8/2639测试员的效率测试员的效率l平均每个工作日发现4-6个Bugl平均每修正3个Bug,会引进1个新的Bugl平均75%的Bug会在单元测试阶段解决掉l平均20%的Bug会在集成测试和系统测试阶段解决掉l平均5%的Bug会被交付给用户2021/8/2640l 测试不能是全面的l成本和质量lTQMlCMlPeer ReviewlEPG2021/8/2641l提早发现l缺陷预防2021/8/2642CMMl软件能力成熟度模型(CMM,Capability Maturity Model):是软件行业标准模型,用来定义和评价软件企业开发过程的成熟度,提供如何做才能够提高软件质量的指导。lCMM的基本原理:CMM将软件组织的过程能力成熟度分为5个级别,每一个级别定义一组过程能力目标,并描述要达到这些目标应该采取的各种实践活动。lCMM的主要作用:提供了一个软件过程改进的框架。根据CMM模型,软件开发者(机构或组织)能够大幅度的提高按计划、高效率、低成本的提交有质量保证的软件产品的能力。2021/8/2643 l 软件能力成熟度模型软件能力成熟度模型(续)(续)优化级(优化级(5)已管理级(已管理级(4)已定义级(已定义级(3)可重复级(可重复级(2)初始级(初始级(1)标准一致标准一致 的过程的过程 不断改不断改 进过程进过程 可预测可预测 的过程的过程 有纪律有纪律 的过程的过程软件过程成熟度的5个等级2021/8/2644 l 软件能力成熟度模型软件能力成熟度模型(续)(续)CMM的分级结构和其主要特征:l初始级初始级:其特点是软件过程无秩序,有时甚至是混乱的。l可重复级可重复级:已建立了基本的项目管理过程,可用于对成本、进度和功能特性进行跟踪。l已定义级已定义级:用于管理的、工程的软件过程均已实现文档化、标准化,并形成了整个软件组织的标准软件过程。l管理级管理级:软件过程和产品质量有详细的度量标准,软件过程和产品质量得到了定量的认证和控制。l优化级优化级:通过对来自过程、新概念和新技术等方面各种有用信息的定量分析,能够不断地、持续性地对过程进行改进。2021/8/2645ISO 9000介绍介绍l ISO 9000标准 是为制造行业制定的质量管理和质量评判的一系列标准 定义了一套基本达标的做法,有助于企业能够一致地交付符合客户质量要求的产品(或服务)ISO 9000标准的目标 在于开发过程,而不是产品 关心的是进行工作的组织方式,而不是工作成果ISO 9000只决定过程的要求是什么,而不管如何达到。ISO 9000指出要做什么,但不指出怎样做。2021/8/2646软件质量保证部的职责软件质量保证部的职责l质量控制组l质量保证组l测试服务组l开发服务组2021/8/2647质量控制组(质量控制组(QC)l质量控制组强调标准l在任何公司中,管理部门都是实际的质量控制组。lQC组的真正权利在于,它能够控制一个有问题的产品直到管理部门经过深思熟虑后做出决定2021/8/2648质量保证组(质量保证组(QA)l设置过程标准、引进评审程序、培训职员以更好的方式开展设计和开发产品。l有能力的程序员、编写人员、经理、设计人员和分析员l管理部门是真正的质量保证小组l质量来自顶层,而不是来自QA2021/8/2649测试服务组测试服务组l测试服务组为项目经理提供测试服务。对你的要求是找到故障代码,仔细对他们进行描述,并确保需要了解他们的每个人都能弄清楚。你并没有发布或者拒绝发布一个产品的权限。你描述程序的问题,到目前为止的已经完成的测试层度,以及你对程序质量的估计。2021/8/2650开发服务组开发服务组l调试l技术(客户)支持,尤其在产品发布后的前几个星期l对手册的技术编辑l易用性测试l可比较产品的评价l客户满意度研究2021/8/2651另一种选择另一种选择l独立测试机构l优点l缺点2021/8/2652对软件测试的误解对软件测试的误解l如果发布的软件有质量问题,那是软件测试人员的错。l软件测试技术要求不高,至少比编程容易多了。l软件测试随便找一个能力差的人就能做。l有时间就多测试一些,来不及就少测试一些。l软件测试是测试人员的事,与开发人员无关。l设计实现测试,软件测试是开发后期的一个阶段。2021/8/2653对于测试人员的职业素质要求对于测试人员的职业素质要求l1、责任感l坚持原则、不放弃l有问题及时汇报l2、沟通能力、移情能力l与用户、项目组的沟通l3、独立的判断和自学习能力l坚持观点,不随声附和l喜欢探寻、钻牛角尖不一定是坏事情l4、耐心、自我督促l5、团队精神l与开发组整体为一个目标开展活动,有时需要妥协2021/8/2654软件测试人员的职业规划软件测试人员的职业规划l 自动化测试l英语 l行业专家l技术专家 l项目管理l产品经理lPMPlCMMI2021/8/2655软件测试人员的合理比例软件测试人员的合理比例在软件产业发达的国家:l软件测试在人员配备和资金投入方面占据相当的比重。l微软为打造Windows2000,1700多个开发人员,以及3200个测试人员,开发和测试人员之比约为三比五。lHP公司的测试人员和开发人员的比例为一比一,这是很 多先进软件企业通常的人员配比。在国内:l企业往往忽视软件测试,很多企业都没有软件测试部门,甚至不设置软件测试的岗位,造成产品质量得不到保证。2021/8/2656相关书籍推荐相关书籍推荐l软件测试lRon Patton,2001,Software Testingl机械工业出版社lThe Art of Software TestinglMyers,1979lTesting Computer SoftwarelCem.Kaner,19932021/8/2657lBlack-Box TestinglBoris Beizer,1995l自动化软件测试lElfriede Dustin,1999,Automated Software Testingl影印,2002,清华大学出版社l面向对象的软件测试lJohn D.McGregor,2001,A Practical Guide To Testing Object-Oriented Softwarel杨文宏,2002,机械工业出版社2021/8/2658培训总结培训总结lQ&AlThank you!部分资料从网络收集整理而来,供大家参考,感谢您的关注!
展开阅读全文