列表

详情


阅读下列说明,回答问题1至问题5,将解答写在答题纸的对应栏内。
【说明】
图4-1是银行卡应用的部分类图,图中属性和操作前的“+”和“一”分别表示公有成员和私有成员。银行卡Account有两种类型,借记卡SavingAccount和信用卡CreditAccount
图4-1银行卡应用的部分类图

(1)借记卡和信用卡都有卡号account Number和余额balance两个属性。借记卡的余额是正常余额,信用卡的余额是目前未还的金额,如果没有未还的金额,则为0;有开户set Up、取款withdraw、查询余额get Balance和销户close四个方法。借记卡取钱时,要求取钱金额不能超过余额;而信用卡取钱金额不能超过信用额度,因此需要在子类中实现该方法。
(2)借记卡可以存钱deposit。
(3)信用卡有信用额度creditLimit属性,可以查询信用额度getCreditLimit、修改信用额度updateCreditLimit和还款retumCredit。
现拟采用面向对象的方法进行测试。

【问题1】(3分)
面向对象单元测试的主要对象是什么?
【问题2】(4分)
在继承关系上,若某方法在测试父类时已经测试过,那么在什么情况下在子类中也需要测试?
【问题3】(4分)
要测试方法deposit()时,还需要调用什么方法?给出测试序列。
【问题4】(6分)
方法withdraw在基类Account中定义,但在两个子类中有不同的实现。这是面向对象的什么机制?这种情况在测试时如何进行?
【问题5】(3分)
给出类SavingAccount的最小测试序列。

参考答案:

【问题1】
类、类的成员函数(是针对程序的函数、过程或完成某以特定功能的程序块)
【问题2】
1:继承类的成员函数在子类中做了改动
2:成员函数调用了改动过的成员函数的部分
【问题3】
getBalance()
先测试getBalance() 再测试deposit()
【问题4】
多态
只需要在原有的测试分析和基础上增加对测试用例中输入数据的类型的考虑;先测试基类,然后再分别依据输入数据设计不同的测试用例。
【问题5】
先测试Account类(按照一定顺序测试相关的方法),然后测试SavingAccount类(由于题干没有明确具体的业务情况,顺序可以适当优化)
setup()(account类)--getBalance()(account类)--deposit()(Savingaccount类)--getBalance()(account类)--withdraw()(account类)--getBalance()(account类)--close()(account类)

详细解析:

【问题1】
传统的单元测试是针对程序的函数、过程或完成某一定功能的程序块。沿用单元测试的概念,
实际测试类成员函数。
【问题2】
对父类中已经测试过的成员函数,有两种情况需要在子类中重新测试:(1)继承的成员函数在子类中做了改动;(2)成员函数调用了改动过的成员函数的部分。
【问题3】
getBalance();先测试getBalance() 再测试deposit()
【问题4】
方法withdraw在基类Account中定义,但在两个子类中有不同的实现,这是多态机制;测试时,只需要在原有的测试分析和基础上增加对测试用例中输入数据的类型的考虑;先测试基类,然后再分别依据输入数据设计不同的测试用例。
【问题5】
先测试Account类,然后测试SavingAccount类
setup()(account类)--getBalance()(account类)--deposit()(Savingaccount类)--getBalance()(account类)--withdraw()(account类)--getBalance()(account类)--close()(account类)

上一题