Ladda ner presentationen
Presentation laddar. Vänta.
Publicerades avStefan Sandström
1
Föreläsning 6, kapitel 6 Objekt som uppför sig som de skall Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar fredric.ragnar@hgo.sefredric.ragnar@hgo.se Telefon 0498-299948 Andreas Hedrén andreas.hedren@hgo.seandreas.hedren@hgo.se Telefon 0498-299954
2
Objekt som beter sig korrekt Den här föreläsningen: Test Avlusning/Debugging Automatisera test Att skriva för att kunna underhålla
3
Vi måste hantera fel Tidiga fel är ofta syntaxfel –Kompilatorn hittar de felen Senare fel är ofta logiska fel –Kompilatorn kan inte hjälpa till med logiska fel –Kallas också buggar En del buggar har ingen direkt uppenbar betydelse –Kommersiell programvara är sällan utan fel
4
Förhindra eller Detektera (Utvecklare eller Underhållare) Vi kan minska sannolikheten för fel –Använd metoder för programvaruutveckling som t ex inkapsling Vi kan öka chanserna att hitta/detektera felen –Använd god programvaruutvecklingsed som modularisering och dokumentation Vi kan utveckla vår skicklighet att hitta fel
5
Testa och Avlusa Detta är mycket viktiga kunskaper och färdigheter Att testa är att leta efter fel Att avlusa (eng: debug) är att leta efter vad som är fel. Felet kan visa sig ganska så långt från själva felet
6
Tekniker för att testa och avlusa Enhetstest (i BlueJ) (eng: unit testing) Automatisera test Manuellt gå igenom koden Utskrifter till skärmen Avlusningsverktyg (eng: debuggers)
7
Enhetstest Varje enhet av en applikation kan bli testad –Metod, klass, modul (Java: package) Kan och borde ske under utvecklingen –Att hitta och fixa tidigt sänker utvecklingskostnaden (t ex programmerartid) –En testsvit byggs upp
8
Grunderna om att testa Förstå vad enheten borde göra – enhetens kontrakt –Du letar efter brott mot kontraktet –Använd positiva test och negativa test Testa gränser –Noll, en, full Sök i en tom samling (eng: collection) Lägg till i en full samling
9
Enhetstest i BlueJ Objekt kan skapas av olika klasser Enskilda metoder kan köras Med ”inspect” får man uppdaterad information om ett objekts tillstånd Utforska med diary-prototype projektet.
10
Automatisera test Att testa på ett bra sätt är en kreativ process, men… … att testa grundligt tar tid och innebär mycket upprepningar Regressionstest innebär att upprepa tester, d vs köra tester igen Att använda en test-rigg kan underlätta en del. –Klasser skrivs som utför testerna –Kreativiteten läggs på att skapa dessa testklasser
11
Automatisera test, mer Utforska med diary-testing projektet –Det krävs fortfarande att någon analyserar resultatet Utforska en högre grad av automatisering med diary-test- automation projektet –Nu behövs bara åtgärder, dvs mänsklig inblandning om fel rapporteras.
12
Modularisering och Gränsnitt Applikationer består ofta av olika moduler –T ex så att flera team kan jobba på dem Gränssnittet mellan modulerna måste vara klart specificerat. –Stöder oberoende samtidig utveckling –Ökar sannolikheten för en framgångsrik integrering.
13
Modularisering i en kalkylator En modul behöver inte veta hur en annan modul är implementerad, dvs hur den ser ut inuti. –Modulen som jobbar mot användaren ”User controls” borde vara ett GUI eller en hårdvarumanick som ett tangentbord. –Modulen som gör beräkningarna ”Arithmetic Logic” kan vara mjukvara eller hårdvara
14
Metodsignaturer som gränssnitt // Return the value to be displayed. public int getDisplayValue(); // Call when a digit button is pressed. public void numberPressed(int number); // Call when a plus operator is pressed. public void plus(); // Call when a minus operator is pressed. public void minus(); // Call to complete a calculation. public void equals(); // Call to reset the calculator. public void clear();
15
Avlusning (Debugging) Det är viktigt att bli duktig på att läsa kod –Avlusning gör man ofta på andras kod Det finns tekniker och verktyg som stödjer avlusningsprocessen Utforska med calculator-engine projektet
16
Manuellt gå igenom koden Relativt ovanligt –Ett low-tech sätt –Mer kraftfullt än man kan tro Gå ifrån datorn! ”Kör” ett program för hand Hög-nivå (step) eller låg-nivå (step-into) vyer.
17
Använd tabell för objektens tillstånd Beteendet hos ett objekt beror ofta på tillståndet Ett felaktigt beteende beror ofta på ett felaktigt tillstånd Skriv alla fältens värde i en tabell Dokumentera alla förändringar efter varje att metod körts
18
Verbala genomgångar Förklara för någon annan vad koden gör –De kanske hittar felet –Genom att förklara så kanske du själv hittar felet Det finns formella metoder för att ha genomgångar eller granskningar i grupp
19
Spårutskrifter Den mest populära metoden Inga speciella verktyg behövs Alla programmeringsspråk stödjer detta Bara effektivt om rätt metoder är dokumenterade Det kan bli väldigt mycket utsktifter Att kunna slå av och på kräver att man tänker efter före
20
Avlusare (eng:Debuggers) Avlusare är både språk och miljöberoende BlueJ har en integrerad avlusare Stödjer brytpunkter Man kan exekvera med ”Step” och ”Step into” Man kan se meddelandekedjor Objektens tillstånd
21
Summering Att program har fel är ett faktum Bra programvruutvecklingstekniker kan minska felen Att kunna testa och avlusa är mycket viktigt Automatisera testerna när det är möjligt Använd flera avlusningsmetoder
Liknande presentationer
© 2024 SlidePlayer.se Inc.
All rights reserved.