软件质量保证和测试技术

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第一章软件质量保证2本章目标•定义软件质量和软件质量保证•解释软件开发各个阶段SQA的目标•实现软件质量保证―建立质量管理体系―建立质量计划―质量保证―质量控制的输入―质量控制的手段和技巧•3开场白•世界上不存在没有缺陷的软件。•可以通过两种途径开发出没有错误的软件:–在一开始就防止引入错误。–识别潜藏在代码中的错误,找到并消灭它们。4什么是软件质量•软件质量是软件产品满足使用要求的程度。对于软件质量的衡量,就是高质量的软件系统能够准时地交付给用户,所耗费的成本不超出预算,并且最重要的是,能够正常地运行。“正常地运行”意味着该软件必须尽可能没有缺陷(bug)。•理解:–软件需求是质量度量的基础,与需求不符就是质量不高–完成的成本和完成的时间都应该在计划范围内–开发出的软件产品应该是可靠的和可维护的5软件质量保证(SQA)•质量保证是一个活动,它向所有有关的人提供证据以确立质量功能正在按需求运行的信心。•软件质量保证是一系列系统性的活动,它提供开发出满足使用要求产品的软件过程的能力证据。6软件开发各个阶段SQA的目标6-1•需求分析:–确保客户所要求的系统是可行的。–确保客户指定的需求确实能够满足他的真正要求。–避免开发者和客户之间的误解。–向用户提供为满足他所提出的需求而实际构建的适当软件系统。7•软件规格说明:–通过建立需求跟踪文档,确保规格说明书与系统需求保持一致。–确保规格说明书能适当地改进系统的灵活性、可维护性以及性能。–确保已建立了测试策略。–确保已建立了现实的开发进度表,包括预定的评审。–确保已为系统设计了正式的变更规程。软件开发各个阶段SQA的目标6-28软件开发各个阶段的SQA目标6-3•设计:–确保已建立用于描述设计的标准,并且确保遵循这些标准。–确保适当地控制并用文档记录对设计进行的变更。–确保在系统设计组件已按照商定的准则得到批准之后才开始编码。–确保对设计的评审按照进度进行。9软件开发各个阶段的SQA目标6-4•编码:–确保代码遵循已建立的风格、结构和文档标准。–确保代码经过适当测试和集成,同时对编码模块的修改得到适当的标识。–查看代码编写是否遵循既定的进度。–确保代码评审按照进度进行。10软件开发各个阶段的SQA目标6-5•测试:–确保测试计划的建立和遵循。–确保创建的测试计划能够满足所有系统规格说明书的要求。–确保经过测试和返工后软件与规格说明书保持一致。11软件开发各个阶段的SQA目标6-6•维护:–确保代码和文档的一致性。–确保对已建立的变更控制过程进行监测,包括将变更集成到软件的产品版本中的过程。–确保对代码的修改遵循编码标准,并且要对其进行评审,不要破坏整个代码结构。12实施质量管理•质量管理的发展和趋势•质量管理体系•建立质量计划•质量保证•质量控制的输入•质量控制的手段和技巧质量控制的输出13质量管理发展五个阶段1900手工操作者专职检验员1920过程统计技术1931全面质量管理19602000以顾客为中心阶段时间14质量管理发展趋势•核心:由对结果的检验转向对过程精细的控制•改变:-管理范围的改变:由针对以产品生产制造服务质量管理扩大到行政部门工作质量。-关注焦点的转移:由面向以产品生存周期的服务质量管理转向顾客满意为中心质量管理。15软件产业要经历三个不同时代•结构化生产时代(70年代中期至90年代中期):结构化分析;结构化设计;结构化程序设计;结构化测试;结构化审查与走查。•以过程为中心的时代(从80年代中期至2010年前后):寓质量和效率于生产过程之中;关于软件过程的主要流派(ISO9000,CMM)。•软件工业化生产时代(1995年开始):基础技术(软件过程技术,面向对象技术,基于构件的开发技术);主要问题(标准化,产业文化,政策法规);对前途的估计(我国2005年可以进入软件工业化生产时代)。16项目质量管理总览图17项目质量管理定义•项目质量管理–质量管理需要保证整个项目都要满足设计时的需要–项目质量管理包括了所有的活动,这些活动决定了质量策略、质量目标和责任。而这些都需要被质量计划、质量控制、质量保证和质量改进等活动完成。18项目质量管理的核心过程•三个核心过程:–质量管理–确认质量标准是关于项目目的、项目管理者、项目使用者这方面决定的–质量保证–评估整个项目满足相关的质量要求–质量控制–监控记过符合相应质量标准,可以进行检查,满足项目管理者以及整个项目组的要求19制定质量计划•质量计划–描述相关质量标准并且说明如何满足相应标准•输入质量计划–质量策略–一个组织中有关管理层对于质量的定义和方向–范围描述–产品说明–标准和规则–其他过程输出–其他领域的相关知识20质量计划的手段和技巧2-1•质量计划的工具和技巧–效益成本分析–考虑市场,就意味着减少返工;成本是与质量管理活动有关的费用–基本水平标准–比较实际或者计划中其他项目实施中的情况–流程图–因果图21质量计划的手段和技巧2-2–系统或程序流程图–试验设计–一种分析技巧,有助于鉴定哪些变量对整个项目的成果产生最大的影响22质量计划的输出•质量计划的输出–质量管理计划–说明项目管理小组如何具体执行它的质量策略;–操作性定义–用非常专业化的术语描述各项操作规程的含义,以及如何通过质量控制程序对它们进行检测。–审验单–用以证明一系列步骤是否已经得到贯彻实施–对其他程序的输入–可以在其他领域提出更长远的要求23质量计划中的输出总览图24质量保证•质量保证–为了提供信用,证明项目将会达到有关质量标准,而在质量体系中开展的有计划、有组织的工作活动•质量保证的输入–质量管理计划–质量控制结果–操作性定义25质量保证的手段和技巧•质量保证的手段和技巧–质量计划的手段和技巧–质量审查–质量审查是对其他质量管理活动的结构性复查•质量保证的输出–质量改进–质量提高包括采取措施提高项目的效益和效率,为项目相关人员提供更多的利益26质量控制•质量控制–包括监控特定的项目成果,以判定它们是否符合有关的质量标准,并找出方法消除造成项目成果不令人满意的原因。–预防(不让错误进入项目程序)和检验(不让错误进入客户手中)–静态调查(其结果要么一致,要么不一致)和动态调查(其结果依据衡量一致性程度的一种持续性标准而评估)–确定因素(非常事件)和随机因素(正态过程分布)–误差范围(如果其结果落入误差范围所界定的范围内,那么这个结果就是可接受的)和控制界限(如果其成果落入控制界限内。那么该项目也在控制之中。)27质量控制总览图28质量控制的输入•质量控制的输入–项目成果–包括程序运行结果和生产结果–质量管理计划–操作性定义–审查单29质量控制输入图30质量控制的手段和技巧2-1•检验-包括测量、检查和测试等活动,目的是确定项目成果是否与要求相一致•控制表-控制表是根据时间推移对程序运行结果的一种图表展示。•排列图-是一种直方图,由事件发生的频率组织而成,用以显示多少成果是产生于已确定的各种类型的原因的。如下图。31质量控制的手段和技巧2-2•抽样调查统计•流程图•趋势分析32质量控制的输出•质量控制输出–质量提高–可接受的决定(接受/拒绝)–返工–返工是有缺陷的、不符合要求的产品变为符合要求和设计规格的产品的行为。–完成后的审验单–程序的调整-程序的调整指作为质量检测结果而随时进行的纠错和预防行为。33总结•软件质量的衡量标准是可以准时地交付给用户,所耗费的成本不超出预算,并且最重要的是,能够正常地运行。•SQA的目标是通过在开发周期的早期阶段发现错误来降低解决问题的成本。•SQA应用于软件开发的每个阶段,每个阶段都有其自己的质量标准。•实施质量管理中,要注意构建自己的管理体系,包括:构建质量计划、建立质量保证、建立质量控制等第二章测试技术35回顾•软件质量的衡量标准是可以准时地交付给用户,所耗费的成本不超出预算,并且最重要的是,能够正常地运行。•SQA的目标是通过在开发周期的早期阶段发现错误来降低解决问题的成本。•SQA应用于软件开发的每个阶段,每个阶段都有其自己的质量标准。•实施质量管理中,要注意构建自己的管理体系,包括:构建质量计划、建立质量保证、建立质量控制等36本章目标•定义软件测试•明确软件测试的准则•明确测试的方法•描述软件测试的各个阶段•描述各种测试阶段的测试内容37简介•软件测试是软件工程过程中的关键组件。•软件测试是软件质量保证的要素,可以将其描述为一个运行程序以检测错误(如果有)的过程。38测试的常识与道理2-1•编程大师说:没有错误的程序世间难求。(《编程之道》)•你在学校里学过测试吗?(读到博士可能也不懂测试)•你所在的企业重视测试吗?(小公司程序员的技能更加全面)•临时抱佛脚行吗?你以为有文档模板就会测试了吗?39测试的常识与道理2-2•如果不懂得有效地进行测试,你不仅得不到功劳,也没人欣赏你的苦劳,你拥有最多的将只是疲劳。•职业软件工程师应当掌握需求开发、系统设计、编程、测试、维护所有技能。40测试的目的是什么•测试的目的是为了发现尽可能多的缺陷,不是为了说明软件中没有缺陷。•推论:成功的测试在于发现了迄今尚未发现的缺陷。所以测试人员的职责是设计这样的测试用例,它能有效地揭示潜伏在软件里的缺陷。–千万不要将“测试”与“演示”混为一谈。例如科研鉴定会。–如果产品通过了严格的测试,大家不要不吭气,应当好好地宣传一把。41软件测试原则2-1•完全测试程序是不可能的-输入量太大-输出结果太多-软件实现途径太多-软件说明书没有客观标准。从不同角度看,软件缺陷的标准不同。42软件测试原则2-2•软件测试是有风险的行为•测试无法显示潜伏的软件缺陷•找到的软件缺陷越多,就说明软件缺陷越多•并非所有软件缺陷都能修复•软件测试一项讲究条理的技术专业43软件测试方法-黑盒和白盒•白盒测试中(有时候称为开盒测试),软件测试员可以访问程序员的代码,并通过检查代码来协助测试-可以看到盒子里面。一般在单元测试中采用白盒测试,用于测试模块中所有可能的路径、执行所有循环并测试所有逻辑表达式。•黑盒测试则侧重于软件的整体功能。它不基于程序的内部结构而基于系统功能。犹如一个人站在黑盒子外面,只知道系统输入一定数据,得到一定的输出,而不必清楚这个黑盒子中进行了哪些操作和运算。44软件测试方法-静态和动态•静态检查–确保系统按照组织的标准和过程运行,主要依赖于评审和非运行的手段来检查。通常包括需求评审、设计评审、代码走查和代码检查。•动态检查–在生命周期中进行测试(运行)。通常包括单元测试、集成测试、系统测试、用户的验收测试。45静态测试•审查(Inspection)-软件的一种基本测试方法,它以一系列典型问题为依据进行检测。•走查(Walkthrough)-一对一的审查,比审查更加仔细。•回顾(Review)-以发现软件中存在的错误和缺陷为目的的一种软件测试方法,它是在软件证实执行之前完成。46静态和动态测试进行结构和功能测试测试阶段执行人静态校验动态校验可行性评审开发人员,用户√需求评审开发人员,用户√设计评审开发人员√单元测试开发人员√集成测试开发人员,用户√系统测试开发人员在用户的协助下完成√验收测试用户√47测试技术软件测试技术静态测试代码走查动态测试技术评审代码审查黑盒测试白盒测试功能测试性能测试攻击测试回归测试语句覆盖分支覆盖路径覆盖48测试产品说明书•对于产品说明书的制定是个很重要的设计阶段,产品说明书的质量会直接影响到整个产品开发。•测试产品说明书属于静态黑盒子测试。49常用测试用语-测试用例•测试用例:编写用于输入输入的实际数制和预期结果。测试用例还明确指出使用具体测试用例产生的测试程序的任何限制。•使用目的:•测试用例应该设计为能够快速容易地发现尽可能多的错误。•应该通过使用和产生正确和错误的输入和输出来“检验”程序。•其目标是要使用合理范围内的条件,尽可能全面地测试所有模块乃至整个系统。50测试与调试-什么是缺陷•缺陷:最终产品同用户的期望不一致•缺陷的分类–错误–遗漏–超出需求的部分•缺陷(未触发)VS.错误(应首先解决)51测试

1 / 179
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功