《软件测试》PPT课件.ppt

上传人:小飞机 文档编号:4860803 上传时间:2023-05-20 格式:PPT 页数:78 大小:215KB
返回 下载 相关 举报
《软件测试》PPT课件.ppt_第1页
第1页 / 共78页
《软件测试》PPT课件.ppt_第2页
第2页 / 共78页
《软件测试》PPT课件.ppt_第3页
第3页 / 共78页
《软件测试》PPT课件.ppt_第4页
第4页 / 共78页
《软件测试》PPT课件.ppt_第5页
第5页 / 共78页
点击查看更多>>
资源描述

《《软件测试》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《软件测试》PPT课件.ppt(78页珍藏版)》请在三一办公上搜索。

1、第9章 软件测试,软件测试的目的:第一,是确认软件的质量,一方面是确认软件做了你所期望的事情(Do the right thing),另一方面是确认软件以正确的方式来做了这个事件(Do it right)。第二,是提供信息,比如提供给开发人员或程序经理的反馈信息,为风险评估所准备的信息。第三,软件测试不仅是在测试软件产品的本身,而且还包括软件开发的过程。,9.1 软件测试概述,软件就是为了在计算机上实现某些任务而产生的指令代码和数据集合,当然这也包括了所有与指令代码和数据集合相联系的表示方法。换句话说,软件不但包含了程序源代码和数据文件,还包含了所有在需求、分析设计等阶段产生的模型的表示方法(

2、包括大量的标准输出工件、数据设计模型、设计设计模型、远景规划、风险列表等等)。“因为认识的不成熟,所以工作范围局限在编码上。”,“测试”关键词在ISO9000中是这样被定义的:测试是一种基于机器的,对代码执行测试,确认测试的活动。,1983年,IEEE(国际电子电气工程师协会)提出的软件工程标准术语中给软件测试下的定义是:使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。该定义包含了两方面的含义:(1)是否满足规定的需求。(2)是否有差别。,软件测试和修复扩展后的测试定义是:测试是发现并指出软件(包含软件经过建模、需求、设计等

3、阶段所产生的大量输出工件)中存在缺陷的过程,这个过程指明和标注问题存在的正确位置,详细记录导致问题出现的操作步骤,及时储存当时的错误状态,以上组合在一起便于测试后问题能够准确再现。,(1)发现问题。(2)记录问题。(3)跟踪问题。(4)再现问题。(5)历史数据。,关于软件测试的一些常用术语(1)测试(2)测试用例(3)测试步骤,软件测试的目的,(1)验证软件需求和功能是否得到完整实现。(2)验证软件是否可以发布使用。(3)发现软件系统的缺陷、错误及不足。(4)获取软件产品的质量信息。(5)预防下一版本可能出现的问题。(6)预防用户使用软件时可能出现的问题。(7)提前发现开发过程中的问题和风险。

4、(8)提供可以用以分析的测试结果数据。,软件测试涉及的关键问题,(1)测试的执行。(2)测试内容。(3)测试时间。(4)测试过程。(5)测试停止的标准。,软件测试的原则和特点,根据软件的测试目的,在测试过程中需要遵循的测试原则为:(1)应当尽早地、不断地进行软件测试。(2)测试用例应当包含合理的和不合理的输入数据。(3)测试用例应由测试数据和与之对应的预期结果两部分组成。(4)软件中的程序应被多方测试。(5)错误数比较多的程序应重点测试。(6)严格执行测试计划。(7)需要对每个测试结果做全面的检查。(8)妥善保存测试的各项数据资料。,软件测试的特点,(1)完全测试程序是不可能的。(2)软件测试

5、是有风险的行为。(3)测试无法显示潜在的软件缺陷。(4)发现的缺陷越多,说明软件缺陷越多。,软件测试的重要性,软件所带来的悲剧p226229,测试是软件开发的重要环节之一,在GJ.Myers的经典著作软件测试技巧中给出了测试的定义:“程序测试是为了发现错误而执行程序的过程。”测试的目的是发现程序中的错误,是为了证明程序有错,而不是证明程序无错。在软件开发过程中,分析、设计与编码等工作都是建设性的,唯独测试似乎带有“破坏性”。测试可视为分析、设计和编码3个阶段的“最终复审”,在软件质量保证中具有重要地位。为了确保软件的质量,较理想的做法应该是对软件的开发过程,按软件工程各阶段形成的结果,分别进行

6、严格的审查。,软件测试在软件生命周期中占据重要的地位,在传统的瀑布模型中,软件测试学仅处于运行维护阶段之前,是软件产品交付用户使用之前保证软件质量的重要手段。近来,软件工程界趋向于一种新的观点,即认为软件生命周期每一阶段中都应包含测试,从而检测本阶段的成果是否接近预期的目标,尽可能早地发现错误并加以修正,如果不在早期阶段进行测试,错误的延时扩散常常会导致最后成品测试的巨大困难。,事实上,对于软件来讲,不论采用什么技术和什么方法,软件中仍然会有错。采用新的语言、先进的开发方式、完善的开发过程,可以减少错误的引入,但是不可能完全杜绝软件中的错误,这些引入的错误需要测试来找出,软件中的错误密度也需要

7、测试来进行估计。测试是所有工程学科的基本组成单元,是软件开发的重要组成部分。自有程序设计的那天起测试就一直伴随着。,9.2 软件测试的分类及测试内容,按是否需要执行被测试软件的角度来分:静态测试动态测试,从测试是否针对系统的内部结构和具体实现算法的角度来分:白盒测试黑盒测试灰盒测试,按测试范围角度来分:单元测试组件测试集成测试系统测试验收测试安装测试,按测试对象来分:单元测试组件测试模块测试程序测试系统测试文档测试。,按测试过程来分:需求阶段的测试设计阶段的测试程序阶段的测试测试结果的评估安装测试验收测试测试变化:维护。,其他测试技术和方法:回归测试压力测试恢复测试安全测试兼容性测试,白盒测试

8、,白盒测试又称结构测试或逻辑驱动测试。所谓“白盒”是指将测试对象看做一个打开的盒子,测试人员可利用程序内部的逻辑结构及有关的信息来设计或选择测试用例。因此白盒测试主要考虑的是测试用例对程序内部逻辑的覆盖程度,而不考虑程序的功能。用例对程序的覆盖程度从低到高分别为:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖。,阅读教材p231234,黑盒测试,等价类划分边缘值分析法因果图法错误推测法教材p234236,灰盒测试,白盒法和黑盒法有其自身的特点,但也都存在着明显的不足,它们的不足之处主要表现在只考虑了程序某一方面的属性和特征,而没有综合考虑。这样,如果要进行较全面的程序测试,就不得不把

9、测试工作分成两次进行:用白盒法测试一次,再用黑盒法测试一次。这样做不仅浪费时间,而且测试的效果不一定好。灰盒法正是基于这一点提出的。,路径/等价法路径/边界值法教材p236238,9.3 软件测试的规范,软件测试规范就是对软件测试流程的过程化,并对每一个过程的元素进行明确界定,形成完整的规范体系。软件测试规范可分为行业规范与操作规范,行业规范主要是指软件行业长期总结形成的通用规范,而操作规范则指某一公司在长期的软件测试工作中总结出属于企业自己的规范,特别是对于专业提供测试服务的企业,这种操作规范内容与实施情况往往是其取得软件开发商信任的法宝。,一个完整的软件测试规范应该包括规范本身的详细说明,

10、比如规范目的、范围、文档结构、词汇表、参考信息、可追溯性、方针、过程规范、指南、模板、检查表、培训工具、参考资料等。,软件测试过程中一般会从以下几个方面入手来规范过程,并在每个子过程明确角色、职责、活动描述及所需资料。角色的确定;进入的准则;输入项;活动过程;输出项;验证与确认;退出的准则;度量。具体描述见教材p239243,9.4 软件性能测试,软件性能一般是指用以标识、评估软件在特定环境下完成任务的若干种指标,软件每种性能都对应有一个或多个指标,这些软件达到的指标可以通过公式计算或评估出来,这些指标是对软件的质量和营利能力的真实反映。,历史上只有性能优异的软件才能生存下来,性能差的软件的最

11、终结果是走向消亡。,进行性能测试的原因,(1)通过性能测试可以为选择最优的设计方案提供依据。(2)通过性能测试可以评估软件中的瓶颈和不足之处,为改进软件提供依据。,常用的软件性能指标,(1)事务处理时间。(2)最大的事务处理时间。(3)事务操作时间。(4)IO性能。(5)数据库性能。(6)空间利用率。(7)最大消耗的内存量。(8)高峰内存时间。(9)初始化退出时间。(10)CPU利用率。,性能测试过程,9.5 软件安全性测试,软件安全属于软件领域里一个重要的子领域。,安全的基本概念软件安全和网络安全关注的问题层面不同,一个良好的安全的系统必须要具备多个层面的安全,简单地说可以将安全问题分为以下

12、5个层面的安全:(1)物理层的安全。(2)网络层的安全。(3)操作系统层的安全。(4)应用程序层的安全。(5)第三方的安全。,数据安全数据安全包括数据存储安全和数据传输安全两个方面。数据存储安全要求数据必须有权限控制、加密保存等。对数据的权限控制常通过访问控制列表(ACL)来解决,不同权限的用户只能操作自己权限范围内的数据。权限设置原则就是每个用户只访问他需要的数据,按最小权限原则进行设置。,数据传输安全是网络安全的一个重要内容,要实现数据传输安全需要满足三个条件:身份验证、数据加密、签名。(1)身份验证。(2)数据加密。(3)签名。,常见安全性缺陷和攻击手段,(1)缓冲区溢出从测试空间的理论

13、来分析,造成缓冲区溢出问题通常有以下两种原因:设计空间的转换规则的校验问题局部测试空间和设计空间不足,(2)加密弱点使用不安全的加密算法加密数据时,由于密码是由伪随机算法产生的,产生伪随机数的方法存在缺陷会使密码很容易被破解身份验证算法存在缺陷。客户机和服务器时钟未同步,给攻击者足够的时间来破解密码或修改数据;未对加密数据进行签名,导致攻击者可以篡改数据;身份验证的方式存在弱点,(3)错误处理。一般情况下,错误处理都会返回一些信息给用户,返回的出错信息可能会被恶意用户利用来进行攻击,恶意用户能够通过分析返回的错误信息知道下一步要如何做才能使攻击成功。如果错误处理时调用了一些不该有的功能,那么错

14、误处理的过程将被利用。,(4)权限过大。如果给程序赋予了过大的权限,就可能导致被只有普通用户权限的恶意用户利用来进行攻击,如果没有对能操作的内容做出限制,可能导致用户可以访问超出规格范围的其他资源。,(5)拒绝服务。拒绝服务攻击是一种非常有名的攻击手段,经过数年的发展,拒绝服务攻击演变出了许多种类型的攻击手段。首先,电信层的通信设备如路由器要保证网络数据获得公平流量,避免某台机器的流量远大于其他机器的流量。其次,要在操作系统网络协议层进行必要的抗DOS保护,然后应用程序自身还要杜绝拒绝服务攻击。,应用程序层的拒绝符文问题主要来自于某个用户在给定的时间里占用过多的资源。要避免拒绝服务攻击,以下两

15、条原则是必须遵守的:避免大尺寸资源的访问限时限量措施,(6)网络协议缺陷。网络协议方面的缺陷也是很容易被利用的,DOS攻击就充分利用了TCPIP协议的三次握手协议里的缺陷。,限时处理测试流量限制测试资源限制测试,(7)木马攻击,软件安全测试过程,安全性测试在常规测试的基础之上进行,测试用例设计要遵循宁可重复不可遗漏的原则。划分测试空间时,要遵从高覆盖率划分原则。,大部分软件的安全测试都是依据缺陷空间反向设计原则来进行的,即事先检查哪些地方可能存在安全隐患,然后针对这些可能的隐患进行测试。采取反向设计原则来进行测试的好处是可以对已知的缺陷进行分析,避免软件里存在已知类型的缺陷,但是对未知的攻击手

16、段和方法通常会无能为力。为了规避反向设计原则所带来的测试不完备性,需要一种正向的测试方法和过程来对软件进行比较完备的测试,使测试过的软件能够预防未知的攻击手段和方法。,正向测试过程,(1)标识测试空间。(2)精确定义设计空间。(3)设计空间的转换规则定义。(4)标识安全隐患。(5)建立入侵矩阵。(6)验证入侵矩阵。,反向测试过程,(1)建立缺陷威胁模型(2)寻找入侵点(3)已知漏洞的扫描(4)入侵矩阵的验证测试,9.6 测试报告,9.7 调试,调试(也称为纠错)作为成功测试的后果出现,也就是说,调试是在测试发现错误之后排除错误的过程。调试就是把症状和原因联系起来的尚未被人深入认识的智力过程。,

17、调试目的,测试的目的是尽可能多地找出软件中的错误。成功地测试后,软件需要调试。调试又称为纠错、排错,调试的目的就是找出产生错误的原因和产生错误的准确位置,并进行改正、排除错误。调试的活动由两部分组成:确定程序中错误的性质和位置;对程序进行修改,排除这个错误。,调试是通过现象找原因的思维分析过程。程序修改过程应注意:(1)在出现错误的地方很可能还有别的错误。(2)不要只修改错误的征兆和表现,要找到产生错误的真正原因,修改错误的本质。(3)当心修改一个错误时可能引入新的错误。(4)不要试图直接修改目标代码来修改错误,应当修改源程序。,调试方法,强行排错法(1)输出内存储器的信息。(2)在程序中插入

18、打印语句。(3)利用自动调试工具。,回溯法回溯是一种相当常用的调试方法,当调试小程序时这种方法是有效的。具体做法是:从发现症状的地方开始,人工沿程序的控制流往回追踪分析源程序代码,直到找出错误原因为止。,对分查找法对分查找法的方法是把程序以某一个关键点划分成两部分(程序段),在该关键点输入变量的正确值,如果输出正确,则错误在上半部分,否则在下半部分。,归纳法归纳法是一种从特殊推断一般的方法,由错误征兆、线索推出错误的根源。主要有4个步骤:(1)收集有关数据(2)组织数据,整理这些数据以便发现规律(3)导出假设。(4)证明假设。,演绎法演绎法是一种从一般原理或前提出发,经过排除和细化的过程,推导

19、出结论的方法。列举所有可能产生错误的原因或假设,然后进行分析,从中逐个排除不可能的原因或者假设,最后证明剩下的原因是错误的根源。,主要有4个步骤:(1)设想可能的原因。(2)用已有的数据排除不正确的假设。(3)细化剩下的假设。(4)证明剩下的假设。,一旦找到错误就必须改正它,但是,改正一个错误可能引入更多的其他错误,以至“得不偿失”。因此,在动手改正错误之前,软件工程师应该仔细考虑下述3个问题。,(1)是否同样的错误也在程序其他地方存在?(2)将要进行的修改可能会引入的“下一个错误”是什么?(3)为防止今后出现类似的错误,应该做什么?,调试过程,调试不是测试,但是它总是发生在测试之后。调试过程

20、从执行一个测试用例开始,评估测试结果,如果发现实际结果与预期结果不一致,则这种不一致就是一个症状,它表明在软件中存在着隐藏的问题。调试过程试图找出产生症状的原因,以便改正错误。,调试过程总会有以下两种结果之一:找到了问题的原因并把问题改正和排除掉了;没找出问题的原因。在后一种情况下,调试人员可以猜想一个原因,并设计测试用例来验证这个假设,重复此过程直至找到原因并改正了错误。,调试是软件开发过程中最艰巨的脑力劳动。调试工作如此困难,可能心理方面的原因多于技术方面的原因,但是,软件错误的下述特征也是相当重要的原因。,(1)症状和产生症状的原因可能在程序中相距甚远,也就是说,症状可能出现在程序的一个部分,而实际的原因可能在与之相距很远的另一部分。紧耦合的程序结构更加剧了这种情况。(2)当改正了另一个错误之后,症状可能暂时消失了。(3)症状可能实际上并不是由错误引起的(例如,舍入误差)。,(4)症状可能是由不易跟踪的人为错误引起的。(5)症状可能是由定时问题而不是由处理问题引起的。(6)可能很难重新产生完全一样的输入条件(例如,输入顺序不确定的实时应用系统)。,(7)症状可能时有时无,这种情况在硬件和软件紧密地耦合在一起的嵌入式系统中特别常见。(8)症状可能是由分布在许多任务中的原因引起的,这些任务运行在不同的处理机上。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号