参考答案:
【问题1】(5分)
泛化关系;(继承关系)
继承的成员函数是否需要测试;对父类的测试是否能搬到子类上
【问题2】(6分)
多态
需要重新测试,在子类中重新进行了定义,需要重新测试
不需要重新测试
【问题3】(6分)
测试序列:Employee-calWorkdays()-setBonus()-calSalary()-querySalary()
测试顺序:Employee-Manager-Department
【问题4】(3分)
只需要在原有的测试分析基础上增加对测试用例中输入数据的类型的考虑。
详细解析:
【问题1】
继承(UML图中对应泛化关系)是指一个类直接使用另一个类的属性和方法,即子类具有父类的属性和方法。
类Employee和类Manager之间是继承关系
继承关系对面向对象测试的影响主要体现在两个方面:若子类某些方法继承了其父类,方法进行了修改,则需要进行测试;继承的方法没有修改,用父类的方法,但该方法调用了子类修改过的其他方法时,也需要对该方法进行测试。
【问题2】
在面向对象技术中,不同的对象收到同一消息产生完全不同的结果,称为多态;
多态可以利用类继承层次来支持,本题中由于类Manager中的方法calSalary()和其父类Employee中的该方法有了不同的实现,因此需要重新测试
子类Manager中的方法querySalary()继承了其父类Employee的方法querySalary(),没有重新实现,因此不需要重新测试
【问题3】
题干说明,方法擦了Salary()根据个人的基本工资,当月工资天数和奖金等按特定规则计算,因此需要先计算天数、奖金,才能计算工资,最后才能查询工资。
由类结构可以分析出,Employee应该先测,而Department依赖于Manager,因此,Manager应先于Department测试式
【问题4】
题干描述,方法stat Salary()需要调用Employee中的calSalary()。而该方法在Employee和Manager中有不同的实现,因此需要同时考虑Employee和Manager中的calSalary()