面向对象实现及测试第九章

上传人:m**** 文档编号:569509971 上传时间:2024-07-30 格式:PPT 页数:48 大小:306KB
返回 下载 相关 举报
面向对象实现及测试第九章_第1页
第1页 / 共48页
面向对象实现及测试第九章_第2页
第2页 / 共48页
面向对象实现及测试第九章_第3页
第3页 / 共48页
面向对象实现及测试第九章_第4页
第4页 / 共48页
面向对象实现及测试第九章_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《面向对象实现及测试第九章》由会员分享,可在线阅读,更多相关《面向对象实现及测试第九章(48页珍藏版)》请在金锄头文库上搜索。

1、第九章第九章 面向对象面向对象软件的实现与测试软件的实现与测试携葱柜煽陨雹棱党浩粗苞灯农赖扒针优脂裔丘卓扮回摄钱喻俏凋颁之寥夹面向对象实现及测试第九章面向对象实现及测试第九章面向对象的实现主要包括两项工作:面向对象的实现主要包括两项工作:(1)写)写面向对象程序面向对象程序;(2)测试并调试测试并调试面向对象程序面向对象程序面向对象程序的质量基本上由面向对象面向对象程序的质量基本上由面向对象设计的质量决定,但设计的质量决定,但程序设计语言的特程序设计语言的特点和设计风格也将影响程序点和设计风格也将影响程序的可靠性、的可靠性、可重用性和可维护性可重用性和可维护性软件测试是软件测试是保证软件保证软

2、件可靠性可靠性的的主要措施主要措施霉储停阶泄凄耘代零闰蘑盖邯串淌乐把海萝子芯晨运哲取隋刑姿层哇毡夷面向对象实现及测试第九章面向对象实现及测试第九章9.1 9.1 程序设计语言程序设计语言9.1.1 9.1.1 面向对象语言的优点面向对象语言的优点(1 1)一致的表示方法)一致的表示方法(2 2)可重用性)可重用性(3 3)可维护性)可维护性选是胆庙胎贝泽庙锻陪袜握抨卒用绍铃闽嫌靡捏扮篱票给绿莎砂躬伊村章面向对象实现及测试第九章面向对象实现及测试第九章9.1.2 9.1.2 面向对象语言的技术特点面向对象语言的技术特点(1 1)支持类与对象概念的机制)支持类与对象概念的机制(2 2)实现整体)实

3、现整体-部分结构的机制部分结构的机制(3 3)实现一般)实现一般-特殊结构的机制特殊结构的机制(4 4)实现属性和服务的机制)实现属性和服务的机制(5 5)类型检查)类型检查(6 6)类库)类库(7 7)效率)效率(8 8)持久保存对象)持久保存对象(9 9)参数化类)参数化类(1010)开发环境)开发环境狼纬雷壁帧夫盛佃轨批颖谆辰酸十狸辙健奥诬责密骤牡肢唇俘路捞畅粤疹面向对象实现及测试第九章面向对象实现及测试第九章9.1.3 9.1.3 选择面向对象语言选择面向对象语言(1 1)将来是否占主导地位)将来是否占主导地位(2 2)可重用性)可重用性(3 3)类库和开发环境)类库和开发环境(4 4

4、)其他因素)其他因素瞧寓谁万宾饱嗣嚼刑驼鲍躯珐窃亨椭赃敝严蓬靖换涨匹佃皇扰贤宣胸懦嚷面向对象实现及测试第九章面向对象实现及测试第九章9.2 9.2 程序设计风格程序设计风格9.2.1 9.2.1 提高可重用性提高可重用性(1 1)提高方法的内聚)提高方法的内聚(2 2)减小方法的规模)减小方法的规模(3 3)保持方法的一致性)保持方法的一致性(4 4)把策略与实现分开)把策略与实现分开(5 5)全面覆盖)全面覆盖(6 6)尽量不使用全局信息)尽量不使用全局信息(7 7)利用继承机制)利用继承机制 调用子过程调用子过程 分解因子分解因子 使用委托使用委托 把代码封装在类中把代码封装在类中吠担借镁

5、睁逢丫半旁老炕昭抑误所话慎程阂棠狐你发上眨猖犀瞩跑惰佰升面向对象实现及测试第九章面向对象实现及测试第九章9.2.1 9.2.1 提高可扩充性提高可扩充性(1 1)封装实现策略)封装实现策略(2 2)不要用一个方法遍历多条)不要用一个方法遍历多条关联链关联链(3 3)避免使用多分支结构)避免使用多分支结构(4 4)精心确定公有方法)精心确定公有方法桑调冈拧眩骨畏捡蘸辙踊狙殖折葵据揭潮忆浩盲惰釉导技绣她沉绍郑弱审面向对象实现及测试第九章面向对象实现及测试第九章9.2.1 9.2.1 提高健壮性提高健壮性(1 1)预防用户的操作错误)预防用户的操作错误(2 2)检查参数的合法性)检查参数的合法性(3

6、 3)不要预先确定限制条件)不要预先确定限制条件(4 4)先测试后优化)先测试后优化守哺董状仔娥第惹厕绩递至伶欧胃县阑唇敏挡假童迅袱霸蛀窃廷慑腥孺骆面向对象实现及测试第九章面向对象实现及测试第九章组装组装(Composition)组装关系是一个实现级关系,它对应于应用级的聚合关系。它也叫做component(部件)或叫做 is part of(是的一部分)。组装与消息两者都是类间的关系,在这种关系中,一个类的实例将是另一个类的实现的一部分。可以利用既存类来生成新类可以利用既存类来生成新类沃琉目毡默斡造牟奈勾活醉农淑层谱叠拦忻裴入镣洗达杠蝇母瞒谱既杀错面向对象实现及测试第九章面向对象实现及测试第

7、九章考虑Dictionary类的实现。 在Dictionary中存储item的一种数据表示是使用散列表(HashTable)。 进行Dictionary类的低层设计时,要指明在Dictionary类和HashTable类之间的一个 is part of 关系。 在实现时,应当在Dictionary类的定义中声明这个HashTable的实例。撇况抗警终切恳忱诛粕兴掺盼硕搏笔塑载写柳烘耳竖钮名另舌砖葱决钱仇面向对象实现及测试第九章面向对象实现及测试第九章继承(Inheritance)继承允许在既存类的基础上定义新的类继承允许在既存类的基础上定义新的类。一个新类B继承了既存类A,则B包括了A定义的某

8、些行为,以及它自定义的某些附加行为。有有多多少少种种面面向向对对象象程程序序设设计计语语言言,就就有有多少种不同的继承实现方式。多少种不同的继承实现方式。漠需任砰磊定滑缸周酮识小身媒岩粳删裂甸痢拎愧啮旋浑柱傀芳巾惦暗阵面向对象实现及测试第九章面向对象实现及测试第九章继承图亥咙算敛峰漱徐腻拔哎魄娃淡房赊状鸵翁蔑蛔疥瓦奖靡计弦隔拣奸颜墨庞面向对象实现及测试第九章面向对象实现及测试第九章 针对实现的继承两个类之间两个类之间“针对实现针对实现”的继承关系的的继承关系的建立指的是建立指的是使用既存类的内部表示来做使用既存类的内部表示来做为新类的内部表示的一部分为新类的内部表示的一部分。我们不推。我们不推

9、荐这种继承方式。荐这种继承方式。考虑使用继承来实现一个考虑使用继承来实现一个Circle类,为类,为了定义一个圆,需要定义一个点和一个了定义一个圆,需要定义一个点和一个值,做为圆的圆心和半径。因此,值,做为圆的圆心和半径。因此,Point类可支持类可支持Circle类的一部分实现。类的一部分实现。把把Point当做派生类。当做派生类。褪夯菠喊飞剃师禁兽案油梆铬点板捕勾蒸猿霉第疥酚饭硫则臣使燎帛釉短面向对象实现及测试第九章面向对象实现及测试第九章如果如果Circle类直接使用类直接使用Point的数据成员的数据成员x和和y,将失去抽象。而且失去做为一个点,将失去抽象。而且失去做为一个点的圆心的标

10、识。的圆心的标识。针对实现的继承一般在原型开发中使用。针对实现的继承一般在原型开发中使用。就盘瞪碧疯垂刀枢挑寒巡爹胚滦纯举埋冷揍耽焉丝菲闯闻痢虎刹截蕴忠金面向对象实现及测试第九章面向对象实现及测试第九章 针对特殊化的继承这种继承的使用适合于大多数面向对象这种继承的使用适合于大多数面向对象程序设计语言所提供的关系,是针对一程序设计语言所提供的关系,是针对一般化般化- -特殊化关系的特殊化关系的。这种继承使用这种继承使用is a关系。关系。类类B的一个实例的一个实例是是(is a)类类A的一个实例的一个实例。在使用中,在使用中,继承将使得既存类的界面成继承将使得既存类的界面成为新类的界面为新类的界

11、面。这表明。这表明新类具有它的基新类具有它的基类的所有行为类的所有行为。肯谢轩塔胃计庙萎殴五月际付科羞苯仇这秋宽躺氦谭艘殃糟污眨纺操苹珐面向对象实现及测试第九章面向对象实现及测试第九章为了定义为了定义Dictionary类,应当首先查找既类,应当首先查找既存的抽象,看存的抽象,看Dictionary类会是哪个既存类会是哪个既存抽象的特殊情况。抽象的特殊情况。Dictionary应是一个有序表,但具有它自应是一个有序表,但具有它自己特有的操作,如使用关键码进行搜索等。己特有的操作,如使用关键码进行搜索等。既存的既存的OrderedList类可以提供类可以提供Dictionary类的某些行为,但不

12、是全部。还要确认,类的某些行为,但不是全部。还要确认,在在OrderedList中是否有的行为在中是否有的行为在Dictionary中是不需要的。如果有,可能中是不需要的。如果有,可能需要重新组织层次或者开发某些附加的抽需要重新组织层次或者开发某些附加的抽象。象。涪驾姚其御巴椿妄篷疲屠磐增拇侮荷拱厌榨赎勾蓄韧增嫂测瘫津蔑望爬斋面向对象实现及测试第九章面向对象实现及测试第九章is kind of (是一种)继承这种继承允许有选择地包含既存类的属这种继承允许有选择地包含既存类的属性,从而建立新的定义性,从而建立新的定义。一个一个鸟鸟类可能有一个关于类可能有一个关于飞行飞行的属性。的属性。一个一个鸵

13、鸟鸵鸟派生类在模型化时可能就不选派生类在模型化时可能就不选择这个属性,因为择这个属性,因为鸵鸟鸵鸟不会飞不会飞。鸵鸟鸵鸟是是一种一种( ( is kind of ) )鸟鸟,但具有的属性与,但具有的属性与鸟鸟不完全相同。不完全相同。is kind of 继承是不严格继承。继承是不严格继承。俗国隶蔽搁显拟疑字漆陶苔悬釜坚刽恒耽裹沦敝铭侩疥志柞魏凯冶低样芬面向对象实现及测试第九章面向对象实现及测试第九章类的实现一种方案是一种方案是先开发一个比较小的比较简先开发一个比较小的比较简单的类单的类,做为开发比较大的比较复杂的做为开发比较大的比较复杂的类的基础类的基础。即从简单到复杂的开发方案。即从简单到复

14、杂的开发方案。在这种方案中,在这种方案中,类的开发是类的开发是分层分层的。一的。一个类建立在一些既存的类的基础上,而个类建立在一些既存的类的基础上,而这些既存的类又是建立在其它既存的类这些既存的类又是建立在其它既存的类的基础上的基础上。通过诸如。通过诸如“is a”或或“is part of”之类的关系,利用既存代码就之类的关系,利用既存代码就能着手建立新的类。能着手建立新的类。碰混起贰迭僧茶耍热谍碳待肌郸妖为葵劳挠宫迭徐筛搏锚胰谐懈辖迷谁动面向对象实现及测试第九章面向对象实现及测试第九章9.3 9.3 面向对象的测试策略面向对象的测试策略赣为镜抹贰义每鲸栅歧道徊栋舜侧窿休签名位情鬼僵翁掌冗乔

15、绑褐詹啪把面向对象实现及测试第九章面向对象实现及测试第九章 测试计算机软件的经典策略是从测试计算机软件的经典策略是从“小小型测试型测试”开始,逐步过渡到开始,逐步过渡到“大型测试大型测试”测试测试顺序顺序:单元测试单元测试 集成测试集成测试-确定测试确定测试-系统测试系统测试球燥秃驱夯堵赐学康恨茶榔摄痒爸凸毋雇恩袜雄考惯侮汪峡裁骂卵福吝肘面向对象实现及测试第九章面向对象实现及测试第九章单元测试单元测试(类测试)(类测试) 在面向对象环境下,最小的可测试的单元是封装了的类或对象,而不是程序模块。 面向对象软件的类测试等价于传统软件开发方法中的单元测试。但它是由类中封装的操作和和类的状态行为驱动的

16、。 完全孤立地测试类的各个操作是不行的。碰扰姑油秘咽粳尔咋翻先概呵稗题巩殊卫材怕捉烟拧吕痉衬嘛垣痰碉椒侮面向对象实现及测试第九章面向对象实现及测试第九章 考虑一个类的层次。在基类中我们定义了一个操作X。 每一个派生类都使用操作X,它是在各个类所定义的私有属性和操作的环境中使用的。因使用操作X的环境变化太大,所以必须在每一个派生类的环境下都测试操作X。 在面向对象开发环境下,把操作完全孤立起来进行测试,其收效是很小的。锯相绢栽棚邓擎腋轴纪闰薯屋娠恒扮痞达龟仔皆演烫披倔疫栈废胞凿法活面向对象实现及测试第九章面向对象实现及测试第九章集成测试集成测试 因为面向对象软件没有一个层次的控制结构,所以传统的

17、自顶向下和自底向上的组装策略意义不大。 每次将一个操作组装到类中(像传统的增殖式组装那样)常常行不通,因为在构成类的各个部件之间存在各种直接的和非直接的交互直接的和非直接的交互。 对于面向对象系统的集成测试,存在两种不同的测试策略。信右桑北涕单挨唇脆履崖谢盂泄庸椒海芯掐娇意织惮慢奄切洒资期省歌际面向对象实现及测试第九章面向对象实现及测试第九章基于线程测试基于线程测试(Thread-basedTest) 它把为响应某一系统输入或事件所需的一组类组装在一起。每一条线索将分别测试和组装。基于使用的测试基于使用的测试(Use-basedTest) 它着眼于系统结构,首先测试独立类,这些类只使用很少的服

18、务器类。再测试那些使用了独立类的相关类。一系列测试各层相关类的活动继续下去,直到整个系统构造完成。刘淆胳同疆漠窟电碉篮曙衫绷嘻嚼穿垦投轿违彝短鲤蝉脉夷荆县禾镇茶稀面向对象实现及测试第九章面向对象实现及测试第九章确认测试确认测试在进行在进行确认测试确认测试和和系统测试系统测试时,不时,不关心类之间连接的细节。着眼于用关心类之间连接的细节。着眼于用户的要求和用户能够认可的系统输户的要求和用户能够认可的系统输出。出。为了帮助确认测试的执行,测试者为了帮助确认测试的执行,测试者需要需要回到分析模型回到分析模型,根据那里提供,根据那里提供的事件序列(脚本)进行测试。的事件序列(脚本)进行测试。可以利用黑

19、盒测试的方法来驱动确可以利用黑盒测试的方法来驱动确认测试。认测试。鄙误睁肋裁坎时粘获蒙面吐铜烛捧转税咙吵衷贸箭韶元喷浅毫偶似奠衷窗面向对象实现及测试第九章面向对象实现及测试第九章测试方法学测试方法学检测软件中的故障检测软件中的故障并并确确定软件是否执行了预定要开发的功定软件是否执行了预定要开发的功能能。测试过程包括了测试过程包括了一组测试用例的开一组测试用例的开发发,每一个测试用例要求能检验应,每一个测试用例要求能检验应用的一个特定的元素。还需要分析用的一个特定的元素。还需要分析用各个测试用例执行测试的结果来用各个测试用例执行测试的结果来收集有关软件的信息。收集有关软件的信息。考眯旺川愈栈羚坍

20、蛤诫茧蚜僧烩悲区钞攘慈咀尚痪扛淫省迁咐易廉邑是辩面向对象实现及测试第九章面向对象实现及测试第九章按不同层次进行测试测测试试类类中中各各个个操操作作,主主要要测测试试类类,这这种种测测试试是是某某些些单单元元测测试试与与组组装装测测试试的组合的组合假假定定测测试试一一个个软软件件与与测测试试一一个个类类一一样样。这这个个测测试试者者常常常常就就是是一一个个特特定定类的开发者。类的开发者。舰讣的膘溺淀靡峙涣哎蒲替唬欲砰远略峙敝霞蛛峭筏橱肺豢魁凤继赚猫烘面向对象实现及测试第九章面向对象实现及测试第九章9.4.1 类测试的种类随机测试随机测试划分测试划分测试基于故障的测试基于故障的测试9.4 设计测试

21、用例仰靳浦戒其抽崭聘正桅伦盐经匙七畜棚然水聚底梧尤应枣废汲汗豺侨描吊面向对象实现及测试第九章面向对象实现及测试第九章随机测试例:例:银行应用系统中,银行应用系统中,account(帐户)(帐户)类的操作有:类的操作有:open,setup,deposit,withdraw,balance,summarize,creditLimit和和close限制:限制:在所有操作中最先执行在所有操作中最先执行open在所有操作中最后执行在所有操作中最后执行close缘躬群齐犬怎邪蛆梗暑驴评坡割弃的馏梧冯淋非颖耗迈惠短尘霖术殴插惯面向对象实现及测试第九章面向对象实现及测试第九章则:则:一个一个account类

22、的最小测试序列包括如下操作:类的最小测试序列包括如下操作:open.setup.deposit.withdraw.close但该序列中可能有许多其它行为:但该序列中可能有许多其它行为:open.setup.deposit.deposit|withdraw|balance|summarize|creditLimit.withdraw.close从上述序列中可以随机地产生一系列不同的操作序列:从上述序列中可以随机地产生一系列不同的操作序列:#r1:open.setup.deposit.deposit.balance.summarize.withdraw.close#r2:open.setup.de

23、posit.withdraw.deposit.balance.creditLimit.withdraw.close坝馒栗嗡扦搔聊渤越坯吾猾帘盎罕铺返跺砸媚愉谣四痘牙捐肪涌孤玫游啡面向对象实现及测试第九章面向对象实现及测试第九章划分测试(等价划分)基于状态的划分基于状态的划分根据类根据类操作改变状态的能力操作改变状态的能力来划分类操作。来划分类操作。对对account类来说,类来说,状态操作状态操作包括包括deposit和和withdraw,非状态操作非状态操作有有balance,summarize和和creditLimit#r1:open.setup.deposit.deposit.withd

24、raw.withdraw.close#r2:open.setup.deposit.summarize.creditLimit.withdraw.close貌拥咐荒邪饱懈力辨流徐或捡谜焙闷氖葡镍蚕饼闸火宁陨樊焙冗浴勇义居面向对象实现及测试第九章面向对象实现及测试第九章基于属性的划分基于属性的划分根据类根据类操作使用的属性操作使用的属性来划分类操作。来划分类操作。对对account类来说,操作分成三个类别:类来说,操作分成三个类别:使用使用balance的操作的操作修改修改balance的操作的操作不使用也不修改不使用也不修改balance的操作的操作瘦琶所篇竖宇夜俏轿韶陈靖氧窍变删汕捷籍键营篓筷

25、休狼澳宠戮换抨晶产面向对象实现及测试第九章面向对象实现及测试第九章基于功能的划分基于功能的划分根据类根据类操作所完成的功能操作所完成的功能来划分类操作。来划分类操作。对对account类来说:类来说:初始化初始化操作(操作(open,setup)计算计算操作(操作(deposit,withdraw)查询查询操作操作balance,summarize,creditLimit)终止终止操作(操作(close)颊肥扎洞哆听踊谣躇曹坦跪郑兢纫软毖物敲屯轨溉蔡窿牢饲灼害嚼敏黔溶面向对象实现及测试第九章面向对象实现及测试第九章基于故障的测试与传统的方法类似,也是首先与传统的方法类似,也是首先推测软件中推测

26、软件中可能错误可能错误,然后设计出,然后设计出最可能最可能发现这些发现这些错误的错误的测试用例测试用例。例:测试例:测试SQRT(计算平方根)操作(计算平方根)操作把语句把语句if(x=0)calculate_square_root();误写成误写成if(x0)calculate_square_root();宾彰模落纲旷察邢敲全训雄恒酶羽营纷慨抹缕秉菲奥坝凝嫉南蓄尘错拇涯面向对象实现及测试第九章面向对象实现及测试第九章9.4.2 集成测试 测试一个新类时,需要先测试在定义中所涉及的类,再考虑这些类的组装。 关系“is a”“is part of”和“refers to”建立了测试几个类时的次序

27、之间的关联。一旦基本类测试完成,使用这些类的那些类可以接着测试,然后按层次继续测试下去。碳掏肋中拥绸鼻泅他王胚倾握泊综宇淀隋梢瘩半冀砾厢滩凑蛮靴烃舔辱欧面向对象实现及测试第九章面向对象实现及测试第九章多类测试对每个客户类,对每个客户类,使用类操作符列表使用类操作符列表来来生成一系列随机测试序列生成一系列随机测试序列,这些操作符向,这些操作符向服务器类实例服务器类实例发送消息发送消息。对所产生的每个消息,对所产生的每个消息,确定确定协作类和协作类和在服务器对象中的对应操作符在服务器对象中的对应操作符对对服务器中的每个服务器中的每个操作符操作符(已经被来(已经被来自客户对象的消息调用),自客户对象

28、的消息调用),确定传递的消确定传递的消息息对对每个每个消息消息,确定确定下一层被调用的下一层被调用的操操作符作符,并把这些,并把这些操作符结合进测试序列操作符结合进测试序列中中焦痰舔罕殷隅交碱蚊藐啪敬踪稗逊垢酣织棺竹争素波躺梭锤荤蹋有供掩节面向对象实现及测试第九章面向对象实现及测试第九章例:例:银行系统协作图银行系统协作图绍霉集遣儡邑辱鄂载助谍中均哄津熬迁秩撬丛祸演蝇喇纠陡势幂数优芋岩面向对象实现及测试第九章面向对象实现及测试第九章对于对于操作序列操作序列:Bank类对类对ATM的操作序列:的操作序列:verifyAcct.verifyPIN.verifyPolicy.withdrawReq|

29、depositReq|acctInfoREQ对对Bank类的类的测试用例测试用例可能是:可能是:#r3verifyAcct.verifyPIN.depositReq为考虑为考虑协作者协作者,上述序列中需要考虑与,上述序列中需要考虑与测试用例测试用例#r3中的每个操作中的每个操作相关的消息相关的消息扔仔绣纪们识悼雀奴劲惕蚀染呜棋汕簿傲凋桔搬畏谈睦据译娘序雨障咒澡面向对象实现及测试第九章面向对象实现及测试第九章Bank需与需与ValidationInfo协作协作以执行以执行verifyAcct和和VerifyPIN,Bank还必须还必须与与Account协作协作以执行以执行depositReq,因

30、此上述协作的因此上述协作的新测试用例新测试用例是:是:#r4:verifyAcctBank.validAcctValidationInfo.verfyPINBank.validPINvalidationInfo.depositReq.depositaccount魏额己崔湘注浊寐腥棍荫苑茂铝震始巍滤赤豹某拌鸯铀贾嗽谩遇诀疆详跳面向对象实现及测试第九章面向对象实现及测试第九章从动态模型导出测试用例例:例:炽湖郑含楷类旬酷唬蹦氮翔丛潮紧煎猫尸启没贾睹却捕霓议屠淆韵忧诈舷面向对象实现及测试第九章面向对象实现及测试第九章设计出的测试用例应该设计出的测试用例应该覆盖所有状态覆盖所有状态,即,即操作序列应该

31、使得操作序列应该使得account类实例类实例遍历遍历所有所有允许的状态转换:允许的状态转换:#s1:open.setupAccnt.deposit(initial).withdraw(final).close向该序列中加入向该序列中加入附加的测试序列附加的测试序列,可得到其他,可得到其他测试用例:测试用例:#s2:open.setupAccnt.deposit(initial).deposit.balance.credit.withdraw(final).close#s3:open.setupAccnt.deposit(initial).deposit.withdraw.accntInfo.

32、withdraw(final).close羞烽潞灯盆匙杖饿抿舍耙桩会抚皑酱限霹敖胃磐过捍毕近鸳俩眉衰藐拨克面向对象实现及测试第九章面向对象实现及测试第九章习题:以下观念正确吗?我们拥有一套讲述如何开发软件的书籍,书中充满了标准与示例,可以帮助我们解决软件开发中遇到的任何问题我们拥有最好的开发工具、最好的计算机,一定能做出优秀的软件。如果我们落后于计划,可以增加更多的程序员来解决。既然需求分析很困难,不管三七二十一先把软件做了再说,反正软件是灵活的,随时可以修改。莉霞业硬雌对弧莹输亭逗毋饭蝴悬诽酬婆羚痊叉证曾纵镀盗搅划敞蹿柱经面向对象实现及测试第九章面向对象实现及测试第九章习题:以下观念正确吗?

33、如果软件运行较慢,是换一台更快的计算机还是设计一种更快的算法?有最好的软件工程方法,最好的编程语言吗?编程时是否应该多使用技巧?软件中的错误是否可以按严重程度分等级?搞卵列术弛秩煎细褐腥扬电萌涣伞董款训峦恨投轰眶衙获九爹荒其薄附酣面向对象实现及测试第九章面向对象实现及测试第九章判断下列关于程序设计判断下列关于程序设计判断下列关于程序设计判断下列关于程序设计风格和软件测试的叙述。风格和软件测试的叙述。风格和软件测试的叙述。风格和软件测试的叙述。(1)(1)用黑盒法测试时,测试用例是根据程序内部逻辑设用黑盒法测试时,测试用例是根据程序内部逻辑设用黑盒法测试时,测试用例是根据程序内部逻辑设用黑盒法测

34、试时,测试用例是根据程序内部逻辑设计的计的计的计的(2)(2)尽量用公共过程或子程序代替重复的代码段。尽量用公共过程或子程序代替重复的代码段。尽量用公共过程或子程序代替重复的代码段。尽量用公共过程或子程序代替重复的代码段。(3)(3)测试是为了验证软件已正确实现用户的要求。测试是为了验证软件已正确实现用户的要求。测试是为了验证软件已正确实现用户的要求。测试是为了验证软件已正确实现用户的要求。(4)(4)有有有有n n个判定语句的连锁分支结构有个判定语句的连锁分支结构有个判定语句的连锁分支结构有个判定语句的连锁分支结构有2 2n n条路径。条路径。条路径。条路径。(5)(5)尽量采用复合的条件测

35、试,避免嵌套的分支结构。尽量采用复合的条件测试,避免嵌套的分支结构。尽量采用复合的条件测试,避免嵌套的分支结构。尽量采用复合的条件测试,避免嵌套的分支结构。(6)GOTO(6)GOTO类型的语句概念简单,使用方便,在某些类型的语句概念简单,使用方便,在某些类型的语句概念简单,使用方便,在某些类型的语句概念简单,使用方便,在某些情况下,保留情况下,保留情况下,保留情况下,保留GOTOGOTO类型的语句反能使写出的程序更类型的语句反能使写出的程序更类型的语句反能使写出的程序更类型的语句反能使写出的程序更加简洁。加简洁。加简洁。加简洁。(7)(7)发现错误多的程序模块,残留在模块中的错误越少。发现错

36、误多的程序模块,残留在模块中的错误越少。发现错误多的程序模块,残留在模块中的错误越少。发现错误多的程序模块,残留在模块中的错误越少。(8)(8)程序效率的提高主要应通过选择高效的算法来实程序效率的提高主要应通过选择高效的算法来实程序效率的提高主要应通过选择高效的算法来实程序效率的提高主要应通过选择高效的算法来实现。现。现。现。嘛蔽灾详籍授乔矩趋搽疏浊潘社练潦直涸崖落仓猖亨邪绞阑雇菱奄账栅鲸面向对象实现及测试第九章面向对象实现及测试第九章软件测试的目的是(软件测试的目的是(软件测试的目的是(软件测试的目的是( A A A A )。为了提高测试的效率,应)。为了提高测试的效率,应)。为了提高测试的

37、效率,应)。为了提高测试的效率,应该(该(该(该( B B B B )。使用白盒测试方法时,确定测试数据应根)。使用白盒测试方法时,确定测试数据应根)。使用白盒测试方法时,确定测试数据应根)。使用白盒测试方法时,确定测试数据应根据(据(据(据( C C C C )和指定的覆盖标准。与设计测试数据无关的)和指定的覆盖标准。与设计测试数据无关的)和指定的覆盖标准。与设计测试数据无关的)和指定的覆盖标准。与设计测试数据无关的文档是(文档是(文档是(文档是( D D D D )。)。)。)。A.A. 评价软件的质量评价软件的质量评价软件的质量评价软件的质量 发现软件的错误发现软件的错误发现软件的错误发

38、现软件的错误 找出软件中的所有错误找出软件中的所有错误找出软件中的所有错误找出软件中的所有错误 证明软件是正确的证明软件是正确的证明软件是正确的证明软件是正确的B.B. 随机地选取测试数据随机地选取测试数据随机地选取测试数据随机地选取测试数据 取一切可能的输入数据作为测试数据取一切可能的输入数据作为测试数据取一切可能的输入数据作为测试数据取一切可能的输入数据作为测试数据 在完成编码以后制定软件的测试计划在完成编码以后制定软件的测试计划在完成编码以后制定软件的测试计划在完成编码以后制定软件的测试计划 选择发现错误的可能性大的数据作为测试数据选择发现错误的可能性大的数据作为测试数据选择发现错误的可

39、能性大的数据作为测试数据选择发现错误的可能性大的数据作为测试数据C.C. 程序的内部逻辑程序的内部逻辑程序的内部逻辑程序的内部逻辑 程序的复杂程度程序的复杂程度程序的复杂程度程序的复杂程度 使用说明书使用说明书使用说明书使用说明书 程序的功能程序的功能程序的功能程序的功能D.D. 该软件的设计人员该软件的设计人员该软件的设计人员该软件的设计人员 程序的复杂程度程序的复杂程度程序的复杂程度程序的复杂程度 源程序源程序源程序源程序 项目开发计划项目开发计划项目开发计划项目开发计划潭善殿投铝桐恕恶赏例携废驼谈愧希羹互鼻把滩氧土帮哩兴擅涸碑守葱惺面向对象实现及测试第九章面向对象实现及测试第九章判断对错

40、题判断对错题判断对错题判断对错题1 1软件测试按照测试过程分类为黑盒、白盒测试软件测试按照测试过程分类为黑盒、白盒测试软件测试按照测试过程分类为黑盒、白盒测试软件测试按照测试过程分类为黑盒、白盒测试2 2在设计测试用例时,应包括合理的输入条件和不在设计测试用例时,应包括合理的输入条件和不在设计测试用例时,应包括合理的输入条件和不在设计测试用例时,应包括合理的输入条件和不合理的输入条件。合理的输入条件。合理的输入条件。合理的输入条件。 3.单元测试属于动态测试。单元测试属于动态测试。单元测试属于动态测试。单元测试属于动态测试。4.从软件开发者的角度出发,普遍希望通过软件测试从软件开发者的角度出发

41、,普遍希望通过软件测试从软件开发者的角度出发,普遍希望通过软件测试从软件开发者的角度出发,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是否可接受暴露软件中隐藏的错误和缺陷,以考虑是否可接受暴露软件中隐藏的错误和缺陷,以考虑是否可接受暴露软件中隐藏的错误和缺陷,以考虑是否可接受该产品。该产品。该产品。该产品。5.软件项目在进入需求分析阶段,测试人员应该开始软件项目在进入需求分析阶段,测试人员应该开始软件项目在进入需求分析阶段,测试人员应该开始软件项目在进入需求分析阶段,测试人员应该开始介入其中。介入其中。介入其中。介入其中。6.软件生存周期是从软件开始开发到开发结束的整个软件生存周期是

42、从软件开始开发到开发结束的整个软件生存周期是从软件开始开发到开发结束的整个软件生存周期是从软件开始开发到开发结束的整个时期。时期。时期。时期。7. 7.测试人员要坚持原则,缺陷未修复完坚决不予通过。测试人员要坚持原则,缺陷未修复完坚决不予通过。测试人员要坚持原则,缺陷未修复完坚决不予通过。测试人员要坚持原则,缺陷未修复完坚决不予通过。柒裔太逊麦卉浇吻朋欣咐狂顽绑紊莱灸渐驴蠢怪卒槽稿扛狈涛苟饥拯锄茫面向对象实现及测试第九章面向对象实现及测试第九章8 8详细设计的目的是为软件结构图中的每一个模块确详细设计的目的是为软件结构图中的每一个模块确详细设计的目的是为软件结构图中的每一个模块确详细设计的目的

43、是为软件结构图中的每一个模块确定使用的算法和块内数据结构,并用某种选定的表定使用的算法和块内数据结构,并用某种选定的表定使用的算法和块内数据结构,并用某种选定的表定使用的算法和块内数据结构,并用某种选定的表达工具给出清晰的描述。达工具给出清晰的描述。达工具给出清晰的描述。达工具给出清晰的描述。9 9软件是一种逻辑实体,而不是具体的物理实体,因软件是一种逻辑实体,而不是具体的物理实体,因软件是一种逻辑实体,而不是具体的物理实体,因软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性。而它具有抽象性。而它具有抽象性。而它具有抽象性。 1010测试程序仅仅按预期方式运行就行了。测试程序仅仅按预

44、期方式运行就行了。测试程序仅仅按预期方式运行就行了。测试程序仅仅按预期方式运行就行了。茅胡帚盏瓮耻桔犀呕眯刊敏但退慨菇滁积竟厢碱枚磊俞鬼另曼煽悄叙姿掩面向对象实现及测试第九章面向对象实现及测试第九章作业:根据食堂饭卡的使用脚本,画出事件跟踪图作业:根据食堂饭卡的使用脚本,画出事件跟踪图作业:根据食堂饭卡的使用脚本,画出事件跟踪图作业:根据食堂饭卡的使用脚本,画出事件跟踪图用户插卡用户插卡读卡机读出剩余金额读卡机读出剩余金额读卡机显示剩余金额给用户和操作员读卡机显示剩余金额给用户和操作员操作员输入扣减金额操作员输入扣减金额读卡机将原金额数送给金额计算器读卡机将原金额数送给金额计算器读卡机将扣减金额数送给金额计算器读卡机将扣减金额数送给金额计算器计算剩余金额计算剩余金额将剩余金额数送给读卡机将剩余金额数送给读卡机读卡机将剩余金额数写入卡中读卡机将剩余金额数写入卡中显示剩余金额显示剩余金额读卡机提示用户取卡读卡机提示用户取卡用户取走卡用户取走卡读卡机显示等待状态读卡机显示等待状态龟琶诫魏撵纷撕靡工钢倘熏禁魁馒田醉棕惨剿帛歼桅煽踊腮汗灶杖芭块兄面向对象实现及测试第九章面向对象实现及测试第九章

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号