基于案例的软件构造教程(第2版) 课件 05用户交互的软件构造_第1页
基于案例的软件构造教程(第2版) 课件 05用户交互的软件构造_第2页
基于案例的软件构造教程(第2版) 课件 05用户交互的软件构造_第3页
基于案例的软件构造教程(第2版) 课件 05用户交互的软件构造_第4页
基于案例的软件构造教程(第2版) 课件 05用户交互的软件构造_第5页
已阅读5页,还剩109页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章

用户交互的软件构造第5章用户交互的软件构造本章学习以键盘为输入设备、以屏幕为输出设备的用户交互界面的软件构造,包括如何把多个模块实现的功能整合到一个程序的软件集成。通过交互式语音应答系统的层次结构的菜单交互界面的构造,学习用户功能与实现代码的关联。初步学习用户交互的基本概念、基本原理、设计原则及常用的静态测试方法。学习软件集成及其相关的集成测试、回归测试、基于模型的测试技术。完成案例基于菜单的用户交互的构造。2016秋数据科学与软件工程学院2第5章用户交互的软件构造故事6新的需求:(1)程序集成,把已经编写的代码整合到一个程序,即一个启动主程序main();(2)程序界面,把程序的所有功能都放在一个界面上,让用户选择功能并执行;(3)交互练习,或者说是在机器上使用程序做口算练习,并完成批改。2016秋数据科学与软件工程学院3第5章用户交互的软件构造故事62016秋数据科学与软件工程学院4第5章用户交互的软件构造(1)正确选择并执行了功能后的程序界面是什么?可能的设计包括:①执行完一个功能后程序退出,这显然违背设计用户界面的目的;②执行完一个功能后,允许用户继续选择,但是,仅仅显示“请选择…”,则需要用户记忆序号对应的功能。(2)何时结束程序运行?(3)要是用户不小心输错了数字怎么办?(4)功能2如何实现选择练习题?是加法题、减法题或是混合题?是否还是要用户通过输入选择,即通过二级菜单?二级菜单是显示在主菜单中,还是进入功能后再显示?从低层功能完成后,直接显示当前层的菜单还是回到主菜单?等等。2016秋数据科学与软件工程学院5第5章用户交互的软件构造5.1程序及其功能的使用5.2用户交互概述5.3用户交互的开发5.4静态测试5.5软件集成与测试5.6案例分析与实践5.7讨论与提高5.8思考与练习题2016秋数据科学与软件工程学院65.1程序及其功能的使用5.1.1程序的两个观察视角5.1.2多个功能程序的整合5.1.3多个功能的组织与呈现5.1.4基于菜单式功能选择的用户交互2016秋数据科学与软件工程学院75.1.1程序的两个观察视角程序可以从两个角度观察和理解。程序员是程序的产生者。他们看到程序的内部组成——变量、语句、函数、类及其关联所形成的结构。程序员通过编写函数、方法、

类等程序单元,实现用户要求的功能。另一方面,对用户而言,程序实现其需求。用户可以使用程序完成所要求的功能。2016秋数据科学与软件工程学院85.1.1程序的两个观察视角不论是传统的命令行、菜单选择的程序输入/输出,还是流行的图形用户界面GUI、触摸式,以及声控、手势或脑控制的操作方式,都是用户使用程序、与程序进行交互的形式。程序员都应该理解和掌握用户和程序交互的基本原则和编程实现技术。程序最终是要把用户的要求或指令转换成相应的函数或方法。当然,用户的操作和程序之间的关联机制有所不同。2016秋数据科学与软件工程学院95.1.2多个功能程序的整合当一个程序不止一个功能(用户角度),或者包含多个函数(程序员角度)时,如何呈现并执行这些功能涉及两方面问题:(1)如何把若干功能合理地呈现出来,便于用户操作;(2)如何把若干函数整合,便于程序执行。第一个问题是用户界面或交互的设计,第二个问题是程序的集成。用户界面可以视为集成程序的一种方式。2016秋数据科学与软件工程学院105.1.3多个功能的组织与呈现程序的用户界面集成实质上就是如何把一组功能合理地组织并呈现给用户使用。如果不考虑文字或图形的方式,可以把功能以某种顺序全部罗列出来,或者把所有功能按照某个规则分组、分层地结构化地呈现。例如:文件目录。2016秋数据科学与软件工程学院115.1.3多个功能的组织与呈现把程序众多功能划分成组(抽象),按照层次结构,从抽象到具体直至一个功能,为用户使用提供了方便易用的界面。这种用户交互程序的形式无论是采用文字还是图形,基本原理都一样。图5.4所示为一个IDE的图形用户界面。2016秋数据科学与软件工程学院125.1.3多个功能的组织与呈现目前的移动应用APP众多,手机屏幕大小有限,有两种基本方式组织应用:一种方式是以屏为单位连续摆放应用图标,排满后增加一个屏幕,继续顺序放置;另一种方式是文件夹,它可以按照顺序放置把一定数量的应用。图形化界面可以通过单击表示功能或应用的图标进入下一级菜单,直接打开应用或某个功能。2016秋数据科学与软件工程学院135.1.3多个功能的组织与呈现菜单类似文件夹,菜单中可以包含(子)菜单,构成层次结构。菜单结构像一棵树。叶子节点表示独立的、具体的用户功能(原子功能),是提供给用户的服务或操作。树根和内部节点是一个子菜单,表示一组抽象的功能(功能组),用户必须继续从中选择,直至原子功能。菜单的设计可以是自顶向下的方式,即从抽象的主菜单(根)逐步具体到子菜单,直至原子功能;也可以是自底向上的方式,把具体的功能逐步抽象、分组成子菜单,直至主菜单。无论哪种策略,都需要运用抽象和分类的基本原则。2016秋数据科学与软件工程学院145.1.4基于菜单式功能选择的用户交互菜单选择用层次化结构组织把程序的多个功能组织并呈现出来,是用户交互的一种重要形式。它可以在键盘、触摸屏、鼠标、声音等多种输入/输出设备中应用。菜单式功能选择的用户交互在智能化系统(如自助服务、自动语音应答系统)中仍然不可或缺。2016秋数据科学与软件工程学院155.1.4基于菜单式功能选择的用户交互在自动语音应答系统或交互式语音应答(InteractiveVoiceResponse,IVR)系统中,用户通过拨打指定电话号码,根据系统的语音提示收听所需语音信息或服务,或者参与聊天、交友等互动式服务。IVR系统的应用领域包括银行、保险公司、航空公司、电信、旅游及政府、医疗、健康、保险、教育和其他金融服务等。2016秋数据科学与软件工程学院165.1.4基于菜单式功能选择的用户交互IVR系统通常把服务功能与数字、若干特殊符号(如井号#和星号*)关联起来,让用户输入数字或特殊符号获取相应的功能或进入某个子菜单(功能组)。例如,银行、移动、电信等的客服热线。2016秋数据科学与软件工程学院175.1.4基于菜单式功能选择的用户交互【例5.1】某智慧城市目前提供了如下便民服务:生活缴费、预约挂号、公交服务、违章查询、天气预报、常用电话、航空服务、铁路服务、长途车服务、社保服务、公积金服务等。生活缴费包括:自助缴纳有线电视费、水费、电费、燃气费、手机费、一卡通费;公交服务主要包括:实时查询和换乘查询。常用电话包括:日常生活、交警大队、快递服务、网购电话、各区街道、各派出所、公交咨询、医院电话、银行保险、铁路、长途、航空、家政服务、出入境、投诉举报等。2016秋数据科学与软件工程学院185.1.4基于菜单式功能选择的用户交互特点:用户需求对功能进行了初步划分和分层,菜单结构应该尽可能与用户要求的结构一致。但是,从设计和实现的角度,要对一组或一层中较多的功能进一步划分,使得每个菜单中的选项在一定的数量范围内。2016秋数据科学与软件工程学院195.1.4基于菜单式功能选择的用户交互第一级菜单,即主菜单包含11个功能。在IVR中通常使用数字0~9对应某个功能,此外还要有返回上一层菜单、直接返回主菜单的功能,有时还提供重听的功能。而一般的电话(含手机)包含星号键和井号键。这样,主菜单及任何一级菜单中的功能就不能超过9个,如果超过9个,则需要把相关的功能抽象地组成一个功能组,放在下一级菜单中。2016秋数据科学与软件工程学院205.1.4基于菜单式功能选择的用户交互那么如何分组呢?原则一:按照分类法,把相似、相近或相关的功能放在一个组里。原则二:应以最少的交互次数提供最常用的功能,即把最常用的功能尽可能地放在高层菜单。这样,最少应该把主菜单11个功能中的两个功能放在一个功能组,就能用数字0~9对应剩余的9个功能和一个功能组。2016秋数据科学与软件工程学院215.1.4基于菜单式功能选择的用户交互2016秋数据科学与软件工程学院225.1.4基于菜单式功能选择的用户交互下面给出该菜单结构的模拟实现,以便让用户体验界面是否合适。所谓模拟,指的是没有实现或不调用已经实现的用户功能,而是用简单的、通常只包含一条打印语句的模拟函数代替。模拟程序的主要目的是检测菜单结构、菜单项的访问及菜单之间的跳转。如果已经实现了某个用户功能,则可以调用执行。最终,程序要经过集成的策略和步骤,用实现的用户功能替换每个模拟函数。2016秋数据科学与软件工程学院235.2用户交互概述5.2.1基本概念5.2.2交互设备5.2.3交互风格5.2.4交互界面5.2.5交互设计的原则2016秋数据科学与软件工程学院245.2.1基本概念用户交互或人机交互是有关交互式计算机系统的设计、评估、实现及与之相关现象的学科。可以把人机交互理解为是关于可用性的学习和实践,是关于理解和构建用户乐于使用且易于使用的软件和技术,并能在使用时发现产品有效性的学科。人机交互的目的是开发及提高计算机相关系统的安全性、效用、有效性、高效性和可用性。2016秋数据科学与软件工程学院255.2.2交互设备借助交互设备对计算机系统输入数据、指令或信息,并从系统获得反馈。一个计算机系统通常使用以下几种交互设备。键盘是文本输入的主要设备,也是应用最广的输入设备。定位设备在屏幕上通过指点物体实现对物体的操作或完成某个功能。如:鼠标、光笔、触摸屏/板、轨迹球、操纵杆等。显示器是用户从计算机得到反馈的主要输出设备。2016秋数据科学与软件工程学院265.2.3交互风格设计者完成任务分析并识别出任务对象和动作时,可以选择以下5种交互风格:直接操纵菜单选择表格填充命令语言自然语言2016秋数据科学与软件工程学院275.2.4交互界面交互界面是人和计算机进行信息交换的通道,人通过交互界面向计算机输入信息、进行操作,计算机则通过交互界面向用户提供信息,以供阅读、分析和判断。用户界面是实现用户交互、使用程序的手段。用户交互是使用程序的本质。人机交互只能通过特定的界面才能让用户更好地体验程序。2016秋数据科学与软件工程学院285.2.4交互界面以下是几种常见的基本人机交互界面。命令语言用户界面。图形用户界面GUI。直接操作用户界面。多媒体用户界面。多通道用户界面。虚拟现实技术。2016秋数据科学与软件工程学院295.2.5交互设计的原则人机交互涉及心理学、认知科学、计算机科学、产品设计、图形设计等。3条基本原则(1)学习性。指的是新的用户能用它进行有效的交互并获得最大的性能。(2)灵活性。是指用户和系统能以多种方式交换信息。(3)健壮性。是指在决定成就和目标评估方面对用户提供的支持程度。2016秋数据科学与软件工程学院305.2.5交互设计的原则8条黄金规则(1)尽量保持一致。(2)满足普遍可用性。(3)提供信息反馈。(4)设计对话框以产生结束信息。(5)预防并成立错误。(6)允许撤销操作。(7)支持内部控制点。(8)减轻短时记忆负担。2016秋数据科学与软件工程学院315.2.5交互设计的原则菜单设计的一般指导原则2016秋数据科学与软件工程学院325.3用户交互的开发5.3.1交互设计基本过程5.3.2快速原型法2016秋数据科学与软件工程学院335.3.1交互设计基本过程图5.8所示为交互设计的过程模型,体现了“迭代”和“以用户为中心”的特征。2016秋数据科学与软件工程学院345.3.1交互设计基本过程(1)标识和建立用户需求。交互设计的用户需求包括:功能需求、数据需求、使用环境和可用性需求。(2)提出满足需求的候选设计方案。概念设计和物理设计。(3)构建交互式版本。开发用户交互模型,通常是可运行的原型软件,包含用户交互界面、交互形式、完成任务的基本流程等。(4)设计评估。即评估交互设计的可运行和可接受性。2016秋数据科学与软件工程学院355.3.2快速原型法快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。使用快速原型的目的是:在获得用户交互基本需求说明的基础上,快速建立一个可以运行的软件,使用户及时运行和看到交互的形式和使用效果,并对交互需求说明进行补充和精化,提出改进意见;开发人员进一步修改完善,如此循环迭代,直到得到一个用户满意的模型为止。2016秋数据科学与软件工程学院365.3.2快速原型法(1)功能选择原型和最终的软件系统不同,两者在功能范围上的区别主要有以下两个方面:最终系统是软件需求全部功能的实现,而原型只实现所选择的部分功能;最终系统对每个软件需求都要求详细实现,而原型仅仅是为了试验和演示用的,部分功能需求可以忽略或者模拟实现。2016秋数据科学与软件工程学院375.3.2快速原型法(2)构造原型根据用户初步需求,开发出一个可以运行的、主要包含界面的系统,它应满足用户提出的基本要求。(3)运行和评价原型用户在试用中能亲自参加和面对一个可以实际运行和操作的模型,能较为直观和明确地进一步提出需求,提出修改意见。2016秋数据科学与软件工程学院385.3.2快速原型法(4)修改和完善原型根据修改意见进行修改,修改系统原型,然后再进行试用和评价,这样经过有限次的循环反复,逐步提高和完善,直到得到一个用户满意的系统模型为止。2016秋数据科学与软件工程学院395.4静态测试5.4.1程序的可用性与静态测试5.4.2桌面检查5.4.3代码走查5.4.4正式审查5.4.5同行评审5.4.6检查表5.4.7静态程序分析2016秋数据科学与软件工程学院405.4.1程序的可用性与静态测试程序的可用性指的是程序是否有用,包括用户界面是否易用,主要有三个特征:有效性、效率和主观满意度。有效性是用户完成特定任务和达成特定目标时所具有的正确和完整程度。效率是用户正确完成任务的程度与所用资源(如时间)的比率。主观满意度是用户在使用产品过程中所感受到的主观满意和接受程度。2016秋数据科学与软件工程学院415.4.1程序的可用性与静态测试可用性的指标分别是:易学性——产品是否易于学习;交互效率——客户使用产品完成具体任务的效率;易记性——客户搁置某产品一段时间后是否仍然记得如何操作;容错性——操作错误出现的频率和严重程度如何。2016秋数据科学与软件工程学院425.4.1程序的可用性与静态测试根据是否运行待测程序,软件测试分为动态测试和静态测试。动态测试通过设计有效的测试用例,运行观察程序的运行行为、状态变化及输出等来判断软件是否存在问题。静态测试不执行程序,而是通过阅读和分析代码及相关材料、发现软件错误的活动。静态测试又称人工手动测试,是动态测试和自动化测试的补充,是软件质量保障的重要组成。2016秋数据科学与软件工程学院435.4.1程序的可用性与静态测试静态测试的主要作用包括:发现程序在功能、逻辑构造方面的错误;验证实现的程序在需求和设计方面符合用户的要求;确认程序符合预先定义的开发规范和标准;保证软件开发过程的规范性;有助于程序员之间相互学习。静态测试常见类型有桌面检查、代码走查、正式审查、同行评审及静态程序分析。2016秋数据科学与软件工程学院445.4.2桌面检查桌面检查(DeskChecking)是程序员个人模拟计算机“阅读”程序,发现代码错误的方法。代码走查(walkthrough)和正式审查(inspection)是通过组织其他程序员共同参与的团队检查,是对传统的程序员桌面检查方式的改进。2016秋数据科学与软件工程学院455.4.3代码走查代码走查至少由两人组成,其中一人协调走查,另一人扮演测试者。在走查过程中,由测试者提出一批测试用例,在走查会议上对每个测试用头脑来执行程序,在纸上或黑板上演变程序的执行状态,从而发现程序错误。在这个过程中,测试用例用作怀疑程序逻辑、计算或控制错误的参照,测试用例本身并不重要。2016秋数据科学与软件工程学院465.4.3代码走查代码走查主要从下列方面检查程序的错误:数据引用错误、数据声明错误、逻辑错误、计算错误、判断错误、控制流程错误、接口错误、输入/输出错误等。代码开发人员对照讲解设计意图和程序代码,特别是对有异议之处进行解释,有助于验证设计和实现之间的一致性。2016秋数据科学与软件工程学院475.4.4正式审查一种正式的结构化检查和评估方法,一般有计划、流程、结果和追查。审查小组至少有4人:一人负责协调、分发材料、安排进程、确保错误随时得到改正,被检测试程序的编码人员,其他程序开发人员和一名测试人员。审查小组最好还要包括丰富经验的程序员、编程语言的专家、未来的代码维护人员、其他项目组成员,以及同组的程序员。2016秋数据科学与软件工程学院485.4.4正式审查代码审查通过会议实施,基本过程如下:协调人在代码检查前几天分发程序清单、编码规范和检查清单;编码人员讲述程序的逻辑结构,其他人员提问题并判断是否存在错误;对照编码规范、检查清单分析程序;审查人员的注意力集中在发现错误而非纠正错误上(非调试);会议结束后,程序员会得到一份已发现错误的清单。如果发现重大缺陷,在修改之后,还要重新召开会议审议。2016秋数据科学与软件工程学院495.4.4正式审查采用正式审查时要注意以下几点:以会议形式审查,要制定会议目标、流程和规则,结束后要编写报告;按缺陷检查表逐项检查,避免漫无目标检查;发现问题适当记录,避免现场讨论和修改;发现重大缺陷,改正后会议需要重开;检查要点是缺陷检查表,根据不同的项目,该表要不断积累和完善。2016秋数据科学与软件工程学院505.4.5同行评审同行评审(reviewing)是对代码的全面质量评审,包括代码的可维护性、可扩展性、可使用性,以及安全和编程规范是否得到遵守,是软件开发队伍对程序质量和信赖性进行的自我评估。评审时,一般挑选一个程序员作为组织者,由他再选择若干同行参加评审。同行必须是真实的,即具有被评审者相同的背景(例如,均是Java程序员)。每个评审者都要挑选两段程序进行评审,比较和给出这两段程序质量上的优缺点。可以定义更详细的评价标准,例如,对发现问题的严重程度分等级或加权,从而定量地说明代码的质量和可信赖程序。2016秋数据科学与软件工程学院515.4.5同行评审2016秋数据科学与软件工程学院525.4.6检查表正式审查和同行评审都需要缺陷检查表或检查单。它列出了容易出现的典型错误,以便让编程人员和评审人员集中精力,依据代码检查单的问题,实施静态测试,并记录代码中的错误,以便在后期总结和统计错误的类型、原因等,从而避免和预防代码错误。例如,Myers从数据引用错误、数据声明错误、计算错误、判断错误、控制流程错误、接口错误、输入/输出错误等方面给出检查单。2016秋数据科学与软件工程学院535.4.7静态程序分析静态程序分析通过扫描源程序而发现可能的故障或异常。它不要求程序运行,因而属于静态测试。它分析程序正文,识别程序中语句的差异,检测语句构造是否规范、推测程序的控制流、在很多场合计算出程序所有可能的值。静态程序分析补充了语言编译器提供的错误检测功能。2016秋数据科学与软件工程学院545.4.7静态程序分析静态分析的目的是引起程序员对程序中异常(如未初始化的变量、未使用的变量、数值超出范围)的警觉。尽管这些异常不一定是错误条件,但是,它们经常是程序设计错误、遗漏或疏忽的结果所造成的。静态程序分析能发现的故障如表5.2所示。2016秋数据科学与软件工程学院555.4.7静态程序分析静态程序分析器不仅检测代码的故障,也检查代码是否遵循了规定的规范或风格。图5.9为Java静态分析工具Checkstyle(图5.9(a))和PMD(图5.9(b))的使用截图。2016秋数据科学与软件工程学院565.5软件集成与测试把实现各个功能的模块、数据、用户交互界面等模块组织起来,构建成一个完整的应用程序的过程称为软件集成。与之相对应的是集成测试。软件集成主要体现并依赖于软件设计或软件架构设计,明确组成软件的各个模块的功能和接口。只要严格按照要求开发,模块之间就能通过良好定义的接口整合在一起,构成一个完整的软件系统。2016秋数据科学与软件工程学院575.5软件集成与测试软件集成就是使多个软件的功能集成到一个软件,或是把软件的各部分组合在一起成为一个可执行的软件。功能集成和界面集成是基本的软件集成。功能集成指把具有不同功能的程序或模块(函数、类、接口、库等)通过函数调用、消息传递、继承、包含、引用及共同的数据集等方式关联起来,成为一个整体,完成更复杂的功能或提供比新程序组成单元更多的功能。界面集成指为具有不同功能的程序或模块提供一个统一的用户交互界面,方便用户使用。2016秋数据科学与软件工程学院585.5软件集成与测试软件集成含三个方面。①集成策略指对软件的组成单元按照什么顺序组织起来、构成一个软件,考虑的问题包括软件组成单元之间的依赖关系、开发任务分配等。②集成内容主要包括流程、数据、功能和界面。③集成技术指的是如何通过语法、语义、逻辑等关系把软件的组成单元“粘合”起来。2016秋数据科学与软件工程学院595.5软件集成与测试集成测试的主要目的是检测软件组成单元的接口是否符合要求,它们的交互是否流畅,集成后的软件能否按照设计合作完成要求的功能等。集成的前提是各个组成单元已经完成开发并通过了(单元)测试。2016秋数据科学与软件工程学院605.5软件集成与测试图5.11所示为案例程序功能的层次结构。填充的方框表示尚未实现的模块,有边框的表示原子功能。2016秋数据科学与软件工程学院615.5软件集成与测试5.5.1驱动模块和桩模块5.5.2集成策略5.5.3回归测试5.5.4集成测试与策略2016秋数据科学与软件工程学院625.5.1驱动模块和桩模块在集成软件及其组成单元时,为了使得集成的软件可以编译和运行,需要模拟集成时尚未完成的组成单元、相关联的环境之间的交互。常见的基本的模拟程序有驱动模块和桩模块。2016秋数据科学与软件工程学院635.5.1驱动模块和桩模块驱动模块的主要任务是搜集或产生数据、把数据传给待测程序、启动和执行它。2016秋数据科学与软件工程学院645.5.1驱动模块和桩模块使用模拟程序的主要原因和目的如下。(1)模拟复杂的代码。增量集成代码时,要关注模块间的接口是否一致、模块的交互逻辑是否矛盾、模块的合作是否流畅等。采用模拟程序可以分离关注点。(2)模拟尚未实现的代码。(3)模拟程序的整体性。把所有或部分代码整合到一起,测试运行一次可能会耗费资源、时间等,为了检测程序的整体结构、用户界面、全局逻辑、关键功能等,采用模拟程序替换实际程序可以加快实现特定的目标。2016秋数据科学与软件工程学院655.5.2集成策略传统方法用树状的结构图示意一个程序的组织结构。图5.11表示了案例程序的功能结构,其中方框图表示程序的功能模块,连线表示模块之间的控制关系或者功能的组成;树的根表示总控模块,它调用其他模块完成程序的所有功能。基于程序结构的功能分解属于基本的集成策略,主要有如下5种方式:一次性集成、增式集成、自底向上集成、自顶向下集成、基干集成。2016秋数据科学与软件工程学院665.5.2集成策略1.一次性集成构成一个程序的所有模块在一次集成过程中组装成最终的软件。对图5.11而言,一次性集成就是,首先完成这16个模块的开发和测试,然后放在一起,构成最终的软件。难以发现和修改在一次性集成中出现的错误。2016秋数据科学与软件工程学院675.5.2集成策略2.增式集成增式集成,即以一个基本模块或主模块为基础,每次增加一个或一组模块形成部分程序,在确保正确后再逐步增加模块,直至所有模块都集成至部分程序构成软件整体。增量集成中出现的错误容易定位和修复。2016秋数据科学与软件工程学院685.5.2集成策略3.自顶向下集成集成模块从根部的控制模块开始,以控制层次的顺序,逐次增加模块,直至形成整个程序的增式集成方式,称为自顶向下集成。增量集成时要为其他尚未集成的模块编写桩,通过测试后,再逐步用模块替换桩、执行集成与测试。2016秋数据科学与软件工程学院695.5.2集成策略集成测试的步骤:(1)测试主模块,以桩模块代替没有完成开发的下级模块;(2)依次用实现的模块代替桩模块;(3)每集成一个模块,就测试部分程序,重点是新增的模块及其与部分程序的交互;(4)必要时进行回归测试——重复之前的测试。2016秋数据科学与软件工程学院705.5.2集成策略自顶向下集成策略的优点:在集成的任何时候都有一个可以运行的程序。缺点:桩模块的开发代价有时会较大,而且正是由于桩模块的存在使得部分程序难以得到充分的测试。2016秋数据科学与软件工程学院715.5.2集成策略4.自底向上集成选择独立性最大或者对其他模块依赖性最小的模块开始,从程序结构图的底部开始,逐次增加控制模块,直至完成整个程序。需要编写驱动模块。2016秋数据科学与软件工程学院725.5.2集成策略集成测试的步骤:(1)编写调用底层模块的驱动模块;(2)测试驱动模块与底层模块组成的部分程序;(3)用实现的控制模块替换驱动模块,并测试部分程序的功能;(4)必要时进行回归测试——重复之前的测试。2016秋数据科学与软件工程学院735.5.2集成策略自底向上集成的优点:(1)底层模块的测试与集成可以独立、平行地进行;(2)不需要桩模块。缺点:(1)驱动模块的开发一般比较耗费;(2)难以充分测试高层模块的可操作性。2016秋数据科学与软件工程学院745.5.2集成策略5.基干集成选择一个程序的基干模块,将自顶向下与自底向上的集成方式结合起来,逐步地集成其他模块的策略,称为基干集成,又称三明治或混合策略。2016秋数据科学与软件工程学院755.5.2集成策略优点:(1)减轻了自顶向下与自底向上的不利因素;(2)集成过程总有一个可运行的部分程序;(3)适合大型、复杂软件的集成。缺点:(1)需要仔细分析系统结构和模块间依赖性,同时要分析用户需求的优先性;(2)有时需要开发桩模块和驱动模块,工作量较大;(3)局部采用了一次性集成,接口测试可能不充分。2016秋数据科学与软件工程学院765.5.3回归测试复用之前的测试对集成后的软件或其中的某个子集重新进行测试,以确保修改的模块或其他程序变更没有传播不期望的副作用。这种测试称为回归测试。它是保证在程序修改的情况下保证程序功能正常的一致性测试策略和方法。回归测试无须对程序进行全面测试,而是根据修改情况进行有限的测试。可以选用测试库中的测试用例,也可以增加新的测试用例。2016秋数据科学与软件工程学院775.5.3回归测试回归测试的基本过程是:(1)识别软件中发生变更、受影响的部分;(2)选择可以复用的测试用例,用以验证程序的变更不改变程序的原有功能;(3)补充新的测试用例,侧重检测可能会受到影响的功能或软件子集,特别是包含新增或修改的部分,以及与其他软件部分的联系;(4)依据一定的策略对程序进行测试。2016秋数据科学与软件工程学院785.5.3回归测试实施回归测试策略时,应该兼顾效率和有效性两个方面,可以采用不同的测试用例选择方式。(1)再测试全部测试用例。(2)基于风险选择测试。(3)再测试修改的部分。2016秋数据科学与软件工程学院795.5.4集成测试与策略集成测试关注模块间的调用、消息传递、数据传输与处理是否正确及不同模块的可组合性,它们之间的协作能否完成一个包含了若干操作的特定的应用功能,即是否能实现用户的功能要求。2016秋数据科学与软件工程学院805.5.4集成测试与策略集成测试应该遵循下列几条基本原则:(1)应该测试所有的公共接口;(2)要充分测试关键模块;(3)应该按照一定的层次实施集成测试;(4)选择与开发、软件集成相匹配的测试策略;(5)集成后任何模块接口和实现的变动都要进行回归测试。2016秋数据科学与软件工程学院815.5.4集成测试与策略协作集成与测试的过程如下:(1)对待集成的模块依赖性、性关系等逻辑关系进行分析,确定出用户指定或密切关联的子系统;(2)运用之前的策略集成并测试每个子系统;(3)逐步集成每个子系统并测试整个系统,直至完成。2016秋数据科学与软件工程学院825.5.4集成测试与策略图5.12为一个软件的组成模块与关系。一个集成顺序是按照子系统的序号由低到高。由于子系统3相对独立,可以独立地集成与测试。2016秋数据科学与软件工程学院835.6案例分析与实践5.6.1分析与设计5.6.2案例程序的菜单式用户交互的构造5.6.3循环语句的路径测试2016秋数据科学与软件工程学院845.6.1分析与设计2016秋数据科学与软件工程学院855.6.2案例程序的菜单式用户交互的构造2016秋数据科学与软件工程学院865.6.3循环语句的路径测试循环测试是一种结构性测试技术,它侧重于循环结构元素的有效性。4种不同的循环结构:简单循环、嵌套循环、串接循环和非结构化循环,如图5.18所示。2016秋数据科学与软件工程学院875.6.3循环语句的路径测试简单循环的测试(假设n是允许的最大循环次数):循环0次(跳过整个循环体);循环1次;循环2次;循环正常次数(通常为最大次数的一半);循环n−1、n、n+1次。2016秋数据科学与软件工程学院885.6.3循环语句的路径测试简单循环的测试方法扩展到嵌套循环,测试数量随着嵌套层次的增加而成几何级数增加。以下方法可以减少测试数量。从最内层循环开始,将其他循环设为最小值。对最内层循环执行简单循环测试,而使外层循环的迭代参数值(及循环计数)最小,并对范围以外或不包含在内的值增加其他测试。由内向外构造下一个循环的测试,但使其他外层循环具有最小值,并使其他嵌套循环为“典型”值。继续上述过程,直至测试完所有循环。2016秋数据科学与软件工程学院895.6.3循环语句的路径测试对于串接循环,若串接的循环彼此独立,则可以采用简单循环测试方法。然而,若两个循环串接起来,且第一个循环的循环计数为第二个循环的初始值,则这两个循环相互依赖,这时建议采用嵌套循环的测试方法。最后,对于非结构化循环,若有可能,重新设计代码或重构代码,避免这种非结构化的程序。2016秋数据科学与软件工程学院905.7讨论与提高5.7.1软件建模5.7.2基于模型的测试5.7.3执行函数名符号串的表驱动编程5.7.4持续集成2016秋数据科学与软件工程学院915.7.1软件建模模型是对客体的抽象,是通过主观意识借助实体或虚拟表现,构成客观阐述形态、结构的一种表达目的的物件。它是人们依据研究的特定目的,在一定假设条件下,再现原型客体的结构、功能、属性、关系、过程等本质特征的物质形式或思维形式。2016秋数据科学与软件工程学院925.7.1软件建模建模是指对研究的实体进行必要的抽象和简化,用适当的表现形式或规则把它的主要特征描述出来的过程。建模的目的是研究客体问题、探讨客体的本质而对它所做的一种简化结果,是通过采用理想化的办法创造、并能再现客体本质和内在特性的模型。2016秋数据科学与软件工程学院935.7.1软件建模模型可以是模拟,也可以是样板。对尚不存在、拟构建的客体建立的模型,称为样板。它可以作为样板用以创建设想中的客体。模拟是对已经存在客体的简化而建立的,模型是对客体的,它的主要作用是理解和分析客体,进而作为改进的手段,建立样本模型,创造新的客体。2016秋数据科学与软件工程学院945.7.1软件建模物理模型和数学模型是基本的模型形态。物理模型的表现形式主要是金属、塑料、木材等物理材料。数学模型是用数学符号、方程、式子、图形等对客体本质属性的抽象而又简洁的刻画。建立物理模型让人直观感受到待建物体的外形和结构,通过建立的数学模型分析待建物体的物理、结构等性质。在经济、金融、管理等领域,数学模型也是基本、常用的建模手段。2016秋数据科学与软件工程学院955.7.1软件建模数学是常用的软件建模手段,包括数理统计、代数学、数理逻辑、集合论、图论及时态逻辑、形式语言等。为了开发、分析和评估软件及软件过程,我们还使用软件建模语言或符号,特别是可视化的图形符号。控制流图(CFG)来模拟程序的控制结构。类图刻画面向对象程序的组织结构。树(图的一种)描述用户交互的菜单结构。实体-关系(E-R)图为数据关系建模。2016秋数据科学与软件工程学院965.7.1软件建模UML有机地整合了较多的软件建模方法,在软件分析与设计中获得了广泛应用。需要指出的是,图形建模语言要有严格的语法和语义,它们规定了采用的图符(如线、框)的组成、结构和(用数学表示的)含义,以便对软件模型进行推理、分析和评估。2016秋数据科学与软件工程学院975.7.1软件建模例5.1中,树描述菜单的层次结构,表现了菜单的静态性。因用户的选择动作和程序执行而造成的程序在菜单之间的转换和跳转则体现了菜单的动态性。图5.19的状态转换图为菜单之间相互迁移提供了导航。2016秋数据科学与软件工程学院985.7.1软件建模状态转换图是一个有向图。图的节点表示抽象的、可以具有名称的状态。带箭头的连线表示在一定输入(条件或动作)下从一个状态转换到另一个状态。连线离开的状态称为箭头指向状态的前驱,箭头指向的状态称为后继状态。前驱和后继状态可以是同一个状态。状态、引起状态转换的输入及连线的个数都是有限的。状态转换图有唯一的起始状态和若干结束整体。可以用逗号分开引起两个状态转换的不同的输入。2016秋数据科学与软件工程学院995.7.2基于模型的测试1.基于有限状态图的测试状态转换图把程序抽象成函数之间的关联与交互,忽略了函数内部的实现细节。基于状态转换图的测试即对节点表示函数的黑盒测试。另,状态转换图刻画了函数之间的交互。本例的状态转换图详细说明了每个菜单在接收有效用户输入后,程序在菜单之间的转换。故基于状态转换图的测试又可视为对整个程序的白盒测试。故白盒测试技术可以应用到状态转换图模型。2016秋数据科学与软件工程学院1005.7.2基于模型的测试(1)满足节点覆盖的测试满足节点覆盖实际上就是满足状态覆盖。测试准则可以要求设计测试用例使得每个状态都至少执行一次。同语句覆盖,这是最基本、也是最容易满足的测试准则。为了测试有些状态,如menu_0_4,首先需要将程序执行到其前驱状态menu_0,接收用户输入4后,才能测试状态menu_0_4。这就需要从一个状态迁移到另一个状态。2016秋数据科学与软件工程学院1015.7.2基于模型的测试(2)满足连线覆盖的测试实际上就是测试两个状态间的迁移。测试准则可以要求设计测试用例使得两个状态间的迁移都至少执行一次。首先,从连接的状态数量上考虑,该准则可以要求覆盖的状态不止两个,还可以是多个。其次,要满足100%的迁移覆盖准则,就要对不同的动作或条件设计测试用例。2016秋数据科学与软件工程学院1025.7.2基于模型的测试迁移的严格定义包含了迁移条件或动作及前驱状态、后继状态,而且要求在同一个状态下面临的一个条件或动作,最多有且只有一个后继状态。另外,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论