第1页:面向对象程序测试
第2页:测试策略
测试策略:本页为图示内容,展示测试策略部分的组成结构与关键要素。
第3页:单元测试单元
- 单元测试单元
- 封装的类和对象对程序内部具体单一功能模块测试,如程序用C++实现,主要对类成员函数测试。传统的测试方法都可使用,等价类划分、边值分析、逻辑覆盖法、基本路径法。
第4页:集成测试在面向对象的软件中不
集成测试在面向对象的软件中不存在层次的控制结构,传统的自顶向下或自底向上的集成策略就没有意义了。此外,由于构成类的各个成分彼此间存在直接或间接的交互,一次集成一个操作到类中(传统的渐增式集成方法)通常是不现实的。面向对象软件的集成测试主要有下述两种不同的策略。
第5页:基于线程的集成测试
- 基于线程的集成测试
- 把响应系统的一个输入或一个事件所需类集成起来。
- 基于使用的集成测试
- 先测独立类,测完后测独立类下一层类(依赖类),到测完。集成测试
第6页:确认测试测用户可见动作
确认测试测用户可见动作,可识别系统输出。根据动态模型和描述系统行为的脚本设计确认测试用例。黑盒法
第7页:测试类的方法
- 测试用例设计
- 测试类的方法
- 集成测试方法与传统软件测试(测试用例的设计由软件的输入 处理 输出视图或单个模块的算法细节驱动)不同,面向对象测试关注于设计适当的操作序列以检查类的状态。
第8页:测试类的方法测试单个类的方法
- 测试类的方法测试单个类的方法主要有随机测试、划分测试和基于故障的测试等3种。
- 1随机测试在类的多个操作排列中,随机选择。银行应用系统的account(账户)类操作:open(打开)、setup、deposit(存款)、withdraw(取款)、balance(余额)、summarize(清单)、creditLimit(透支限额)和close(关闭)一个account类实例的最小行为历史包括下列操作:open·setup·deposit·withdraw·close这就是对account类的最小测试序列。
第9页:测试类的方法在下面的序列中
测试类的方法在下面的序列中可能发生许多其他行为:open.setup.deposit[deposit|withdraw|balance|summarize|creditLimit]n.withdraw.close随机选:open.setup.deposit.deposit.balance.summarize.withdraw.closeopen.setup.deposit.withdraw.deposit.balance.creditLimit.withdraw.close执行上述这些及另外一些随机产生的测试用例,可以测试类实例的不同生存历史。
第10页:2划分测试(类似等价类
- 测试类的方法
- 2划分测试(类似等价类划分)
- 基于状态的划分根据改变类状态能力划分:改变类状态;不改变类状态。account类:deposit、withdraw(改变状态)balance、summarize、creditLimit(非改变状态)设计测试用例,以分别测试改变状态的操作和不改变状态的操作。
第11页:测试类的方法设计测试用例
- 测试类的方法设计测试用例
- open.setup.deposit.withdraw.withdraw.closeopen.setup.deposit.summarize.creditLimit. Withdraw.close
第12页:测试类的方法基于属性的划分根据类
- 测试类的方法
- 基于属性的划分根据类操作属性:使用该属性;修改属性;不操作该属性。例:account类可根据balance属性把操作定义划分三个类别:使用balance的操作修改balance的操作不使用也不修改balance的操为上述每个类别设计测试序列
第13页:测试类的方法基于功能的划分根据类
- 测试类的方法
- 基于功能的划分根据类操作完成功能:初始化操作(open、setup);计算操作(deposit、withdraw);查询操作(balance、summarize、creditLimit);终止操作(close)
第14页:3基于故障测试错误推测法
- 测试类的方法
- 3基于故障测试错误推测法,如边界或输入输出为零等。
第15页:1多类测试测类间协作同样
- 集成测试方法
- 1多类测试测类间协作,同样可采用随机测试和划分测试。
第16页:集成测试方法随机测试
- 集成测试方法随机测试
- Bank类对ATM类的操作序列:verifyAcct.verifyPIN.[(verifyPolicy.withdrawReq)| depositReq |acctInfoReq]n对Bank类的随机测试用例可能是:测试用例1:verifyAcct.verifyPIN.depositReq
第17页:集成测试方法为了考虑测试涉及协作者
集成测试方法为了考虑测试涉及协作者,考虑与测试用例1每个操作相关联消息:Bank必须和ValidationInfo协作以执行verifyAcct和verifyPINBank还必须和Account协作以执行deposit测试这些协作的新的测试用例是:verifyAcctBank·[validAcctValidationInfo]·verifyPINBank·[validPINvalidationInfo]·depositReq·[depositaccount]
第18页:集成测试方法(2)划分测试
- 集成测试方法
- 划分测试:根据与特定类的接口划分:如bank类的方法分服务于ATM或服务于cashier
第19页:2从动态模型导出测试用例
- 集成测试方法
- 2从动态模型导出测试用例:测试用例涵盖所有状态。如下图,操作系列使account类实例遍历所有允许的状态转换。
第20页:集成测试方法
集成测试方法:本页为图示内容,展示测试策略部分的组成结构与关键要素。
第21页:集成测试方法测试用例s1:
- 集成测试方法测试用例s1
- (最小测试序列)open·setupAccount·deposit(initial)·withdraw(final)·close向最小序列中加入附加的测试序列,测试用例s2:open.setupAccount.deposit(initial).deposit.balance.credit.withdraw(final).close
第22页:集成测试方法测试用例s3:
- 集成测试方法测试用例s3
- open.setupAccount.deposit(initial).deposit.withdraw.accntInfo.withdraw(final).close……导出更多的测试用例以保证该类的所有行为都被适当地测试在类的行为导致与一个或多个类协作的情况下,应该使用多个状态图去跟踪系统的行为流。
第23页:和传统确认测试方法一样
- 确认测试方法
- 和传统确认测试方法一样,OO软件的确认关注用户可见的动作和用户可识别的系统输出。
- 为辅助确认测试的导出,应充分分析模型中的用例图的场景来提高交互需求中发现错误的可能性。