软件安全测试概述模版课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《软件安全测试概述模版课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 安全 测试 概述 模版 课件
- 资源描述:
-
1、第十五章软件安全测试 质量保证活动是软件开发过程中重要的环节,而软件测试是软件质量保证的关键手段。实际上,软件测试的工作量,在软件开发过程中占据较大的一部分,测试做得好,会大大降低维护的成本。测试的主要目标是找到软件中存在的错误,并加以排除,最终把一个高质量的软件系统交给用户使用。随着应用的广泛,软件的安全性也就越来越成为软件的关键质量指标,因此,针对安全问题的测试又显得更为重要。本章主要针对安全测试和评审问题进行概述,首先讲解了软件测试的概念、目的、意义和方法,然后阐述了针对安全问题的软件测试,并对这些测试方法进行了一些分类。15.1 软件测试概述15.1.1 软件测试的概念IEEE对软件测
2、试给出的定义是:“使用人工或者自动手段来运行或测定某个系统,其目的在于检测该系统是否满足规定的需求,或者弄清楚预期的结果与实际结果的差别。”,因此,软件测试,实际上是为了发现软件中的错误,并在交付用户使用前解决这些错误,这几乎成为一个公认的概念。这里的“错误”,实际上是一个广义的概念,初学者往往会将其理解为“编码错误”,实际上,能够引起软件错误的因素很多,绝不仅仅是编码方面的原因,包括很广泛的内容:软件的需求分析者曲解了用户的需求,测试时发现实现软件的需求分析者曲解了用户的需求,测试时发现实现的流程和用户的叙述不一样;的流程和用户的叙述不一样;软件的设计者在设计时没有考虑某些现场因素,导致软软
3、件的设计者在设计时没有考虑某些现场因素,导致软件在真实环境下测试时无法正常运行;件在真实环境下测试时无法正常运行;软件编码者粗心大意,将某些逻辑流程写错,使得程序软件编码者粗心大意,将某些逻辑流程写错,使得程序得不到料想的结果;等等。得不到料想的结果;等等。15.1.2 软件测试的目的和意义由此可见,软件测试的根本目标是尽可能多地发现并排除软件中潜藏的错误,最终把一个高质量的软件系统交给用户使用。Grenford J.Myers曾对软件测试的目的提出过以下观点:测试是为了发现程序中的错误而执行程序的过程;测试是为了发现程序中的错误而执行程序的过程;好的测试方案是极可能发现迄今为止尚未发现的错误
4、好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;的测试方案;成功的测试是发现了至今为止尚未发现的错误的测试。成功的测试是发现了至今为止尚未发现的错误的测试。不过,我们并不能说,软件测试效果的评价指标就是查出错误的个数,认为查不出错误的测试就是没有价值的测试,这是片面的,因为:没有发现错误,或者发现错误较少的测试,也是有价没有发现错误,或者发现错误较少的测试,也是有价值的,可能说明软件质量较高,因此,测试同时也是值的,可能说明软件质量较高,因此,测试同时也是评定软件质量的一种标准;评定软件质量的一种标准;发现很多错误的测试,不一定是成功的,如果软件本发现很多错误的测试,不一定是成功的,
5、如果软件本身质量较低,那么不能通过发现错误的个数越多,来身质量较低,那么不能通过发现错误的个数越多,来得出软件剩下的错误越少的结论;当前发现的错误越得出软件剩下的错误越少的结论;当前发现的错误越多,可能剩下的错误也很多。多,可能剩下的错误也很多。从另一角度讲,通过软件测试找到错误,我们除了能够解决错误外,还可以通过分析错误产生的原因和错误的发生趋势,帮助软件的生产者发现当前软件开发过程中的缺陷,以便及时改进;另外,通过对错误进行分析,也可以帮助测试人员设计出更加有针对性的测试方法,提高测试工作的效率和效果。软件测试的意义主要体现在:减少软件中错误:通过软件测试可以发现软件中存在的错误,通减少软
6、件中错误:通过软件测试可以发现软件中存在的错误,通过完全地修改这些错误,可以减少软件中错误,提高软件的可靠过完全地修改这些错误,可以减少软件中错误,提高软件的可靠性;性;评估软件的综合性能:通过软件测试,对发现的错误进行分析和评估软件的综合性能:通过软件测试,对发现的错误进行分析和统计,可以评估软件综合性能。当然,即使软件测试没有发现任统计,可以评估软件综合性能。当然,即使软件测试没有发现任何错误,也可以作为评估软件综合性能的手段;等等。何错误,也可以作为评估软件综合性能的手段;等等。15.1.3 软件测试方法从实际项目的测试工作划分,软件测试工作可以划分为以下几个过程:单元测试:对用软件的每
7、一个程序单元进行测试,检查各个程序单元测试:对用软件的每一个程序单元进行测试,检查各个程序模块的正确性;并配合适当的代码审查;模块的正确性;并配合适当的代码审查;集成测试:把已测试过的模块组装起来,以便发现与接口有关的集成测试:把已测试过的模块组装起来,以便发现与接口有关的问题,如:数据模块间传递、模块组合性能、模块调用性能等;问题,如:数据模块间传递、模块组合性能、模块调用性能等;确认测试:检查软件是否满足了需求规格说明书中的各种需求,确认测试:检查软件是否满足了需求规格说明书中的各种需求,以及软件配置是否完全、正确;该测试又叫做验收测试,目的是以及软件配置是否完全、正确;该测试又叫做验收测
8、试,目的是验证软件的有效性;验证软件的有效性;系统测试:把已经通过验收的软件,放入实际运行环境中运行;系统测试:把已经通过验收的软件,放入实际运行环境中运行;用户记录在测试过程中遇到的一切问题,定期报告给开发者。用户记录在测试过程中遇到的一切问题,定期报告给开发者。这几个测试过程,从软件开发生命周期的一开始就应该执行,因此,测试在软件工程中的地位如图所示:软件测试的方法,可以有很多种分类,第一种分类是静态测试方法和动态测试方法。w 1:静态测试方法。该方法中,不实际运行被测试的软件,对软件进行分析、检查和审阅,来寻找逻辑错误。主要工作包括:对需求规格说明书、软件设计说明书、源程序做检查和审阅;
9、对需求规格说明书、软件设计说明书、源程序做检查和审阅;检查以上工作是否符合标准和规范;检查以上工作是否符合标准和规范;通过结构分析、流图分析等方法,指出软件缺陷;通过结构分析、流图分析等方法,指出软件缺陷;对各种文档进行测试;等等。对各种文档进行测试;等等。静态测试是软件开发中十分有效的质量控制方法之一。该方法特别是在软件开发生命周期的早期和中期阶段非常有效。此时,由于程序还没有编出来,可以直接运行的代码尚未产生,此时又必须对设计的一些思路进行检查或者审核,因为初期的工作的质量可能直接关系到软件开发的成本,因此,在这些阶段,可以大量采用静态测试方法。静态测试主要靠人工来完成,不过,近些年来,也
10、开发了不少自动化的工具,进行计算机辅助测试,但是,短期内想要实现其测试的自动化,难度较大。静态测试的质量更多地依赖于测试的组织和测试者的水平,定性地分析软件质量的情况居多,具有一定的局限性。w2:动态测试法。动态测试和静态测试不同,在测试的过程中,实际运行软件,检测软件的动态行为和运行结果的正确性。动态测试包括两个基本要素:一是被测软件;二是在软件运行过程中的输入数据,每一次测试需要的测试数据叫做测试用例。因此,动态测试一般在软件编码阶段完成之后进行。动态测试由于其比较强的错误检测能力,受到了广泛的采用。动态测试的过程是:设计一个测试用例,输入到程序中;设计一个测试用例,输入到程序中;看预期结
11、果和实际运行结果是否一样;看预期结果和实际运行结果是否一样;得出最后结论。得出最后结论。动态测试方法中,其最大的难度是测试用例的设计,因为如果要进行穷举性测试,完全是不可能的。另一种分类方法是从对程序内部结构的可见性来分,分为黑盒测试和白盒测试。w 1:黑盒测试方法。黑盒测试又称为功能测试。用该方法进行测试时,被测程序被当做一个黑盒,测试者无需知道程序内部结构,只需要知道程序的输入、以及输出是否和预期输出相符。用例设计方法有:等价类划分法;等价类划分法;边界值分析法;边界值分析法;因果图法;等等。因果图法;等等。w2:白盒测试方法。白盒测试又称结构测试或逻辑驱动测试。用该方法进行测试时,测试者
12、必须了解被测程序的内部结构,根据被测程序的内部构造设计测试用例。在白盒测试的过程中,需要测试用例的设计对被测程序的结构做到一定程度的覆盖。常见的测试用例设计方法有:基本路径法;基本路径法;条件测试法;条件测试法;循环测试法;等等。循环测试法;等等。将软件测试划分为静态测试和动态测试,与划分为黑盒测试和白盒测试,是没有矛盾的,两种方法互相渗透。一般情况下,静态测试只利用白盒测试法,动态测试则使用了黑盒测试与白盒测试;从另一个角度说,黑盒测试一般都是用于动态测试,而白盒测试一般可以用于静态测试和动态测试。15.2 针对软件安全问题的测试15.2.1 软件安全测试的必要性安全测试,在充分考虑软件安全
13、性问题的前提下进行的测试,普通的软件测试的主要目的是:确保软件不会去完成没有预先设计的功能,确保软件能够完成预先设计的功能。但是,安全测试更有针对性同时可能采用一些和普通测试不一样的测试手段,如攻击和反攻击技术。因此,实际上,安全测试实际上就是一轮多角度、全方位的攻击和反攻击,其目的就是要抢在攻击者之前尽可能多地找到软件中的漏洞以减少软件遭到攻击的可能性。安全测试基于软件需求说明书中关于安全性的功能需求说明,测试的内容主要是:软件的安全功能实现是否与安全需求一致。通常情况下,软件的安全需求包括:数据保密和完整可用;数据保密和完整可用;通信过程中的身份认证、授权、访问控制;通信过程中的身份认证、
14、授权、访问控制;通信方的不可抵赖;通信方的不可抵赖;隐私保护、安全管理;隐私保护、安全管理;软件运行过程中的安全漏洞;等等。软件运行过程中的安全漏洞;等等。以一个Web网站为例。需要考虑的问题参见表15-1。因此,软件安全测试和一般的测试具有很大的区别。一般测试主要是确定软件的功能能否达到,如果没有达到,就进行修改,其任务具有一定的确定性。但是,安全测试主要是检查软件所达到的功能是否安全可靠,需要证明的是软件不会出现安全方面的问题,如:数据篡改;数据篡改;非授权访问;非授权访问;遭受遭受DoS攻击;等等。攻击;等等。15.2.2 软件安全性测试的过程软件的安全测试,一般根据设计阶段的威胁模型来
15、实施。在第一章我们讲到,安全问题,应该从设计阶段就开始考虑,设计要尽可能完善。并提出了采用威胁建模的方法来在软件设计阶段加入安全因素的考量。威胁建模过程一般如下:1:在项目组中成立一个小组,该小组中的人员是项目组中对安全问题:在项目组中成立一个小组,该小组中的人员是项目组中对安全问题比较了解的人;比较了解的人;2:站在安全角度,分解系统的安全需求需求;:站在安全角度,分解系统的安全需求需求;3:确定系统可能面临的威胁,将威胁进行分类,可以画出威胁树;:确定系统可能面临的威胁,将威胁进行分类,可以画出威胁树;4:选择应付威胁或者缓和威胁的方法;:选择应付威胁或者缓和威胁的方法;5:确定最终解决这
展开阅读全文