面向对象实现及测试第九章课件.ppt

上传人(卖家):晟晟文业 文档编号:4537184 上传时间:2022-12-17 格式:PPT 页数:47 大小:340KB
下载 相关 举报
面向对象实现及测试第九章课件.ppt_第1页
第1页 / 共47页
面向对象实现及测试第九章课件.ppt_第2页
第2页 / 共47页
面向对象实现及测试第九章课件.ppt_第3页
第3页 / 共47页
面向对象实现及测试第九章课件.ppt_第4页
第4页 / 共47页
面向对象实现及测试第九章课件.ppt_第5页
第5页 / 共47页
点击查看更多>>
资源描述

1、 面向对象的实现主要包括两项工作:面向对象的实现主要包括两项工作:(1)写)写面向对象程序面向对象程序;(2)测试并调试测试并调试面向对象程序面向对象程序 面向对象程序的质量基本上由面向对象面向对象程序的质量基本上由面向对象设计的质量决定,但设计的质量决定,但程序设计语言的特程序设计语言的特点和设计风格也将影响程序点和设计风格也将影响程序的可靠性、的可靠性、可重用性和可维护性可重用性和可维护性 软件测试是软件测试是保证软件保证软件可靠性可靠性的的主要措施主要措施9.1 9.1 程序设计语言程序设计语言9.1.1 9.1.1 面向对象语言的优点面向对象语言的优点(1 1)一致的表示方法)一致的表

2、示方法(2 2)可重用性)可重用性(3 3)可维护性)可维护性9.1.2 9.1.2 面向对象语言的技术特点面向对象语言的技术特点(1 1)支持类与对象概念的机制)支持类与对象概念的机制(2 2)实现整体)实现整体-部分结构的机制部分结构的机制(3 3)实现一般)实现一般-特殊结构的机制特殊结构的机制(4 4)实现属性和服务的机制)实现属性和服务的机制(5 5)类型检查)类型检查(6 6)类库)类库(7 7)效率)效率(8 8)持久保存对象)持久保存对象(9 9)参数化类)参数化类(1010)开发环境)开发环境9.1.3 9.1.3 选择面向对象语言选择面向对象语言(1 1)将来是否占主导地位

3、)将来是否占主导地位(2 2)可重用性)可重用性(3 3)类库和开发环境)类库和开发环境(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)利用继承机制)利用继承机制 调用子过程调用子过程 分解因子分解因子 使用委托使用委托 把代码封装在类中把代码封装在类中9.2.1 9.2.1

4、提高可扩充性提高可扩充性(1 1)封装实现策略)封装实现策略(2 2)不要用一个方法遍历多条)不要用一个方法遍历多条关联链关联链(3 3)避免使用多分支结构)避免使用多分支结构(4 4)精心确定公有方法)精心确定公有方法9.2.1 9.2.1 提高健壮性提高健壮性(1 1)预防用户的操作错误)预防用户的操作错误(2 2)检查参数的合法性)检查参数的合法性(3 3)不要预先确定限制条件)不要预先确定限制条件(4 4)先测试后优化)先测试后优化可以利用既存类来生成新类可以利用既存类来生成新类。9.3 9.3 面向对象的测试策略面向对象的测试策略 测试计算机软件的经典策略是从测试计算机软件的经典策略

5、是从“小小型测试型测试”开始,逐步过渡到开始,逐步过渡到“大型测试大型测试”测试测试顺序顺序:单元测试单元测试 集成测试集成测试-确定测试确定测试-系统测试系统测试 例:例:银行应用系统中,银行应用系统中,account(帐户)(帐户)类的操作有:类的操作有:open,setup,deposit,withdraw,balance,summarize,creditLimit和和close 限制:限制:在所有操作中最先执行在所有操作中最先执行open 在所有操作中最后执行在所有操作中最后执行close 则:则:一个一个account类的最小测试序列包括如下操作:类的最小测试序列包括如下操作:ope

6、n.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.deposit.withdraw.deposit.balance.

7、creditLimit.withdraw.close基于状态的划分基于状态的划分 根据类根据类操作改变状态的能力操作改变状态的能力来划分类操作。来划分类操作。对对account类来说,类来说,状态操作状态操作包括包括deposit和和withdraw,非状态操作非状态操作有有balance,summarize和和creditLimit#r1:open.setup.deposit.deposit.withdraw.withdraw.close#r2:open.setup.deposit.summarize.creditLimit.withdraw.close基于属性的划分基于属性的划分 根据类根

8、据类操作使用的属性操作使用的属性来划分类操作。来划分类操作。对对account类来说,操作分成三个类别:类来说,操作分成三个类别:使用使用balance的操作的操作 修改修改balance的操作的操作 不使用也不修改不使用也不修改balance的操作的操作基于功能的划分基于功能的划分 根据类根据类操作所完成的功能操作所完成的功能来划分类操作。来划分类操作。对对account类来说:类来说:初始化初始化操作(操作(open,setup)计算计算操作(操作(deposit,withdraw)查询查询操作操作balance,summarize,creditLimit)终止终止操作(操作(close)

9、与传统的方法类似,也是首先与传统的方法类似,也是首先推测软件中推测软件中可能错误可能错误,然后设计出,然后设计出最可能最可能发现这些发现这些错误的错误的测试用例测试用例。例:测试例:测试SQRT(计算平方根)操作(计算平方根)操作 把语句把语句if(x=0)calculate_square_root();误写成误写成if(x0)calculate_square_root();对每个客户类,对每个客户类,使用类操作符列表使用类操作符列表来来生成一系列随机测试序列生成一系列随机测试序列,这些操作符向,这些操作符向服务器类实例服务器类实例发送消息发送消息。对所产生的每个消息,对所产生的每个消息,确定

10、确定协作类和协作类和在服务器对象中的对应操作符在服务器对象中的对应操作符 对对服务器中的每个服务器中的每个操作符操作符(已经被来(已经被来自客户对象的消息调用),自客户对象的消息调用),确定传递的消确定传递的消息息 对对每个每个消息消息,确定确定下一层被调用的下一层被调用的操操作符作符,并把这些,并把这些操作符结合进测试序列操作符结合进测试序列中中例:例:银行系统协作图银行系统协作图 对于对于操作序列操作序列:Bank类对类对ATM的操作序列:的操作序列:verifyAcct.verifyPIN.verifyPolicy.withdrawReq|depositReq|acctInfoREQ 对

11、对Bank类的类的测试用例测试用例可能是:可能是:#r3 verifyAcct.verifyPIN.depositReq为考虑为考虑协作者协作者,上述序列中需要考虑与,上述序列中需要考虑与测试用例测试用例#r3中的每个操作中的每个操作相关的消息相关的消息 Bank需与需与ValidationInfo协作协作以执行以执行verifyAcct和和VerifyPIN,Bank还必须还必须与与Account协作协作以执行以执行depositReq,因此上述协作的因此上述协作的新测试用例新测试用例是:是:#r4:verifyAcctBank.validAcctValidationInfo.verfyPI

12、NBank.validPINvalidationInfo.depositReq.depositaccount 例:例:设计出的测试用例应该设计出的测试用例应该覆盖所有状态覆盖所有状态,即,即操作序列应该使得操作序列应该使得account类实例类实例遍历遍历所有所有允许的状态转换:允许的状态转换:#s1:open.setupAccnt.deposit(initial).withdraw(final).close向该序列中加入向该序列中加入附加的测试序列附加的测试序列,可得到其他,可得到其他测试用例:测试用例:#s2:open.setupAccnt.deposit(initial).deposit

13、.balance.credit.withdraw(final).close#s3:open.setupAccnt.deposit(initial).deposit.withdraw.accntInfo.withdraw(final).close 我们拥有最好的开发工具、最好的计算机,一定能做出优秀的软件。如果我们落后于计划,可以增加更多的程序员来解决。既然需求分析很困难,不管三七二十一先把软件做了再说,反正软件是灵活的,随时可以修改。有最好的软件工程方法,最好的编程语言吗?编程时是否应该多使用技巧?软件中的错误是否可以按严重程度分等级?用户插卡用户插卡读卡机读出剩余金额读卡机读出剩余金额读卡机显示剩余金额给用户和操作员读卡机显示剩余金额给用户和操作员操作员输入扣减金额操作员输入扣减金额读卡机将原金额数送给金额计算器读卡机将原金额数送给金额计算器读卡机将扣减金额数送给金额计算器读卡机将扣减金额数送给金额计算器计算剩余金额计算剩余金额将剩余金额数送给读卡机将剩余金额数送给读卡机读卡机将剩余金额数写入卡中读卡机将剩余金额数写入卡中显示剩余金额显示剩余金额读卡机提示用户取卡读卡机提示用户取卡用户取走卡用户取走卡读卡机显示等待状态读卡机显示等待状态

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(面向对象实现及测试第九章课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|