软件开发流程实训教程 第7章 软件测试.ppt
《软件开发流程实训教程 第7章 软件测试.ppt》由会员分享,可在线阅读,更多相关《软件开发流程实训教程 第7章 软件测试.ppt(97页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第7 7章章 软件测试软件测试【本章引言本章引言】在软件开发流程中,软件测试阶段就是软件质量保在软件开发流程中,软件测试阶段就是软件质量保证的关键步骤。在软件投入运行前,对软件需求分证的关键步骤。在软件投入运行前,对软件需求分析、设计规格说明和编码等软件生命周期的各个阶析、设计规格说明和编码等软件生命周期的各个阶段进行最终复审。段进行最终复审。【教学目标教学目标】了解软件测试流程和方法;了解软件测试流程和方法;熟悉测试用例的概念和编写样式;熟悉测试用例的概念和编写样式;掌握测试报告设计方法和书写标准;掌握测试报告设计方法和书写标准;灵活运用黑盒测试、白盒测试的各种具体策略进行灵活运用黑盒测试
2、、白盒测试的各种具体策略进行实例设计。实例设计。第七章第七章 软件测试软件测试 7.1 7.1 软件测试概述软件测试概述 7.2 7.2 软件测试与软件开发流程的关系软件测试与软件开发流程的关系 7.3 7.3 软件测试方法划分软件测试方法划分 7.4 7.4 黑盒测试的相关方法黑盒测试的相关方法 7.5 7.5 白盒测试的相关方法白盒测试的相关方法 7.6 7.6 软件测试流程的各个阶段软件测试流程的各个阶段 7.7 7.7 测试用例设计测试用例设计 7.1 7.1 软件测试概述软件测试概述1.1.软件测试的定义软件测试的定义 通常对软件测试的定义有如下描述:通常对软件测试的定义有如下描述:
3、软件测试是为了发现程序中的错误而执行程序的过程。软件测试是为了发现程序中的错误而执行程序的过程。具体说,它是根据软件开发各阶段的规格说明和程序具体说,它是根据软件开发各阶段的规格说明和程序的内部结构而精心设计出一批测试用例,并利用测试的内部结构而精心设计出一批测试用例,并利用测试用例来运行程序,以发现程序错误的过程。用例来运行程序,以发现程序错误的过程。正确认识测试的目的是十分必要的,只有这样,才能正确认识测试的目的是十分必要的,只有这样,才能设计出最能暴露错误的测试方案。此外,我们应该认设计出最能暴露错误的测试方案。此外,我们应该认识到:测试只能证明程序中错误的存在,但不能证明识到:测试只能
4、证明程序中错误的存在,但不能证明程序中没有错误。因为即使经过了最严格的测试之后,程序中没有错误。因为即使经过了最严格的测试之后,仍然可能还有没被发现的错误存在于程序中,所以说仍然可能还有没被发现的错误存在于程序中,所以说测试只能查出程序中的错误,但不能证明程序没有错测试只能查出程序中的错误,但不能证明程序没有错误。误。7.1 7.1 软件测试概述软件测试概述2.2.软件测试的目标软件测试的目标 软件测试工作是非常必要的,测试的目的就在于在软件投软件测试工作是非常必要的,测试的目的就在于在软件投入运行之前,尽可能多地发现软件中的错误。软件测试是对入运行之前,尽可能多地发现软件中的错误。软件测试是
5、对软件规格说明、设计和编码的最后复审,是软件质量保证的软件规格说明、设计和编码的最后复审,是软件质量保证的关键步骤。关键步骤。实现这个目的关键是如何合理地设计测试用例,在设计测试实现这个目的关键是如何合理地设计测试用例,在设计测试用例时,要着重考虑那些易于发现程序错误的方法策略与具用例时,要着重考虑那些易于发现程序错误的方法策略与具体数据。体数据。综上所述,软件测试的目的包括以下三点:综上所述,软件测试的目的包括以下三点:(1 1)测试是程序的执行过程,目的在于发现错误,不能证明)测试是程序的执行过程,目的在于发现错误,不能证明程序的正确性,仅限于处理有限种的情况。程序的正确性,仅限于处理有限
6、种的情况。(2 2)检查系统是否满足需求,这也是测试的期望目标。)检查系统是否满足需求,这也是测试的期望目标。(3 3)一个好的测试用例在于发现还未曾发现的错误;成功的)一个好的测试用例在于发现还未曾发现的错误;成功的测试是发现了错误的测试。测试是发现了错误的测试。7.2 7.2 软件测试与软件开发流程的关系软件测试与软件开发流程的关系 1.1.测试与软件开发各阶段的关系测试与软件开发各阶段的关系软件开发过程是一个自顶向下,逐步细化的过程,首先在软件计划软件开发过程是一个自顶向下,逐步细化的过程,首先在软件计划阶段定义了软件的作用域,然后进行软件需求分析,建立软件的数阶段定义了软件的作用域,然
7、后进行软件需求分析,建立软件的数据域、功能和性能需求、约束和一些有效性准则。接着进入软件开据域、功能和性能需求、约束和一些有效性准则。接着进入软件开发,首先是软件设计,然后再把设计用某种程序设计语言转换成程发,首先是软件设计,然后再把设计用某种程序设计语言转换成程序代码。而测试过程则是依相反的顺序安排的自底向上,逐步集成序代码。而测试过程则是依相反的顺序安排的自底向上,逐步集成的过程,低一级测试为上一级测试准备条件。此外还有两者平行地的过程,低一级测试为上一级测试准备条件。此外还有两者平行地进行测试。进行测试。如图如图7-17-1,首先对每一个程序模块进行单元测试,消除程序模块内,首先对每一个
8、程序模块进行单元测试,消除程序模块内部在逻辑上和功能上的错误和缺陷。再对照软件设计进行集成测试部在逻辑上和功能上的错误和缺陷。再对照软件设计进行集成测试,检测和排除子系统(或系统)结构上的错误。随后再对照需求,检测和排除子系统(或系统)结构上的错误。随后再对照需求,进行确认测试。最后从系统全体出发,运行系统,看是否满足要求。进行确认测试。最后从系统全体出发,运行系统,看是否满足要求。7.2 7.2 软件测试与软件开发流程的关系软件测试与软件开发流程的关系2.2.试与开发的并行性试与开发的并行性在软件的需求得到确认并通过评审后,概要设计工作和测试计划在软件的需求得到确认并通过评审后,概要设计工作
9、和测试计划制定设计工作就要并行进行。如果系统模块已经建立,对各个模制定设计工作就要并行进行。如果系统模块已经建立,对各个模块的详细设计、编码、单元测试等工作又可并行。待每个模块完块的详细设计、编码、单元测试等工作又可并行。待每个模块完成后,可以进行集成测试、系统测试。并行流程如图成后,可以进行集成测试、系统测试。并行流程如图7-27-2所示。所示。3.3.测试与开发模型测试与开发模型软件测试不仅仅是执行测试,而是一个包含很多复杂活动的过程,软件测试不仅仅是执行测试,而是一个包含很多复杂活动的过程,并且这些过程应该贯穿于整个软件开发过程。在软件开发过程中,并且这些过程应该贯穿于整个软件开发过程。
10、在软件开发过程中,应该什么时候进行测试,如何更好地把软件开发和测试活动集成应该什么时候进行测试,如何更好地把软件开发和测试活动集成到一起?其实这也是软件测试工作人员必须考虑的问题,因为只到一起?其实这也是软件测试工作人员必须考虑的问题,因为只有这样,才能提高软件测试工作的效率,提高软件产品的质量,有这样,才能提高软件测试工作的效率,提高软件产品的质量,最大限度地降低软件开发与测试的成本,减少重复劳动。如图最大限度地降低软件开发与测试的成本,减少重复劳动。如图7-7-3 3所示,即为软件测试与开发的完整流程。所示,即为软件测试与开发的完整流程。7.2 7.2 软件测试与软件开发流程的关系软件测试
11、与软件开发流程的关系图图7-1 7-1 软件测试与软件开发过程的关系软件测试与软件开发过程的关系 7.2 7.2 软件测试与软件开发流程的关系软件测试与软件开发流程的关系图图7-2 7-2 软件测试与软件开发的并行性软件测试与软件开发的并行性 7.2 7.2 软件测试与软件开发流程的关系软件测试与软件开发流程的关系图图7-3 7-3 软件测试与开发的完整流程软件测试与开发的完整流程 7.3 7.3 软件测试方法划分软件测试方法划分 软件产品种类繁多,测试过程千变万化,为软件产品种类繁多,测试过程千变万化,为了能够找到系统中绝大部分的软件缺陷,必了能够找到系统中绝大部分的软件缺陷,必须构建各种行
12、之有效的测试方法与策略。须构建各种行之有效的测试方法与策略。软件测试是一系列按照预先计划设计测试用软件测试是一系列按照预先计划设计测试用例,运用测试用例进行测试的活动。现在有例,运用测试用例进行测试的活动。现在有许多测试方法可以运用,根据测试方法编写许多测试方法可以运用,根据测试方法编写相关的测试用例。这样测试方法就是测试用相关的测试用例。这样测试方法就是测试用例的模板,也可以说是整个软件测试活动的例的模板,也可以说是整个软件测试活动的模板。模板。7.3 7.3 软件测试方法划分软件测试方法划分图图7-4 7-4 静态测试与动态测试的比喻图静态测试与动态测试的比喻图 7.3 7.3 软件测试方
13、法划分软件测试方法划分l(1 1)静态测试)静态测试静态方法的主要特征是在用计算机测试源程序时,静态方法的主要特征是在用计算机测试源程序时,计算机并不真正运行被测试的程序,只对被测程序计算机并不真正运行被测试的程序,只对被测程序进行特性分析。因此,静态方法常称为进行特性分析。因此,静态方法常称为“分析分析”,静态分析是对被测程序进行特性分析的一些方法的静态分析是对被测程序进行特性分析的一些方法的总称。所谓静态分析,就是不需要执行所测试的程总称。所谓静态分析,就是不需要执行所测试的程序,而只是通过扫描程序正文,对程序的数据流和序,而只是通过扫描程序正文,对程序的数据流和控制流等信息进行分析,找出
14、系统的缺陷,得出测控制流等信息进行分析,找出系统的缺陷,得出测试报告。试报告。l(2 2)动态测试)动态测试动态方法是通过源程序运行时所体现出来的特征,动态方法是通过源程序运行时所体现出来的特征,来进行执行跟踪、时间分析以及测试覆盖等方面的来进行执行跟踪、时间分析以及测试覆盖等方面的测试。动态测试是真正运行被测程序,在执行过程测试。动态测试是真正运行被测程序,在执行过程中,通过输入有效的测试用例,对其输入与输出的中,通过输入有效的测试用例,对其输入与输出的对应关系进行分析,以达到检测的目的。对应关系进行分析,以达到检测的目的。7.3 7.3 软件测试方法划分软件测试方法划分3.3.黑盒测试和白
15、盒测试黑盒测试和白盒测试(1 1)黑盒测试)黑盒测试黑盒测试(黑盒测试(Black-Box TestingBlack-Box Testing)又称为功能测试、数据驱动测)又称为功能测试、数据驱动测试和基于规格说明的测试。是一种从用户观点出发的测试。试和基于规格说明的测试。是一种从用户观点出发的测试。黑盒测试的基本观点是:任何程序都可以看作是从输入定义域映黑盒测试的基本观点是:任何程序都可以看作是从输入定义域映射到输出值域的函数过程,被测程序被认为是一个打不开的黑盒射到输出值域的函数过程,被测程序被认为是一个打不开的黑盒子,黑盒中的内容(实现过程)完全不知道,只明确要做到什么。子,黑盒中的内容(
16、实现过程)完全不知道,只明确要做到什么。黑盒测试作为软件功能的测试手段,是重要的测试方法。它主要黑盒测试作为软件功能的测试手段,是重要的测试方法。它主要根据规格说明设计测试用例,并不涉及程序内部结构和内部特性,根据规格说明设计测试用例,并不涉及程序内部结构和内部特性,只依靠被测程序输入和输出之间的关系或程序的功能设计测试用只依靠被测程序输入和输出之间的关系或程序的功能设计测试用例。例。黑盒测试有两个显著的特点:黑盒测试有两个显著的特点:黑盒测试不考虑软件的具体实现过程,在软件实现的过程发生变黑盒测试不考虑软件的具体实现过程,在软件实现的过程发生变化时,测试用例仍然可以使用;化时,测试用例仍然可
17、以使用;黑盒测试用例的设计可以和软件实现同时进行,这样能够压缩总黑盒测试用例的设计可以和软件实现同时进行,这样能够压缩总的开发时间。的开发时间。7.3 7.3 软件测试方法划分软件测试方法划分软件测试仅局限于功能测试是不够的,因此不仅要进行黑盒测试,软件测试仅局限于功能测试是不够的,因此不仅要进行黑盒测试,还需要花费很大的精力进行逻辑(结构)测试,即白盒测试。还需要花费很大的精力进行逻辑(结构)测试,即白盒测试。(2 2)白盒测试)白盒测试白盒测试(白盒测试(White-Box TestingWhite-Box Testing)也称作结构测试或逻辑驱动测试,)也称作结构测试或逻辑驱动测试,它是
18、知道产品内部工作过程,可通过测试来检测产品内部动作是它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行。按照程序内部的结构测试程否按照规格说明书的规定正常进行。按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能。白盒测试的主要方法有逻辑覆盖、基本路径测试不顾它的功能。白盒测试的主要方法有逻辑覆盖、基本路径测试等,主要用于软件验证。等,主要用于软件验证。白盒测试的测试规划基于产品的内部结构来进行测试,检查内部白盒测试的测试规划基于产品的内部结构来进行测试,检查内部
19、操作是否按规定进行,软件的各个部分功能是否得到充分利用。操作是否按规定进行,软件的各个部分功能是否得到充分利用。白盒测试又称结构测试或基于程序的测试,即逻辑测试。白盒测白盒测试又称结构测试或基于程序的测试,即逻辑测试。白盒测试将被测程序看作一个打开的盒子,测试者能够看到被测源程序,试将被测程序看作一个打开的盒子,测试者能够看到被测源程序,可以分析被测程序的内部结构,此时测试的焦点集中在根据其内可以分析被测程序的内部结构,此时测试的焦点集中在根据其内部结构设计测试用例。部结构设计测试用例。7.3 7.3 软件测试方法划分软件测试方法划分通常的程序结构覆盖有:通常的程序结构覆盖有:语句覆盖;语句覆
20、盖;判断覆盖;判断覆盖;条件覆盖;条件覆盖;判断判断/条件覆盖;条件覆盖;条件组合覆盖;条件组合覆盖;路径覆盖。路径覆盖。语句覆盖是最常见也最弱的逻辑覆盖准则,它要求设计若干语句覆盖是最常见也最弱的逻辑覆盖准则,它要求设计若干个测试用例,使被测程序的每个语句都至少被执行一次。判个测试用例,使被测程序的每个语句都至少被执行一次。判定覆盖或分支覆盖则要求设计若干个测试用例,使被测程序定覆盖或分支覆盖则要求设计若干个测试用例,使被测程序的每个判定的真、假分支都至少被执行一次。但判定含有多的每个判定的真、假分支都至少被执行一次。但判定含有多个条件时,可以要求设计若干个测试用例,使被测程序的每个条件时,
21、可以要求设计若干个测试用例,使被测程序的每个条件的真、假分支都至少被执行一次,即条件覆盖。在考个条件的真、假分支都至少被执行一次,即条件覆盖。在考虑对程序路径进行全面检验时,即可使用条件覆盖准则。虑对程序路径进行全面检验时,即可使用条件覆盖准则。7.3 7.3 软件测试方法划分软件测试方法划分软件测试流程中的五个测试阶段软件测试流程中的五个测试阶段软件测试过程按各测试阶段的先后顺序可分为单元测试、集成软件测试过程按各测试阶段的先后顺序可分为单元测试、集成测试、确认(有效性)测试、系统测试和验收(用户)测试测试、确认(有效性)测试、系统测试和验收(用户)测试5 5个阶段,如图个阶段,如图7-57
22、-5所示。所示。(1)(1)单元测试:测试执行的开始阶段。测试对象是单元测试:测试执行的开始阶段。测试对象是每个单元。测试目的是保证每个模块或组件能正常每个单元。测试目的是保证每个模块或组件能正常工作。单元测试主要采用白盒测试方法,检测程序工作。单元测试主要采用白盒测试方法,检测程序的内部结构。的内部结构。(2)(2)集成测试:也称组装测试。在单元测试基础上,集成测试:也称组装测试。在单元测试基础上,对已测试过的模块进行组装,进行集成测试。测试对已测试过的模块进行组装,进行集成测试。测试目的是检验与接口有关的模块之间的问题。集成测目的是检验与接口有关的模块之间的问题。集成测试主要采用黑盒测试方
23、法。试主要采用黑盒测试方法。7.3 7.3 软件测试方法划分软件测试方法划分(3)确认测试:也称有效性测试。在完成集成测试确认测试:也称有效性测试。在完成集成测试后,验证软件的功能和性能及其他特性是否符合用后,验证软件的功能和性能及其他特性是否符合用户要求。测试目的是保证系统能够按照用户预定的户要求。测试目的是保证系统能够按照用户预定的要求工作。确认测试通常采用黑盒测试方法。要求工作。确认测试通常采用黑盒测试方法。(4)系统测试:在完成确认测试后,为了检验它能系统测试:在完成确认测试后,为了检验它能否与实际环境(如软硬件平台、数据和人员等)协否与实际环境(如软硬件平台、数据和人员等)协调工作,
24、还需要进行系统测试。可以说,系统测试调工作,还需要进行系统测试。可以说,系统测试之后,软件产品基本满足开发要求。之后,软件产品基本满足开发要求。(5)验收测试:测试过程的最后一个阶段。验收测验收测试:测试过程的最后一个阶段。验收测试主要突出用户的作用,同时软件开发人员也应该试主要突出用户的作用,同时软件开发人员也应该参与进去。参与进去。7.3 7.3 软件测试方法划分软件测试方法划分图图7-5 7-5 测试各阶段示意图测试各阶段示意图 7.4黑盒测试的相关方法黑盒测试的相关方法 1.1.等价类划分法等价类划分法等价类划分法是黑盒测试用例设计中一种常用的设计等价类划分法是黑盒测试用例设计中一种常
25、用的设计方法,它将不能穷举的测试过程进行合理分类,从而保方法,它将不能穷举的测试过程进行合理分类,从而保证设计出来的测试用例具有完整性和代表性。证设计出来的测试用例具有完整性和代表性。等价类划分法是把所有可能的输入数据,即程序的输等价类划分法是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。所谓等价类是取少数具有代表性的数据作为测试用例。所谓等价类是指输入域的某个子集合,所有等价类的并集就是整个输指输入域的某个子集合,所有等价类的并集就是整个输入域。在等价类中,各个输入数据对于揭
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件开发流程实训教程 第7章 软件测试 软件 开发 流程 教程 测试
限制150内