面向对象的软件测试课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《面向对象的软件测试课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 软件 测试 课件
- 资源描述:
-
1、5.7 面向对象的软件测试OOOO的系统与使用功能模型开发的系统之间的差别:的系统与使用功能模型开发的系统之间的差别:对象作为一个单独的组件一般要比一个功能模块大对象作为一个单独的组件一般要比一个功能模块大由对象到子系统的集成通常是松散耦合的,系统中由对象到子系统的集成通常是松散耦合的,系统中 没有一个明显的没有一个明显的“顶层顶层”如果对象被复用,测试者就无法进入组件内部分析如果对象被复用,测试者就无法进入组件内部分析 其代码其代码 测试策略和测试战术的测试策略和测试战术的改变改变白盒测试方法需要扩展到更大粒度的对象上白盒测试方法需要扩展到更大粒度的对象上集成测试采用黑盒测试集成测试采用黑盒
2、测试面向对象系统的测试可分为四个层次面向对象系统的测试可分为四个层次测试与对象关联的单个操作测试与对象关联的单个操作测试单个对象类测试单个对象类测试对象集群测试对象集群测试面向对象系统测试面向对象系统 5.7.1 5.7.1 对象类的测试对象类的测试用白盒的覆盖测试方法保证所有程序中的语句至用白盒的覆盖测试方法保证所有程序中的语句至少执行一遍,所有的程序路径都要执行到。少执行一遍,所有的程序路径都要执行到。应包括:应包括:对象中所有操作被单独隔离测试对象中所有操作被单独隔离测试对象所有属性的设置和访问的测试对象所有属性的设置和访问的测试对象的所有可能状态的测试。对象的所有可能状态的测试。所有能
3、引起状态改变的事件都要模拟到。所有能引起状态改变的事件都要模拟到。相当于传统的单元测试,相当于传统的单元测试,单元概念单元概念的变化的变化 封装的类或对象作为最小封装的类或对象作为最小 的可测试单位的可测试单位测试单个类的方法(1 1)随机测试随机测试例例:银行系统的银行系统的account(帐户帐户)类有下列操作:类有下列操作:open(打开打开)setup(建立建立)deposit(存款存款)withdraw(取款取款)balance(余额余额)summarize(清单清单)creditLimit(透支限额透支限额)close(关闭关闭)系统对系统对操作的限制:操作的限制:必须在应用其它操
4、作之前先打开帐户必须在应用其它操作之前先打开帐户,在完成了在完成了 全部操作之后才能关闭帐户全部操作之后才能关闭帐户;在限制在限制下还是下还是存在存在操操作的许作的许多排列多排列一个一个account类实例的最小行为历史包括下列操作类实例的最小行为历史包括下列操作:open.setup.deposit.withdraw.close account类的最小测试序列类的最小测试序列大量的其它行为可能在下面序列中发生大量的其它行为可能在下面序列中发生:open.setup.deposit.deposit|withdraw|balance|summarize|creditLimit n.withdra
5、w.close 一系列不同的操作序列可以随机地产生一系列不同的操作序列可以随机地产生,例如例如:测试用例测试用例r1:open.setup.deposit.deposit.balance.summarize.creditLimit.withdraw.close 测试用例测试用例r2:open.setup.deposit.withdraw.deposit.balance.creditLimit.withdraw.close 这些和其它的随机顺序测试被进行这些和其它的随机顺序测试被进行,以测试不以测试不同的类实例的生存历史同的类实例的生存历史.测试单个类的方法(2 2)划分测试划分测试(parti
6、tion testing)与测试传统软件时采用的等价类划分方法类似与测试传统软件时采用的等价类划分方法类似.划分类别的方法划分类别的方法:基于状态的划分基于状态的划分基于属性的划分基于属性的划分基于功能的划分基于功能的划分基于状态的划分 根据类操作根据类操作来划分类操作来划分类操作.例:银行系统的例:银行系统的account(帐户帐户)类类 状态操作包括状态操作包括:deposit(存款存款)withdraw(取款取款)非状态操作包括非状态操作包括:balance(余额余额)summarize(清单清单)creditLimit(透支限额透支限额)测试用例测试用例p1(测试改变状态的操作测试改变
7、状态的操作):open.setup.deposit.deposit.withdraw.close 测试用例测试用例p2(测试不改变状态的操作测试不改变状态的操作,在最小测试序列中在最小测试序列中 的操作除外的操作除外):open.setup.deposit.summarize.creditLimit.withdraw.close基于属性的划分 根据类操作根据类操作来划分类操作来划分类操作.例:例:account类可根据类可根据balance属性来把操作属性来把操作 定义划分为三个类别定义划分为三个类别:使用使用balance的操作的操作 修改修改balance的操作的操作 不使用也不修改不使用
8、也不修改balance的操作的操作 为上述每个类别设计测试序列为上述每个类别设计测试序列基于功能的划分 根据类操作所根据类操作所来划分类操作来划分类操作.例例:account类中的操作按功能可划分为四个类别类中的操作按功能可划分为四个类别:初始化操作初始化操作(open,setup)计算操作计算操作(deposit,withdraw)查询操作查询操作(balance,summarize,creditLimit)终止操作终止操作(close)为上述每个类别设计测试序列为上述每个类别设计测试序列 set upacctaccount类的状态转换图类的状态转换图emptyacctdeadacctset
9、up Aaccentbalance creditacctInfoclosedeposit(initial)depositwithdrawworkingacctopenwithdrawal(final)nonworkingacct测试单个类的方法(3 3)基于状态的测试)基于状态的测试测试单个类的方法(4 4)基于故障的测试基于故障的测试(fault_based testing)与测试传统软件时采用的错误推测法类似与测试传统软件时采用的错误推测法类似.5.7.25.7.2 对象对象的集成测试的集成测试 OO软件没有层次的控制结构软件没有层次的控制结构,传统的自顶向传统的自顶向下和自底向上的集成策
10、略没有意义下和自底向上的集成策略没有意义.OO软件的两种集成策略软件的两种集成策略:基于使用的测试基于使用的测试(用例或基于场景的测试用例或基于场景的测试)基于线程的测试基于线程的测试(thread-based testing)集成响应系统的一个输入或事件所需的一组类集成响应系统的一个输入或事件所需的一组类,每个每个线程被个体地集成和测试线程被个体地集成和测试,通过回归测试保证没有副作用通过回归测试保证没有副作用产生产生;对象交互测试对象交互测试 ATMBank银行系统的类协作图银行系统的类协作图ATMUserInterfaceAccountCashierverifyAcctverifyPIN
11、verifyPolicywithdrawReqdepositReqacctInfoReqcardInsertedpassworddepositwithdrawaccentStatusterminatevalidPINvalidAcctcreditLimitaccentTypebalancewithdrawdepositcloseValidationInfoverifyStatusdepositStatusdispenseCaseprintAccentStatreadCardInfogetCaseAmntopenAcctinitialDepositauthorizeCarddeuthorizec
12、loseAcct OO集成测试方法(1 1)多个类)多个类测试测试 Kirani,S.and W.T.Tsai,在在“Specification and Verification of Object-Oriented Programs”中建议了下面的步骤序列以中建议了下面的步骤序列以生成多个类随机测试用例生成多个类随机测试用例:1.1.对对,使用类操作列表来生成一系列随机测使用类操作列表来生成一系列随机测试序列试序列,这些操作发送这些操作发送给服务器类给服务器类;2.2.对生成的每个消息对生成的每个消息,确定在确定在和对应的操作和对应的操作;3.3.对服务器对象中的每个操作对服务器对象中的每个
13、操作(已经被来自客户对象的已经被来自客户对象的消息调用消息调用),),确定确定;4.4.对每个消息对每个消息,确定确定,并把这些操作并把这些操作结合进测试序列中结合进测试序列中.ATMBank银行系统的类协作图银行系统的类协作图ATMUserInterfaceAccountCashierverifyAcctverifyPINverifyPolicywithdrawReqdepositReqacctInfoReqvalidPINvalidAcctcreditLimitaccentTypebalancewithdrawdepositcloseopenAcctinitialDepositauthor
14、izeCarddeuthorizecloseAcctValidationInfoverifyStatusdepositStatusdispenseCaseprintAccentStatreadCardInfogetCaseAmntcardInsertedpassworddepositwithdrawaccentStatusterminate银行系统中Bank类和ATM类的操作序列:verifyAcct verifyPIN verifyPolicy withdrawReq|depositReq|acctInfoReqn对对BankBank类的随机测试用例可能是类的随机测试用例可能是:测试用例测试
15、用例r3:r3:verifyAcct verifyPIN depositReq为了考虑测试中涉及的协作者为了考虑测试中涉及的协作者,需要考虑与测试用例需要考虑与测试用例r3r3中中每个操作相关联的消息每个操作相关联的消息:BankBank必须和必须和ValidationInfo协作以执行协作以执行depositReq、verifyAcct和和verifyPINBankBank还必须和还必须和Account协作以执行协作以执行deposit因此因此,测试这些协作的新的测试用例是测试这些协作的新的测试用例是:测试用例测试用例r4:r4:verifyAcctBank validAcctValidat
16、ionInfo verifyPINBank validPINValidationInfo depositReq depositAccount OO集成测试方法(2 2)从动态模型导出)从动态模型导出测试用例测试用例 设计的测试用例应达到完全的状态覆盖设计的测试用例应达到完全的状态覆盖,即操作即操作序列应导致序列应导致account类的变迁穿越所有允许的状态类的变迁穿越所有允许的状态:测试用例测试用例s s1 1:openopensetupAccent deposit(initial)withdraw(final)close(最小测试序列最小测试序列)向最小序列中加入附加的测试序列向最小序列中加
17、入附加的测试序列,例如例如:测试用例测试用例s s2 2:openopensetupAccent deposit(initial)deposit balance credit withdraw(final)close测试用例测试用例s s3 3:openopensetupAccent deposit(initial)deposit withdraw accntInfo withdraw(final)close 导出更多的测试用例以保证该类的所有行为都被适当地导出更多的测试用例以保证该类的所有行为都被适当地测试测试 5.7.35.7.3 OO系统系统的确认测试的确认测试在确认和系统测试层次在确认
18、和系统测试层次,类连接的细节消失类连接的细节消失.和传统的确认测试一样和传统的确认测试一样,OO软件的确认关注软件的确认关注 用户可见的动作和用户可识别的系统输出用户可见的动作和用户可识别的系统输出.为辅助确认测试的导出为辅助确认测试的导出,应利用分析模型中的应利用分析模型中的 用例图提供的场景来提高交互需求中发现错误用例图提供的场景来提高交互需求中发现错误 的可能性的可能性5.8 5.8 自动测试和测试工具自动测试和测试工具自动化和工具的好处自动化和工具的好处速度速度效率效率准确度和精确度准确度和精确度坚持不懈坚持不懈5.8.1 5.8.1 测试工具测试工具静态分析工具静态分析工具动态测试工
19、具动态测试工具测试数据自动生成工具测试数据自动生成工具集成化测试环境集成化测试环境非侵入式工具非侵入式工具侵入式工具侵入式工具测试工作台(下游CASE工具)源代码源代码被测试被测试的程序的程序测试数据测试数据规约规约预测器预测器测试管理器测试管理器测试预估测试预估模拟器模拟器文件比较器文件比较器报告生成器报告生成器动态分析器动态分析器测试结果测试结果测试结测试结果报告果报告执行报告执行报告测试数据生成器测试数据生成器查看器和监视器1#计算机软件正在测试2#计算机软件正在测试3#计算机查看测试工具通信线路监听线路通信分析器可以查看两个系统之间传输的原始数据(非侵入非侵入)(输入测试用例)(输入测
20、试用例)(确认产生的通信数据)(确认产生的通信数据)(检查相应结果)(检查相应结果)驱动程序普通系统配置 测试驱动配置测试驱动配置(在此计算机上编写(在此计算机上编写 简单的程序自动产简单的程序自动产 生相应的击键和鼠生相应的击键和鼠 标移动来测试软件)标移动来测试软件)键盘电缆鼠标电缆一台计算机可以作为驱动程序测试工具取代被测试系统的键盘和鼠标从外部计算机发从外部计算机发送击键鼠标的移送击键鼠标的移动信息动信息,被测试被测试软件不被侵入软件不被侵入,如果测试软件时如果测试软件时在同一系统中执在同一系统中执行驱动程序行驱动程序,它它就会侵入系统就会侵入系统,这种测试情况可这种测试情况可能无法接
展开阅读全文