Laste ned presentasjonen
Presentasjon lastes. Vennligst vent
PublisertGustav Didriksen Endret for 9 år siden
1
PUG Norway – 12. nov 09Thomas Skjørten / Jan Kolstad
2
Agenda Kort reprise fra PUG Årsmøte 2009 Hva er automatisk bygging (Build)? Automatisk testing (unittesting) i OpenEdge
3
Det komplette utviklingsmiljø Moderne verktøyer for å styre alle deler av utviklingsprosessen. Utviklingsverktøy Kildekodekontroll Oppgavehåndtering Dokumentasjon Kvalitetessikring Build På tvers av teknologi Støtter alle roller i utviklingen
4
Verktøyer i bruk OE Architect (Eclipse) Teamprise Client Suite Microsoft Visual Studio Microsoft Team Foundation Server Microsoft Office
6
Automatisk bygging Egen prosess for bygging av programvare Kompilering av kildekode Automatisk testing for å sikre kvalitet Generering basert på ferdigkompilert kildekode ProxyGen Pakking av programvare (.pl) Installasjonspakker Kjøres alltid basert på innsjekket kildekode Kjøres basert på events (tidspunkt, innsjekking) eller manuelt
7
Automatisk bygging Svært nyttig ved utvikling i team (>1 person) Nødvendig ved smidig utvikling Kode bygges uavhengig av maskinoppsett Rask tilbakemelding til utviklere om deres endringer er i konflikt med andres Sikrer kvaliteten i alle endringer Forenkler deployment / release
9
Automatisk bygging - visualisering
10
Unittesting Kompilering sikrer at koden har rett syntaks Unittesting sikrer at koden gjør det den skal Sikrer kvaliteten i applikasjonen Hindrer at endringer får uønskede konsekvenser Sikkerhetsnett for endringer i hele applikasjonens levetid
11
Hva er en unittest? Kode som tester kode En prosedyre / metode som kaller en eller flere andre prosedyrer / funksjoner med forskjellige parametere for å sjekke at resultatet er som forventet. function GetUkeNrForDato returns int private (dato as date): def var oUke as int no-undo. if dato <> ? then assign oUke = (((dato - date(1,1,year(dato)) + 1) + ((weekday(date(1,1,year(dato))) + 5) mod 7) ) - ((weekday(dato) + 5) mod 7 + 1) - 1 ) / 7 + 1 oUke = if weekday(date(1, 3, year(dato))) <= 3 then (if oUke = 1 then 53 else oUke - 1) else oUke. return oUke. end function. /* Tester funksjonen GetUkenrForDato */ PROCEDURE testGetUkenrForDato: def var ukenr as int no-undo. ukenr = GetUkeNrForDato(date(11,1,2009)). RUN assertEqualsInt(ukenr, 44). ukenr = GetUkeNrForDato(date(1,1,2009)). RUN assertEqualsInt(ukenr, 1). ukenr = GetUkeNrForDato(date(12,31,2009)). RUN assertEqualsInt(ukenr, 53). ukenr = GetUkeNrForDato(date(12,24,2009)). RUN assertEqualsInt(ukenr, 52). END.
12
Regler for en unittest Skal teste så konkrete ting som mulig Må være rask Være helt uavhengig av andre tester Tester skal kunne kjøres i en hvilken som helst rekkefølge Skal ikke være avhengig av eksterne ressurser Database Filsystem
13
Utfordringer Testbarhet er tett knyttet opp mot arkitektur Ikke tilrettelagt arkitektur kan gjøre unittesting umulig Avgrensning av testene Uavhengighet fra eksterne ressurser De fleste systemer er veldig datadrevne (CRUD), hvordan teste dette uten å ha tilknytning til databasen?
14
Unittesting i Progress Både prosedyrisk og objektorientert kode kan testes OO er ofte enklere fordi arkitekturen og ansvarsfordelingen er mer definert Krever et rammeverk for kjøring av testene ProUnit (Open source) Prosedyrisk Kjøres stand-alone OEUnit (Open source) Objektorientert Integreres i Eclipse Punit (Open source)
16
Oppsummert Med Eclipse, TFS og Teamprise har vi nå et komplett moderne miljø for Progressutvikling Automatisk bygging svært nyttig ved arbeid i team Unittesting sikrer kvaliteten i det vi lager både under utvikling og i framtiden
17
Linker Microsoft TFS http://msdn.microsoft.com/en- us/teamsystem/default.aspx http://msdn.microsoft.com/en- us/teamsystem/default.aspx Teamprise http://teamprise.com/ http://teamprise.com/ ProUnit http://prounit.sourceforge.net/ http://prounit.sourceforge.net/ OEUnit http://www.oehive.org/project/OEUnit http://www.oehive.org/project/OEUnit Punit http://communities.progress.com/pcom/docs/DOC- 2818 http://communities.progress.com/pcom/docs/DOC- 2818
Liknende presentasjoner
© 2024 SlidePlayer.no Inc.
All rights reserved.