软件测试及软件质量控制.ppt

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1
第六章
软件测试及软件 质量控制
2
软件系统的开发过程中,软件测试占据着重要地 位。尽管人们采取了多种保证软件质量的措施,由 于软件系统的客观复杂性,人们的主观认识不可能 完全符合客观实际,完美无缺,每个阶段的技术审 查也不可能毫无遗漏地查出和纠正所有的设计和分 析上的错误,在软件生命周期的各个阶段,都不可 避免地会产生差错,这些差错迟早会在软件的生产 和使用过程中暴露出来。
软件工程实践的经验表明,发现软件的时刻越晚,3 改正这些错误所花费的代价也越高,如果在软件投入 使用之前没有发现和纠正软件的大部分错误,人们付 出的代价会更高,往往会造成恶劣的后果。
从广义上来说,软件测试工作散布在软件生命周期 的各个开发阶段,人们认识到,软件测试是保证软件 质量的主要手段,各阶段的评审工作和验证工作,均 是广义概念上的测试工作。而主要的测试是在编码和 测试这两个阶段进行的。因此,狭义的软件测试就是 程序测试。
4
6.1 软件测试基本概念
G.J.Myers给出了关于测试的一些规则,被软件工 程领域认可: (1)测试是为了发现程序中的错误而执行程序的 过程; (2)好的测试方案极有可能发现迄今为止尚未发 现的错误; (3)成功的测试是发现了至今为止尚未发现的错 误。
5
6.1 软件测试基本概念
这些规则,实际上是软件测试的狭义概念——程 序测试。
狭义的软件测试:测试是为了发现错误而执行程 序的过程。是根据软件开发的各个阶段的说明和程 序的内部结构而精心设计的一批测试用例(有输入 数据及预期的结果),并利用这些测试用例执行程 序及发现错误的过程。
6
6.1 软件测试基本概念
广义的软件测试是对软件计划、软件系统分析、 软件设计、软件编码进行的查错活动,包括代码执行 和人工审查活动,测试的目的是找出软件生命周期的 各个阶段的错误,有利于以后进行修改和纠正。但测 试本身不修正错误,调试才会修正错误。即找错的活 动是测试;分析错误的性质与位置,进行纠错的活动 是调试,保证算法的正确实现。软件测试与程序测试 都是查找错误的活动,差别在于查找错误的范围不同。
7
6.1 软件测试基本概念
由于测试的目标是暴露程序的错误,从心理学角 度看,由设计者自己进行测试是不恰当的,设计小 组和测试小组应该分别设立,有利于进行客观和公 正的软件测试。测试是有限的,由于通常的测试过 程不可能穷尽一切情况,即使经过了严格的测试之 后,仍然可能存在没有被发现的错误隐藏在程序中, 不能证明程序中没有错误。
8
6.1 软件测试基本概念
因此,测试仅仅有可能找出程序的错误,测试不 能证明程序是正确的。软件工程中所有其它阶段都 是“建设性”的,软件工程师力图从抽象概念出发, 逐步设计出具体的软件系统,而测试人员的工作表 面上看却是“破坏性”的,竭力证明软件中含有错 误,不能按预定要求正确工作。凡是进行对比的方 式均可理解为测试验证。
9
6.1.2 软件测试的对象
软件测试应该贯穿于软件生命期的各个阶段,各 阶段的工作是相互衔接、相互影响的,前一阶段发生 的问题自然要影响到下一阶段的工作。为了把握各个 环节的正确性,人们需要进行各种确认和验证工作。
软件确认是广义上的软件测试,它是企图证明软件在 一个给定的外部环境中软件的逻辑正确性的一系列活 动和过程,如需求说明书的确认、程序的确认等。
10
6.1.2 软件测试的对象
• 程序的确认又分为静态确认与动态确认。
静态确认一般不在计算机上执行程序,而是通过 程序正确性证明、静态分析或人工分析来确认程序 的正确性;
动态确认主要通过动态分析和动态测试,用执行 程序的过程来检查执行的状态,确认程序是否有问 题;
11
6.1.2 软件测试的对象
正确性证明主要是企图绕过复杂的测试,直接证明 程序的正确性。
• 如程序的输入输出断言法。
设程序段为S,其前断言为P,后断言为R。如果执 行S以前P为真,则执行S后R也为真,则证明S是正确 的,记为{P}S{R}。
12
6.1.2 软件测试的对象
任何程序总可以分成S1、S2、… Sn个结点,对 应的断言为R1、R2、…、Rn,起初R1为输入断言, R2为输出断言,也是下一个输入断言,… Rn为最 后的输出断言,我们总可以,将S1、S2、… Sn逐 个证明,自顶向下或自底向上都可证明程序的正确 性,该分支已发展为计算机代数学;
13
6.1.2 软件测试的对象
软件验证也属于广义上的软件测试,它试图证明在 软件生命期的各个阶段、各阶段的逻辑协调性、完备 性和正确性。
包括系统分析员理解用户要求的正确性、表达的正 确性、设计人员对需求规格说明理解的正确性、设计 与设计表达的正确性、程序编码的正确性和运行软件 程序时输入的正确性、运行结果的正确性等,运行结 果与用户预期的结果是否一致等,这说明任何一个环 节上发生了问题都可能在软件测试中表现出来。
14
6.1.3 测试信息流
将测试的过程用数据流图表示,可得测试信息流 如图6-1所示。
软件配置 1 测试结果 2 错误
测试配置
测试结果
测试工具 测试
评价
(至软件配置) 3 修正的软件
调试 正确
预测结果
出错率 4 数据 可靠性
分析
图6-1 测试信息流
15
6.1.3 测试信息流
1.测试过程需要三类输入:
(1)软件配置:包括软件开发文档(用户文档、 需求规格说明、软件设计说明、源程序代码)、目 标执行程序、数据结构;
(2)测试配置:包括测试计划、测试用例、测试 驱动程序等;实际上在整个软件开发过程中,测试 配置只是软件配置的一个子集;
16
6.1.3 测试信息流
(3)测试工具:为提高软件测试效率,使用测 试工具为测试工作服务;如:测试数据自动生成 程序,静态分析程序、动态分析程序、测试结果 分析程序及标准例程测试数据库等。
17
6.1.3 测试信息流
测试之后,对所有测试结果进行分析,将实际 测试的结果与预期的结果进行比较。如果发现出 错的数据,则意味着软件有错误,需要纠错,应 进行调试,确定错误的位置和出错的性质,改正 这些错误,同时修正相关文档。修正过的文档一 般需经过再次测试,直到通过测试为止。
相关文档
最新文档