MUTASJONSTESTING LAG BUGS FOR Å FÅ BEDRE KODE
|
|
- Thore Andresen
- 7 år siden
- Visninger:
Transkript
1 MUTASJONSTESTING LAG BUGS FOR Å FÅ BEDRE KODE Filip van Laenen Testdagen Odin
2 Hvem er jeg? 18 år i IT-bransjen Utvikler (Java/Smalltalk/Ruby) Arkitekt/teknisk ansvarlig (Tester/QA) Flere års erfaring med mutasjonstesting 2
3 Mutation Testing The Book 3
4 Mutation Testing The Book SJEKK PRIS E N! $0.00 4
5 HVA ER MUTASJONSTESTING? 5
6 6
7 7
8 8
9 9
10 Mutasjonen i kildekoden int max(int a, int b) { return (a < b)? b : a; int max(int a, int b) { return (a b)? b : a; 10
11 11
12 12
13 13
14 14
15 Ekvivalente mutasjoner int max(int a, int b) { return (a < b)? b : a; int max(int a, int b) { return (a b)? b : a; 15
16 MUTASJONSOPERATORER 16
17 Mutasjonsoperatorer Aritmetikk (+, -,,, ) Boolske operatorer (,,, ) Sammenligninger (=, <, >,,,, ) Kortslutning av grener Konstanter (tall, tekst, ) Fjerning av linjer Nullstilling av returverdier 17
18 Eksempel integer students_passed(grades) { passed 0; foreach (grade grades) { if (grade 12) { passed passed + 1 return passed; integer students_passed(grades) { passed 0; foreach (grade grades) { if (grade > 12) { passed passed + 1 return passed; 18
19 Eksempel: > integer students_passed(grades) { passed 0; foreach (grade grades) { if (grade 12) { passed passed + 1 return passed; integer students_passed(grades) { passed 0; foreach (grade grades) { if (grade > 12) { passed passed + 1 return passed; 19
20 Eksempel: + integer students_passed(grades) { passed 0; foreach (grade grades) { if (grade 12) { passed passed + 1 return passed; integer students_passed(grades) { passed 0; foreach (grade grades) { if (grade 12) { passed passed - 1 return passed; 20
21 Eksempel: endring av tallverdi integer students_passed(grades) { passed 0; foreach (grade grades) { if (grade 12) { passed passed + 1 return passed; integer students_passed(grades) { passed 0; foreach (grade grades) { if (grade 13) { passed passed + 1 return passed; 21
22 Eksempel: kortslutning av if-løkke integer students_passed(grades) { passed 0; foreach (grade grades) { if (grade 12) { passed passed + 1 return passed; integer students_passed(grades) { passed 0; foreach (grade grades) { if (true) { passed passed + 1 return passed; 22
23 Eksempel: kortslutning av if-løkke integer students_passed(grades) { passed 0; foreach (grade grades) { if (grade 12) { passed passed + 1 return passed; integer students_passed(grades) { passed 0; foreach (grade grades) { if (true) { passed passed + 1 return passed; 23
24 Eksempel: fjerning av en kodelinje integer students_passed(grades) { passed 0; foreach (grade grades) { if (grade 12) { passed passed + 1 return passed; integer students_passed(grades) { passed 0; foreach (grade grades) { if (grade 12) { passed passed + 1 return passed; 24
25 Eksempel: nullstilling av returverdi integer students_passed(grades) { passed 0; foreach (grade grades) { if (grade 12) { passed passed + 1 return passed; integer students_passed(grades) { passed 0; foreach (grade grades) { if (grade 12) { passed passed + 1 return 0; 25
26 Mutasjonsoperatorer Regulære uttrykk Samtidighet Avhengigheter API-endringer Arv 26
27 Utfordringer Evige løkker/rekursjon Syntaksfeil Tilstandslekkasje Segmentation faults Ekvivalente mutasjoner 27
28 Ekvivalente mutasjoner To forskjellige systemer som alltid gir samme output for samme input Vanskelig å oppdage automatisk Vanskelig å verifisere manuelt 28
29 Ekvivalente mutasjoner number max(a, b) { if (a b) { return a; else { return b; number max(a, b) { if (a > b) { return a; else { return b; 29
30 Ekvivalente mutasjoner number max(a, b) { if (a b) { return a; else { return b; number max(a, b) { if (a > b) { return a; else { return b; 30
31 HVORFOR VIRKER MUTASJONSTESTING? 31
32 Hvorfor virker mutasjonstesting? Generated mutants are similar to real faults. 32 Andrews, Briand, Labiche, ICSE 2005
33 Hvorfor virker mutasjonstesting? In practice, if the software contains a fault, there will usually be a set of mutants that can only be killed by a test case that also detects that fault. Geist et. al., Estimation and Enhancement of Real-time Software Reliability through Mutation Analysis,
34 Hvorfor virker mutasjonstesting? Complex faults are coupled to simple faults in such a way that a test data set that detects all simple faults in a program will detect most complex faults. K. Wah, Fault Coupling in Finite Bijective Functions,
35 Hvorfor virker mutasjonstesting? Complex faults are coupled to simple faults in such a way that a test data set that detects all simple faults in a program will detect most complex faults. K. Wah, Fault Coupling in Finite Bijective Functions,
36 Virker mutasjonstesting? Mutation testing is more powerful than statement or branch coverage. Walsh, Ph.D. Thesis, State University of New York at Binghampton, 1985 Mutation testing is superior to data flow coverage criteria. Frankl, Weiss, Hu, Journal of Systems and Software,
37 MUTASONSTESTING OG TESTING 37
38 Testdekning Vanskelig å jukse Å kjøre gjennom kildekoden er ikke nok Kan peke ut fokusområder for manuell testing 38
39 Manglende testtilfeller 39 Tips til nye testtilfeller Avhengig av verktøyet Krever tilgang til rapportene Ikke alltid trivielt
40 Eksempel integer students_passed(grades) { passed 0; foreach (grade grades) { if (grade 12) { passed passed + 1 return passed; integer students_passed(grades) { passed 0; foreach (grade grades) { if (grade > 12) { passed passed + 1 return passed; 40
41 Eksempel: > integer students_passed(grades) { passed 0; foreach (grade grades) { if (grade 12) { passed passed + 1 Ha en 12 i return passed; testsettet ditt integer students_passed(grades) { passed 0; foreach (grade grades) { if (grade > 12) { passed passed + 1 return passed; 41
42 Eksempel: + integer students_passed(grades) { passed 0; foreach (grade grades) { if (grade 12) { passed passed + 1 Ha en return passed; 12 i testsettet ditt integer students_passed(grades) { passed 0; foreach (grade grades) { if (grade 12) { passed passed - 1 return passed; 42
43 Eksempel: endring av tallverdi integer students_passed(grades) { passed 0; foreach (grade grades) { if (grade 12) { passed passed + 1 Ha en 12 i return passed; testsettet ditt integer students_passed(grades) { passed 0; foreach (grade grades) { if (grade 13) { passed passed + 1 return passed; 43
44 Eksempel: kortslutning av if-løkke integer students_passed(grades) { passed 0; foreach (grade grades) { if (grade 12) { passed passed + 1 Ha en <12 return passed; i testsettet ditt integer students_passed(grades) { passed 0; foreach (grade grades) { if (true) { passed passed + 1 return passed; 44
45 Eksempel: fjerning av en kodelinje integer students_passed(grades) { passed 0; foreach (grade grades) { if (grade 12) { passed passed + 1 return passed; Ha en 12 i testsettet ditt integer students_passed(grades) { passed 0; foreach (grade grades) { if (grade 12) { passed passed + 1 return passed; 45
46 Eksempel: nullstilling av returverdi integer students_passed(grades) { passed 0; foreach (grade grades) { if (grade 12) { passed passed + 1 return passed; integer students_passed(grades) { passed 0; foreach (grade grades) { if (grade 12) { passed passed + 1 Ha en 12 i testsettet return 0; 46 ditt
47 HVIS MUTASJONSTESTING ER SÅ BRA, HVORFOR BLIR DET IKKE BRUKT? 47
48 Mutasjonstesting er gammelt nytt Allerede beskrevet i 1971: R. Lipton, Fault Diagnosis of Computer Programs Videre forskning i løpet av 1970tallet: R. Lipton et. al., Hints on Test Data Selection: Help for the Practicing Programmer,
49 Historiske hindringer Mangel på enhetstestingverktøy Mangel på enhetstestingpraksis Ineffektive implementasjoner TDD Lange prosesseringstider Integrasjon med utviklingsverktøy 49
50 50
51 YTELSE 51
52 Kildekode eller binærkode? Kildekode Tekstmanipulasjon Krever kompilering Binærkode Raskt Krever dekompilering AST-tre Gylden middelvei? 52
53 Utvelgelse av enhetstester Mål: finne enhetstesten som «dreper» mutanten 53
54 54
55 55
56 56
57 Utvelgelse av enhetstester Mål: finne enhetstesten som «dreper» mutanten Midler: Testdekning Manuelle hints Konvensjoner (klassenavn, pakkenavn) Caching av testresultater 57
58 Kompleksitet Eksempel: 50 klasser 20 enhetstester per klasse 1ms per enhetstest Testrunde: ms = 1s 100 mutanter per klasse: Naiv implementasjon: s = 1h 23m 20s Klassescoping: ms = 1m 40s Idealt: ms = 5s 58
59 Kompleksitet Eksempel: 500 klasser 20 enhetstester per klasse 1ms per enhetstest Testrunde: ms = 10s 100 mutanter per klasse: Naiv implementasjon: s = 5,8d Klassescoping: ms = 16m 40s Idealt: ms = 50s 59
60 VERKTØY 60
61 Anbefalte verktøy Java: Ruby: Humbug JavaScript: Mutant PHP: PIT Grunt-mutation-testing 61
62 PIT Java JUnit & TestNG Maven & kommandolinje Muterer bytekode Konfigurerbart sett med mutatorer 62
63 PIT Java JUnit & TestNG Maven & kommandolinje Muterer bytekode Konfigurerbart sett med mutatorer
64 PIT Java JUnit & TestNG Maven & kommandolinje Muterer bytekode Konfigurerbart sett med mutatorer
65 Mutant Ruby Rspec Kommandolinje Aktivt prosjekt Grei dokumentasjon
66 HVORDAN KOMME I GANG? 66
67 Hvordan komme i gang Velg riktig verktøy Om mulig, bruk fra dag 1 Avgrens i begynnelsen Kritisk kode Relevante mutatorer Lær å bruke verktøyet Tro på hva det sier Eller bevis at det tar feil 67
68 OPPSUMMERING 68
69 Er mutasjonstesting nyttig? Enkle prinsipper Veldig kraftig verktøy Utfordringer rundt ytelse Verktøyene blir bedre og bedre Ja 69, forutsatt at enhetstesting er på plass
70 Er mutasjonstesting nyttig? Enkle prinsipper Veldig kraftig verktøy Utfordringer rundt ytelse Verktøyene blir bedre og bedre Ja 70, forutsatt at enhetstesting er på plass
71 Er mutasjonstesting nyttig? Enkle prinsipper Veldig kraftig verktøy Utfordringer rundt ytelse Verktøyene blir bedre og bedre Ja 71, forutsatt at enhetstesting er på plass
72 Takk for din oppmerksomhet! Contact /
Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays
Oversikt C programmering 1 C programmering Introduksjon Kildekode Kompilering Hello world Hello world med argumenter 2 Funksjoner 3 Datatyper 4 Pekere og arrays 5 Kontrollstrukturer Lars Vidar Magnusson
DetaljerTestdekning og automatisering - Er 100% testdekning et mål?
Testdekning og automatisering - Er 100% testdekning et mål? Shomaila Kausar, Senior prosjektleder/testleder Ole Fingal Harbek, Senior Testleder Testdagen Odin 2017 Kort om oss Shomaila Kausar - cand scient
DetaljerEffektiv testing. Per Otto Bergum Christensen. 9.-10. September, JavaZone. Bergum Christensen Consulting
Effektiv testing Per Otto Bergum Christensen 9.-10. September, JavaZone Bergum Christensen Consulting Om meg Per Otto Bergum Christensen (33) Siv.ing, Datateknikk, NTNU Jobbet med utviklingsprosjekter
DetaljerISTQB Foundation Level Prøveeksamen
ISTQB Foundation Level Prøveeksamen Svar på følgende spørsmål For hvert spørsmål er der ETT og BARE ETT rett svar! (Unntak er avmerket spesielt). Spørsmål til Kap 1 ("Fundamentals") 1.1. (K2) Hva er betydningen
DetaljerGrunnleggende testteori
1 Grunnleggende testteori Error-Fault-Failure 2 Error : når en programmerer koder feil eller utelater kode (evt. miljøpåvirkning) årsaken til en fault Fault (defect eller bug): feil i kode kan lede til
DetaljerGJENNOMGANG UKESOPPGAVER 9 TESTING
GJENNOMGANG UKESOPPGAVER 9 TESTING INF1050 V16 KRISTIN BRÆNDEN 1 A) Testing viser feil som du oppdager under kjøring av testen. Forklar hvorfor testing ikke kan vise at det ikke er flere gjenstående feil.
DetaljerObligatorisk Oppgave 1
Obligatorisk Oppgave 1 INF5110/INF9110 - Kompilatorteknikk Våren 2013 Frist fredag 15. mars Hensikten med Oppgaven Tanken bak denne oppgaven er at man skal få litt praktisk erfaring med følgende: Bruke
DetaljerObligatorisk oppgave 1 INF Kompilatorteknikk Våren 2012 Frist mandag 19. mars
Obligatorisk oppgave 1 INF5110 - Kompilatorteknikk Våren 2012 Frist mandag 19. mars 1. Hensikten med oppgaven Tanken bak denne oppgaven er at man skal få litt praktisk erfaring med følgende: Bruke skannings-
DetaljerDel 3: Evaluere uttrykk
Del 3: Evaluere uttrykk Hva skal vi gjøre? Hvordan lagre Asp-verdier Hvilke operasjoner må jeg implementere? Er operasjonen lovlig? Utføre operasjonen Strukturen til interpreten vår f.asp 3&4 Interpret
DetaljerMattespill Nybegynner Python PDF
Mattespill Nybegynner Python PDF Introduksjon I denne leksjonen vil vi se litt nærmere på hvordan Python jobber med tall, og vi vil lage et enkelt mattespill. Vi vil også se hvordan vi kan gjøre ting tilfeldige.
DetaljerØvingsforelesning 5 Python (TDT4110)
Øvingsforelesning 5 Python (TDT4110) Repetisjon av løkker og funksjoner Ole-Magnus Pedersen Oversikt Praktisk Info Gjennomgang av Øving 3 Repetisjon 2 Praktisk info Prosjekter i PyCharm må startes med
DetaljerINF1010 våren januar. Objektorientering i Java
INF1010 våren 2017 25. januar Objektorientering i Java Om enhetstesting (Repetisjon av INF1000 og lær deg Java for INF1001 og INF1100) Stein Gjessing Hva er objektorientert programmering? F.eks: En sort
DetaljerDynamic Programming Longest Common Subsequence. Class 27
Dynamic Programming Longest Common Subsequence Class 27 Protein a protein is a complex molecule composed of long single-strand chains of amino acid molecules there are 20 amino acids that make up proteins
DetaljerProgrammering Høst 2017
Programmering Høst 2017 Tommy Abelsen Ingeniørfag - Data Innledning Dette er et dokument med litt informasjon og eksempler om kontrollstrukturer, samt oppgaver til forskjellige kontrollstrukturer. Spør
DetaljerØvingsforelesning 5 Python (TDT4110)
Øvingsforelesning 5 Python (TDT4110) Repetisjon av løkker og funksjoner Ole-Magnus Pedersen Oversikt Praktisk Info Gjennomgang av Øving 3 Repetisjon 2 Praktisk info Prosjekter i PyCharm må startes med
DetaljerIN2010: Algoritmer og Datastrukturer Series 2
Universitetet i Oslo Institutt for Informatikk S.M. Storleer, S. Kittilsen IN2010: Algoritmer og Datastrukturer Series 2 Tema: Grafteori 1 Publisert: 02. 09. 2019 Utvalgte løsningsforslag Oppgave 1 (Fra
DetaljerMAT1030 Plenumsregning 1
MAT1030 Plenumsregning 1 Kapittel 1 Mathias Barra - 16. januar 2009 (Sist oppdatert: 2009-02-02 14:21) Plenumsregning 1 Velkommen til plenumsregning for MAT1030 Fredager 12:15 14:00 Vi vil gjennomgå utvalgte
DetaljerUnit Relational Algebra 1 1. Relational Algebra 1. Unit 3.3
Relational Algebra 1 Unit 3.3 Unit 3.3 - Relational Algebra 1 1 Relational Algebra Relational Algebra is : the formal description of how a relational database operates the mathematics which underpin SQL
DetaljerJigZaw. Teststategi utviklet av. Erik Drolshammer Bård Lind. Verifiser Forventet Funksjonalitet
JigZaw Verifiser Forventet Funksjonalitet Teststategi utviklet av Erik Drolshammer Bård Lind Bård Lind Java siden 1997 Arkitekt siden 2000 JavaBin siden 1999 Enterprise Domain Repository og JigZaw-teststrategi
DetaljerPlenumsregning 1. Kapittel 1. Roger Antonsen januar Velkommen til plenumsregning for MAT1030. Repetisjon: Algoritmer og pseudokode
Plenumsregning 1 Kapittel 1 Roger Antonsen - 17. januar 2008 Velkommen til plenumsregning for MAT1030 Torsdager 10:15 12:00 Gjennomgang av ukeoppgaver Gjennomgang av eksempler fra boka Litt repetisjon
DetaljerINF5110 Obligatorisk Oppgave 2 del 2. Andreas Svendsen SINTEF. 23. April Oversikt
INF5110 Obligatorisk Oppgave 2 del 2 Andreas Svendsen SINTEF 23. April 2009 Oversikt Tilbakeblikk på oppgaven Eksempel på sjekk av semantikk Eksempel på kodegenerering Nødvendige instruksjoner for IF-noden
DetaljerProgrammering. Carsten Wulff
Programmering Carsten Wulff 2010-06-15 Oversikt Hva er et programmeringsspråk Hvorfor trenger man et programmeringsspråk Hvordan ser et typisk språk ut Kompilering Hvilke språk fins i verden Hvordan ser
DetaljerMAT1030 Diskret Matematikk
MAT1030 Diskret Matematikk Plenumsregning 1: Kapittel 1 Mathias Barra Matematisk institutt, Universitetet i Oslo 16. januar 2009 (Sist oppdatert: 2009-02-02 14:21) Plenumsregning 1 MAT1030 Diskret Matematikk
DetaljerGrunnleggende testteori. Etter Hans Schaefer
Grunnleggende testteori Etter Hans Schaefer Industri- og softwareprodukt Industriprodukt Fysisk produkt Testes under produksjon og til slutt om produktet oppfyller kravene Tilpasses, endres, redesignes,
DetaljerØvingsforelesning 1 Python (TDT4110)
Øvingsforelesning 1 Python (TDT4110) Introduksjon, Kalkulasjoner Ole-Magnus Pedersen Oversikt Praktisk Info Repetisjon fra sist Oppgaver for øving 2 2 Praktisk Info Last opp øvinger på Blackboard før godkjenning
DetaljerLøsningsforslag 2017 eksamen
Løsningsforslag 2017 eksamen Oppgave 1: O-notasjon (maks 8 poeng) 1. (i) O(n) gir 2 poeng, O(100n) gir 1 poeng (ii) O(n^2) gir 1 poeng (iii) O(n log n) gir 2 poeng 2. (i) er mest effektiv i henhold til
DetaljerGrunnleggende testteori
1 Grunnleggende testteori Industri - og software produkt Industriprodukt: Fysisk produkt Testes under produksjon og til slutt om produktet oppfyller kravene Tilpasses, endres, redesignes, og justeres så
DetaljerProgrammeringsspråket C Del 2. Hans Petter Taugbøl Kragset
Programmeringsspråket C Del 2 Hans Petter Taugbøl Kragset Repetisjon I C er ikke array en egen type, men variabler kan være arrayer! 28.08.17 Hans Petter Taugbøl Kragset 2 Arrays Java int[] arr1 = {1,
DetaljerDagens tema. Hva er kompilering? Anta at vi lager dette lille programmet (kalt kildekoden): Hva er kompilering?
Dagens tema Dagens tema Kildekode Hva er kompilering? Anta at vi lager dette lille programmet (kalt kildekoden): Hva er kompilering? Hvordan foreta syntaksanalyse av et program? Hvordan programmere dette
DetaljerKneser hypergraphs. May 21th, CERMICS, Optimisation et Systèmes
Kneser hypergraphs Frédéric Meunier May 21th, 2015 CERMICS, Optimisation et Systèmes Kneser hypergraphs m, l, r three integers s.t. m rl. Kneser hypergraph KG r (m, l): V (KG r (m, l)) = ( [m]) l { E(KG
DetaljerIN1010 våren januar. Objektorientering i Java
IN1010 våren 2018 23. januar Objektorientering i Java Om enhetstesting Om arrayer og noen klasser som kan ta vare på objekter Stein Gjessing Hva er objektorientert programmering? F.eks: En sort boks som
DetaljerDagens tema. Hva er kompilering? Anta at vi lager dette lille programmet doble.rusc (kalt kildekoden): Hva er kompilering?
Dagens tema Dagens tema Kildekode Hva er kompilering? Hva er kompilering? Hvordan foreta syntaksanalyse av et program? Hvordan programmere dette i Java? Hvordan oppdage feil? Anta at vi lager dette lille
DetaljerRegelbaserte systemer for beregning av pensjon
Regelbaserte systemer for beregning av pensjon erfaringer - muligheter - begrensninger IBM Smarter Business 2011 Rune Sørensen Arkitekt regelbaserte systemer @rugsor linkedin.com/in/rugsor 970 000 medlemmer
DetaljerMAT1030 Diskret matematikk
MAT1030 Diskret matematikk Plenumsregning 1: Kapittel 1 Roger Antonsen Matematisk Institutt, Universitetet i Oslo 17. januar 2008 Velkommen til plenumsregning for MAT1030 Torsdager 10:15 12:00 Gjennomgang
DetaljerForkurs INF1010. Dag 2. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 14.
Forkurs INF1010 Dag 2 Andreas Færøvig Olsen (andrefol@ifi.uio.no) Gard Inge Rosvold (gardir@ifi.uio.no) Institutt for Informatikk, 14. januar 2016 Forkurs INF1010 - dag 2 Feilmeldinger 2 Forkurs INF1010
DetaljerAlgoritmer - definisjon
Algoritmeanalyse Algoritmer - definisjon En algoritme er en beskrivelse av hvordan man løser et veldefinert problem med en presist formulert sekvens av et endelig antall enkle, utvetydige og tidsbegrensede
DetaljerLøsningsforslag for Obligatorisk Oppgave 2. Algoritmer og Datastrukturer ITF20006
Løsningsforslag for Obligatorisk Oppgave 2 Algoritmer og Datastrukturer ITF20006 Lars Vidar Magnusson Frist 28.02.14 Den andre obligatoriske oppgaven tar for seg forelesning 5, 6, og 7 som dreier seg om
Detaljeror*dtrosnilt,'+'.q':'
%,u lbnvaston.*.'. or*dtrosnilt,'+'.q':' JavaBin 5. mai Vidar Alvestad - Skatteetaten Inspirert av: Noen eksempler er hentet fra boken. Jeg tror Mr. Feathers tilgir meg dersom du kjøper boken ;-) Hva er
Detaljerpublic static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren
Prosedyrer Hensikten med en prosedyre Hensikten med en prosedyre er, logisk sett, å representere en jobb eller en funksjonalitet i et eller flere programmer. Bruk av entall er viktig: vi har generelt en
DetaljerOPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?
OPPGAVESETT 4 PROSEDYRER Oppgavesett 4 i Programmering: prosedyrer. I dette oppgavesettet blir du introdusert til programmering av prosedyrer i Java. Prosedyrer er også kjent som funksjoner eller subrutiner.
DetaljerFeilmeldinger, brukerinput og kontrollflyt
Feilmeldinger, brukerinput og kontrollflyt Skjønne hvordan et program presist utføres og forberede seg på håndtering av feil INF1000, uke2 Ragnhild Kobro Runde Programmeringskrøll Programmet vil ikke kjøre
DetaljerInnholdsfortegnelse. 1. Testing Feiltesting av koden Funksjonstesting: Kilder.10
1 Innholdsfortegnelse 1. Testing... 3 1.1 Feiltesting av koden... 3 1.2 Funksjonstesting:... 7 2. Kilder.10 2 1. Testing Testing av et system er nødvendig for å finne ut om systemet fungere slik det skal
DetaljerFra sekvensielt til parallelt
Fra sekvensielt til parallelt «Sanntidprogrammering etter 33 år» Øyvind Teig senior utviklingsingeniør Autronica Fire and Security, «a UTC company» Gjesteforelesning på Høgskolen i Sør-Trøndelag (HiST)
DetaljerSystem integration testing. Forelesning Systems Testing UiB Høst 2011, Ina M. Espås,
System integration testing Forelesning Systems Testing UiB Høst 2011, Ina M. Espås, Innhold Presentasjon Hva er integration testing (pensum) Pros og cons med integrasjonstesting Når bruker vi integration
DetaljerEt lite oppdrag i bakgrunnen
Et lite oppdrag i bakgrunnen Under pultene på bakerste rad er det klistret post-it lapper med to tall skrevet på Regn ut summen av to nederste tall, skriv denne summen under de andre tallene, og send lappen
DetaljerEKSAMEN. Les gjennom alle oppgavene før du begynner. Husk at det ikke er gitt at oppgavene står sortert etter økende vanskelighetsgrad.
EKSAMEN Emnekode: Emne: ITM20606 Webprogrammering med PHP Dato: Eksamenstid: 11/12-2007 09.00-13.00 Hjelpemidler: 2 A4 ark (4 sider) med egenproduserte notater (håndskrevne/maskinskrevne) Faglærer: Tom
DetaljerINF1010 - Seminaroppgaver til uke 3
INF1010 - Seminaroppgaver til uke 3 Oppgave 1 I denne oppgaven skal vi lage et klassehiearki av drikker. Alle klassene i hiearkiet skal implementere følgende grensesnitt p u b l i c i n t e r f a c e Drikkbar
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i MAT2400 Analyse 1. Eksamensdag: Onsdag 15. juni 2011. Tid for eksamen: 09.00 13.00 Oppgavesettet er på 6 sider. Vedlegg: Tillatte
DetaljerTest i Praksis. NTNU Februar 2014. Copyright 2014 Accenture All Rights Reserved.
Test i Praksis NTNU Februar 2014 Hvem er vi? Erik Gjerdrum Master i Kommunikasjonssystemer fra IFI UiO Jobbet med test i siden 2006 Markus Living Master i Industriell Økonomi fra Linköping, Sverige Jobbet
DetaljerSemantikk. Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7) Semantikk. Semantikk. En måte å svare på: gi semantikken til språket!
agens tema Kjøresystemer (Ghezzi&Jazayeri.,.) Innledende om semantikk Operasjonell semantikk / SIMPLESEM Bokholderi og minneorganisering Forskjellige språkklasser... en beskrivelse av hva som skjer når
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF 3230 Formell modellering og analyse av kommuniserende systemer Eksamensdag: 4. juni 2010 Tid for eksamen: 9.00 12.00 Oppgavesettet
DetaljerUNIVERSITETET I OSLO
Eksamen i UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamensdag: 15. desember 2010 Tid for eksamen: 14.30 18.30 Oppgavesettet er på 8 sider. Vedlegg: Tillatte hjelpemidler: INF2220
DetaljerKompilering Statiske Syntaksanalyse Feilsjekking Eksempel Oppsummering
Dagens tema Hva er kompilering? Hvordan foreta syntaksanalyse av et program? Hvordan programmere dette i Java? Statiske metoder og variabler Hvordan oppdage feil? Kildekode Hva er kompilering? Anta at
Detaljerpublic static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren
Prosedyrer Hensikten med en prosedyre Hensikten med en prosedyre er, logisk sett, å representere en jobb eller en funksjonalitet i et eller flere programmer. Bruk av entall er viktig: vi har generelt en
Detaljerprogrameksempel Et større En større problemstilling Plan for forelesingen Problemstillingen (en tekstfil) inneholdt ordet "TGA"
Et større programeksempel Hvordan løse et reelt problem med en objektorientert fremgangsmåte En større problemstilling I uke 4 skrev vi et program for å sjekke om et gen (en tekstfil) inneholdt ordet "TGA"
DetaljerNybegynnerkurs i C. Øyvind Grønnesby. 14. oktober Introduksjon Typer Operatorer Kontrollstrukturer Pekere Makroer Lenker
Nybegynnerkurs i C Øyvind Grønnesby 14. oktober 2004 Introduksjon pass-by-value svakt typet portabel assembler siste ISO-standard er C99 Hello world #i n c l u d e < s t d l i b. h> #i n c l u d e
DetaljerBinære trær: Noen algoritmer og anvendelser
Binære trær: Noen algoritmer og anvendelser Algoritmer / anvendelser: Søking i usortert binært tre Telling av antall noder og nivåer i treet Traversering av binære trær Binære uttrykkstrær Kunstig intelligens(?):
DetaljerSkanning del I. Kapittel 2 INF 3110/ INF
Skanning del I Kapittel 2 18.01.2013 1 Skanning: innhold (begge forelesningene) Hva gjør en skanner? Input: programteksten. Output: Ett og ett token fra programteksten (sekvensielt). Regulære uttrykk/definisjoner.
DetaljerStatisk testing. Testing uten datamaskin, men med vår egen evne til å vurdere og analysere
Statisk testing Testing uten datamaskin, men med vår egen evne til å vurdere og analysere Hva er statisk testing Analyser som utføres på skrevne dokumenter Hensikten er å finne avvik fra spesifikasjonene
DetaljerPlenumsregning 1. MAT1030 Diskret Matematikk. Repetisjon: Algoritmer og pseudokode. Velkommen til plenumsregning for MAT1030
MAT1030 Diskret Matematikk Plenumsregning 1: Kapittel 1 Mathias Barra Matematisk institutt, Universitetet i Oslo Plenumsregning 1 16. januar 2009 (Sist oppdatert: 2009-02-02 14:21) MAT1030 Diskret Matematikk
DetaljerNorsk (English below): Guide til anbefalt måte å printe gjennom plotter (Akropolis)
Norsk (English below): Guide til anbefalt måte å printe gjennom plotter (Akropolis) 1. Gå til print i dokumentet deres (Det anbefales å bruke InDesign til forberedning for print) 2. Velg deretter print
DetaljerINF uke 2. Inputt, beslutninger, kontrollflyt og prosedyrer
INF1001 - uke 2 Inputt, beslutninger, kontrollflyt og prosedyrer Repetisjon fra forrige uke Lese inn fra tastaturet Beslutninger Kontrollflyt Prosedyrer Outline: Repetisjon fra forrige uke Lese inn fra
DetaljerFra sekvensielt til parallelt
Fra sekvensielt til parallelt «Sanntidprogrammering etter 34 år» Øyvind Teig senior utviklingsingeniør Autronica Fire and Security, «a UTC company» Gjesteforelesning på Høgskolen i Sør-Trøndelag (HiST)
DetaljerInf1055 Modul B 26 april 2017:
Inf1055 Modul B 26 april 2017: Del 1: - Testing Yngve Lindsjørn ynglin@ifi.uio.no 1 Oversikt - Testing Hva er testing? Validering &Verifisering Testfaser Enhetstesting Integrasjonstesting Systemtesting
Detaljer04.11.2014. Ph.d-utdanningen. Harmonisering av krav i Norden
Ph.d-utdanningen Harmonisering av krav i Norden 2 1 Nasjonalt forskningsdekanmøte i Tromsø, oktober 2014 Nordic Medical Research Councils (NOS-M), november 2014 Prodekanmøte våren 2015 Dekanmøte våren
DetaljerKom forberedt til tirsdag. INF1000 Tips til obligatorisk oppgave 4. Noen generelle tips. Oblig4: Komme igang
Kom forberedt til tirsdag INF1000 Tips til obligatorisk oppgave 4 Kikk på prøveeksamen fra 2004 http://www.uio.no/studier/emner/matnat/ifi/inf1000/h 07/undervisningsmateriale/proveeksamen-H2004.pdf Tittel:
DetaljerPython: Valg og betingelser. TDT4110 IT Grunnkurs Professor Guttorm Sindre
Python: Valg og betingelser TDT4110 IT Grunnkurs Professor Guttorm Sindre Læringsmål og pensum Mål Kunne forstå og bruke if-setninger sammenlikning av strenger nøstede beslutningsstrukturer betingelser
DetaljerDagens tema: Sjekking
Dagens tema Dagens tema: Sjekking Navnebinding (obligatorisk oppgave 3) Biblioteket Logging Riktig bruk av navn (frivillig) Typesjekking (frivillig) Hele prosjektet Strukturen til kompilatoren vår f.pas
DetaljerMAT1030 Diskret Matematikk
MAT1030 Diskret Matematikk Plenumsregning 4: Ukeoppgaver Mathias Barra Matematisk institutt, Universitetet i Oslo 6. februar 2009 (Sist oppdatert: 2009-02-10 11:21) Plenumsregning 4 MAT1030 Diskret Matematikk
DetaljerDatabases 1. Extended Relational Algebra
Databases 1 Extended Relational Algebra Relational Algebra What is an Algebra? Mathematical system consisting of: Operands --- variables or values from which new values can be constructed. Operators ---
DetaljerViktig. Rettet i koden. Obligatorisk oppgave 2 Litt flere detaljer om semantikksjekk og kodegenerering. Semantikksjekk
Obligatorisk oppgave 2 Litt flere detaljer om semantikksjekk og kodegenerering Viktig Ny patch (patch_oblig2.zip) er lagt ut (15/4) Oblig 1 vil bli rettet denne uken Sjekk om det er registrert at den er
DetaljerVelkommen til plenumsregning for MAT1030. MAT1030 Diskret matematikk. Repetisjon: Algoritmer og pseudokode. Eksempel fra boka. Eksempel
Velkommen til plenumsregning for MAT1030 MAT1030 Diskret matematikk Plenumsregning 1: Kapittel 1 Roger Antonsen Matematisk Institutt, Universitetet i Oslo 17. januar 2008 Torsdager 10:15 12:00 Gjennomgang
DetaljerObligatorisk Oppgave 1
Obligatorisk Oppgave 1 INF5110 - Kompilatorteknikk Våren 2016 Frist: 20. mars 23:59 Hensikten med Oppgaven Tanken bak denne oppgaven er at man skal få litt praktisk erfaring med følgende: Bruke skannings-
DetaljerTyrannosaurus Test Adapt or Die!
Tyrannosaurus Test Adapt or Die! Testdagen Odin 2014 Remi Hansen & Christian Brødsjø 26.09.2014 Promis Qualify AS 1 Om oss og tema Dinosaurer og evolusjon Context-driven testing filosofi og prinsipper
DetaljerHøgskoleni østfold EKSAMEN
Høgskoleni østfold EKSAMEN 7 Emnekode:Emne: ITF10212Innføring i programmering Dato:Eksamenstid: 4. desember 2012 kl 09.00 til kl 13.00 Hjelpemidler: Faglærer: To A4-ark (4 sider) med egenproduserte notater
DetaljerIN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr
IN1010 Fra Python til Java En introduksjon til programmeringsspråkenes verden dag@ifi.uio.no Oversikt Introduksjon Python Java Noe er likt Noe bare ser anderledes ut Noe er helt forskjellig Et par eksempler
DetaljerAlgDat 10. Forelesning 2. Gunnar Misund
AlgDat 10 Forelesning 2 Oversikt Java repetisjon IDE eller teksteditor + kommandolinje? Java Collections and Generics Programvareutvikling En mengde mer eller mindre veldefinerte metoder (software engineering):
DetaljerObligatorisk Innlevering 2
Obligatorisk Innlevering 2 INF5110 - Kompilatorteknikk Våren 2017 Frist 07.05.2017 23:59 Dette er den andre av to oppgaver våren 2017. Den bygger videre på det som er gjort i den første innleveringen.
DetaljerDel 1 En oversikt over C-programmering
Del 1 En oversikt over C-programmering 1 RR 2016 Starten C ble utviklet mellom 1969 og 1973 for å re-implementere Unix operativsystemet. Er et strukturert programmeringsspråk, hvor program bygges opp av
DetaljerEivind Gard Lund. 24. Mars 2009 Foilene bygger på 2009 utgaven av Andreas Svendsen
Eivind Gard Lund 24. Mars 2009 Foilene bygger på 2009 utgaven av Andreas Svendsen Informasjon Semantikksjekk Kodegenerering Oblig 2 tilgjengelig på kurssiden Bygger på deres oblig 1 kode. Det er lagt ut
DetaljerHva er en algoritme? INF HØSTEN 2006 INF1020. Kursansvarlige Ragnar Normann E-post: Dagens tema
va er en algoritme? Vanlig sammenligning: Oppskrift. nput lgoritme NF1020 - ØSTEN 2006 Kursansvarlige Ragnar Normann E-post: ragnarn@ifi.uio.no Output Knuth : tillegg til å være et endelig sett med regler
DetaljerSkanning del I INF /01/15 1
Skanning del I INF 5110-2015 21/01/15 1 Skanning: innhold (begge forelesningene) Hva gjør en skanner? Input: Programteksten. Output: Ett og ett token fra programteksten (sekvensielt). Regulære uttrykk/definisjoner.
DetaljerViktig. Rettet i koden. Oppgaven. Obligatorisk oppgave 2 - Kort om oppgaven og litt informasjon. Fredrik Sørensen OMS-gruppen, IfI
Viktig Obligatorisk oppgave 2 - Kort om oppgaven og litt informasjon Fredrik Sørensen OMS-gruppen, IfI Ny patch (patch_oblig2.zip) legges ut på kurssiden i dag. Oblig 1 vil bli rettet denne uken Sjekk
Detaljer(MVC - Model, View, Control)
INF1010 - våren 2008 Modell - Utsyn - Kontroll (MVC - Model, View, Control) Stein Gjessing Inst. for informatikk Et bankprogram Vi skal lage et program som håndterer kontoene i en bank. En konto eies av
DetaljerSocket og ServerSocket
Side 1 av 5, socket og klient-tjener, V. Holmstedt, HiO 2006 Dette dokumentet er revidert den 29.8.2006, kl:12:30. Det er foretatt rettelser i begge versjoner av klassen A_Server. Socket og ServerSocket
DetaljerKompleksitet. IN algoritmer og datastrukturer Plenumstime / repetisjon
Kompleksitet IN2010 - algoritmer og datastrukturer Plenumstime / repetisjon Dagens agenda Kompleksitet - hva er det? Avgjørelsesproblemer Kompleksitetsklassene P og NP Reduksjoner - å redusere et problem
DetaljerTa kontakt i pausen. Viktig at vi kommer i gang med dette arbeidet!
1 Kunnskap for en bedre verden TDT4105 Informasjonsteknologi, grunnkurs Mer om funksjoner. Logiske betingelser og betinget programutførelse (valg). Amanuensis Terje Rydland Kontor: ITV-021 i IT-bygget
DetaljerSVM and Complementary Slackness
SVM and Complementary Slackness David Rosenberg New York University February 21, 2017 David Rosenberg (New York University) DS-GA 1003 February 21, 2017 1 / 20 SVM Review: Primal and Dual Formulations
DetaljerINF2100. Oppgaver 23. og 24. september 2010
INF2100 Oppgaver 23. og 24. september 2010 Oppgave 1 Vi skal se på et meget enkelt språk E som består av uttrykk med + og ; grammatikken ser du i figur 1 på neste side. Tallkonstanter består av bare ett
DetaljerTDT4110 IT Grunnkurs Høst 2015
TDT4110 IT Grunnkurs Høst 2015 Norges teknisk naturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap Løsningsforlag Auditorieøving 1 1 Teori Løsning er skrevet med uthevet tekst
DetaljerDagens tema: Kjøresystemer II
Dagens tema Kjøresystemer II En kort repetisjon (Ghezzi&Jazayeri 2.7.3) Språk med blokker (Ghezzi&Jazayeri 2.7.4) Dynamisk allokering (Ghezzi&Jazayeri 2.7.5) Parametre (Ghezzi&Jazayeri 2.7.7) Ark 1 av
DetaljerProsedyrer. Lars Vidar Magnusson. October 26, Lars Vidar Magnusson () Forelesning i DAS October 26, / 19
Prosedyrer Lars Vidar Magnusson October 26, 2011 Lars Vidar Magnusson () Forelesning i DAS 11.10.2011 October 26, 2011 1 / 19 Repetisjon om triggere og prosedyrer Triggere og prosedyrer ligner på hverandre
DetaljerTDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap. 3
1 Kunnskap for en bedre verden TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap. 3 Terje Rydland - IDI/NTNU 2 if (be): else (not_to_be): 3 Læringsmål og pensum
DetaljerTDT4165 PROGRAMMING LANGUAGES. Exercise 01 Introduksjon til Oz
TDT4165 PROGRAMMING LANGUAGES Fall 2012 Exercise 01 Introduksjon til Oz Denne øvingen vil gjøre deg kjent med Emacs og Mozart. Du må kunne bruke disse verktøyene for å gjøre resten av øvingene. Mozart
DetaljerLæringsmål og pensum. Oversikt
1 2 Læringsmål og pensum TDT4105 Informasjonsteknologi grunnkurs: Uke 39 Betingede løkker og vektorisering Læringsmål Skal kunne forstå og programmere betingede løkker med while Skal kunne utnytte plassallokering
Detaljerif (be): else (not_to_be): TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap.
1 Kunnskap for en bedre verden TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap. 3 Terje Rydland - IDI/NTNU 2 if (be): else (not_to_be): 3 Læringsmål og pensum
DetaljerObjektorientert programmering i Python. Resten av semesteret. Innhold uke 9 Mer komplekse strukturer. Referanser og objekter, inkl Mentimeter spørsmål
Innhold uke 9 Mer komplekse strukturer Objektorientert programmering i Python IN1000 Høst 2018 uke 9 Siri Moe Jensen Referanser versus objekter (repetisjon) "Dot-notasjon" Spesielle metoder i egendefinerte
DetaljerUtførelse av programmer, metoder og synlighet av variabler i JSP
Utførelse av programmer, metoder og synlighet av variabler i JSP Av Alf Inge Wang 1. Utførelse av programmer Et dataprogram består oftest av en rekke programlinjer som gir instruksjoner til datamaskinen
DetaljerInnholdsfortegnelse... 1 Endringslogg UD BETALINGSTERMINAL NETS NEW DRIVERS FULL SUPPORT WINDOWS
ENDRINGSLOGG INNHOLDSFORTEGNELSE Innholdsfortegnelse... 1 Endringslogg 2017.151.1... 3 UD-17.136 BETALINGSTERMINAL NETS NEW DRIVERS FULL SUPPORT WINDOWS 10... 3 UD-17.137 UTESTÅENDE NOT SHOWIN CROSSED
Detaljer