第5章 软件测试与维护-1.pptx
《第5章 软件测试与维护-1.pptx》由会员分享,可在线阅读,更多相关《第5章 软件测试与维护-1.pptx(84页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第5章 软件测试与维护5.1软件测试的基本概念 软件测试是发现软件中错误和缺陷的主要手段。为了保证软件产品的质量,软件开发人员通过软件测试发现产品中存在的问题,并对其进行及时的修改。可以说,软件测试的过程就是发现并改正软件缺陷的过程。软件缺陷是指软件产品中存在的问题,具体表现为用户所需的功能没有实现,无法满足用户的需求。缺陷的产生是不可避免的,软件测试的工作是必需的。在软件开发过程的任何阶段都可能引入缺陷。缺陷被引入的阶段越早,在软件开发的后期修复这些缺陷带来的成本损失就越大。软件测试是软件开发过程中的一个重要阶段。在软件产品正式投入使用之前,软件开发人员需要保证软件产品正确地实现了用户的需求
2、,并满足稳定性、安全性、一致性、完全性等各个方面的要求,通过软件测试对产品的质量加以保证。实际上,软件测试过程与整个软件开发过程是同步的,也就是说,软件测试工作应该贯穿于整个开发过程。5.1软件测试的基本概念 5.1.1软件测试的原则 软件测试是为了发现错误而执行程序的过程,它并不可能找出所有的错误,但是却可以减少潜在的错误或缺陷。人们在长期进行软件测试实践的过程中,不断地总结出一些软件测试的经验或原则,可供我们参考。(1)完全测试是不可能的。(2)测试中存在风险。(3)软件测试只能表明缺陷的存在,而不能证明软件产品已经没有缺陷。(4)软件产品中潜在的错误数与已发现的错误数成正比。(5)让不同
3、的测试人员参与到测试工作中。5.1软件测试的基本概念(6)让开发小组和测试小组分立,开发工作和测试工作不能由同一部分人来完成。(7)尽早并不断地进行测试,使测试工作贯穿于整个软件开发的过程中。(8)在设计测试用例时,应包括输入数据和预期的输出结果两个部分,并且,输入数据不仅应该包括合法的情况,还应该包括非法的输入情况。(9)要集中测试容易出错或错误较多的模块。(10)应该长期保留所有的测试用例。5.1软件测试的基本概念 5.1.2软件测试模型软件测试模型是指软件测试全部过程、活动或任务的结构框架。一个好的软件测试模型可以简化测试的工作,加速软件开发的进程。常用的软件测试过程模型有V模型、W模型
4、和H模型。5.1软件测试的基本概念 V模型是最具代表意义的测试模型,它是软件开发中瀑布模型的变种。V模型的重要意义在于它非常明确地表明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程的各阶段的对应关系。不难发现,在V模型中,测试工作在编码之后才能进行,所以在软件开发早期各个阶段引入的错误不能及时被发现。尤其是需求阶段的错误只有等到最后的验收测试才能被识别。对分析、设计阶段产生的错误不能及时发现并改正的缺点会对后期的修复工作带来诸多不便,造成更多资源的浪费和时间的延迟。5.1软件测试的基本概念 为了克服V模型开发和测试不能同步的问题,Evolutif公司发明了W模型,它在V模型
5、的基础上,增加了软件开发阶段中应同步进行的测试活动。W模型的最大优势在于,测试活动可以与开发活动并行进行,这样有利于及早地发现错误,但是W模型也有一定的局限性。在W模型中,需求、设计、编码等活动依然是依次进行的,只有上一阶段完全结束,才有可能开始下一阶段的工作。与迭代的开发模型相比,这种线性的开发模型在灵活性和对环境的适应性上有很大差距。5.1软件测试的基本概念 H模型强调测试的独立性和灵活性。在H模型中,软件测试活动完全独立,它贯穿于整个软件产品的生命周期,与其他流程并行进行。当软件测试人员认为测试准备完成,即某个测试点准备就绪时,就可以从测试准备阶段进入到测试执行阶段。5.2软件测试的分类
6、 软件测试可以从不同的角度划分为多种类型,如图所示。5.2软件测试的分类 下面介绍按照质量因素划分的软件测试分类。功能测试关注于软件产品的功能实现,以软件产品的需求规格说明书为依据,检验最终的软件产品是否实现了需求规格说明书中的所有功能需求。可靠性测试关注于程序输出结果的准确性,它以需求规格说明书中对系统的可靠性要求为依据,评测最终的软件产品提供准确输出结果的能力。可用性测试用来衡量处理服务请求时,应用程序的可用频率。顾名思义,它以需求规格说明书中对系统的可用性要求为依据。可用性和可靠性的区别在于,可用性衡量的是一个应用程序处理服务请求并且在最短时间内从故障中恢复的能力,而可靠性衡量的是应用程
7、序能够在多长时间内一直运行并且给出期望的结果值。5.2软件测试的分类 软件系统的性能包括多方面的因素,比如输入/输出数据的精度、系统的响应时间、更新频率、数据的转换和传送时间、操作方式或运行环境变化时软件产品的适应能力、故障处理能力、资源利用率等。性能测试主要针对软件产品各方面的性能因素,可以细分为负载测试、容量测试、压力测试。安全性测试主要验证系统的安全性、保密性等措施是否能有效地发挥作用,包括用户管理和访问控制、数据备份与恢复、入侵检测等。5.2软件测试的分类 软件测试还包括配置测试、兼容性测试、安装测试、文档测试、软件国际化测试、软件本地化测试、测试和测试等。配置测试考察软件系统是否能在
8、多种硬件平台上正常运行。兼容性测试是为了检测各软件之间是否能正确地交互和共享信息,它主要关注软件的运行平台和应用系统的版本、标准和规范、数据的共享性。安装测试是为了发现软件在安装过程中存在的错误,验证其与安装手册的内容是否一致。与安装测试相对应的还有卸载测试。文档测试是指检验软件产品的文档是否清晰、准确、一致。软件的国际化和本地化是相对应的。软件的国际化特性要求软件产品能够支持Unicode,支持不同时区的设定、显示和切换,消除一些不容易改变的设置等。测试和测试都是属于验收测试的范畴,是在系统测试之后,产品发布之前进行的测试过程的最后一个阶段。5.3 测试用例 5.3.1 测试用例编写为达到最
9、佳的测试效果或高效的揭露隐藏的错误而精心设计的少量测试数据并执行,称之为测试用例。简单的说,测试用例就是设计一种情况,软件程序在这种情况下,必须能够正常运行并且达到程序所设计的执行结果。我们不可能进行穷举测试,为了节省时间和资源,提高测试效率,必须要从数量极大的可用测试数据中精心挑选出具有代表性或特殊性的测试数据来进行测试。一个好的测试用例是在于它能发现至今未发现的错误。5.3 测试用例 5.3.2 测试用例设计 在测试用例设计过程中,有一些经验和方法可循。我们在接下来的章节中将会介绍其中的几种方法。在任何情况下都必须选择边界值分析方法。经验表明用这种方法设计出测试用例发现程序错误的能力最强;
10、必要时用等价类划分法补充一些测试用例;用错误推测法再追加一些测试用例;对照程序逻辑,检查已设计出的测试用例的逻辑覆盖度。如果没有达到要求的逻辑覆盖标准,应当再补充足够的测试用例;如果程序的功能说明中含有输入条件的组合情况,则可选用因果图法。从测试用例设计的角度,我们经常使用的软件测试方法主要包括黑盒测试和白盒测试。5.3 测试用例 5.3.3 测试用例场景 用例场景是通过描述流经用例的路径来确定的过程,这个流经过程要从用例开始到结束遍历其中所有基本流和备选流。5.4软件测试方法 按照执行测试时是否需要运行程序,软件测试可以划分为静态测试和动态测试。静态测试以人工测试为主,通过测试人员认真阅读文
11、档和代码,仔细分析其正确性、一致性及逻辑结构的正确性,从而找出软件产品中的错误或缺陷。静态测试对自动化工具的依赖性较小,通过人脑的思考和逻辑判断来查找错误,因而可以更好地发挥人的主观能动性。根据软件开发实践的总结,静态测试的成效非常显著,一般静态测试检测出的错误数可以达到总错误数的80%以上。5.4软件测试方法 审查和走查是静态测试的常用形式。审查是指通过阅读并讨论各种设计文档以及程序代码,来检查其是否有错。审查的工作可以独自进行,也可以通过会议的形式将相关的人员召集起来共同发现并纠正错误。而走查的对象只是代码,不包括设计文档。代码走查以小组会议的形式进行,相关测试人员提供所需的测试用例,参会
12、人员模拟计算机,跟踪程序的执行过程,对其逻辑和功能提出各种疑问,并通过讨论发现问题。总而言之,静态测试的效率比较高,而且要求测试人员具有丰富的经验。与静态测试不同的是,动态测试需要通过实际运行被测程序来发现问题。测试人员可以输入一系列的测试用例,通过观察测试用例的输出结果是否与预期相符来检验系统内潜在的问题或缺陷。动态测试中有两种非常流行的测试技术,即黑盒测试和白盒测试。5.5 黑盒测试 在黑盒测试里,测试人员把被测试的软件系统看成是一个黑盒子,并不需要关心盒子的内部结构和内部特性,而只关注软件产品的输入数据和输出结果,从而检查软件产品是否符合它的功能说明。与黑盒测试不同,白盒测试关注软件产品
13、的内部细节和逻辑结构,即把被测的程序看成是一个透明的盒子。不论是黑盒测试还是白盒测试,它们都可以发现被测系统的问题。但是由于它们侧重的角度不同,所以发现的问题也不尽相同。一般在软件测试的过程中,既要用到黑盒测试,又要用到白盒测试。大的功能模块采用黑盒测试,小的构件采用白盒测试。可以说,黑盒测试和白盒测试都是基于用例的测试方法,因为它们都通过运行测试用例来发现问题。根据设计用例的方法的不同,黑盒测试包括等价类划分法、边界值分析法、错误推测法、因果图法等,而白盒测试包括逻辑覆盖测试方法和基本路径测试等方法。下面将重点对黑盒测试和白盒测试进行详细的介绍。5.5 黑盒测试 5.5.1等价类划分法 等价
14、类划分是把程序的输入域划分为若干子集,然后从每个子集中选取少数具有代表性的数据用作测试用例,所选取的输入数据对于揭露程序中的错误都是等效的。对于测试来说,某个等价类的代表值与该等价类的其他值是等价的,因此可以把所有的输入数据划分为若干等价类,在每一个等价类中取少部分数据进行测试。等价类分为有效等价类和无效等价类。有效等价类是指对程序的规格说明是有意义的、合理的输入数据所构成的集合。无效等价类是指对程序的规格说明是无意义的、不合理的输入数据构成的集合。5.5 黑盒测试 在划分等价类时,有一些可供遵循的原则。(1)如果输入条件规定了取值范围或个数,则可确定一个有效等价类和两个无效等价类。例如,输入
15、值是选课人数,在0到100之间,那么有效等价类是“0学生人数100”,无效等价类是“学生人数100”。(2)如果输入条件规定了输入值的集合或是规定了“必须如何”的条件,则可确定一个有效等价类和一个无效等价类。例如,输入值是日期类型的数据,那么有效等价类是:日期类型的数据;无效等价类是:非日期类型的数据。(3)如果输入条件是布尔表达式,则可以分为一个有效等价类和一个无效等价类。例如,要求密码非空,则有效等价类为非空密码,无效等价类为空密码。5.5 黑盒测试(4)如果输入条件是一组值,且程序对不同的值有不同的处理方式,则每个允许的输入值对应一个有效等价类,所有不允许的输入值的集合为一个无效等价类。
16、例如,输入条件“职称”的值是初级、中级或高级,那么有效等价类应该有3个,即初级,中级,高级,无效等价类有一个,即其他任何职称。(5)如果规定了输入数据必须遵循的规则,则可以划分出一个有效的等价类(符合规则)和若干个无效的等价类(从不同的角度违反规则)。例如,在Pascal语言中对变量标识符规定为“以字母为开头的.串”,那么其有效等价类是“以字母开头的串”,而“以非字母开头的串”为其中的一个无效等价类。(6)如已划分的等价类各元素在程序中的处理方式不同,则应将此等价类进一步划分成更小的等价类,如最终用户与系统交互的提示。5.5 黑盒测试 划分好等价类后,就可以设计测试用例了。设计测试用例的步骤可
17、以归结为以下3步。(1)对每个输入和外部条件进行等价类划分,画出等价类表,并为每个等价类进行编号。(2)设计一个测试用例,使其尽可能多地覆盖有效等价类,重复这一步,直到所有的有效等价类被覆盖。(3)为每一个无效等价类设计一个测试用例。5.5 黑盒测试 5.5.2 边界值分析法人们从长期的测试工作经验中得知,大量的错误往往发生在输入和输出范围的边界上,而不是范围的内部。因此,针对边界情况设计测试用例,能够更有效的发现错误。边界值分析法是一种补充等价类划分法的黑盒测试方法,它不是选择等价类中的任意元素,而是选择等价类边界的测试用例。实践证明,这些测试用例往往能取得很好的测试效果。边界值分析法不仅重
18、视输入范围边界,也从输出范围中导出测试用例。通常情况下,软件测试所包含的边界条件有以下几种类型:数字、字符、位置、质量、大小、速度、方位、尺寸、空间等;对应的边界值应该在:最大/最小、首位/末位、上/下、最快/最慢、最高/最低、最短/最长、空/满等情况。5.5 黑盒测试 用边界值分析法设计测试用例时应当遵守几条原则:如果输入条件规定了取值范围,应以该范围的边界内及刚刚超范围的边界外的值作为测试用例。如以a和b作为输入条件,测试用例应当包括a和b,以及略大于a和略小于b的值;若规定了值的个数,应分别以最大、最小个数和稍小于最小和稍大于最大个数作为测试用例。例如,一个输入文件有1-300个记录,设
19、计测试用例时则可以分别设计有1个记录、300个记录以及0个记录和301个记录的输入文件;针对每个输出条件,也使用上面的两条原则;如果程序规格说明书中提到的输入或输出范围是有序的集合,如顺序文件、表格等,应注意选取有序集的第一个和最后一个元素作为测试用例;分析规格说明,找出其他的可能边界条件。5.5 黑盒测试 5.5.3 错误推测法错误推测法在很大程度上靠直觉和经验进行。它的基本想法是列举出程序中可能有的错误和容易发生错误的特殊情况,并且根据它们选择测试方案。例如,输入数据为零或输出数据为零往往容易发生错误;如果输入或输出的数目允许变化(如被检索的或生成的表的项数),则输入或输出的数目为0和1的
20、情况(如表为空或只有一项)是容易出错的情况。还应该仔细分析程序规格说明书,注意找出其中遗漏或省略的部分,以便设计相应的测试方案,检测程序员对这些部分的处理是否正确。5.5 黑盒测试 5.5.4 因果图法等价类划分法和边界值分析法都主要考虑的是输入条件,而没有考虑输入条件的各种组合以及各个输入条件之间的相互制约关系。然而,如果在测试时考虑到输入条件的所有组合方式,可能其本身非常大甚至是个天文数字。因此,必须考虑描述多种条件的组合,相应的产生多个动作的形式来考虑设计测试用例。这就需要利用因果图法。因果图法是一种黑盒测试方法,它从自然语言书写的程序规格说明书中寻找因果关系,即输入条件与输出和程序状态
21、的改变,通过因果图产生判定表。它能够帮助人们按照一定的步骤高效的选择测试用例,同时还能指出程序规格说明书中存在的问题。5.5 黑盒测试 在因果图中,用C表示原因,E表示结果,各节点表示状态,取值0表示某状态不出现,取值1表示某状态出现。因果图有四种关系符号,如图所示。5.5 黑盒测试 因果图约束符号5.5 黑盒测试 因果图法设计测试用例的步骤如下:分析程序规格说明书的描述中,哪些是原因,哪些是结果,原因常常是输入条件或输入条件的等价类,而结果常常是输出条件;分析程序规格说明书中描述的语义内容,并将其表示成连接各个原因与各个结果的因果图;由于语法或环境的限制,有些原因和结果的组合情况是不可能出现
22、的,为表明这些特定的情况,在因果图上使用若干特殊的符号标明约束条件;把因果图转化为决策表;为决策表中每一列表示的情况设计测试用例。5.5 黑盒测试 5.5.5决策表法在一些数据处理问题中,某些操作是否实施依赖于多个逻辑条件的取值。在这些逻辑条件取值的组合所构成的多种情况下,分别执行不同的操作。处理这类问题的一个非常有力的工具就是决策表。决策表(也称判定表)是分析和表达多逻辑条件下执行不同操作的情况的工具,可以把复杂逻辑关系和多种条件组合的情况表达的比较明确。决策表通常由4部分组成,如图所示。5.5 黑盒测试 决策表的建立应当根据软件规格说明书,分为以下几个步骤:确定规则个数;列出所有条件桩和动
23、作桩;填入条件项;填入动作项,制定初始决策表;简化,合并相似规则或者相同动作。在简化并得到最终决策表后,只要选择适当的输入,使决策表每一列的输入条件得到满足即可生成测试用例。5.5 黑盒测试 5.5.6 场景法现在软件很多都是用事件触发来控制流程,事件触发时的情形变形成场景,而同一事件不同的触发顺序和处理结果就形成了事件流。这种在软件设计中的思想也可以应用到软件测试中,可生动地描绘出事件触发时的情形,有利于测试者执行测试用例,同时测试用例也更容易得到理解和执行。用例场景是通过描述流经用例的路径来确定的过程,这个流经过程要从用例开始到结束遍历其中所有的基本流和备选流。基本流:采用黑直线表示,是经
24、过用例的最简单路径,表示无任何差错,程序从开始执行到结束;备选流:采用不同颜色表示,一个备选流可以从基本流开始,在某个特定条件下执行,然后重新加入基本流中,也可以起源于另一个备选流,或终止用例,不再加入到基本流中。5.5 黑盒测试 应用场景法进行黑盒测试的步骤如下:根据规格说明,描述出程序的基本流和各个备选流;根据基本流和各个备选流生成不同的场景;对每一个场景生成相应的测试用例;对生成的所有测试用例进行复审,去掉多余的测试用例,对每一个测试用例确定测试数据。5.5 黑盒测试 5.5.7 黑盒测试选择 此外,黑盒测试还有正交实验设计法等方法,本书不再展开叙述。黑盒测试的每种测试方法都有各自的优缺
25、点,需要测试人员根据实际项目特点和需要选择合适的方法设计测试用例。以下是选择方法的几条经验:在任何情况下都必须选择边界值分析方法。经验表明用这种方法设计出的测试用例发现程序错误的能力最强;必要时用等价类划分法补充一些测试用例;用错误推测法再追加一些测试用例;如果程序的功能说明中含有输入条件的组合情况,则可选用因果图法和决策表法。选择合适的测试方法能够极大地提高黑盒测试的效率和效果。除了上述的几条经验,还需要测试人员积累实际的测试经验,做出合适的选择。5.6 白盒测试 白盒测试,有时也称为玻璃盒测试,它关注软件产品的内部细节和逻辑结构,即把被测的程序看成是一个透明的盒子。白盒测试利用构件层设计的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第5章 软件测试与维护-1 软件 测试 维护
限制150内