Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.

Slides:



Advertisements
Liknende presentasjoner
Repetisjon innkapsling static tabell av primitiv datatype LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring.
Advertisements

Tabeller av objekter Klassen ArrayList
C++ for Java-programmerere
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Uke 10 - Sortering, og hvordan lage en klasse for et klassebibliotek 21 okt. 2003, Arne Maus Inst. for informatikk, UiO.
Uke 8 - Mer om: Objekter, klasser og pekere
Polymorfi og arv, del 1 LC191D Videregående programmering Semesterplan: Høgskolen i Sør-Trøndelag, Avdeling.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
1 Java 6 Mer om metoder Tekster Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo.
Unit testing Gruppe 2: Kjartan Haugen Jon Gunnar Bjørkmo
1 Litt om OO og programmering Arne Maus. 2 OO og Java (og C++, C#)  Arven fra Simula  Programstruktur i Java  Generering av objekter  Beskyttelse.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Samarbeid mellom objekter
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Java 4 Mer om forgreninger While-løkker Ole Christian Lingjærde
Objekt, Instanser og referanser + litt til. Objekter  Instanser  En instans er et objekt av en bestemt klasse  Instanser blir laget ved å kalle klassens.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
IS-102 Klassedefinisjoner
C# for javaprogrammerere
En gang til!? .
Fag LO189D - Objektorientert programmering Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 11 Applet’s Hva karakteriserer applet’sside.
Å lage sikre klasser Unntaksklassene i Java-API-et Unntakshåndtering i databasesammenheng try-catch-finally-setningen Trelagsarkitektur; egen databaseklasse.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Objektorientert programmering
Java 11 Programmering med og uten objekter: hva er forskjellen?
Å lese tall fra en fil, klassen Scanner 1.Et Scanner-objekt kan knyttes til et strømobjekt eller til en streng. 2.Kan skanne teksten etter data av ulike.
Programmering sif8005. Praktisk informasjon  Innleveringsfrist øvinger: mandag kl  Alle øvinger er obligatoriske  Studass tilgjengelig 6 timer.
Programmering i Java tilpasset undervisning våren 2009 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet.
Tabeller Dette er en tabell, eller array. Den kan defineres sånn som dette: public int[] heltallsTabell = new int[11]; //Her er 11 tabellens lengde for.
Objekt, Instanser og referanser + litt til. Objekter  Instanser  Kan sees på som det samme. Personen Per kan være både et objekt og en instans av klassen.
Main metoden n public static void main(String[] args){ } n Inni denne metoden skjer alt! n Det kan bare finnes en main metode per program. n Den kan ligge.
INF Objektorientert programmering
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon september 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Object  Klassen i java  Alle klasser arver fra denne om ikke noe annet blir spesifisert  ArrayList.add(Object instans)  Alle elementer formes til Object.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
INF1000 (Uke 14) Eksamen V06 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Arild Waaler.
Byggeklosser i java  Klassedefinisjon  Variabel deklarasjon  Metodedeklarasjoner  En ordentlig klasse  Spesielle/kryptiske skrivemåter  løkker og.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
INF1000 (Uke 4) Mer om forgreninger, While-løkker
Inf1000 (Uke 5) Arrayer, filer og tekst
Variabler, datatyper og uttrykk
Utskrift av presentasjonen:

Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 22 Å teste programmer Refleksjonside 2-3 Enhetstesting med JUnitside 4-7 Funksjonsbrudd og testfeilside 8 Systemtestingside 9-10 Det reserverte ordet assertside 11 Regresjonstestingside 12 Akseptansetestingside 13 Svartboks- og hvitbokstestingside 14

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 22, side 2 Refleksjon •Refleksjon er at et Java-program “ser seg i speilet” og gjør operasjoner hvor programmets egne metoder, variabler, konstruktører, tabeller og klasser inngår som eksplisitte data. •Et objekt av klassen Class beskriver en klasse. –Kan få laget et Class-objekt ut fra et bestemt objekt Class minKlasse = mittObjekt.getClass(); –eller fra en klasse eller et interface try { Class minKlasse = Class.forName(“MittInterface“); Class annenKlasse = Class.forName(“MinKlasse“); Class stringKlasse = Class.forName(“java.lang.String“); } catch (ClassNotFoundException e) { System.out.println(“Klassenavn ikke funnet: “ +e); } –eller fra en primitiv datatype Class doubleKlasse = Double.TYPE ;

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 22, side 3 Eksempel på refleksjon import java.lang.reflect.*; class MetodeLister { public void listMetoder() { String klasseNavn = "java.lang.String"; try { Class stringKlasse = Class.forName(klasseNavn); Method[] metoder = stringKlasse.getMethods(); System.out.println("Metoder i klassen " + klasseNavn + ":"); for (int i = 0 ; i < metoder.length ; i++) { System.out.println(metoder[i]); } catch (ClassNotFoundException e) { System.out.println("Klassenavn ikke funnet: " + e); } class RefleksjonsTest { public static void main(String[] args) { MetodeLister lister = new MetodeLister(); lister.listMetoder(); } Utskrift: Metoder i klassen String: public int java.lang.String.hashCode() public int java.lang.String.compareTo(java.lang.Object) public int java.lang.String.compareTo(java.lang.String) public boolean java.lang.String.equals(java.lang.Object) public java.lang.String java.lang.String.toString() public int java.lang.String.length() public char java.lang.String.charAt(int) public void java.lang.String.getChars(int,int,char[],int)... med mere, samtlige offentlige metoder i String, inklusive de arvet fra Object, listes ut.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 22, side 4 Enhetstesting med JUnit •”Testing shows the presence of bugs, not their absence.” (Dijkstra) •Rammeverk for testing, kalt JUnit. Lastes ned fra •Enhetstest: Test som skal verifisere at en liten del (f.eks. en klasse) av et program virker som det skal. •JUnit hjelper oss å organisere testingen. •Lager subklasse til TestCase, bruker en del metoder som arves derfra. •Testing er metodekall. Grupperer disse metodekallene logisk. Legger hver gruppe i en metode med navn som begynner på ”test”. •Lager setUp() slik at den ”nullstiller” testobjektet før en gruppe med tester er kjørt. Definerer dermed pre-betingelsene for testing. ”JUnit fixture” •Lager tearDown() slik at den rydder opp (lukker filer, kopler ned nettverksforbindelser, etc.) etter at en gruppe med tester er kjørt. Definerer dermed post-betingelsene for testing. Vis programliste 22.2 side

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 22, side 5 TestSuiter •Metoden suite() skal definere en testsuite, det vil si en mengde testmetoder. Her består testsuiten av alle testmetodene. public static Test suite() { return new TestSuite(JUnitNavneListeTest.class); } public static void main(String[] args) { junit.textui.TestRunner.run(suite()); // tekstlig brukergrensesnitt } klasselitteral lader testsuiten med alle offentlige metoder i klassen JUnitNavneListeTest som har navn som begynner på ”test”

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 22, side 6 Eksempel på testkjøring som går i feil •Testsuiten vår er avhengig av at toString()-netoden i klassen Navneliste ikke forandres. •Forandrer vi toString()-metoden må vi endre kallene på assertTrue() og assertFalse(). •Bør ha så få slike avhengigheter mellom testobjekt og testsuite som mulig. •Dersom vi endrer toString() uten å endre testsuiten, får vi feilutskrift:.F..F Time: 0,111 There were 2 failures: 1) testInnsetting(JUnitNavneListeTest)junit.framework. AsertionFailedError at JUnitNavneListeTest.testInnsetting(JUnitNavneListeTest.java:44) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at JUnitNavneListeTest.main(JUnitNavneListeTest.java:100) 2) testSletting(JUnitNavneListeTest)junit.framework.AssertionFailedError at JUnitNavneListeTest.testSletting(JUnitNavneListeTest. java:82) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at.... FAILURES!!! Tests run: 3, Failures: 2, Errors: 0

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 22, side 7 JUnit har også et grafisk brukergrensesnitt

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 22, side 8 Funksjonsbrudd og testfeil •Funksjonsbrudd (engelsk: failure) –forventet feil som vi har tatt høyde for –prøves med assertTrue() •Testfeil (engelsk: error) –ikke planlagt feil og helt uventet •uhåndterte unntak •en sjelden gang en feil i JVM Dette fører også til at testen ikke får OK –testen er inkonklusiv: Kan ikke si noe om det man skulle teste, for en feil med ukjent årsak har forpurret testkjøringen. Gjør oppgavene side 814.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 22, side 9 Systemtesting Eksempel, skal teste et databasesystem mange grensesnitt mot databasesystemet, systemtesting må dekke alle grensesnittene

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 22, side 10 Systemtesting, forts •Hva kreves av et solid rammeverk for systemtesting? –Praktisk dersom alle grensesnittene kan nås via det samme programmeringsspråket –Loggfil på standardisert format –Tidsangivelser for f.eks. oppstart bør være ikke-eksplisitte –Bør tilby parallelle operasjoner •Å teste et stort system er en formidabel oppgave •Fremdeles langt fra å bevise at programmet er riktig, det man gjør er å avdekke feil •Ofte leveres liste over ”kjente feil” sammen med systemet –ikke-kritiske feil –alvorlige feil –kritiske feil Gjør oppgaven side 818.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 22, side 11 Det reserverte ordet assert •assert = bekrefte, nytt reservert ord i versjon 1.4 av J2SE •Eksempel: String[] langTabell = new String[20000]; assert langTabell != null : “Alvorlig feil: kunne ikke deklarere tabell.“; •Alvorlig feil dersom assert-uttrykket er false, AssertionError-objekt kastes •Kompilering fra kommandolinjen –>javac MinKlasse.java •Kjøring –>java -ea MinKlasse

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 22, side 12 Regresjonstesting •Testing i vedlikeholdsfasen av et programsystem •Regresjonstesting (regresjon = vende tilbake til det kjente) •Eksempel –programsystemet Gamma testes med 10 systemtester –mange utviklere arbeider fortløpende med Gamma –de 10 systemtestene kjøres hver gang en endring er gjort –ingen sovepute, en må alltid vurdere om det er tilstrekkelig å kjøre de 10 systemtestene, eller om andre tester må kjøres i tillegg •Målet med regresjonstestingen er å finne ut om endringen har introdusert nye feil •Kan med fordel automatiseres –kjøres om natta når det ellers er liten belastning

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 22, side 13 Akseptansetesting •Testing utført av mottakerne av et programsystem •Mål: Å verifisere at produktet oppfyller de funksjonelle krav som er spesifisert. •Består gjerne av brukeroperasjoner man har forventet seg å kunne gjøre •Bærer i liten grad preg av kjennskap til selve implementasjonen av produktet. •I en kommersiell situasjon vil det være rimelig med skriftlige godkjenninger av produktet på bakgrunn av akseptansetestingen.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 22, side 14 Svartboks- og hvitbokstesting •Strategier for testing •Betrakter testobjektet som en boks •Svart boks –vet ingenting om hvordan boksen ser ut inni og kan kun støtte oss på testobjektets grensesnitt i testutføringen. Dytter data inn og får data ut. –systemtesting (?) –akseptansetesting •Hvit boks –vet hvordan boksen ser ut inni og legger opp testene spesifikt ut fra dette –pass på at brukerens krav ikke kommer ut av syne –enhetstesting •Testingeniørens rolle –systemtesting, svart boks –nært samarbeid med utviklere –  ”grå boks”