Praktisk hantering av automatiserade testfall T U A C A P T M F T W!

Relevanta dokument
Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Föreläsning 3-4 Innehåll

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Multipel tilldelning. Introduktion till programmering D0009E. Föreläsning 6: Iteration. while-satsen. Kom ihåg. Snurror kontra rekursion

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

kl Tentaupplägg

Datalogi, grundkurs 1. Lösningsförslag till tentamen

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Typkonvertering. Java versus C

Systemutvecklare SU13, Malmö

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Tentamen i Grundläggande Programvaruutveckling, TDA548

Uppgift 1 (grundläggande konstruktioner)

Tentamen i Introduktion till programmering

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

C++ Slumptalsfunktioner + switch-satsen

TENTAMEN OOP

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.

Föreläsning 6: Introduktion av listor

Namn Stil Dokumentation Objekt-orienterad programmering OBS OBS OBS OBS OBS OBS OBS OBS

Programdesign. minnesutrymme storlek på indata. DA2001 (Föreläsning 15) Datalogi 1 Hösten / 20

Föreläsning 2, vecka 8: Repetition

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Att skriva till och läsa från terminalfönstret

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

KARLSTADS UNIVERSITET 12/8/09 informatik & datavetenskap Johan Öfverberg, Kerstin Andersson Laboration 4, ISG A04 och DVG A08 HT-09

Generiska konstruktioner. Kursbokens kapitel 13

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Grundläggande datalogi - Övning 9

2D1339 Programkonstruktion för F1, ht 2003

Laboration 6 Formulär och stränghantering övningar/uppgifter

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

TENTAMEN OOP

Mer källkod. Styrstrukturer Val Slingor Operatorer Källkodsexempel med minne. Erik Forslin. Rum 1445, plan 4 på Nada

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Språket Python - Del 1 Grundkurs i programmering med Python

Tentamen i Grundläggande Programvaruutveckling, TDA548

Föreläsning 6: Metoder och fält (arrays)

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

F5: Högnivåprogrammering

Funktioner. TDDD73 Funktionell och imperativ programmering i Python Föreläsning 8. Peter Dalenius Institutionen för datavetenskap

Att prova på en enkel Applet och att lära sig olika sätt att hämta data från tangentbordet. Du får även prova på att skapa din första riktiga klass.

DD1361 Programmeringsparadigm. Carina Edlund

F5: Högnivåprogrammering

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Java, klasser, objekt (Skansholm: Kapitel 2)

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

Metoder. Inledande programmering med C# (1DV402)

Polymorfi. Objektorienterad och komponentbaserad programmering

Laboration: Whitebox- och blackboxtesting

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

Klassdeklaration. Metoddeklaration. Parameteröverföring

Klasser och objekt, referenser Grundkurs i programmering med Python

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

Programdesign. Dokumentera. Dokumentera

Föreläsning 8: Exempel och problemlösning

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

TDDI02. Programmeringsprojekt. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Metoder (funktioner) Murach s: kap Winstrand Development

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Föreläsning 2 Programmeringsteknik och C DD1316

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

Repetition i Python 3. Exemplen fac. Exemplen fac motivering. Exemplen fac i Python

Funktioner. Linda Mannila

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel

Uppgift 1a (Aktiekurser utan poster)

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Detta dokument är ett exempel, cirka hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling

Föreläsning 5-6 Innehåll

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Planering Programmering grundkurs HI1024 HT 2014

2D1342 Programkonstruktion för F1, ht 2006

Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.

Arrayer. results

Lösningsförslag: Instuderingsfrågor, del D

TDDC74 Lab 04 Muterbara strukturer, omgivningar

CADS Data- Manager. Användarhandbok. CAD Studion AB

Idag: Par och listor. Symboler. Symboler används för att uttrycka icke-numeriska data såsom namn, adress, bilregisternummer, boktitel, osv.

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning

Datalogi, grundkurs 1

Del A (obligatorisk för alla)

Idag: Par och listor. Scheme. DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

Användarhandledning Version 1.2

1ME323 Webbteknik 3 Lektion 6 API. Rune Körnefors. Medieteknik Rune Körnefors

Import / export av personer i Vaka 2.

kl Tentaupplägg

Föreläsning 4 Programmeringsteknik DD1310. Felhantering. Syntax. try och except är reserverade ord som används för hantering av exekverings fel.

Introduktion till programmering SMD180. Föreläsning 4: Villkor och rekursion

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

Transkript:

Praktisk hantering av automatiserade testfall T U A C A P T M F T W!

Das TOC (Hålla låda i ca 35 min) Presentation quien soy yo? Bakgrund vad, varför? Hur man kan testa (in-) parametrar och regelverk på en strukturerad och förvaltningsbar sätt Det mjuka softies T UA CA P, T M FTW, que?

Presentation Manuel mindre bra namn Konsult på Alskami Testare med specialisering på tekniska tester och testautomatisering

Bakgrund till tester av ett system Spansk fiktiv system vid namn S O L, låter som sol och står för Super Ologico Losning System bestående av 30 WSDL-baserade webbtjänster Tjänster med 100 inparametrar, varav 40% spökisar Okänd (till viss del) beteende, odokumenterad System som används av två helt olika typer av aktörer Test med SoapUI med hjälp av Groovy och MS Excel inga gem, ingen tuggummi eller andra mysko tingesten bara skicklighet

Bakgrund Två olika sätt Del 1 Test av inparametrar Samtliga inparametrar testas på ett likartad sätt oavsett om det handlar om en skapa-tjänst eller en uppdateratjänst Dynamisk manipulering av anrop ( svårt ) Del 2 Test av regelverk Regelverk testas genom att kombinera två eller fler inparametrar eller parametrar (indata) och tillstånd (testdata) Parameterersättning ( lätt ) med t.ex. DataGen

Del 1 Tester av indata, vad Inparametrar, t.ex. ålder menas med det? Null, dvs. parametern i fråga skickas inte i anropet Negativa värden, t.ex. 1 0, 1, 2, 3 Eller kanske namn Null För få tecken, t.ex. tom sträng (dvs. ) eller för många tecken, t.ex. ${= t *65} Minst eller max antal tecken, t.ex. ${= t *64}

Del 1 Struktur på TestCase Innehåll i en TestCase DataSource Runner Mall, Transfer och Anrop GroovyKod Kontroll Loop

Del 1 DataSource Teststeg med MS Excel som styrdata Rad, objekt, tagg och värde Värde kan vara SoapUI/Groovy-kod ${= } ${#Project#person_1}

Del 1 Runner Groovy-kod för att avgöra huruvida ett test ska exekveras eller inte Om man har för många tester, då vill man kanske med hjälp av kod styra hur stor procentandel man vill exekvera Testfall med buggar vill man nog hoppa över Vissa testfall vill man kanske alltid exekvera

Del 1 Mall, Anrop och Transfer Mall (disabled) (MAT) Mall som innehåller alla fält ifyllda med lämpliga värden Ska ej ändras, skall ej exekveras Anrop Anropet manipuleras innan den exekveras Transfer Steg som kopierar mallen till teststeget där själva anropet ska äga rum

Del 1 Er syn har inte försämrats radikalt [GroovyKod] /* BESKRIVNING Denna gulliga Groovy-kod-snutt används för att (dynamiskt) manipulera ett WSDL-anrop innan anropet i fråga skickas. Obs! Denna kod ska inte ändras... */ // IMPORT import groovy.xml.xmlutil // VARIABLER def groovyutils = new com.eviware.soapui.support.groovyutils( context ) def generatedxml = groovyutils.getxmlholder( "SOAPAnropAttManipulera#Request" ); def xmlobjekt = context.expand( '${DataSource#xmlObjekt}' ) def xmltagg = context.expand( '${DataSource#xmlTagg}' ) def varde = context.expand( '${DataSource#varde}' ) // GULLIG KOD // Ta bort parametern eller sätt värde på parametern. if( varde == "null" ) { // Parametern i fråga ska vid "null" inte skickas alls, dvs. parametern ska tas bort från anropet. generatedxml.remove( "//*:$xmlobjekt/*:$xmltagg" ) } else { // Annars så ska parametern få värdet i fråga. generatedxml.setnodevalue( "//*:$xmlobjekt/*:$xmltagg", varde ) } // Snygga till anropet och uppdatera den. boolean prettyprint = true generatedxml.updateproperty( prettyprint )

Assertions ligger inte i anropet i fråga utan i steget efter Kontroll sker med if, else if och else satser i kombination med assert-kod och containskey() getnodevalue() metoder Del 1 Kontroll

Del 2 Verksamhetsregler Verksamhetsregler blir lätt komplicerade Permutationer blir ens död Trevligt att med MS Excel kunna strukturera regler som blir till testfall som blir till styrdata Dölja kolumn Filtrera kolumn

Del 2 Struktur på TestCase Innehåll i en TestCase DataSource Runner DataGen Anrop Loop

Del 2 MS Excel MS Excel används som styrdata Varje rad är ett test Styrdata kan vara så enkel som en null eller en ja eller kanske en mer komplex variant som ja, ibland

Varje parameter i en DataGen styrs från en DataSource med avseende på ifall parametern i fråga ska skickas eller inte osv. Del 2 DataGen

Del 2 Anrop, dvs. XML med DataGen Smuggla in DataGen-parametrar: <fornamn>manuel</fornamn> <efternamn>farías H.</efterNamn> ${DataGen#medlem} ${DataGen#aktiv} <alder>43</alder>

Resultat Vad får jag och vad Köp 3, betala för 2! kostar det? 5 000 testfall x 2, dvs. 10 000 testfall! En TestCase som realiserar 5k och en annan som realiserar 32k kombinationer av tester Få TestCases, tonvis med testfall Ett dokumenterat system 7 månader minus n antal månader fika

Softies Uppmana folk att tänja på gränserna, att utveckla sig. För varje testare i Stockholm som växer, så växer Gran Estocolmo och Sverige och världen! Hjälp och stötta era familjer, vänner, bekanta och främlingar! Hjälp era arbetskamrater! Tack till don Tomaso, Stefan Rydin, Johan Larsson och Robert Fred! Och er! Och alla andra!

T U A C A P T M F T W! Tomas Über Awesome Kick-Ass Parameter Testing Methology For the Win!