面向对象的软件测试ppt课件.ppt
《面向对象的软件测试ppt课件.ppt》由会员分享,可在线阅读,更多相关《面向对象的软件测试ppt课件.ppt(62页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
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|cre
5、ditLimit n.withdraw.close 一系列不同的操作序列可以随机地产生一系列不同的操作序列可以随机地产生,例如例如:测试用例测试用例r1:open.setup.deposit.deposit.balance.summarize.creditLimit.withdraw.close 测试用例测试用例r2:open.setup.deposit.withdraw.deposit.balance.creditLimit.withdraw.close 这些和其它的随机顺序测试被进行这些和其它的随机顺序测试被进行,以测试不以测试不同的类实例的生存历史同的类实例的生存历史.测试单个类的方法(
6、2 2)划分测试划分测试(partition testing)与测试传统软件时采用的等价类划分方法类似与测试传统软件时采用的等价类划分方法类似.划分类别的方法划分类别的方法:基于状态的划分基于状态的划分基于属性的划分基于属性的划分基于功能的划分基于功能的划分基于状态的划分 根据类操作根据类操作改变类状态的能力改变类状态的能力来划分类操作来划分类操作.例:银行系统的例:银行系统的account(帐户帐户)类类 状态操作包括状态操作包括:deposit(存款存款)withdraw(取款取款)非状态操作包括非状态操作包括:balance(余额余额)summarize(清单清单)creditLimit
7、(透支限额透支限额)测试用例测试用例p1(测试改变状态的操作测试改变状态的操作):open.setup.deposit.deposit.withdraw.close 测试用例测试用例p2(测试不改变状态的操作测试不改变状态的操作,在最小测试序列中在最小测试序列中 的操作除外的操作除外):open.setup.deposit.summarize.creditLimit.withdraw.close基于属性的划分 根据类操作根据类操作使用的属性使用的属性来划分类操作来划分类操作.例:例:account类可根据类可根据balance属性来把操作属性来把操作 定义划分为三个类别定义划分为三个类别:使用
8、使用balance的操作的操作 修改修改balance的操作的操作 不使用也不修改不使用也不修改balance的操作的操作 为上述每个类别设计测试序列为上述每个类别设计测试序列基于功能的划分 根据类操作所根据类操作所完成的功能完成的功能来划分类操作来划分类操作.例例:account类中的操作按功能可划分为四个类别类中的操作按功能可划分为四个类别:初始化操作初始化操作(open,setup)计算操作计算操作(deposit,withdraw)查询操作查询操作(balance,summarize,creditLimit)终止操作终止操作(close)为上述每个类别设计测试序列为上述每个类别设计测试
9、序列 set upacctaccount类的状态转换图类的状态转换图emptyacctdeadacctsetup Aaccentbalance creditacctInfoclosedeposit(initial)depositwithdrawworkingacctopenwithdrawal(final)nonworkingacct测试单个类的方法(3 3)基于状态的测试)基于状态的测试测试单个类的方法(4 4)基于故障的测试基于故障的测试(fault_based testing)与测试传统软件时采用的错误推测法类似与测试传统软件时采用的错误推测法类似.5.7.25.7.2 对象对象的集成测
10、试的集成测试 OO软件没有层次的控制结构软件没有层次的控制结构,传统的自顶向传统的自顶向下和自底向上的集成策略没有意义下和自底向上的集成策略没有意义.OO软件的两种集成策略软件的两种集成策略:基于使用的测试基于使用的测试(用例或基于场景的测试用例或基于场景的测试)基于线程的测试基于线程的测试(thread-based testing)集成响应系统的一个输入或事件所需的一组类集成响应系统的一个输入或事件所需的一组类,每个线每个线程被个体地集成和测试程被个体地集成和测试,通过回归测试保证没有副作用产通过回归测试保证没有副作用产生生;对象交互测试对象交互测试 ATMBank银行系统的类协作图银行系统
11、的类协作图ATMUserInterfaceAccountCashierverifyAcctverifyPINverifyPolicywithdrawReqdepositReqacctInfoReqcardInsertedpassworddepositwithdrawaccentStatusterminatevalidPINvalidAcctcreditLimitaccentTypebalancewithdrawdepositcloseValidationInfoverifyStatusdepositStatusdispenseCaseprintAccentStatreadCardInfoget
12、CaseAmntopenAcctinitialDepositauthorizeCarddeuthorizecloseAcct OO集成测试方法(1 1)多个类)多个类测试测试 Kirani,S.and W.T.Tsai,在在“Specification and Verification of Object-Oriented Programs”中建议了下面的步骤序列以中建议了下面的步骤序列以生成多个类随机测试用例生成多个类随机测试用例:1.1.对对每个客户类每个客户类每个客户类每个客户类,使用类操作列表来生成一系列随机测试使用类操作列表来生成一系列随机测试序列序列,这些操作发送这些操作发送消息消
13、息消息消息给服务器类给服务器类;2.2.对生成的每个消息对生成的每个消息,确定在确定在服务器对象中的协作者类服务器对象中的协作者类服务器对象中的协作者类服务器对象中的协作者类和和对应的操作对应的操作;3.3.对服务器对象中的每个操作对服务器对象中的每个操作(已经被来自客户对象的消已经被来自客户对象的消息调用息调用),),确定确定传递的消息传递的消息传递的消息传递的消息;4.4.对每个消息对每个消息,确定确定下一层被调用的操作下一层被调用的操作下一层被调用的操作下一层被调用的操作,并把这些操作并把这些操作结合进测试序列中结合进测试序列中.ATMBank银行系统的类协作图银行系统的类协作图ATMU
14、serInterfaceAccountCashierverifyAcctverifyPINverifyPolicywithdrawReqdepositReqacctInfoReqvalidPINvalidAcctcreditLimitaccentTypebalancewithdrawdepositcloseopenAcctinitialDepositauthorizeCarddeuthorizecloseAcctValidationInfoverifyStatusdepositStatusdispenseCaseprintAccentStatreadCardInfogetCaseAmntcar
15、dInsertedpassworddepositwithdrawaccentStatusterminate银行系统中Bank类和ATM类的操作序列:verifyAcct verifyPIN verifyPolicy withdrawReq|depositReq|acctInfoReqn对对BankBank类的随机测试用例可能是类的随机测试用例可能是:测试用例测试用例r3:r3:verifyAcct verifyPIN depositReq为了考虑测试中涉及的协作者为了考虑测试中涉及的协作者,需要考虑与测试用例需要考虑与测试用例r3r3中中每个操作相关联的消息每个操作相关联的消息:BankBan
16、k必须和必须和ValidationInfo协作以执行协作以执行depositReq、verifyAcct和和verifyPINBankBank还必须和还必须和Account协作以执行协作以执行deposit因此因此,测试这些协作的新的测试用例是测试这些协作的新的测试用例是:测试用例测试用例r4:r4:verifyAcctBank validAcctValidationInfo verifyPINBank validPINValidationInfo depositReq depositAccount OO集成测试方法(2 2)从动态模型导出)从动态模型导出测试用例测试用例 设计的测试用例应达到
17、完全的状态覆盖设计的测试用例应达到完全的状态覆盖,即操作即操作序列应导致序列应导致account类的变迁穿越所有允许的状态类的变迁穿越所有允许的状态:测试用例测试用例s s1 1:openopensetupAccent deposit(initial)withdraw(final)close(最小测试序列最小测试序列)向最小序列中加入附加的测试序列向最小序列中加入附加的测试序列,例如例如:测试用例测试用例s s2 2:openopensetupAccent deposit(initial)deposit balance credit withdraw(final)close测试用例测试用例s
18、s3 3:openopensetupAccent deposit(initial)deposit withdraw accntInfo withdraw(final)close 导出更多的测试用例以保证该类的所有行为都被适当地导出更多的测试用例以保证该类的所有行为都被适当地测试测试 5.7.35.7.3 OO系统系统的确认测试的确认测试在确认和系统测试层次在确认和系统测试层次,类连接的细节消失类连接的细节消失.和传统的确认测试一样和传统的确认测试一样,OO软件的确认关注软件的确认关注 用户可见的动作和用户可识别的系统输出用户可见的动作和用户可识别的系统输出.为辅助确认测试的导出为辅助确认测试的
19、导出,应利用分析模型中的应利用分析模型中的 用例图提供的场景来提高交互需求中发现错误用例图提供的场景来提高交互需求中发现错误 的可能性的可能性5.8 5.8 自动测试和测试工具自动测试和测试工具自动化和工具的好处自动化和工具的好处速度速度效率效率准确度和精确度准确度和精确度坚持不懈坚持不懈5.8.1 5.8.1 测试工具测试工具静态分析工具静态分析工具动态测试工具动态测试工具测试数据自动生成工具测试数据自动生成工具集成化测试环境集成化测试环境非侵入式工具非侵入式工具侵入式工具侵入式工具在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确测
20、试工作台(下游CASE工具)源代码源代码被测试被测试的程序的程序测试数据测试数据规约规约预测器预测器测试管理器测试管理器测试预估测试预估模拟器模拟器文件比较器文件比较器报告生成器报告生成器动态分析器动态分析器测试结果测试结果测试结测试结果报告果报告执行报告执行报告测试数据生成器测试数据生成器查看器和监视器1#计算机软件正在测试2#计算机软件正在测试3#计算机查看测试工具通信线路监听线路通信分析器可以查看两个系统之间传输的原始数据(非侵入非侵入)(输入测试用例)(输入测试用例)(确认产生的通信数据)(确认产生的通信数据)(检查相应结果)(检查相应结果)驱动程序普通系统配置 测试驱动配置测试驱动配
21、置(在此计算机上编写(在此计算机上编写 简单的程序自动产简单的程序自动产 生相应的击键和鼠生相应的击键和鼠 标移动来测试软件)标移动来测试软件)键盘电缆鼠标电缆一台计算机可以作为驱动程序测试工具取代被测试系统的键盘和鼠标从外部计算机发从外部计算机发送击键鼠标的移送击键鼠标的移动信息动信息,被测试被测试软件不被侵入软件不被侵入,如果测试软件时如果测试软件时在同一系统中执在同一系统中执行驱动程序行驱动程序,它它就会侵入系统就会侵入系统,这种测试情况可这种测试情况可能无法接受能无法接受管道和仿真器普通系统配置测试存根配置一台计算机可以充当管道,代替打印机,能够对测试输出进行更有效的分析运行管道软件来
22、运行管道软件来代替打印机,对代替打印机,对打印数据进行阅打印数据进行阅读和解释读和解释 其它工具类型:施压工具和增负工施压工具和增负工具具干扰发生器和噪声发生干扰发生器和噪声发生器器分析工具分析工具测试工具产品实例 JUnit:Java单元测试工具单元测试工具 CppUnit:C+单元测试工具单元测试工具 Dunit:Delphi的终极测试工具的终极测试工具5.8.2 5.8.2 测试测试自动化测试测试自动化 另一类软件测试工具另一类软件测试工具,可以自动执行测试用例、可以自动执行测试用例、查找软件缺陷、分析并记录测试结果。查找软件缺陷、分析并记录测试结果。随机测试随机测试:猴子测试员猴子测试
23、员只要不停电只要不停电,偶尔能够得到香蕉偶尔能够得到香蕉,猴子就会永远测试下去猴子就会永远测试下去一个想法一个想法:“如果让如果让一百万只猴一百万只猴子在一百万子在一百万只键盘上敲只键盘上敲一百万年一百万年,它们最终就它们最终就可能写出莎可能写出莎士比亚话剧士比亚话剧等巨著等巨著”.”.猴子的进步笨猴子笨猴子:一点也不懂测试软件一点也不懂测试软件,只是随机地单击或按键只是随机地单击或按键,直至发生两件事情之一直至发生两件事情之一:完成循环或系统崩溃完成循环或系统崩溃.不太笨的猴子不太笨的猴子:具有崩溃辨认能力具有崩溃辨认能力,能够重新启动系统开始测试能够重新启动系统开始测试聪明猴子聪明猴子:能
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 软件 测试 ppt 课件
限制150内