软件测试复习关键点:静态分析、测试与验证

需积分: 24 19 下载量 86 浏览量 更新于2024-07-17 2 收藏 1.64MB DOCX 举报
"这是一份来自重庆大学软件学院的软件测试复习资料,涵盖了软件测试的基础知识,包括自动化方法、测试的广泛应用原因以及测试方法概述。此外,还介绍了故障、错误和失效的关系,并详细阐述了PIE模型在软件失效过程中的作用。" 在软件测试领域,有三种主要的减少故障的方法:静态分析、测试和验证。静态分析是一种在不实际执行代码的情况下检查源代码以查找问题的方法,如内存泄漏。然而,这种方法只能发现有限类型的问题,并可能存在误报。测试则是通过输入值来运行软件,检查其行为是否符合预期,但受限于无法覆盖所有可能的执行路径和需要编写测试用例。验证,尤其是形式验证,涉及正式证明程序在所有可能执行情况下的正确性,但这种方法在实际应用中成本高昂且难以实施。因此,测试是最广泛应用的方法,因为它相对可靠、假阳性较少、适用范围广,且具有线性回报。 测试相对于其他方法的优势在于其可靠性。相比代码评审,测试更能确保软件的正确性;相比于静态检查,测试产生的误报更少,能处理更多类型的问题;相比于正式验证,测试在时间和复杂性上更具扩展性,更适合大规模程序,尽管它可能无法找到与正式验证相同数量的错误。 软件测试的方法包括结构测试、数据流测试、随机测试、等价类测试和组合测试等。这些方法各有特点,旨在覆盖不同的代码路径和数据条件,以发现潜在的故障。 PIE模型是用来描述软件失效过程的模型,由故障(Fault)、错误(Error)和失效(Failure)三个概念组成。故障是代码中的静态缺陷,错误是因故障导致的系统内部不正确状态,而失效则是用户可见的错误行为。当故障发生并被触发,导致错误状态,进而影响到系统的预期功能时,就形成了失效。PIE模型强调,只有当程序中的故障被执行到(执行/可达性)、引发错误状态(感染)并传播到影响系统行为(传播)时,失效才会显现。 这份复习资料对于理解软件测试的基本原理和实践方法非常有帮助,特别适合准备相关考试或进一步学习软件测试的人员。
2010-06-10 上传
1.2 软件缺陷( what is? why comes? and it’s cost)1.2 软件缺陷 1.2.1软件缺陷是什么?  定义:只有符合下列5个规则的软件问题,我们将其定义为软件缺陷(software fault) • 软件未达到产品说明书标明的功能 • 软件出现了产品说明书指明不会出现的错误 • 软件功能超出产品说明书指明范围 • 软件未达到产品说明书虽未指出但应达到的目标 • 软件测试员认为软件难以理解、不易使用、运行速度缓慢、`或者最终用户认为不好。 1.2.2为什么会出现软件缺陷?  从小程序到大项目的无数研究得出:导致软件缺陷最大的原因是产品说明书(需求)  其次的原因是设计方案的问题。 1.2.3软件缺陷的修复费用 1.3 软件测试员(job and qualification)1.3 软件测试员 1.3.1软件测试员的工作  软件测试员的目标是尽可能早的找出软件缺陷,并确保其得以修复。 1.3.2怎样成为优秀的软件测试员  技术能力  探索精神  不懈努力  创造力  说服力  准确的洞察力  坚韧不拔的毅力  追求完美 第2章 软件测试基础 2.1 测试原则(principle) .1测试原则 1.完全测试程序是不可能的  输入量太大  输出结果多  软件实现途径太多  软件说明书没有客观标准 2.软件测试是有风险的行为  如果试图测试所有情况,费用将大幅增加,软件缺陷漏掉的数量并不会费用上涨而显著下降。  如果减少测试或者错误地确定测试对象,那么费用很低,但是会漏掉大量软件缺陷。 (每个项目都有一个最优的测试量) 3.测试无法显示潜伏的软件缺陷 “Program testing can be used to show the presence of bugs but never to show their absence.” —Edsger W. Dijkstra, 1972 4.找到的软件缺陷越多,就说明软件缺陷越多