您好,欢迎访问三七文档
1软件测试基础2目标•软件质量概念•软件测试概念•软件测试目标•软件测试的基本方法•软件测试分类•软件测试人员的素质要求3质量•狭义的质量概念:–产品质量;仅仅从产品的性能着眼。即在尽可能充分利用现代生产技术水平的条件下,制造出最好的产品。»---这个就是从消费者的角度来考虑•广义的质量概念:–包括产品质量和工作质量两个组成部分,即全面质量;既要反映客户的要求,又要考虑到设计、制造和销售服务的水平和能力。»---这个就是从生产者和消费者的角度来考虑4软件质量概念•软件质量定义是软件产品满足使用要求的程度。•如何衡量软件质量高质量的软件系统能够准时地交付给用户,所耗费的成本不超出预算,并且最重要的是,能够正常地运行即必须尽可能没有缺陷(bug)。具体地由以下几个方面来衡量:在正确的时间用正确的的方法把一个工作做正确。符合一些应用标准的要求,比如不同国家的用户不同的操作习惯和要求,项目工程中的可维护性、可测试性等要求。质量本身就是软件达到了最开始所设定的要求,而代码的优美或精巧的技巧并不代表软件的高质量。质量也代表着它符合客户的需要。5软件测试概念•为什么需要软件测试例子1:1963年,美国,飞往火星的火箭爆炸,损失$10million.原因:FORTRAN循环DO5I=1,3误写为DO5I=1.3软件测试是保证软件质量的的有效手段,是软件开发过程中的重要步骤,其工作量约占总工作量40%以上(对于人命关天的情况,测试相当于其它部分总成本的3—5倍)6软件测试概念例子2:测试在微软公司是一项非常重要的工作,微软公司在此方面的投入是非常巨大的。微软对测试的重视表现在工程开发队伍的人员构成上,微软的项目经理、软件开发人员和测试人员的比例基本是1:3:3或1:4:4,可以看出开发人员与测试人员的比例是1:1。对于测试的重视还表现在最后产品要发布的时候,此产品的所有相关部门都必须签字,而测试人员则具有绝对的否决权。7软件测试概念•软件测试定义软件测试是为了发现错误而有计划、有策略的执行程序的过程。软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程。软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的审查,是软件质量保证的重要步骤。软件测试应该贯穿整个软件生存周期。8软件测试概念•软件测试在软件生存周期中横跨两个阶段:第一个阶段:通常在编写出每一个模块之后就对它做必要的测试(称为单元测试)。模块的编写者与测试者是同一个人。编码与单元测试属于软件生存周期中的同一个阶段。第二个阶段:在第一阶段结束之后,对软件系统还要进行各种综合测试,这是软件生存周期的另一个独立的阶段,即测试阶段,通常由专门的测试人员承担这项工作。9软件测试认识误区•误区一:如果发布出去的软件有质量问题,都是软件测试人员的错•误区二:软件测试技术要求不高,至少比编程容易多了•误区三:有时间就多测试一些,来不及就少测试一些•误区四:软件测试是测试人员的事,与开发人员无关•误区五:根据软件开发瀑布模型,软件测试是开发后期的一个阶段10软件测试概念•验证和确认(V&V)验证(Verification)Arewebuildingtheproductright?是否正确地构造了软件?即是否正确地做事,验证开发过程是否遵守已定义好的内容。验证产品满足规格设计说明书的一致性确认(Validation)Arewebuildingtherightproduct?是否构造了正是用户所需要的软件?即是否正在做正确的事。验证产品所实现的功能是否满足用户的需求两者关系确认与验证工作都属于软件测试。11软件测试目标和组织•软件测试目的GrenfordJ.Myers就软件测试目的提出以下观点:软件测试是为了发现错误而有计划、有策略的执行程序的过程。测试是为了证明程序有错,而不是证明程序无错误的。一个好的测试用例是在于它能发现至今未发现的错误。一个成功的测试是发现了至今未发现的错误的测试。测试是为了表明程序是正确的成功的测试是没有发现错误的测试12软件测试目的•基于不同的立场,存在着两种完全不同的测试目的:–从用户的角度出发,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是否可接受该产品。–从软件开发者的角度出发,则希望测试成为表明软件产品中不存在错误的过程,验证该软件已正确地实现了用户的要求,确立人们对软件质量的信心。13软件测试目标和组织•测试的目标是发现软件中的错误,但发现错误并不是最终目的。•测试的最终目的是确保最终交给用户的产品的功能符合用户的需求。•通过测试发现的错误之后,必须诊断并改正错误,这就是调试,调试是测试阶段最困难的工作。14软件测试目标和组织•软件测试的基本原则尽可能早的开始测试8-2原则(Pareto原理)GoodEnough原则木桶原理严格执行测试用例制定严格的测试计划对测试错误结果一定要有一个确认的过程回归测试的关联性妥善保存测试文档要用专业的测试软件和机构穷举测试是不可能的15软件开发风险•何谓“风险”能够影响一个或多个目标的不确定性。•风险的影响增加困难增加机会•风险的分类估计本身的困难带来的风险在计划阶段的假设无法预计的事件16软件测试基本方法•静态测试与动态测试静态测试一般应用于验证测试阶段主要针对软件设计期间所设计的各种文档及编码进行审核,验证系统设计达到需求。动态测试为了发现程序中的错误而去执行程序。动态测试需要测试用例。主持人作者记录员列席人员内审员技术专业人员用户代表17软件测试基本方法•白盒测试与黑盒测试白盒测试–主要用于软件验证测试,由开发人员执行。也称结构测试或逻辑驱动测试。–白盒测试的优点是帮助软件测试人员增大代码的覆盖率,提高代码的质量,发现代码中隐藏的问题。–白盒测试的缺点有:1)程序运行会有很多不同的路径,不可能测试所有的运行路径;2)测试基于代码,只能测试开发人员做的对不对,而不能知道设计的正确与否,可能会漏掉一些功能需求;3)系统庞大时,测试开销会非常大。18软件测试基本方法黑盒测试•主要用于软件确认测试,有独立的测试人员执行,也称功能测试或数据驱动测试。•黑盒测试的优点有:1)比较简单,不需要了解程序内部的代码及实现;2)与软件的内部实现无关;3)从用户角度出发,能很容易的知道用户会用到哪些功能,会遇到哪些问题;4)基于软件开发文档,所以也能知道软件实现了文档中的哪些功能;5)在做软件自动化测试时较为方便。•黑盒测试的缺点有:1)不可能覆盖所有的代码,覆盖率较低,大概只能达到总代码量的30%;2)自动化测试的复用性较低。客户需求事件驱动输入输出19单元测试•单元测试针对程序模块,进行正确性检验的测试。其目的在于发现各模块内部可能存在的各种差错。•单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。•单元测试的内容模块接口测试局部数据结构测试路径测试错误处理测试边界测试20单元测试•单元测试的步骤通常单元测试在编码阶段进行。在源程序代码编制完成,经过评审和验证,确认没有语法错误之后,就开始进行单元测试的测试用例设计。模块并不是一个独立的程序,在考虑测试模块时,同时要考虑它和外界的联系,用一些辅助模块去模拟与被测模块相联系的其它模块。这些辅助模块分为两种:驱动模块:相当于被测模块的主程序。它接收测试数据,把这些数据传送给被测模块,最后输出实测结果。桩模块:用以代替被测模块调用的子模块。桩模块可以做少量的数据操作,不需要把子模块所有功能都带进来,但不允许什么事情也不做。21单元测试单元测试的测试环境22集成测试•集成测试是把模块按照设计要求组装起来进行测试,主要目标是发现与接口有关的问题。用于集成测试的测试用例的设计应该以接口通信为基准。•集成测试方式非增量集成:把所有模块按照设计要求一次全部组装起来,然后进行整体测试。“一次试运行成功的可能性并不很大”增量集成:模块一部分一部分地组装,并进行测试。自顶向下集成自底向上集成23集成测试•自顶向下集成主控模块开始,按照软件的控制层次结构,以深度优先或广度优先的策略,逐步把各个模块集成在一起。M1M2M3S4M5M6S7M8M7M424集成测试•自底向上集成是从“原子”模块(即软件结构最低层的模块)开始组装测试。不再需要桩模块。McMaMbD1D2D3族1族2族3第一步:把低层模块组合成实现某个特定的软件子功能的族;第二步:写一个驱动程序(用于测试的控制程序),协调测试数据的输入和输出;第三步:对由模块组成的子功能族进行测试;第四步:去掉驱动程序,沿软件结构自下向上移动,把子功能族组合起来形成更大的子功能族。重复第二步到第四步,直至整个软件集成测试完成。25确认测试•经过单元测试和集成测试之后,产品进入了基于业务需求的确认测试。•确认测试又称有效性测试。它的任务是验证软件的有效性,即验证软件的功能和性能及其它特性是否与用户的要求一致。进行有效性测试(功能测试)运用黑盒测试的方法,验证被测软件是否满足需求规格说明书列出的需求。配置复审保证软件配置的所有成分都齐全,各方面的质量都符合要求,且包括维护阶段所必需的细节,而且已经编排好分类的目录。26确认测试27确认测试•验收测试是由最终用户而不是系统的开发者进行的。Alpha测试:由用户在开发者的场所进行,并在开发者对用户的指导下进行测试。也可以是公司内部的用户在模拟实际操作环境下进行的测试。Beta测试:由软件的最终用户在客户场所进行,开发者通常不在Beta测试的现场。28负载测试•负载测试是为了测试软件在重负荷下的表现。•以Web产品为例,主要测试系统应该连接的数目、同时不间断连接的数目、单位时间内至少保持多少连接存在等因素。29系统测试•系统测试是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行(使用)环境下,对计算机系统进行一系列的组装测试和确认测试。•包括:恢复测试安全测试强度测试性能测试验收测试回归测试30软件测试分类小结方法目标/特性单元测试系统测试验收测试性能测试强壮性测试功能测试白盒测试黑盒测试测试阶段或层次适用性测试可靠性测试集成测试安全性测试31软件测试人员应具备的素质•测试人员是测试策略和规则的实际执行者,假如测试人员不能真正的贯彻既定的方针,测试工作就不能达到预期的效果。作为一个测试人员,应该具有以下的素质:沟通能力自信心良好的记忆能力足够的耐心以及自己督促能力怀疑的态度必要的专业技能责任心32Thanks!
本文标题:软件测试基础讲义
链接地址:https://www.777doc.com/doc-4004861 .html