您好,欢迎访问三七文档
Contents1.什么是测试5.测试的过程2.测试的目的3.测试的误区4.测试的心理学和经济学1.1什么是软件测试IEEE的定义使用人工和自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别测试在开发中的角色模拟、执行系统的操作建立软件是按要求的方式执行的信心意图发现问题和错误度量程序的功能和质量评价程序的属性和能力,评估其是否获得期望结果除了执行代码,还包括同行评审1.1什么是软件测试对测试的新认识测试不再是编码后才进行的活动,而是一个基于整个软件开发周期的质量控制活动•基于代码运行的测试•静态测试测试的V模型测试V模型需求分析概要设计详细设计编码验证和确认系统测试计划设计、实现集成测试计划设计、实现单元测试计划设计、实现代码审查执行系统测试执行集成测试执行单元测试验证和确认验证和确认验证和确认1.2为什么要进行测试AirLie软件咨询中心提出的原因未良好测试的程序可能导致任务失败、影响操作的性能和可靠性、增加维护成本程序的测试是项目的主要成本需求和设计时就开始测试,影响项目成功及时面对和处理问题,降低修改和返工的成本尽早发现软件项目中的问题1.2为什么要进行测试导致错误的根源缺乏有效沟通软件复杂度编程错误不断变更的需求时间压力缺乏文档的代码人员的自大1.3测试的目的证明表明软件可以工作建立信心、尝试功能和特性、保证可用性检测发现错误发现错误和不足、局限性预防质量管理尽早检测错误、确认问题和风险及其解决途径1.4测试中的误区误区1测试和调试是一样的误区2测试组应当为保证质量负责误区3过分依赖Beta测试误区4把不合格的开发人员安排做测试误区5关注测试的执行而忽略测试的设计误区6测试自动化是万能的误区7测试是可以穷尽的误区8测试是为了证明软件的正确性误区9测试是枯燥乏味,缺乏创造力的工作1.5测试的心理学和经济学软件测试不仅仅是技术工作软件测试涉及经济学和人类心理学的一些重要因素1.51测试的非技术因素软件测试的经济学理想情况:对程序的所有可能执行情况进行测试实际情况:即使简单的程序其可能的输入与输出组合可能达到相当大的数量,对所有可能情况设计测试用例是不切合实际的经济上的可行性:对复杂的应用程序进行完全的测试将耗费大量的时间和人力资源,在经济上是不可行的1.51测试的非技术因素软件测试的心理学•要成功测试软件,测试人员需要有正确的态度,甚至可能比实际的测试过程本身还要重要1.52测试的心理学测试是为发现错误而执行程序的过程测试可以提高程序的可靠性或质量•提高可靠性指找出并最终修改了程序的错误测试不是为了证明程序能够正确运行,而是应该一开始就假设程序中隐藏着错误,然后测试程序并发现尽可能多的错误软件测试更适宜被视为试图发现程序中错误的破坏性的过程。一个成功的测试用例,通过诱发程序发生错误,可以在这个方向上促进软件质量的改进通过软件测试最终可以建立某种程度的信心——软件做了其应该做的,未做其不应该做的1.53测试的经济学软件测试是否能够发现所有的错误?即使是规模很小的程序,要发现程序中的所有错误也是不切实际的,常常也是不可能的软件测试的经济学问题软件测试人员对被测软件的期望测试用例的设计方式在开始测试之前应该建立某些策略黑盒测试白盒测试黑盒测试黑盒测试是最常用的测试策略数据驱动的测试输入/输出驱动的测试功能性测试黑盒测试的特点将被测试的程序看作一个黑盒子,测试目标与程序的内部机制和结构完全无关,而是将重点集中在发现程序不按其规范正确运行的环境条件。测试数据完全来源于软件规范,不需要了解程序的内部结构。黑盒测试黑盒测试的判定标准穷举输入测试:将所有可能的输入条件都作为测试用例•即使对简单的小程序,也经常需要创建无限的测试用例,这是不可能的•程序涉及到数据存储时问题会更严重穷举输入测试是无法实现的•我们无法测试一个程序以确保它是无错的•软件测试的经济学:由于穷举测试是不可能的,测试投入的目标在于通过有限的测试用例,最大限度地提高发现问题的数量,以取得最好的测试效果•对程序的某些合理的假设会有助于取得好的测试效果白盒测试白盒测试逻辑驱动的测试结构性测试白盒测试的特点白盒测试允许我们检查程序的内部结构,并从逻辑结构中获取测试数据。使用测试用例执行程序中所有可能的控制流路径。白盒测试白盒测试的判定穷举路径测试:如果使用测试用例执行了程序中所有可能的控制流路径,那么程序有可能得到了完全测试穷举路径测试是不可能的•程序中不同逻辑路径的数量可能达到天文数字穷举路径测试就是完全测试吗?•即使是穷举路径测试也决不能保证程序符合其设计规范•程序可能会因为缺少某些路径而存在问题,穷举路径测试不能发现缺少了哪些必需路径•穷举路径测试可能不会暴露数据敏感错误1.64测试的原则原则1:测试用例中一个必需部分是对预期输出或结果的定义如果没有定义预期结果,实际上错误的结果可能被解释为正确的测试用例必须包括两个部分:对程序的输入数据的描述,对程序在上述输入数据下的正确输出结果的精确描述原则2:程序员应当避免测试自己编写的程序心理上,程序员很难对自己建立起来的程序进行破坏性的审查,也难以改换思维方式程序员对规范的错误理解会导致程序错误,同样的误解导致无法测试这样的错误调试由程序员本人进行则更有效原则3:编写软件的组织不应当测试自己编写的程序定量地衡量软件的可靠性极其困难,记事实合理规划和实施的测试过程也可能被认为降低了完成进度和成本目标的可能性,因此编程组织难以客观测试自己的软件由客观、独立的第三方进行测试更经济1.64测试的原则原则4:应该彻底检查每个测试的执行结果测试中发现的错误常常被遗漏原则5:测试用例的编写不仅应当根据有效和预期的输入情况,而且也应当根据无效和未预料到的输入情况测试软件时经常会忽略无效和未预料到的情况在软件产品中突然暴露出来的许多问题是当程序以某些新的或未预料到的方式运行时发现的针对未预料到的和无效的输入情况的测试用例更能发现问题原则6:检查程序是否“未做其应该做的”仅是测试的一半,测试的另一半是检查程序是否“做了不应该做的”是原则5的必然结果必须检查程序是否有我们不希望的副作用,这样的程序仍然是不正确的程序1.64测试的原则原则7:应避免测试用例用后既弃,除非软件本身就是一个一次性的软件测试用例在测试后就消失了,一旦软件需要重新测试,就需要重新设计这些测试用例,结果或者是再次投入大量的工作,或者是草草测试,这样对程序的更改如果导致某个先前可执行的部分发生故障,这个故障往往不会被发现回归测试:当程序其他部件发生更动后重新执行之前保留的测试用例原则8:计划测试工作时不应默许假定不会发现错误错误的测试定义:测试是证明程序正确运行的过程正确的测试定义:测试是为发现错误而执行程序的过程1.64测试的原则原则9:程序某部分存在更多错误的可能性,与该部分已发现错误的数量成正比残存错误与已知错误之间的联系:图2-2page10错误总是倾向于聚集存在,在一个程序中,某些部分要比其他部分更容易存在错误,为了使测试获得更大的程序,最好对这些容易存在错误的部分进行额外的测试原则10:软件测试是一项极富创造性、极具智力挑战性的工作测试软件的创造性很可能超过了开发软件所需的创造性发现有效的测试用例是一项创造性的工作1.7本章小结软件测试的理念全面的测试理念软件测试的目的寻找软件系统中的缺陷软件测试的重要性逐步被认识和重视软件测试的误区用正确的态度看待测试1.7本章小结牢记三个重要的测试原则软件测试是为发现错误而执行程序的过程一个好的测试用例具有较高的发现某个尚未发现的错误的可能性一个成功的测试用例能够发现某个尚未发现的错误测试策略黑盒测试和白盒测试
本文标题:1 软件测试的概述
链接地址:https://www.777doc.com/doc-3732134 .html