1、Page 1Chapter 9 面向对象的软件测试面向对象的软件测试Page 2主要内容主要内容Page 3一、软件测试的基本概念一、软件测试的基本概念Page 4软件测试的方法软件测试的方法Page 5白盒测试白盒测试Page 6黑盒测试黑盒测试Page 7软件测试的步骤软件测试的步骤需求分析需求分析概要设计概要设计详细设计详细设计编码编码单元测试单元测试集成测试集成测试确认测试确认测试软件开发过程软件开发过程软件测试过程软件测试过程Page 8面向对象软件测试有何不同面向对象软件测试有何不同Page 9面向对象软件的测试内容面向对象软件的测试内容Page 10二、测试计划二、测试计划Pag
2、e 11测试计划及其关系测试计划及其关系项目测项目测试计划试计划类类/组件组件测试计测试计划划集成测集成测试计划试计划系统测系统测试计划试计划用例测用例测试计划试计划Page 12三、测试模型三、测试模型Page 13模型的要素模型的要素Page 14状态机状态机Page 15状态机的机制状态机的机制Page 16基于状态的行为建模的范围基于状态的行为建模的范围Page 17基于状态的测试设计基于状态的测试设计Page 18控制错误控制错误Page 19控制错误的类型控制错误的类型Page 20示例:丢失转换示例:丢失转换选手选手1发球发球选手选手2发球发球P2_WinsVolley( )P1
3、_WinsVolley( )对一个有效的事件对一个有效的事件/ /状态对,实现没有作出响应。状态对,实现没有作出响应。Page 21示例:不正确的转换示例:不正确的转换选手选手1发球发球选手选手2发球发球P2_WinsVolley( )P1_WinsVolley( )实现的行为就像到达一个不正确的结果状态。实现的行为就像到达一个不正确的结果状态。游戏开始游戏开始Page 22示例:丢失动作示例:丢失动作对一个转换,实现没有产生任何动作。对一个转换,实现没有产生任何动作。选手选手1发球发球选手选手2发球发球P2_WinsVolley( )P1_WinsVolley( )游戏开始游戏开始P1_St
4、art( )/simulateVolley( )Page 23示例:不正确的动作示例:不正确的动作选手选手1发球发球选手选手2发球发球P2_WinsVolley( )/simulateVolley( )P1_WinsVolley( )/This.p1AddPoint( )对一个转换,实现产生了错误的动作。对一个转换,实现产生了错误的动作。Page 24示例:潜行路径示例:潜行路径选手选手1发球发球选手选手2发球发球P2_WinsVolley( )P1_WinsVolley( )实现接受了一个非法的或在这一状态没有被规定的事件。实现接受了一个非法的或在这一状态没有被规定的事件。选手选手2赢赢P2
5、_Start( )Page 25示例:讹误状态示例:讹误状态选手选手1发球发球选手选手2发球发球P2_WinsVolley( )P1_WinsVolley( )实现计算一个无效的状态,或是类或状态不变量被违反。实现计算一个无效的状态,或是类或状态不变量被违反。选手选手1赢赢P1_WinsVolley( )this.p1_Score( )=20/this.p1AddPoint( )8-(!*B+Page 26示例:非法消息失效示例:非法消息失效选手选手1发球发球选手选手2发球发球P2_WinsVolley( )P1_WinsVolley( )实现没有正确处理一个非法消息。实现没有正确处理一个非法
6、消息。xDEADBEEFP2_Start( )选手选手2赢赢P2_WinsVolley( )this.p2_Score( )=20/this.p2AddPoint( )Page 27示例:陷阱门示例:陷阱门选手选手1发球发球选手选手2发球发球P2_WinsVolley( )P1_WinsVolley( )实现接受了一个非法的或在这一状态没有被规定的事件。实现接受了一个非法的或在这一状态没有被规定的事件。选手选手1赢赢P1_WinsVolley( )this.p1_Score( )=20/this.p1AddPoint( )Scroll Lock Key Press产生原因:产生原因:1.当一个
7、类被修改时,已废弃的特征未被删除;当一个类被修改时,已废弃的特征未被删除;2.继承过来的特征和子类的需求不一致;继承过来的特征和子类的需求不一致;3.为调试而增添的特征;为调试而增添的特征;4.怀有犯罪或恶意的目的,而作出的蓄意破坏。怀有犯罪或恶意的目的,而作出的蓄意破坏。Page 28开发可测模型开发可测模型Page 29状态模型检查表(一):结构状态模型检查表(一):结构Page 30状态模型检查表(二):状态名称状态模型检查表(二):状态名称Page 31状态模型检查表(三):受监视转换状态模型检查表(三):受监视转换Page 32状态模型检查表(四):好的子类行为状态模型检查表(四):
8、好的子类行为Page 33状态模型检查表(五):健壮性状态模型检查表(五):健壮性Page 34四、面向四、面向UML的测试的测试Page 35用例图的测试需求用例图的测试需求关系关系测试需求测试需求(至少有一个测试用例检查)(至少有一个测试用例检查)执行者和用例通信执行者和用例通信每一用例每一用例每一执行者的用例每一执行者的用例用例用例1 1扩展用例扩展用例2 2每一个完全的扩展组合每一个完全的扩展组合用例用例1 1使用用例使用用例2 2每一个完全的使用组合每一个完全的使用组合Page 36类图的测试需求类图的测试需求关系关系测试需求测试需求(至少有一个测试用例检查)(至少有一个测试用例检查
9、)关联关联关联关系的特定应用关联关系的特定应用聚集聚集类和构件的独立创建和析构类和构件的独立创建和析构构成构成类和构件的顺序创建和析构类和构件的顺序创建和析构类和构件失败的独立创建和析构类和构件失败的独立创建和析构泛化泛化在每一个子类中,每一个超类的特性在每一个子类中,每一个超类的特性被使用被使用依赖依赖依赖关系的特定应用依赖关系的特定应用精化精化精化类中被精化类型的每一行为精化类中被精化类型的每一行为Page 37顺序图的测试需求顺序图的测试需求关系关系测试需求测试需求(至少有一个测试用例检查)(至少有一个测试用例检查)客户调用服务者(同步)客户调用服务者(同步)客户调用服务者并返回客户调用
10、服务者并返回客户调用服务者(异步)客户调用服务者(异步)客户调用服务者并返回,服务客户调用服务者并返回,服务者继续执行者继续执行客户调用服务者客户调用服务者1 1、2 2客户调用服务者客户调用服务者1 1、2 2客户重复到服务者的调用客户重复到服务者的调用客户重复到服务者的调用客户重复到服务者的调用客户递归调用服务者客户递归调用服务者客户递归调用服务者客户递归调用服务者Page 38活动图的测试需求活动图的测试需求关系关系测试需求测试需求(至少有一个测试用例检查)(至少有一个测试用例检查)动作动作1 1在动作在动作2 2之前之前动作动作2 2跟随动作跟随动作1 1动作依赖于同步点动作依赖于同步
11、点动作跟随同步点动作跟随同步点动作动作2 2、3 3跟随动作跟随动作1 1动作动作2 2跟随动作跟随动作1 1动作动作3 3跟随动作跟随动作1 1动作依赖信号动作依赖信号在信号到达之后执行动作在信号到达之后执行动作同步点跟随动作同步点跟随动作在动作之后到达同步点在动作之后到达同步点Page 39状态图的测试需求状态图的测试需求Page 40协作图的测试需求协作图的测试需求关系关系测试需求测试需求(至少有一个测试用例检查)(至少有一个测试用例检查)消息消息1 1在消息在消息2 2之前之前消息消息1 1和消息和消息2 2客户发送消息到服务者客户发送消息到服务者客户发送消息到服务者并返回客户发送消息
12、到服务者并返回客户也许发送消息到服务客户也许发送消息到服务者(条件调用)者(条件调用)客户发送消息到服务者并返回客户发送消息到服务者并返回客户不发送消息到服务者客户不发送消息到服务者客户重复到服务者的消息客户重复到服务者的消息客户重复到服务者的消息并返回客户重复到服务者的消息并返回向自己发送递归消息向自己发送递归消息客户递归地调用自己客户递归地调用自己客户到服务者的异步调用客户到服务者的异步调用客户发送消息到服务者并返回,客户发送消息到服务者并返回,服务者收到消息服务者收到消息Page 41构件图的测试需求构件图的测试需求关系关系测试需求测试需求(至少有一个测试用例检查)(至少有一个测试用例检
13、查)构件发送到接口的消息构件发送到接口的消息客户发送消息到服务者并返回客户发送消息到服务者并返回构件依赖构件构件依赖构件特定应用特定应用Page 42配置图的测试需求配置图的测试需求关系关系测试需求测试需求(至少有一个测试用例检查)(至少有一个测试用例检查)构件运行在节点上构件运行在节点上在每一个指定的主机节点上,构件在每一个指定的主机节点上,构件能被加载并且运行能被加载并且运行节点和节点的通信节点和节点的通信打开、传送、关闭到每一个远程构打开、传送、关闭到每一个远程构件的通信件的通信Page 43五、类的测试五、类的测试Page 44类测试的内容类测试的内容Page 45方法范围测试:基本过
14、程方法范围测试:基本过程Page 46方法范围测试设计样式方法范围测试设计样式Page 47范畴划分范畴划分Page 48组合功能测试组合功能测试Page 49递归功能测试递归功能测试Page 50多态消息测试多态消息测试Page 51类范围测试设计样式类范围测试设计样式Page 52类的模态性类的模态性Page 53不变量边界不变量边界Page 54非模态类测试非模态类测试Page 55准模态类测试准模态类测试Page 56模态类测试模态类测试Page 57继承的测试继承的测试Page 58六、面向对象的集成测试六、面向对象的集成测试Page 59范围范围Page 60集成故障(集成故障(1
15、 1)Page 61集成故障(集成故障(2 2)Page 62集成测试的设计样式(集成测试的设计样式(1 1)Page 63集成测试的设计样式(集成测试的设计样式(2 2)Page 64大爆炸集成大爆炸集成Page 65自底向上集成自底向上集成Page 66自顶向下集成自顶向下集成Page 67协作集成协作集成Page 68基干集成基干集成Page 69层次集成层次集成Page 70客户客户/ /服务器集成服务器集成Page 71分布服务集成分布服务集成Page 72高频集成高频集成Page 73面向对象的软件测试面向对象的软件测试:1. 基本概念基本概念3. 测试模型测试模型2. 测试计划测试计划4. 面向面向UML的测试的测试5.5.类的测试类的测试6.6.集成测试集成测试小结小结