Skip to content

Testplan - Bankexemplet

Vi använder NUnit för vår enhetstestning och våra tester ska vara automatiska. Vi testar ett programmet med Banken som vi tittat på tidigare i kursen. Vi börjar med att tolka kraven, sen tittar vi på klassdiagrammen och sen beteendediagrammen för att bättre förstå vad som ska testas.

  1. Utvecklas objektorienterat i C#
  2. Banken har ett namn.
  3. Varje konto har ett 6-siffrigt nummer som unikt identifierar bankkontot.
  4. Banken skapar konto med ägarens namn och initiala saldo.
  5. Banken ska skriva ut information om antalet kontot, alla konton och konton som tillhör en viss ägare samt saldot för ett visst konto.
  6. Banken accepterar insättningar med positiva summor.
  7. Banken accepterar uttag. Uttag kan inte resultera i ett negativt saldo.
  8. Det initiala saldot måste vara positivt, annars skapas inte kontot.
  9. Olika konton har olika händelser varje månad. InterestAccount ökar saldot med en ränta.
  10. Olika konton har olika händelser varje månad. PayrollAccount tar ut en avgift.

Här kan visualisering av use case som skapa konto hjälpa, se Beteendediagram. Ta reda på vad som ska hända vid insättning och uttag. Vad innebär det att göra ett uttag? Vid ett uttag så ska ägaren till kontot tala om hur mycket pengar den vill ta ut. Banken vill kolla att kontot finns och att det finns pengar på kontot innan uttaget av pengarna kan ske.

Genom att dela upp kraven i mindre krav blir det också enklare att planera enhetstester för kraven. Ta till exempel krav 5 där en massa information ska skrivas ut. Det skulle kunna delas upp i delkrav:

Krav 5. Banken ska skriva ut information om:

  • Krav 5.1 antalet kontot
  • Krav 5.2 alla konton
  • Krav 5.3 konton som tillhör en viss ägare.
  • Krav 5.4 skriva ut saldot för ett konto

Vi provar att omformulera krav 7 om uttag. Det ser ut så här:

Krav 7. Banken accepterar uttag. Uttag kan inte resultera i ett negativt saldo.

Efter omformulering kan det se ut så här:

Krav 7. Vi kan göra uttag av pengar i banken. Vi kan bara ta den summa vi har på kontot, inte ett större belopp än som finns på kontot.

När vi formulerar om kravet märker vi att det inte står något i kravet om vi försöker ta ut ett negativt belopp. Här borde kravet uppdateras med att vi ska kunna ta ut positiva belopp.

Vi känner till designen av programmet MyBank som består av med 4 klasser; Bank, BankAccount, InterestAccount och PayrollAccount. Det är viktigt att varje klass har en egen testklass som testar den för att säkerställa funktionaliteten vid refaktorering och vidareutveckling. Även om testfall för BankAccount testar även subklasser så är det viktigt att subklasserna InterestAccount och PayrollAccount har sina egna testfall.

Alla testfall testar krav 1 eftersom programmet är utvecklat i C#.

TestfallBeskrivningVäntat resultatStatusKommentarer
TestCreateBankSkapa en bankEn instans skapas. Verifiera rätt namn och noll konton.Ok/inte okKrav 2
TestDescriptionSkapa en bankEn instans skapas. Verifiera att beskrivningen som skrivs ut är rätt. O konton.Ok/inte okKrav 2 & 5
TestAddAccountsSkapa en bank. Lägg till 2 konton. Mocka kontona.En instans skapas. Verifiera rätt namn och 2 konton.Ok/inte okKrav 4
TestPrintAccountInfoSkapa en bank. Lägg till 2 konton. Mocka kontona.En instans skapas. Verifiera att de 2 kontonas information skrivs ut.Ok/inte okKrav 5
TestGetBankAccounts-ForOwnerSkapa en bank. Lägg till 3 konton varav 2 med samma ägare. Mocka kontona.En instans skapas. Verifiera att en lista med ägarens 2 konton returneras.Ok/inte okKrav 5
TestGetBankAccounts-ForOwnerNegativeSkapa en bank. Lägg till 3 konton varav 2 med samma ägare. Mocka kontona.En instans skapas. Verifiera att den lista som returneras är tom då vi anropar GetBankAccounts med en ägare som inte finns i listan.Ok/inte okKrav 5
TestPrintAccountInfo-ForOwnerSkapa en bank. Lägg till 3 konton varav 2 med samma ägare. Mocka kontona.En instans skapas. Verifiera att information om ägarens 2 kontonas skrivs ut.Ok/inte okKrav 5
TestPrintBalanceSkapa en bank. Lägg till 2 konton. Mocka kontona.En instans skapas. Verifiera att 2 konton skapats och att saldot för ena kontot skrivs ut.Ok/inte okKrav 5
TestPrintBalance-NegativeSkapa en bank. Lägg till 2 konton. Mocka kontona.En instans skapas. Verifiera att 2 konton skapats och att saldot för ett kontot som inte finns inte skrivs ut.Ok/inte okKrav 5
TestfallBeskrivningVäntat resultatStatusKommentarer
TestCreateBankAccountSkapa ett bankkonto med ägare och positivt saldoEn instans skapas. Verifiera rätt ägare och saldo.Ok/inte okKrav 4
TestCreateBankAccountNegativeSkapa ett bankkonto med ägare och negativt saldoEn instans skapas inte och ett exception fångas. Exception heter CreateBankAccountException och lämnar meddelandet “Bank account must be created with balance >= 0.”Ok/inte okKrav 4 & 8
TestCheckUniqueBankAccountNumberSkapa 2 bankkonton med ägare och positiva saldon2 instanser skapas. Verifiera att dess kontonummer inte är likaOk/inte okKrav 3
TestPrintBankAccountDescriptionSkapa ett bankkonto med ägare och positivt saldo. Skriv ut dess beskrivning.En instans skapas med rätt ägare och saldo. Verifiera att beskrivningen är rätt.Ok/inte okKrav 5
TestCreateBankAccountSkapa ett bankkonto med ägare och positivt saldoEn instans skapas med rätt ägare och saldoOk/inte okKrav 4
TestDepositSkapa ett bankkonto med ägare och positivt saldo. Sätt in en positiv summa.En instans skapas med rätt ägare och saldo. Verifiera att saldot ökat med summan som sattes in.Ok/inte okKrav 6
TestDepositNegativeSkapa ett bankkonto med ägare och positivt saldo. Sätt in en negativ summa.En instans skapas med rätt ägare och saldo. Verifiera att saldot inte ändras.Ok/inte okKrav 6
TestWithdrawSkapa ett bankkonto med ägare och positivt saldo. Ta ut en positiv summa som finns på kontot.En instans skapas med rätt ägare och saldo. Verifiera att saldot minskat med summan som tagits ut.Ok/inte okKrav 7
TestWithdrawNegativeSkapa ett bankkonto med ägare och positivt saldo. Ta ut en positiv summa som är större än den som finns på kontot.En instans skapas med rätt ägare och saldo. Verifiera att saldot är oförändrat.Ok/inte okKrav 7
TestfallBeskrivningVäntat resultatStatusKommentarer
TestInterestAccountSkapa ett InterestAccount med ägare och saldoEn instans skapas. Verifiera rätt ägare och saldo.Ok/inte okKrav 2
TestPrintDescriptionSkapa ett InterestAccount med ägare och positivt saldo. Skriv ut dess beskrivning.En instans skapas med rätt ägare och saldo. Verifiera att beskrivningen är rätt.Ok/inte okKrav 2 & 5
TestPerformMonthEndTransactionsSkapa ett InterestAccount med ägare och saldo mindre än 100m. Utför PerformMonthEndTransactionsEn instans skapas. Verifiera att saldot ökat med räntan 0.0015m.Ok/inte okKrav 9
TestPerformMonthEndTransactionsBigSkapa ett InterestAccount med ägare och saldo mer än 100m. Utför PerformMonthEndTransactionsEn instans skapas. Verifiera att saldot ökat med räntan 0.02m.Ok/inte okKrav 9
TestfallBeskrivningVäntat resultatStatusKommentarer
TestInterestAccountSkapa ett PayrollAccount med ägare och saldoEn instans skapas. Verifiera rätt ägare och saldo.Ok/inte okKrav 2
TestPrintDescriptionSkapa ett PayrollAccount med ägare och positivt saldo. Skriv ut dess beskrivning.En instans skapas med rätt ägare och saldo. Verifiera att beskrivningen är rätt.Ok/inte okKrav 2 & 5
TestPerformMonthEndTransactionsSkapa ett PayrollAccount med ägare och saldo mindre än 100m. Utför PerformMonthEndTransactionsEn instans skapas. Verifiera att saldot är samma, ingen avgift ska tas ut.Ok/inte okKrav 10
TestPerformMonthEndTransactionsBigSkapa ett PayrollAccount med ägare och saldo mer än 100m. Utför PerformMonthEndTransactionsEn instans skapas. Verifiera att saldot minskat med avgiften 0.001m.Ok/inte okKrav 10

Nu har vi tittat på planering av enhetstestning:

  • förstå kraven genom Use case och visualisering, delkrav och omformulering
  • göra en testplan, en testplan per klass