《软件工程与实践 第11章 软件测试流程.ppt》由会员分享,可在线阅读,更多相关《软件工程与实践 第11章 软件测试流程.ppt(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第1111章章 软件测试流程软件测试流程11.1 软件测试的概念软件测试的概念1.软件测试的定义软件测试的定义 1983年年IEEE提出的软件工程术语中提出的软件工程术语中给软件测试下的定义是至今一直大家公认给软件测试下的定义是至今一直大家公认的定义。的定义。这个定义是:软件测试是使用人工或这个定义是:软件测试是使用人工或自动的手段来运行或测定某个软件系统的自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差需求或弄清预期结果与实际结果之间的差别。别。1.软件未实现产品说明书要求的功能。2.软件出现了
2、说明书指明不会出现的错误。3.软件超出实现了产品说明书提到的功能。4软件实现了说明书未指出但应该实现的目标。5软件难以理解,不易使用,运行缓慢或者用户认为不满意。软件的缺陷软件的缺陷 软件测试与软件开发的关系软件测试与软件开发的关系11.2 软件测试流程软件测试流程 单元测试的主要内容是模块接口测试。单元测试的主要内容是模块接口测试。模块接口测模块接口测试中的被测模块并不是一个独立的程序,在考虑测试模块试中的被测模块并不是一个独立的程序,在考虑测试模块时,同时要考虑它和外界的联系,用一些辅助模块去模拟时,同时要考虑它和外界的联系,用一些辅助模块去模拟与被测模块相关联的模块。这些辅助模块可分为两
3、种:与被测模块相关联的模块。这些辅助模块可分为两种:(1 1)驱动模块:相当于被测模块的主程序。它接收测试)驱动模块:相当于被测模块的主程序。它接收测试数据,把这些数据传送给被测模块,最后输出实测结果。数据,把这些数据传送给被测模块,最后输出实测结果。例如,模块例如,模块A A要调用模块要调用模块B B,现在测试模块,现在测试模块B B时,要编写一时,要编写一个驱动模块(代替模块个驱动模块(代替模块A A的功能)来调用模块的功能)来调用模块B B,(假设模假设模块块A A是正确的是正确的)检查是否模块检查是否模块B B的缺陷。的缺陷。(2 2)桩模块:用以代替被测模块调用的子模块。桩模块桩模块
4、:用以代替被测模块调用的子模块。桩模块可以做少量的数据操作,不需要把子模块所有功能都带进可以做少量的数据操作,不需要把子模块所有功能都带进来,但不允许什么事情也不做。来,但不允许什么事情也不做。11.3单元测试单元测试 11.4集成测试集成测试 集集成成测测试试是是根根据据实实际际情情况况对对程程序序模模块块采采用用适适当当的的集集成成测测试试策策略略组组装装起起来来,对对系系统统的的接接口口以以及及集集成成后后的的功功能能进进行行正正确确校验的测试工作。校验的测试工作。通通常常,把把模模块块组组装装成成为为系系统统的的测测试试方方式式有有两两种种:一一次次性性集集成成测测试试方方式式;增增值
5、值式式集成测试方式集成测试方式.1.1.一次性集成测试方式一次性集成测试方式 一次性集成测试方式也称作非增值式集成测试。一次性集成测试方式也称作非增值式集成测试。先分别测试每个模块,再把所有模块按设计要求放在一先分别测试每个模块,再把所有模块按设计要求放在一起结合成所需要实现的程序。起结合成所需要实现的程序。如图如图12-612-6是所示按照一次性集成测试方式的实例。是所示按照一次性集成测试方式的实例。如图如图12-612-6(a a)所示表示的是整个系统结构,共包含)所示表示的是整个系统结构,共包含6 6个个模块。具体测试过程如下:模块。具体测试过程如下:(1 1)如图)如图12-612-6
6、(b b)所示,为模块)所示,为模块B B配备驱动模块配备驱动模块D1D1,来模拟模块来模拟模块A A对对B B的调用。为模块的调用。为模块B B配备桩模块配备桩模块S1S1,来模,来模拟模块拟模块E E被被B B调用。对模块调用。对模块B B进行单元测试;进行单元测试;(2 2)如图)如图12-612-6(d d)所示,为模块)所示,为模块D D配备驱动模块配备驱动模块D3D3,来模拟模块来模拟模块A A对对D D的调用。为模块的调用。为模块D D配备桩模块配备桩模块S2S2,来模,来模拟模块拟模块F F被被D D调用。对模块调用。对模块D D进行单元测试;进行单元测试;(3)如图)如图12
7、-6(c)、图)、图11-5(e)、图)、图11-5(f)所示,)所示,为模块为模块C、E、F分别配备驱动模块分别配备驱动模块D2、D4、D5。对模。对模块块C、E、F分别进行单元测试;分别进行单元测试;(4)如图)如图12-6(g)表示,为主模块)表示,为主模块A配备三个桩模块配备三个桩模块S3、S4、S5。对模块。对模块A进行单元测试;进行单元测试;(5)在将模块)在将模块A、B、C、D、E分别进行了单元测试之分别进行了单元测试之后,再一次性进行集成测试;后,再一次性进行集成测试;(6)测试结束。)测试结束。2.增值式集成测试方式增值式集成测试方式增值式集成测试方式有三种:增值式集成测试方
8、式有三种:(1)自顶向下增值测试方式)自顶向下增值测试方式 主控模块作为测试驱动,所有与主控主控模块作为测试驱动,所有与主控模块直接相连的模块作为桩模块;根据集模块直接相连的模块作为桩模块;根据集成的方式(深度或广度),每次用一个模成的方式(深度或广度),每次用一个模块把从属的桩模块替换成真正的模块;在块把从属的桩模块替换成真正的模块;在每个模块被集成时,都必须已经进行了单每个模块被集成时,都必须已经进行了单元测试;进行回归测试以确定集成新模块元测试;进行回归测试以确定集成新模块后没有引入错误。这种组装方式将模块按后没有引入错误。这种组装方式将模块按系统程序结构,沿着控制层次自顶向下进系统程序
9、结构,沿着控制层次自顶向下进行组装。行组装。如图12-7所示表示的是按照深度优先方式遍历的自顶向下增值的集成测试实例。具体测试过程如下:在树状结构图中,按照先左后右的顺序确定模块集成路线;(1)如图12-7(a)所示,先对顶层的主模块A进行单元测试。就是对模块A配以桩模块S1、S2和S3,用来模拟它所实际调用的模块B、C、D,然后进行测试;(2)如图12-7(b)所示,用实际模块B替换掉桩模块S1,与模块A连接,再对模块B配以桩模块S4,用来模拟模块B对E的调用,然后进行测试;(3)图12-7(c)是将模块E替换掉桩模块S4并与模块B相连,然后进行测试;(4)判断模块E没有叶子结点,也就是说以
10、A为根结点的树状结构图中的最左侧分支深度遍历结束。转向下一个分支;(5)图12-7(d)所示,模块C替换掉桩模块S2,连到模块A上,然后进行测试;判断模块C没有桩模块,转到树状结构图的最后一个分支;(6)如图12-7(e)所示,模块D替换掉桩模块S3,连到模块A上,同时给模块D配以桩模块S5,来模拟其对模块F的调用。然后进行测试;(7)如图12-7(f)所示,去掉桩模块S5,替换成实际模块F连接到模块D上,然后进行测试;(8)对树状结构图进行了完全测试,测试结束。(2)自底向上增值测试方式 组装从最底层的模块开始,组合成一个构件,用以完成指定的软件子功能。编制驱动程序,协调测试用例的输入与输出
11、;测试集成后的构件;按程序结构向上组装测试后的构件,同时除掉驱动程序。(3)混合增值测试方式 自顶向下增值的方式和自底向上增值的方式各有优缺点。通常是把以上两种方式结合起来进行组装和测试。11.4 确认测试确认测试 确认测试最简明、最严格的解释是检验所确认测试最简明、最严格的解释是检验所开发的软件是否能按用户提出的要求运行。若开发的软件是否能按用户提出的要求运行。若能达到这一要求,则认为开发的软件是合格的。能达到这一要求,则认为开发的软件是合格的。因而有的软件开发部门把确认测试称为合格性因而有的软件开发部门把确认测试称为合格性测试测试(Qualification Testing)。确认测试又称
12、为有效性测试。它的任务是确认测试又称为有效性测试。它的任务是验证软件的功能和性能及其特性是否与客户的验证软件的功能和性能及其特性是否与客户的要求一致。对软件的功能和性能要求在软件需要求一致。对软件的功能和性能要求在软件需求规格说明中已经明确规定。求规格说明中已经明确规定。确认测试阶段工作如图确认测试阶段工作如图13-11所示:所示:11.6 系统测试系统测试 系统测试是将已经集成好的软件系统,作为整个计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。系统测试的目标是:(1)确保系统测试的活动
13、是按计划进行的;(2)验证软件产品是否与系统需求用例不相符合或与之矛盾;(3)建立完善的系统测试缺陷记录跟踪库;(4)确保软件系统测试活动及其结果及时通知相关小组和个人。(1)恢复测试)恢复测试(2)安全测试(3)强度测试(4)性能测试(5)容量测试(6)正确性测试(7)可靠性测试(8)兼容性测试几种常见的系统测试方法几种常见的系统测试方法 基于基于Web的网站测试的网站测试 链接测试链接测试 表单测试。表单测试。CookiesCookies测试测试 。设计语言测试设计语言测试 。数据库测试。数据库测试。连接速度测试连接速度测试负载测试负载测试 导航测试导航测试 图形测试,图形测试,整体界面测
14、试整体界面测试 。验收测试的目的是确保软件准备就绪,验收测试的目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的并且可以让最终用户将其用于执行软件的既定功能和任务。验收测试是检验软件产既定功能和任务。验收测试是检验软件产品质量的最后一道工序。验收测试通常更品质量的最后一道工序。验收测试通常更突出客户的作用,同时软件开发人员也有突出客户的作用,同时软件开发人员也有一定的参与。一定的参与。11.8 验收测试验收测试 验收测试应完成的工作内容如下:验收测试应完成的工作内容如下:(1)要明确验收项目,规定验收测试通过的标准;)要明确验收项目,规定验收测试通过的标准;(2)确定测试方法;)确定测试方法;(3)决定验收测试的组织机构和可利用的资源;)决定验收测试的组织机构和可利用的资源;(4)选定测试结果分析方法;)选定测试结果分析方法;(5)指定验收测试计划并进行评审;)指定验收测试计划并进行评审;(6)设计验收测试所用的测试用例;)设计验收测试所用的测试用例;(7)审查验收测试的准备工作;执行验收测试;)审查验收测试的准备工作;执行验收测试;(8)分析测试结果;做出验收结论,明确通过验收或不)分析测试结果;做出验收结论,明确通过验收或不通过验收,给出测试结果。通过验收,给出测试结果。