51Testing软件测试论坛

标题: 【软件评测师系列-25】每日模拟下午题4及解析 [打印本页]

作者: 郭小贱    时间: 2020-9-24 11:16
标题: 【软件评测师系列-25】每日模拟下午题4及解析
问题4

下图是某商场购物系统的一个类图,图中属性和方法前的"+"、"#"和"- " 分别表示公有成员、保护成员和私有成员。其中:





(1) 类Manager重新实现了类Customer的方法 calMoney( );
(2) 方法calMoney( ),根据每位顾客的购买情况(buyNum)、浏览商品的情况(scanNum)计算商品的热度。
(3)类Admin中的方法statMoney()中首先调用了该类的方法load(  ),获取顾客列表,然后调用了类Customer中的方法calMoney( )。
现拟采用面向对象的方法进行测试。


【问题1】(4分)图4-1 所示的类图中,类Manager和类Customer之间是什么关系?该关系对测试的影响是什么?
【问题2】(6分)
(1) 类Manager重新实现了类Customer的方法calMoney(  ),这是面向对象的什么机制?是否需要重新测试该方法?
(2) 类Manager中的方法getMoney (  )继承了其父类 Customer 的方法getMoney ( ),是否需要重新测试该方法?
【问题3】(6分)
(1)请结合题干中说明的描述,给出测试类Customer方法calMoney()时的测试序列;
(2)请给出类图中各个类的测试顺序。
【问题4】(4分)从面向对象多态特性考虑,测试方法statMoney( )时应注意什么?


评论区留下你的答案,多思考总会有收获的~~



作者: 郭小贱    时间: 2020-9-27 18:22
问题1 答案
(1) 泛化关系;
(2) 继承的成员函数是否需要测试;对父类的测试是否能用到子类上。
作者: 郭小贱    时间: 2020-9-27 18:22
问题2 答案
(1)、多态机制;需要重新测试,因为在子类中重新进行了定义,所以需要重新测试;
(2)、不需要重新测试,因为子类继承了父类的方法,只要父类的该方法通过测试了即可。
作者: 郭小贱    时间: 2020-9-27 18:22
问题3 答案
(1)测试序列:setBuyNum( )——setScanNum( )——calMoney( ) ——getMoney( ) ;
(2)先测试Customer类,然后Manager类,最后测试Admin类。
作者: 郭小贱    时间: 2020-9-27 18:23
问题4 答案
只需要在原有的测试分析基础上增加对测试用例中输入数据的类型的考虑即可。先测试基类,然后再分别依据输入数据设计不同的测试用例。
作者: 郭小贱    时间: 2020-9-27 18:24
问题1 解析:
考察类图的泛化关系。
泛化关系也就是继承关系,也称为“is-a-kind-of”关系,泛化关系用于描述父类与子类之间的关系,父类又称作基类或超类,子类又称作派生类,泛化关系通常用带空心三角形的直线来表示。
对泛化关系有三个要求:
1、子类与父类应该完全一致,父类所具有的属性、操作,子类应该都有;
2、子类中除了与父类一致的信息以外,还包括额外的信息;
3、可以使用父类的实例的地方,也可以使用子类的实例;
作者: 郭小贱    时间: 2020-9-27 18:25
问题2 解析:
该题考察面向对象的多态机制和继承机制。
多态就是在使用父类的引用调用方法的时候,不是使用父类中的方法,而是父类指向的对象的方法,这样就实现了多态。继承是指在一个类基础上定义一个新类,原有的类叫做父类,新生成的类叫子类,继承的过程是一个从一般到特殊的过程。
作者: 郭小贱    时间: 2020-9-27 18:25
问题3 解析:
根据题干提示,方法calMoney( ),根据每位顾客的购买情况(buyNum)、浏览商品的情况(scanNum)计算商品的热度。类之间测试的先后关系可以参考各种关系的强弱顺序:泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖。
作者: 郭小贱    时间: 2020-9-27 18:25
问题4 解析:
题干描述,方法statMoney()需要调用Customer中的calMoney()。而该方法在Customer和Manager中有不同的实现,因此需要同时考虑Customer和Manager中的calMoney()。




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2