毕业设计(论文)-软件测试方法与测试过程的分析与研究2.docx
- 文档编号:155640
- 上传时间:2022-10-04
- 格式:DOCX
- 页数:53
- 大小:140.89KB
毕业设计(论文)-软件测试方法与测试过程的分析与研究2.docx
《毕业设计(论文)-软件测试方法与测试过程的分析与研究2.docx》由会员分享,可在线阅读,更多相关《毕业设计(论文)-软件测试方法与测试过程的分析与研究2.docx(53页珍藏版)》请在冰豆网上搜索。
软件测试概念和目的
1.1.1软件测试的概念
软件测试是为了发现错误而执行程序的过程,测试只能找出程序中的错误,而不能证明程序无错。
也就是说软件测试就是使用人工或者自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。
它是帮助识别开发完成(中间或最终的版本)的计算机软件(整体或部分
)的正确度(correctness)、完全度(completeness)和质量(quality)的软件过程;是SQA(softwarequalityassurance)的重要子域。
1.1.2软件测试的目的
GrenfordJ.Myers曾对软件测试的目的提出过以下观点:
(1)测试是为了发现程序中的错误而执行程序的过程;
(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;
(3)成功的测试是发现了至今为止尚未发现的错误的测试。
然而,这种观点指出测试是以查找错误为中心,而不是为了演示软件的正确功能.但是只从字面意思理解,可能会产生误导,认为发现错误是软件测试的唯一目的,查找不出错误的测试就是没有价值的测试,实际上并非如此!
(1)测试并不仅仅是为了找出错误.通过分析错误产生的原因和错误的发生趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便及时改进;
(2)这种分析也能帮助测试人员设计出有针对性的测试方法 ,改善测试的效率和有效性;
(3)没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种方法。
1.1.3软件测试框图说明
错误
修复
错误
需求规
格说明
缺陷
解决
缺陷
错误
设计
缺陷隔离
缺陷
错误
编码
事故
缺陷分类
缺陷
测试
图1—1软件测试框图
1.2软件测试原则和分类
1.2.1软件测试的基本原则
为了进行有效的测试,测试工程师必须掌握软件测试的基本原则,软件测试的几大原则:
1.所有的测试都应追溯到用户需求;2.软件开发人员即程序员应当避免测试自己的程序;3.应尽早地和不断地进行软件测试;4.对测试用例要有正确的态度;5.人以群分,物以类聚,软件测试也不例外,一定要充分注意软件测试中的群集现象,即“Pareto原则”;6.严格执行测试计划,排除测试的随意性,以避免发生疏漏或者重复无效的工作;7.应当对每一个测试结果进行全面检查;8.妥善保存测试用例、测试计划、测试报告和最终分析报告,以备回归测试及维护之用。
在遵守以上原则的基础上进行软件测试,可以以最少的时间和人力找出软件中的各种缺陷,从而达到保证软件质量的目的。
1.2.2软件测试的分类
软件测试的技术和方法是多种多样的,对于软件测试技术,可以从不同的角度加以分类。
1.从是否关心软件内部结构和具体实现的角度(即按测试方法)划分为白盒测试和黑盒测试。
2.从是否执行程序的角度(即按测试方式)划分为静态测试和动态测试。
3.从软件开发的过程按阶段(即按测试过程)划分为单元测试、集成测试、确认测试、系统测试和验收测试。
这四个过程相互独立且顺序相接,依次进行。
4.从用户的需求(即测试目的)划分为功能测试、健壮性测试、接口测试和性能测试。
此外,按照测试目的划分还包括强度测试、压力测试、用户界面测试、安全测试、可靠性测试、安装\反安装测试、文档测试、恢复测试和兼容性测试
。
1.3软件测试的复杂性与经济性
1.3.1软件测试的复杂性
设计测试用例是一项细致并需要高度技巧的工作,稍有不慎就会顾此失彼,发生不应有的疏漏。
不论是黑盒测试方法还是白盒测试方法,由于测试情况数量巨大,都不可能进行彻底的测试。
所谓彻底测试,就是让被测程序在一切可能的输入情况下全部执行一遍。
通常也称这种测试为“穷举测试”。
“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。
实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。
“白盒”法是穷举路径测试,贯穿程序的独立路径数是天文数字,但即使每条路径都测试了仍然可能有错误。
第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。
第二,穷举路径测试不可能查出程序中因遗漏路径而出错。
第三,穷举路径测试可能发现不了一些与数据相关的错误。
e.w.dijkstra的一句名言对
测试的不彻底性作了很好的注解:
“程序测试只能证明错误的存在,但不能证明错误不存在”。
在实际测试中,穷举测试工作量太大,实践上行不通,这就注定了一切实际测试都是不彻底的。
当然就不能够保证被测试程序中不存在遗留的错误。
1.3.2软件测试的经济性
软件工程的总目标是充分利用有限的人力和物力资源,高效率、高质量地完成测试。
为了降低测试成本,选择测试用例时应注意遵守“经济性”的原则。
第一,要根据程序的重要性和一旦发生故障将造成的损失来确定它的测试等级;第二,要认真研究测试策略,以便能使用尽可能少的测试用例,发现尽可能多的程序错误。
掌握好测试量是至关重要的,一位有经验的软件开发管理人员在谈到软件测试时曾这样说过:
“不充分的测试是愚蠢的,而过度的测试是一种罪孽”。
测试不足意味着让用户承担隐藏错误带来的危险,过度测试则会浪费许多宝贵的资源。
第二章 软件测试基本技术
2.1软件测试技术概述
通常人们把软件测试技术归结为两大类:
白盒测试和黑盒测试。
白盒测试又可分为静态测试和动态测试。
静态测试技术不要求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试。
它 主要包括代码检查法、静态结构分析法等;动态测试技术是通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程。
它 主要包括程序插桩、逻辑覆盖、基本路径测试等。
黑盒测试一般可分为功能测试和非功能测试两大类;功能测试主要包括等价类划分、边值分析、因果图法、错误推测、功能图法等,主要用于软件确认测试;非功能测试主要包括使用性能测试、性能测试、强度测试、兼容性测试、配置测试、安全测试等。
对任何工程产品都可以使用白盒测试和黑盒测试两种方法之一进行测试。
2.2白盒测试技术
2.2.1白盒测试的概述
白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。
这一方法是把测试对象看作一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。
白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、Z路径覆盖、程序变异
。
白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。
逻辑覆盖测试分支结构,循环覆盖测试循环结构。
其中逻辑覆盖代码的覆盖深度是不同的,
从覆盖源程序语句的详尽程度分析包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
白盒法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。
白盒法是穷举路径测试。
在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
贯穿程序的独立路径数是天文数字。
但即使每条路径都测试了仍然可能有错误。
第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。
第二,穷举路径测试不可能查出程序中因遗漏路径而出错。
第三,穷举路径测试可能发现不了一些与数据相关的错误。
2.2.2白盒测试的工具
白盒测试目前主要用在具有高可靠性要求的软件领域,例如:
军工软件、航天航空软件、工业控制软件等等。
白盒测试工具在选购时应当主要是对开发语言的支持、代码覆盖的深度、嵌入式软件的测试、测试的可视化等。
对开发语言的支持:
白盒测试工具是对源代码进行的测试,测试的主要内容包括词法分析与语法分析、静态错误分析、动态检测等。
但是对于不同的开发语言,测试工具实现的方式和内容差别是较大的。
目前测试工具主要支持的开发语言包括:
标准C、C++、VisualC++、Java、VisualJ++、Visualun
it等。
不同的测试工具对于代码的覆盖能力也是不同的,通常能够支持修正条件判定覆盖的测试工具价格是极其昂贵的。
嵌入式软件的测试:
对于嵌入式软件的测试,我们还需要一方面进一步考虑测试工具对于嵌入式操作系统的支持能力,例如DOS、Vxworks、Neculeu
s、Linux和WindowsCE等;另一方面还需要考虑测试工具对于硬件平台的支持能力,包括是否支持所有64/32/16位CPU和MCU,是否可以支持 PCI/V
ME/CPCI总线。
测试的可视化:
白盒测试是工作量巨大并且枯燥的工作,可视化的设计对于测试来说是十分重要的。
在选购白盒测试工具时,应当考虑该款测试工具的可视化是否良好,例如:
测试过程中是否可以显示覆盖率的函数分布图和上升
趋势图,是否使用不同的颜色区分已执行和未执行的代码段显示分配内存情况实时图表等,这些对于测试效率和测试质量的提高是具有很大的作用的。
2.2.3白盒测试的方法介绍
1.白盒测试之基本路径法
白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、Z路径覆盖、程序变异
。
其中运用最为广泛的是基本路径测试法。
基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。
设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次。
在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例。
包括以下4个步骤和一个工具方法:
(1)程序的控制流图:
描述程序控制流的一种图示方法。
(2)程序圈复杂度:
McCabe复杂性度量。
从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。
(3)导出测试用例:
根据圈复杂度和程序结构设计用例数据输入和预期结
果。
(4)准备测试用例:
确保基本路径集中的每一条路径的执行。
基本路径测试的工具方法:
○1图形矩阵:
是在基本路径测试中起辅助作用的软件工具,利用它可以实
现自动地确定一个基本路径集。
○2程序的控制流图:
描述程序控制流的一种图示方法。
圆圈称为控制流图
的一个结点,表示一个或多个无分支的语句或源程序语句流图只有二种图形符号:
图中的每一个圆称为流图的结点,代表一条或多条语句。
流图中的箭头称为边或连接,代表控制流任何过程设计都要被翻译成控制流图。
如何根据程序流程图画出控制流程图呢?
在将程序流程图简化成控制流图时,应注意:
在选择或多分支结构中,分支的汇聚处应有一个汇聚结点。
边和结点圈定的区域叫做区域,当对区域计数时,图形外的区域也应记为一个区域。
基本路径测试法的步骤:
第一步:
画出控制流图
流程图用来描述程序控制结构。
可将流程图映射到一个相应的流图 (假设流程图的菱形决定框中不包含复合条件)。
在流图中,每一个圆,称为流图的结点,代表一个或多个语句。
一个处理方框序列和一个菱形决测框可被映射为一个结点,流图中的箭头,称为边或连接,代表控制流,类似于流程图中的箭头。
一条边必须终止于一个结点,即使该结点并不代表任何语句
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计 论文 软件 测试 方法 过程 分析 研究