Testplan Versie 1 28-10-2004 Groep 40 Naam Stud. nr. Vakken Jarry Claessen 0508757 SE, C2 Sebastian Groeneveld 0433350 SE, C2 Mark de Haas 0481832 SE Jeroen van Steenbergen 0515103 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 06-12345678 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 06-12345678 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. Er zijn drie 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 bij de derde functie knippert het minuten gedeelde van de huidige tijd. Indien functie 2 of 3 in gebruik is dan kan met behulp van de +/ knoppen de tijden van resp. de uren en minuten gewijzigd worden. Set Alarm Time Door op deze knop te drukken wordt steeds de functie gewijzigd. Er zijn drie 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 bij de derde functie knippert het minuten gedeelde van de huidige tijd. Indien functie 2 of 3 in gebruik is dan kan met behulp van de +/ knoppen de tijden van resp. de uren en minuten gewijzigd worden. 5
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