PLETTFRI KODE

Plettfrikode
HaraldHeimtunSolengogEvaHadlerVihovde
HaraldHeimtunSolengogEvaHadlerVihovde
Hvordanforhindrefeiliprogramvare?
Universitetsforlaget
©Universitetsforlaget2022 ISBN978-82-15-06020-0
Materialetidennepublikasjoneneromfattetavåndsverklovensbestemmelser. Utensærskiltavtalemedrettighetshaverneerenhvereksemplarfremstillingog tilgjengeliggjøringbaretillattidenutstrekningdeterhjemletilovellertillatt gjennomavtalemedKopinor,interesseorganforrettighetshaveretilåndsverk. Utnyttelseistridmedlovelleravtalekanmedføreerstatningsansvarog inndragningogkanstraffesmedbøterellerfengsel.
Henvendelseromdenneutgivelsenkanrettestil: UniversitetsforlagetAS Postboks508Sentrum 0105Oslo www.universitetsforlaget.no
DeleravdennebokabaserersegpåISTQB,SertifisertTesterPensumfor grunnivå(FoundationLevel)norskversjon28.04.2019avHansSchaefer,Berit KristineHatten,ErnstvonDüring,MonikaStöcklein-Olsen,TorKjetilMoseng ogFransDijkmansomigjenerbasertpåCertifiedTesterFoundationLevel2018 V1.0.ISTQBharopphavsrettentilpensumforgrunnivå,ogtillatelseerblittgitt avISTQBtilåbrukedettematerialetiboka.
HaraldH.SolengharmottattstøttefraDetfaglitterærefond.
Omslag:EllenLorenzen
Illustrasjoner:ArnvidMoholt Sats:HaraldH.Soleng Trykk:07Media–07.no Innbinding:BokbinderietJohnsenAS Papir:100gArcticMatt1,0
Vårtmålmeddennebokaeråbidratilhøyerekvalitetiprogramvarevedå økebevissthetenomtestingensbetydning,samttilføreutvikleregrunnleggende kunnskapomtesting.Vigirrådogprinsipperforåskrivekodesomervedlikeholdbarogenkelåteste,ogpresentererviktigeprinsipperfordetålageutfyllende ogdekkendetester.Bokaerspesieltrettetmotdatateknologistudenter,ogkanmed fordelbrukessomlærebokifagsomprogrammering,programvareutvikling,testingavprogramvare,ogikkeminstunderarbeidetmedbachelor-ogmasterprosjekter.Bokaerimidlertidaktuellogsåutenforutdanningsinstitusjonene.Alleinvolverteparterietprogramvareprosjektbørettervårmeninghagodforståelsefor betydningenavtesting.Bådeoppdragsgiverenogprosjektledelsenmågiressurser ogtidtiltilstrekkeligkvalitetskontrollgjennomallefaseravutviklingen.
Selvomnoeavinnholdetidennebokakanvirkeselvsagt,tilsierlikevelerfaring atmangeprogrammerereogselskaperburdetakvalitetskontrollogtestingmye meralvorligennhvadegjøridag.Vihåperatdennebokaogeksempleneden inneholder,kanhjelpeprogrammerereogindustrientilåforbedreutviklingsprosessenslikatfærrefeilslippergjennomtildetendeligeproduktet.
Tiltrossforatmangeavtestteknikkenevigjennomgåriboka,kanbidratil åreduseresåvelutviklingskostnadersomutviklingstid,erdetviktigåforstå atdetåforhindreprogramvarefeilikkeergratis.Ibegynnelsenvildetforsinke utviklingsprosessen,ogdetkoster.Åignorererisikoenoglettepåtestregimet kosterimidlertidmyemeridetlangeløp.Nårfeilenetilsluttslårtilbakeetterå hablittfeietunderteppet,biterdehardere.Åfikseenbugikvalitetssikringstadietkosteristørrelsesordentigangermerennåoppdagedenunderutviklingen.Å rettedenetteratprogrammeterrulletut,ertypiskrundthundregangerdyrere.
Vihåperdufinnerbokainteressantognyttig.Skulledukommeoverfeileller mangler,ervitakknemligeforkommentarer.
VivilførstogfremsttakkeUniversitetsforlagetogjuryenikåringenav«Beste lærebokidé2021»foråhagittossmulighetentilåskriveogutgiboka.Dernest takkerviRoyM.Istadforkonstruktivekommentareroginnspill.HaraldH.Soleng takkerNorskfaglitterærforfatter-ogoversetterforeningforstøtteogNorskRegnesentralforensabbatsperiodeiettidligstadiumavarbeidetmedboka.Vitakker StormJaranBruvollWestlie,MajaWawrzyniakSolengogDanielBakkelundforå
hatattsegtidtilålesemanuskriptetogforåhakommetmednyttigekommentarer ogforslag. Oslo,oktober2022
HaraldHeimtunSoleng og EvaHadlerVihovde
80
80
83
84
85
92
96
100
101
106
110
145
17Testguideforstudentprosjekter147 17.1Generelleråd............................ 148 17.2Startfasen.............................. 149 17.3Programmetsfundament–kravspesifikasjonen.......... 151 17.4Analysertestforholdeneogdesigntesttilfellene.......... 152 17.5Dynamisktestinggjennomfiretestnivåer............. 153 17.6Regresjonstesting.......................... 155 17.7Ensistetest............................. 155 17.8Testingkanikkebeviseatkodenerfeilfri............. 156 17.9Avsluttendeord........................... 156
AEnfikspunktimplementering157 A.1Flyttallogfikspunkttall....................... 157 A.2Implementeringavfikspunktklasse................. 159 A.3Enhetstester............................. 174 A.4TestdekningforFixedPoint-klassen................. 186 A.5Matematiskefunksjoner....................... 197 A.6Testdekningformatematiskefunksjoner.............. 217 A.7Kildekodedokumentasjon...................... 226
Norsk–engelskordliste227 Engelsk–norskordliste231 Bibliografi235 Stikkordregister239
Åfeileermenneskelig,åtilgierguddommelig.
AlexanderPope
Sidendatamaskinenvilutføreordreslavisk,ogbrukerneneppeerguddommelige, såkandusomprogrammererikkeforventeåslippeunnamedfeil.Destoverreer atnoenbrukeresynesåglemmeatdatasystemerermenneskeskapteogderforkan inneholdefeil.Derforkannoentrafikanterfinnepååsettebileniautopilotmodus ogleseavisenmenssensorerogdataprogrammerovertarstyringen.
Vanligereerdetatdatafeilførertilirritasjon.Faktiskeretavdestørsteirritasjonsmomentenepånorskearbeidsplasserdatasystemersomikkevirker.Det kanværeprogrammersomerunødvendigtregeellersomregelrettkrasjerogførertiltaptarbeid.
Historienharimidlertidflereeksemplerpåkatastrofalekonsekvenseravdatafeil.Noenavdemestkjenteernevntnedenfor.
Eksemplenesomfølger,viserattilsynelatendebagatellmessigefeilidataprogrammerkanfåalvorligefølger.
Mariner-programmet(1959–1963)tilNASAskjøtoppenserieinterplanetariske romsonderforåundersøkeMars,VenusogMerkur.I1962feiletoppskytingenav Mariner1pågrunnavenprogrammeringsfeil[1].Forfatterenavspesifikasjonsdokumentetforstyringssystemetoversåsymboletforgjennomsnitt,enstripe,ien håndskrevetformel,slikat rn bleerstatetmed rn.Istedetforåkorrigereutfra variasjoneriengjennomsnittsverdi,forsøktestyringssystemetåkorrigereforhver lilletilfeldigevariasjon.Alledemeningsløsekorreksjoneneendtemedatraketten havarerte[2].
Mercury-programmetvardetførstebemannedeamerikanskeromprogrammet. Programmeringsspråketsomblebruktdengang,hetFortran,ogikodensom beregnetrakettensbane,fantesfølgendelinje: DO 17I=1.100
CONTINUE istedetfor DO 17I=1,100
CONTINUE
Haddeikkepunktumetblittrettettiletkomma,villeenkatastrofeskjedd.Fordet blotteøyevarforskjellenmellompunktumogkommabareenpikselpådataskjermen,menispråketFortranerdetforskjellenmellomtilordningavenverditilen variabelkalt DO17I (sidenFortrankanignoreremellomrom)ogdetågjentakodenfremtilmerkelappen 17 hundreganger[3].Dyptinneietdataprogramkan derforenlitentegnsettingsfeilfåfatalekonsekvenser.Heldigvisbledennefeilen funnetitide.
Ulikbrukavdesimaltegniulikespråkerforøvrigenhyppigkildetilfeil;engelskspråkligebrukerdesimalpunktogkommasomtusenskilletegn,mensman pådeflestespråkgjørdetomvendt(jf.tabell1.1).Pånorskbrukesdesimalkomma,meninnennorskakademiaerlikeveldesimalpunktpåfremmarsj.Sidende flesteprogrammeringsspråkerbasertpåengelsk,erdetdesimalpunktsomgjelder ikildekode.
Tabell1.1:Desimal-ogtusenskilletegn
Iseptember1988mistetrussernesinPhobos1Mars-sondepågrunnavenfeili kommandoersomblelastetoppibegynnelsenavmåneden.Vanligvisskulleall kommunikasjonmedromsondengågjennomenautomatisksyntakskontrollsom sjekketatkommandoenefulgtedespesiellespråkreglenesomgjaldtfordatamaskinenisonden,menkorrekturlesersystemetvariustand,ogoperatørenmåttelaste oppkommandoeneutendennesjekken.DessverreresultertedetteiatPhobos1 mottoken avslutt-kommando somresulterteiatdatamaskinenbleskruddavog
detbleumuligåfåkontaktmedromsondenigjen[4].
Somkjenterdatamaskinensminnekunistandtilålagreinformasjonbinært, somtallitotallsystemet.Heltallkanlagrespåulikemåteridataminnet.Erman sikkerpåattalletf.eks.ermellom0og255,klarermansegmedåttesifferitotallsystemet.Dakanmanbrukedetsomkalleset8-bitersusignerttall.
Den4.juni1996krasjetenAriane5-rakettpågrunnavdatakonverteringfraet 64-bitersdesimaltalltilet16-bitersheltallmedfortegn.Datalletblestørreenn 32767,somerdetstørste16-biterssignerteheltallet,fikkmandetsomkalles heltallsoverflyt.Datatypenvarikkeistandtilålagredetriktigetalletogdermed mistetmanstyrings-oghøydeinformasjon[5].Resultatetvaratrakettenskarut avbanenogeksploderte(figur1.1).
Rakettenognyttelastenvarverdsatttil500millionerdollar.Idettetilfelletvar detbarematerielletap,menandregangerharprogrammeringsfeilgittdødelige resultater.
Figur1.1:Ariane5-raketteneksplodertesomfølgeavheltallsoverflyt.Foto:ESA.
Programmeringsfeilharogsåførttiltapavmenneskeliv.Eteksempelvar25.februar1991daetPatriot-missilikkeklarteåavskjæreetirakiskScud-missil,som derettertraffenamerikanskbaseogdrepte100soldaterogskadet100andre. Feilenskyldtesaritmetiskefeilitidsberegninger[6].Multipliseringavdeninterne klokketidenmed1/10foråfåtidenisekunderblegjortiet24-bitersregistermed tallmedetfastantalldesimaler.Dettegavenavrundingsfeilpå 0,000000095 s hverttiendedelssekund.Etter100timeroperasjonstidhaddedeninterneklokken tikket 100 t 60 min/t 60 s/min 10 (tiendedelssekund)/s =3600000 tiendedels sekunder.Dahaddefeilenakkumulerttil 3600000 tiendedelss · 0,000000095 s/(tiendedelss) =0,34 sekunder
41.Dødeligetegnogkommafeil
DettevarnoktidtilatScud-missilethaddebevegetsegmerennenhalvkmslikat Patriot-missiletmistetmålet.Ivirkelighetenskulleimidlertidikkemåletsposisjon avhengeavabsoluttklokketid,menavtidenmellomtoradarpulser,såavrundingsfeilenskulleuansettværtneglisjerbar.Problemetvaratenmernøyaktigfunksjon foråoversetteklokketidentilflyttallhaddeblittintrodusertidet20årgamlesystemetslikatdetkunnehanskesmedhurtigere,modernemål,menmanhaddeoversettåintroduseredennyefunksjonenoveralt.Ensubtraksjonavtotiderberegnet pånyoggammelmåtegavdenstorefeilenpå 0,34 sekunder.
Oljeplattformsankog2,3milliarderkronergikktapt
Iaugust1991sankSleipnerA-plattformeniGandsfjordenetteratetavplattformbeinaspranglekk.Ulykkenskyldtesalvorligefeiliennumeriskstyrkeberegning [7].Beregningeneundervurderteskjærkreftenemed47%iveggenetilplattformbeina.Detteresulterteiensprekk,slikatplattformensank[8].Heldigvisslapp allede22ombordfradetmedlivetibehold,menforsikringsutbetalingeneblepå 2,3milliarderkroner[9].
Selvomikkealledatamaskinfeilharkatastrofalekonsekvenser,hardeflestebrukerneerfartirriterendedatafeilsomharkostettidogpenger.Forutviklereerdet spesieltirriterendenårkodemanharskrevet,feilerpågrunnavfeilieldrekode.Å feilsøkeogrettekodemanikkeerkjentmed,erbådetidkrevendeogrisikabelt,og kantilogmedføretilnyefeil.Derforerdetiallesinteresseatutviklerefokuserer pååunngåfeil,ogatdebrukermetodersomredusererfeilrisikoentiletminimum.
Førvikansikreossmotatdetlagesslikefeil,måvifordetførsteforståhvordanfeiloppstår,ogdernesthvordanvikanfinneogrettedisseførdeledertil katastrofer.Denestekapitlenevilbidratildette.
Dennebokavendersegmotallesomerinvolvertiprogramvareutikling.Noen kapitlerermestrelevanteforprogrammererne,mensandreerrettetmermotprofesjonelletestere.Prosjektledereogoppdragsgiverevilogsåhanytteavboka.
Kapitlene1til6børlesesavalle.Kapittel7,somhandleromåskrivesolidog testbarkode,erhovedsakeligrettetmotutvikleresomselvskriverkode.Eksempleneidettekapitleterbasertpåprogrammeringsspråket C++,mendeflesteav prinsippeneeroverførbaretilandreprogrammeringsspråk.Kapitlene8til12går gjennomtestprosessenogdeuliketestteknikkeneogkreveringenforkunnskaper iprogrammering.Kapittel13ogkapittel14omhandlerkildekodedokumentasjon ogpraktiskimplementeringavtesterogermestrelevantfordesomselvskal skrivekildekode.Kapittel15omtestingenspsykologibørlesesavalle,mens
kapittel16omautomatiseringernokmestrelevantfortestereogprosjektledere. Testguidenikapittel17ermyntetpåstudenterogandresomharsmåprogramvareprosjekter.IappendiksAutviklervien C++20 klasseforåhåndterefikspunkttall. Dettetilleggetpasserforleseremedgodkunnskaptil C++ somvilseendetaljert implementasjonogenhetstestsuitesombenyttersegavteknikkenesomeromtalt iboka.
Hvemsomhelstkantafeil,menbaretåpenholderfastvedsin feiltagelse.
MarcusTulliusCicero Tenkpåprogramvaresomenproblemløser.Forenspesiellklasseavproblemer skalprogramvarenværeistandtilåfinneenløsning.Feiliprogramvarefører ententilfeilløsningelleringenløsningidetheletatt.Selvomprogrammetprodusererriktigresultat,kandetlikevelbrytemedkravenesomoppdragsgiverhar satt,dersomresultatetblirfunnetførstetterlangtid.Ofteertregprogramvare bareetirritasjonsmoment—entimeglassmarkørsomvarerforlenge—meni sanntidsapplikasjonerkantreghetværelivstruende.Hvaomdukommerutforen bilulykkeogprogramvarenibilendinersåtregatkollisjonsputeneikkeutløsesi tide?
Førvikanhåpepååredusereantalletogalvorlighetsgradentilprogramvarefeil ikodensomviskriver,trengerviåforståhvorforprogramvarefeiloppstår.Nårde vanligekildenetilproblemeneerkjent,erdetlettereåtagrepforåtaondetved roten.
SomCiceropåpekte,kanhvemsomhelstfeile,ogderforkanprogramvarefeil oppståheleveieniutviklingsprosessen,heltframanførstinnseratdetfinneset problemsomtrengerenprogramvareløsning,tildesistestegeneiprogrammeringen.Detkanværefeiliproblemforståelsen,feilispesifikasjonenogsist,menikke minst,iimplementeringen.Feilenekanoppståpåmangemåter.Idettekapitletgår vigjennomhyppigforekommendekildertilfeil.
Enforutsetningforkorrektproblemløsningeråhatilstrekkeligforståelseavproblemet.Dettekanvirkeselvsagt,menuheldigviserdetikkeuvanligiindustrien atmankastersegoverproblemetogbegynnerproblemløsningførmanvethva
problemeter,ogendamindrehvakriterietforsuksessvilvære.Dethenderat oppdragsgivermanglerforståelseforproblemetsomskalløses,ogdermedblir spesifikasjonenuklar.Altforoftestarterstoreprogramvareprosjekterutenatde involverteharforståelseavdegrunnleggendesidenevedproblemet.Selvomden fundamentaleforståelsenvanligviserder,eroftespesifikasjonenvagogmangelfullnårdetgjeldertestbarekrav.Nårprosjektteametomsidernårenbedre forståelse,børprosjektettakostnadenvedårettedårligedesignbeslutningerfattet påsviktendegrunnlagtidligidenforvirredeoppstartsfasen.Hvisikkevildisse designfeileneforplantesegiprogramvaresomblirvanskeligåvedlikeholdeog videreutvikle.Detteviluvilkårligledetilprogramvarefeilisluttproduktet.
Enannenkildetilfeilerprogrammeringmotet bevegeligmål.Problemetoppstårnårspesifikasjonenendressentiutviklingsløpet,ogutviklernemåhackemodifikasjonerisisteøyeblikk.Dettekanskjeomikkesluttbrukerensbehovharvært tilstrekkeligivaretattidenopprinneligespesifikasjonen,ogmanfinnerutatdesignetmåendresmotsluttenavutviklingen.Selvfølgeligmåmanværeistandtil ågjøresmåjusteringerheltopptilendeligkodeleveranse,mennoengangerkan tilsynelatendesmåforandringertvingefremstørredesignendringer.Isliketilfeller erdetbedreåtakostnadenmedåredesigne,hellerennåarbeidesegrundtdesignbegrensningermed adhoc snarveierbareforåfåsisteendringtilåvirke.Selvom detkanimplementeresraskt,erslikeløsningerofteineffektive,liteelegante,ogtil ogmedvanskeligeforandreåforstå,ogledertypisktilbug-infisertkodesomblir vanskeligåvedlikeholde.Josenerespesifikasjonsendringerkommer,dessstørre errisikoenforåproduserehekkeplasserforprogramvarefeil.
Nåretteamavsmartemenneskerstårfastogikkekommervidereietprosjekt, erdetvanligvisfordiproblemeterdårligformulert,ogikkeforditeametersvake påproblemløsning.Islikesituasjonerharmanallgrunntilåbegynnedenkreative prosessenmedådefinereproblemetutenåfalletilbakepådeopprinneligeuklare problembeskrivelseneogvagesuksesskriteriene.Førstnårproblemeterveldefinertogtestbarekriterierforsuksessforeligger,vilteametkunnesemåletmed prosjektet.Fordiåforståeråoppnå,girdetteenutroligsamlendeenergioget bestemtdrivmotdetåfullføreprosjektet.
Enhverprogrammererbørhuskeenting:Duskriverikkekodeforkompilatoren. Ganskeriktigkommerduingenveiførkompilatorenakseptererdetduharskrevet, menmedmindreduskriversmåtrivielleprogrammer,vildevirkeligebrukerne avdinkodeværefremtidigekollegaersomfårioppgaveåutvideogvedlikeholde systemet.Hvisdeikkekanforståkoden,såerdetgodtmuligduhellerikkegjorde det.Selvomenprogrammerermåværesværtpresisnårdetgjelderåforholdeseg tildatamaskinspråketsgrammatikk,såerinnholdetfritt.Misvisendevariabel-og funksjonsnavneringenhindringforenkompilator,menkryptiskkodeerofte
tegnpådårligproblemforståelseellerslurveteformuleringavidéer.Selvomprogrammetvirkersomforutsatt,vildinefremtidigekollegaerkanskjeblinødttilå kastedetduharskrevet,oggjørejobbenpånytt,hvilketselvfølgeligertapttid ogpengerforselskapet,ellersåmisforstårdekodenogintroduserernyefeilnår kodenskalendresellerutvides.
Uansettbørdustreveetteråskrivekodesomkanbliforståttavandremennesker. Detharstorverdiågivariabler,klasserogfunksjonernavnsombeskriverhvade representerer,oghvilkeoppgaverdeutfører.Pådenannensidekanikkenavnbli altforlangeogomstendeligeutenatdetskaderkodenslesbarhet.Derforkanet navnsjeldenforklarelikegodthvanoeer,somenutfyllendetekstligforklaring, envisualiseringellerenmatematiskformel.
Manhøreroftefolksiatdeskriverselvdokumentertkode.Noesliktfinnes ikke.Utenmedfølgendedokumentasjoneringenprogramvareselvforklarende. Ordenesbetydningavhengeravkonteksten,ogsammeordkanbetyforskjellige tingforfolkmedulikbakgrunn.Tadetengelskeordet map.Detkantolkespå mangemåter.Forenmatematikererdetenfunksjonelleravbildning,forenC++ programmerererdetenklasseiSTL(StandardTemplateLibrary),ogformange andreerdetetkartmanbrukerinavigasjon.
Storesoftwareprosjekterinvolverersomregelfolkframangeulikedisipliner.Du finnermatematikere,fysikere,statistikere,programvareingeniørerogsystemingeniører,somjobbersammenpåsammesoftwaresystem.Selvforklarendekode formenneskerfraéndisiplinkanværekryptiskforfolkmedenannenbakgrunn. Skikkeligdokumentasjonmedreferansertilandredokumenterkanbidratilåunngåmisforståelser.
DetskjevetårnetiPisaeretgodteksempelpåkonsekvenseneavåbyggepå utilstrekkeligsolidfundament(figur2.1).SelvomPisabynåtjenergodepenger påskjevheten,erdetaldrigodtnårdårligfundamenteringvelterprogramvare. Ietprogramvareprosjekterfundamenteringenspesifikasjonen(ognoenganger dematematiskemodellene)sombyggeroppunderimplementeringen,systemarkitekturen,kompilatorenogbibliotekersombrukesforåutviklesystemet.
Kodenbliraldrimersolidennfundamentetdenbyggerpå.Derforskalmanikke stolepåspesifikasjoner,matematiskemodellerellerprogramvarebibliotekersom ikkeergrundigkontrollertogtestet.Ellersrisikerermanåbyggeenkolosspå leirføtter.
Åslurvemedkodenogtroatdebuggerevilglatteoveralleproblemene,ersomå væreenuansvarligbilkjørersomhåperpååreddesavelektroniskstabilitetskon-
Figur2.1:Dårligfundamenterttårn.
troll,blokkeringsfriebremserelleriverstefallavkollisjonsputene.Debuggereer nyttigeforåfinneogkorrigerefeil,mendevirkerbaredersomnoenfaktiskvetat feilenfinnes.Defarligstefeileneergjernedemanikkevetom.Slurveteprogrammeringledertilmangeflerefeilenndunoensinnevilvite.Sikkerhetssystemer kanreddedegimangetilfeller,mendeterfåidiotsikresystemer,ogprogrammeringerabsoluttikkeenavdem.Derforkrevesdetstorgradavnøyaktighetog ansvarlighetnårduskriverprogrammer.
Innenformedisinerdetgodtkjentatsymptombehandlingrettogslettkanvære farlig,ogatmanalltidbørsøkeåfinneogkurereårsakentilproblemeneogikke baredempesymptomene.Sammeregelgjelderiprogrammering.Åfåetsystemtil åpassereenspesielltestved adhoc parameterjusteringellervilkårligeendringer ialgoritmerkanskjulesymptomerpåalvorligeproblemer.
EdwardAloysiusMurphyJr.varenflyingeniørsomarbeidetmedsikkerhetskritiskesystemer.Ifølgehanssønnskalhanhasagt:
Hvisdeterfleremåterågjøreentingpå,ogenavdemvilføretil katastrofe,daerdetdetsomvilbligjort.
Skjultesymptomerpåproblemerledergjernetilstørrefeileller–ihenholdtil Murphyslov–enkatastrofepåetseneretidspunkt.Udokumenterteogdårlig
Programvarefeil skaper i beste fall irritasjon hos brukeren. I verste fall fører de til katastrofale ulykker og enorme kostnader. Testing av programvare er dermed en avgjørende kompetanse i utviklingen av de datasystemene vårt samfunn er blitt så avhengig av i dag.
I Plettfri kode får du en engasjerende innføring i sentrale temaer som: Ulike kilder til feil i programvare Prinsipper for testing Ulike testdesign og testteknikker Arbeidsprosess og dokumentasjon
Du lærer konkrete strategier, testteknikker og retningslinjer for utvikling av kvalitetssikret kode. Kodeeksemplene i boka er skrevet i C++ 20, men prinsippene er overførbare til andre programmeringsspråk.
Plettfri kode er læreboka om testing av programvare, skrevet for program vareutviklere, programmerere og testere, enten de er studenter eller i jobb. Den er også nyttig for prosjektledere, da den gir verdifull informasjon om hvordan testing øker kvaliteten på sluttproduktet, og bidrar til å spare tid og penger.
Harald Heimtun Soleng jobber i Kongsberg Defence & Aerospace der han utvikler programvare for autonom ruteplanlegging og målgjenkjennelse for missilsystemer. Han er utdannet fysiker fra Universitetet i Oslo, med en dr.philos. i gravitasjonsteori, men siden 1997 har han jobbet med programvareutvikling og programvaretesting for instituttsektoren og industrien.
Eva Hadler Vihovde er førstelektor ved Institutt for informasjonsteknologi ved OsloMet – storbyuniversitetet, der hun har undervist i programmering og programmeringsrelaterte fag, kunstig intelligens og diskret matematikk siden 1992. Hun underviser også i emnet «Testing av programvare» ved Universitetet i Oslo. I 2021 ble hun tildelt status som merittert underviser ved OsloMet.
82 15 06020 0