Testplan Versie 1 28-10-2004
Groep 40 Naam Jarry Claessen Sebastian Groeneveld Mark de Haas Jeroen van Steenbergen
Stud. nr. 0508757 0433350 0481832 0515103
Vakken SE, C2 SE, C2 SE SE, C2
1 Unittestplan (UTP) 1.1 Alarmklok De alarmklok zal worden getest door meerdere testinvoeren voor tijd en alarm te kiezen. De notatie {“uu:mm”, “uu:mm”} wordt gebruikt om een relatie aan te geven tussen ingestelde tijd en de alarmtijd voor een test. Zo geeft dus {“15:00”, “15:02”} aan dat de tijd van de alarmklok op 15:00 wordt gezet en het alarm op 15:02. Het alarm zou bij deze testinvoer dus 2 minuten na uitvoering van het instellen van de tijden moeten afgaan, aangenomen dat het alarm is ingeschakeld. We voeren de onderstaande tests allemaal 2 keer uit, waarbij de eerste keer wordt getest of het alarm echt afgaat (Active = True). De tweede keer wordt het getest met het alarm uitgeschakeld, dus dan mag het alarm niet afgaan (Active = False). De resultaten van de aanroepen van de functies zijn zichtbaar op de interface. In de tests worden achtereenvolgens de volgende procedures aangeroepen (in deze volgorde): SetTime(“uu:mm”) Verwachting: De tijd die de alarmklok aangeeft is uu:mm en begint hierna op te lopen. SetAlarmTime(“uu:mm”) Verwachting: De alarm tijd is ingesteld op uu:mm. Dit houdt dus in dat op die tijd het alarm af zal gaan, indien het is ingeschakeld. StopAlarm Verwachting: Indien het alarm afgaat zal het signaal stoppen na de aanroep van deze procedure. De StopAlarm wordt alleen de eerste keer van alle tests aangeroepen, want dan zou het alarm af moeten gaan en de tweede keer niet meer. Use-cases {“16.10”, “16.12”}, {“09:06”, “09:09”}, {“22:40”, “22.42”} Dit zijn eenvoudige tests, omdat er bijvoorbeeld geen uur of dag voorbij gaat. Er is wel gezorgd voor enige spreiding over de dag. {“08:58”, “09:01”}, {“22:40”, “03:06”}, {“06:01”, “06:00”} Deze tests zijn moeilijker en behandelen achtereenvolgens de volgende problemen: Het voorbijgaan van een uur, het voorbijgaan van een dag en het voorbijgaan van bijna een hele dag. Na het testen van deze functies wordt de functie “Snooze” nog getest. Dit gebeurt met één goed gekozen tijd en een wat grotere test. De testinvoer hiervoor is: {“22:32”, “22:34”} en het alarm is ingeschakeld (dus Active = True). We drukken nu, iedere keer dat het alarm afgaat, op de snooze knop net zolang tot de huidige tijd > “02:00”. Op deze manier hebben zijn alle mogelijkheden behandeld, dus zowel dat de uur grens en de dag grens worden gepasseerd.
1
1.2 Chat Voor de test zijn er 2 applicaties die met elkaar kunnen chatten. Beiden hebben een lege lijst Contacts en een lege Ignorelist. Ook zijn beide nicknames nog niet ingesteld en is de lijst LastReceivedMessages leeg. Voor de test wordt onderscheid gemaakt welke gebruiker een actie moet verrichten. De eerste gebruiker is User1 en de tweede gebruiker is User2. Zij hebben resp. de telefoonnummers “0612345678” en “06-98765432”. De actie “User1:functie1()” betekent dat functie1() door User1 wordt uitgevoerd. Use-case: Voor de test stellen beide gebruikers hun nickname in, resp. “User1” en “User2”. Daarna voegt User1 het telefoonnummer van User2 toe aan zijn Contacts lijst. Vervolgens loggen beide gebruikers in. User2 krijgt een keepalive-message van User1 en accepteert User1. Daarna verstuurt User1 het bericht “Dit is een testbericht van User1” naar User2. User1 verplaatst nu User2 naar zijn ignoreList, zodat berichten van User2 worden genegeerd. User2 stuurt binnen een minuut een bericht terug naar User1 met de tekst “Dit is een testbericht van User2”, maar User1 negeert dit bericht. User2 moet dit binnen een minuut doen, omdat User2 geen keepalivemessages meer krijgt van User1 en dus na een minuut de status van User1 op offline wordt gezet. User2 verwijdert User1 uit zijn Contacts lijst (en voegt deze dus NIET toe aan zijn ignoreList). Beiden loggen nu uit door de chat af te sluiten. User1: setNickname(“User1”) Verwachting: Nickname van User1 heeft de waarde “User1”. User2: setNickname(“User2”) Verwachting: Nickname van User2 heeft de waarde “User2”. User1: addMoveContact(06-98765432, “”, True) Verwachting: Er wordt een nieuwe persoon ‘per’ aangemaakt en toegevoegd aan de lijst Contacts. Deze persoon ‘per’ heeft de waarden: per.phoneNumber = 06-98765432 per.nickname = “” per.online = False per.lastAlive = Null User1: login() Verwachting: Het is nu mogelijk om berichten te versturen naar contactpersonen en de threads zijn gestart die de functies checkStatusFromAllContacts() en sendKeepAliveMessage() uitvoeren. User2: login() Verwachting: Het is nog niet mogelijk om berichten te versturen, omdat er geen contactpersonen zijn. Wel zijn de threads gestart. User2: messageReceived(keepalive, 06-12345678) Verwachting: User2 krijgt een keepalive-message van iemand die niet in zijn lijsten voorkomt en er wordt gevraagd of deze gebruiker wordt geaccepteerd. User2: addMoveContact(06-12345678, “User1”, True)
2
Verwachting: User2 heeft User1 geaccepteerd en er wordt een nieuwe persoon ‘per’ aangemaakt met de waarden: per.phoneNumber = 06-12345678 per.nickname = “User1” per.online = False per.lastAlive = NULL Deze persoon per wordt aan de Contacts lijst van User2 toegevoegd. User2: setOnlineStatus(06-12345678) Verwachting: User2 zet de status van User1 op online en het veld LastAlive krijgt de waarde van de huidige datum en tijd. User1: messageReceived(keepalive, 06-98765432) Verwachting: User2 heeft een keepalive-message naar User1 gestuurd, nadat deze User1 geaccepteerd heeft. User1 ontvangt nu dit bericht en update de nickname en lastAlive van User2 in de lijst Contacts. User1: setOnlineStatus(06-98765432) Verwachting: User1 zet de status van User2 op online en update LastAlive met de huidige datum en tijd. User1: sendMessage(“Dit is een testbericht van User1”, 06-98765432) Verwachting: Het bericht wordt verstuurd naar User2. User2: messageReceived(“Dit is een testbericht van User1”, 06-12345678) Verwachting: Nadat gecontroleerd is dat het telefoonnummer van User1 in de lijst Contacts voorkomt, wordt er een nieuwe message ‘msg’ aangemaakt en toegevoegd aan lastReceivedMessages. De waarden van message ‘msg’ zijn: msg.Text = “Dit is een testbericht van User1” msg.Sender = 06-12345678 User1: addMoveContact(06-98765432, “”, False) Verwachting: Het persoon record van User2 wordt verwijderd uit de lijst Contacts en het telefoonnummer van User2 wordt toegevoegd aan de ignoreList. User2: sendMessage(“Dit is een testbericht van User2”, 06-12345678) Verwachting: Het bericht wordt verstuurd naar User1. User1: messageReceived(“Dit is een testbericht van User1”, 06-98765432) Verwachting: User1 heeft het nummer van User2 gecontroleerd en deze komt voor in de ignoreList, dus wordt het bericht genegeerd. User2: removeContact(06-12345678) Verwachting: Het telefoonnummer van User1, en dus User1 zelf, komt in beide lijsten niet meer voor. User1 en User2 sluiten hun chatvenster.
3
1.3 SMS Voor de test wordt een bericht ‘test’ van het type Message geprepareerd met de volgende inhoud: msg.Sender = “06-12345678” msg.Receiver = “06-98765432” msg.Text = “Dit is een testbericht” Voor de test wordt onderscheid gemaakt welke gebruiker een actie moet verrichten. De eerste gebruiker is User1 en de tweede gebruiker is User2. Zij hebben resp. de telefoonnummers “0612345678” en “06-98765432”. De actie “User1:functie1()” betekent dat functie1() door User1 wordt uitgevoerd. Use-case: User1 stuurt het testbericht naar User2. Vervolgens vraagt User2 het aantal nieuwe berichten op, leest het nieuwe bericht in en vraagt opnieuw het aantal nieuwe berichten op. User2 zal het bericht opslaan en vervolgens alle opgeslagen berichten opvragen. Tot slot zal User2 het testbericht verwijderen. User1: SendMessage(test) Verwachting: het bericht wordt verstuurd naar telefoonnummer msg.Receiver. Vervolgens worden de volgende functies aangeroepen bij de ontvanger, die begonnen is zonder enige berichten in ReceivedMessages en SavedMessages. Onderstaande volgorde van functieaanroepen en controles van variabelen zal automatisch in een testprogramma worden uitgevoerd. User2: GetMessageCount Verwachting: deze functie geeft de waarde 1 omdat er één bericht is ontvangen. User2: ReceiveMessage(nieuw) Verwachting: het testbericht ‘test’ wordt in de variabele ‘nieuw’ teruggegeven. User2: GetMessageCount Verwachting: deze functie geeft de waarde 0 omdat er nu geen nieuwe berichten meer zijn. User2: SaveMessage(nieuw) Verwachting: het testbericht wordt opgeslagen in SavedMessages. User2: GetHistory(saved[ ]) Verwachting: het array dat wordt teruggegeven in ‘saved’ bevat één element, namelijk het opgeslagen testbericht ‘test’. User2: DeleteMessage(nieuw) Verwachting: het bericht wordt verwijderd uit SavedMessages. Aan het eind van de test, zijn er geen berichten meer aanwezig in ReceivedMessages en SavedMessages.
4
2 Integratietestplan (ITP) De basis van het systeem bestaat uit de componenten “Main”, die de samenwerking van de overige componenten verzorgt. en “Display” omdat hiermee de werking van de overige componenten eenvoudig kan worden gecontroleerd. In deze fase kan alleen worden gecontroleerd of het display inderdaad de juiste weergave (achtergrondplaatje) vertoond.
2.1 Alarmklok Vervolgens wordt de component “Alarmklok” toegevoegd aan het basissysteem. Hierbij moet tevens de bijbehorende procedure in de hoofd-thread worden toegevoegd, zodat de klok getekend kan worden. In het alarmklok venster worden 3 dingen zichtbaar. • De huidige tijd, deze zal automatisch verspringen als er een bepaalde tijdseenheid verstreken is (1 minuut). • De alarmtijd (deze is statisch en in te stellen) • Een aanduiding of het alarm aan of uit geschakeld is (afbeelding van bel of bel met streep erdoor). Deze zal knipperen indien het alarm actief is. • Een aantal knoppen, dat hieronder beschreven is. We testen de volgende knoppen: • “Set Time” Door op deze knop te drukken wordt steeds de functie gewijzigd. mogelijkheden: 1. Niks 2. De uren van de huidige tijd kunnen veranderd worden 3. De minuten van de huidige tijd kunnen veranderd worden Bij de tweede functie knippert het uren gedeelte van de huidige tijd en functie knippert het minuten gedeelde van de huidige tijd. Indien functie 2 of 3 in gebruik is dan kan met behulp van de +/– knoppen resp. de uren en minuten gewijzigd worden. • “Set Alarm Time” Door op deze knop te drukken wordt steeds de functie gewijzigd. mogelijkheden: 1. Niks 2. De uren van de huidige alarm tijd kunnen veranderd worden 3. De minuten van de huidige alarm tijd kunnen veranderd worden Bij de tweede functie knippert het uren gedeelte van de huidige tijd en functie knippert het minuten gedeelde van de huidige tijd. Indien functie 2 of 3 in gebruik is dan kan met behulp van de +/– knoppen resp. de uren en minuten gewijzigd worden.
5
Er zijn drie
bij de derde de tijden van Er zijn drie
bij de derde de tijden van
•
• •
“On/Off” Met deze knop kan worden aangegeven of het alarmsignaal op de aangegeven tijd moet klinken. Mocht het alarm afgaan en deze knop op “On” staan en er wordt op geklikt dan zal deze knop hetzelfde fungeren als de “Stop” knop. “Snooze” Deze knop stopt het alarmsignaal tijdelijk (9 minuten, oftewel de snooze functie). Deze is alleen aan te klikken als het alarm actief is. “Stop” Deze knop stopt het alarmsignaal en is alleen aan te klikken als het alarm actief is.
2.2 Chat Daarna wordt de component “Chat” toegevoegd aan het basissysteem. Hierbij moet tevens de bijbehorende procedure in de hoofd-thread worden toegevoegd, zodat het chatvenster getekend kan worden. In het chatvenster is een tabsheet te zien, waarin de volgende tabs zijn: • Een tab “Users”, waarin de lijsten Contacts en IgnoreList aanwezig zijn en waarin telefoonnummers kunnen worden toegevoegd/verwijderd/verplaatst. En waar de nickname van de gebruiker is in te stellen. • Een tab voor elke chatsessie met een gebruiker. Deze chatsessie is gestart door het openen van een chatsessie in de tab “Users”, of door het ontvangen van een bericht van een gebruiker waarvoor nog geen tab was. We testen de volgende knoppen in de “Users” tab: • “Set nickname”: Instellen van de nickname • “Log in”: Inloggen • “Add number” (voor beide lijsten): Voegt telefoonnummer aan een lijst toe. • “Move number to IgnoreList”: Verplaatst geselecteerde nummer in Contacts naar IgnoreList. • “Move number to Contacts”: Verplaatst geselecteerde nummer in IgnoreList naar Contacts. • “Remove number” (voor beide lijsten): Verwijdert het geselecteerde nummer uit de lijst. • “Open chatsession”: Opent een nieuwe tab voor de geselecteerde gebruiker, als hiervoor nog geen chatsessie geopend is. We testen de volgende functies in een “Chatsessie” tab: • “Send message”: Verstuurt het bericht naar de gebruiker waarvoor de chatsessie geopend is. • Invoerknoppen voor het invoeren van een bericht. In het popup-venster voor het accepteren/weigeren van nieuwe gebruikers testen we de volgende knoppen: • “Accept”: Voegt het telefoonnummer van de nieuwe gebruiker toe aan de lijst Contacts. • “Ignore”: Voegt het telefoonnummer van de nieuwe gebruiker toe aan de IgnoreList.
6
2.3 SMS Tot slot wordt de component “SMS” toegevoegd. Hiervoor moet de bijbehorende procedure in de hoofd-thread worden toegevoegd, zodat het SMS scherm kan worden getekend. In het SMS scherm zijn de volgende onderdelen zichtbaar: • Een indicator als er nieuwe berichten zijn (afbeelding van een envelop) met daarnaast het aantal nieuwe berichten. • Een aantal knoppen, dat hieronder beschreven is We testen de volgende functies: • “Create message” Er verschijnt een nieuw scherm waar een telefoonnummer kan worden ingevuld en een bericht kan worden getypt. Wanneer op de knop “Send” wordt geklikt, wordt het bericht verstuurd. • “Read message” Het eerstvolgende nieuwe bericht wordt getoond. Dit kan vervolgens worden opgeslagen met de “Save” knop of worden verwijderd met de “Delete” knop. • “Saved messages” Een overzicht van de opgeslagen berichten wordt getoond. In het overzicht staat uitsluitend het telefoonnummer van de afzender. Een bericht kan vervolgens worden geopend door het te selecteren. Een geopend bericht kan vervolgens eventueel worden verwijderd met de “Delete” knop.
7