<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Morten Engberg Archives - Key2Quality</title>
	<atom:link href="https://key2quality.dk/kategori/morten-engberg/feed/" rel="self" type="application/rss+xml" />
	<link>https://key2quality.dk/kategori/morten-engberg/</link>
	<description>IT-kvalitet gennem ledelse, kvalitets­sikring og uddannelse</description>
	<lastBuildDate>Fri, 08 May 2026 07:32:26 +0000</lastBuildDate>
	<language>da-DK</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://key2quality.dk/wp-content/uploads/2024/02/k2q_logo-150x150.png</url>
	<title>Morten Engberg Archives - Key2Quality</title>
	<link>https://key2quality.dk/kategori/morten-engberg/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Risikobaseret teststrategi i CI/CD</title>
		<link>https://key2quality.dk/risikobaseret-teststrategi-i-ci-cd/</link>
		
		<dc:creator><![CDATA[Julie Sloth]]></dc:creator>
		<pubDate>Fri, 08 May 2026 07:23:40 +0000</pubDate>
				<category><![CDATA[forsiden]]></category>
		<category><![CDATA[Kursusforretningen]]></category>
		<category><![CDATA[Morten Engberg]]></category>
		<category><![CDATA[Nyheder]]></category>
		<category><![CDATA[TMAP]]></category>
		<category><![CDATA[Vidensdeling]]></category>
		<guid isPermaLink="false">https://key2quality.dk/?p=10892</guid>

					<description><![CDATA[<p>&#8220;I pity the fool who doesn&#8217;t put quality dead center&#8221; Sådan kunne Mr. T have sagt, hvis han havde været DevOps-ekspert i stedet for 80&#8217;er actionhelt. Men så ville verden have været foruden B. A. Baracus og A-teamet, og det ville også have været en skam. Nuvel, vi må hellere dykke ned i det, som [&#8230;]</p>
<p>The post <a href="https://key2quality.dk/risikobaseret-teststrategi-i-ci-cd/">Risikobaseret teststrategi i CI/CD</a> appeared first on <a href="https://key2quality.dk">Key2Quality</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="10892" class="elementor elementor-10892" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-779f8f12 e-flex e-con-boxed e-con e-parent" data-id="779f8f12" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-24bbebd6 elementor-widget elementor-widget-text-editor" data-id="24bbebd6" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2 style="font-weight: 400;"><strong><em>&#8220;I pity the fool who doesn&#8217;t put quality dead center&#8221;</em></strong></h2><p style="font-weight: 400;">Sådan kunne Mr. T have sagt, hvis han havde været DevOps-ekspert i stedet for 80&#8217;er actionhelt. Men så ville verden have været foruden B. A. Baracus og A-teamet, og det ville også have været en skam.</p><p style="font-weight: 400;">Nuvel, vi må hellere dykke ned i det, som det egentlig drejer sig om. Risikobaseret teststrategi i CI/CD.</p><p style="font-weight: 400;">Og hvad er risikoen, spørger du nok? Ja, det må vi finde ud af i fællesskab.</p><h2>Hvad er kvalitetsrisiko?</h2><p style="font-weight: 400;">Lad os starte med det grundlæggende.</p><p style="font-weight: 400;">Kvalitetsrisiko er en specifik chance for, at produktet fejler, kombineret med konsekvensen hvis det sker. To faktorer bestemmer chancen for fejl: Sandsynligheden for at fejlen overhovedet findes i produktet, og hvor tit den pågældende del af produktet bliver brugt. Konsekvensen handler om, hvad der sker i den virkelige verden når det går galt. For brugerne og måske for virksomhedens omdømme.</p><p style="font-weight: 400;">Forestil dig engang, at et finansielt system er bygget med en microservices-arkitektur. En bruger går i gang med en valutakonvertering i realtid. Undervejs crasher systemet, fordi der ikke er styr på afhængighederne mellem de services der kræves for at gennemføre konverteringen. Det er systemkompleksitet der påvirker chancen for fejl og en utilfreds bruger der ikke kan gennemføre sin transaktion, der illustrerer konsekvensen.</p><p style="font-weight: 400;">En betalingsbekræftelse som alle kunder bruger flere gange dagligt bærer en fundamental anden risiko end et administrativt skærmbillede med en kosmetisk fejl. Din testindsats bør afspejle den forskel. Det er lige præcis det risikobaseret test handler om.</p><p style="font-weight: 400;">Og det er ikke kun et spørgsmål om prioritering. Det handler om overlevelse. I DevOps er det teamet selv der mærker konsekvensen, når noget går galt i produktion. &#8220;You build it, you run it&#8221; er ikke bare et catchy motto, men en direkte incitamentstruktur der tvinger kvalitet ind i centrum af arbejdet. Når du er den person der bliver vækket klokken tre om natten fordi din kode fejler i produktion, tænker du anderledes over risiko næste gang du planlægger et sprint.</p><p style="font-weight: 400;">Og lige inden du tænker &#8220;funktionalitet, det har vi da styr på&#8221;, så stop lige et sekund. En user story handler typisk om hvad en feature skal gøre, men de relevante kvalitetskarakteristikker rækker langt videre end det. Sikkerhed, performance, vedligehold, brugervenlighed, pålidelighed. En betalingsfeature kan bære høj funktionel risiko og en ligeså høj sikkerhedsrisiko på samme tid. Et rapporteringsdashboard kan have lav sikkerhedsrisiko men til gengæld høj risiko i brugervenligheden. At identificere hvilke kvalitetskarakteristikker der rent faktisk er relevante for hvert item, er en forudsætning for at bygge en teststrategi der er noget værd.</p><h2>Hele teamet med: Risk poker</h2><p style="font-weight: 400;">Lad os tale om den mest oversete faldgrube i risikovurdering: At kun én person laver den.</p><p style="font-weight: 400;">En udvikler ser teknisk kompleksitet. En product owner ser forretningsmæssig konsekvens. En tester ser historiske fejlmønstre. En risikoanalyse der kun fanger ét af disse perspektiver er ufuldstændig og en ufuldstændig risikoanalyse giver en ufuldstændig teststrategi. Så lad os gøre det ordentligt.</p><p style="font-weight: 400;">Risk poker er svaret. Det er en udvidelse af planning poker som de fleste Scrum- og DevOps-teams allerede kender og bruger. Og ligesom planning poker afslører forskelle i, hvordan teammedlemmer forstår størrelsen af en user story, afslører risk poker forskelle i, hvordan de forstår dens risiko. De forskelle er ikke noget man skal komme hurtigt videre fra. De er faktisk den mest værdifulde del af hele sessionen.</p><p style="font-weight: 400;">Sådan fungerer det i praksis. For hver user story i det kommende sprint estimerer hvert teammedlem selvstændigt to ting: Chancen for fejl og konsekvensen af fejl. Det gøres med kort med værdierne 1 (lav), 2 (mellem) og 3 (høj). Kortene vendes samtidigt og så begynder den rigtige samtale. Når estimaterne afviger, diskuterer teamet årsagerne bag de afvigende værdier, indtil der er opnået konsensus. Resultatet er en item risk score: Chance ganget med konsekvens.</p><p style="font-weight: 400;">I praksis oversætter mange teams scoren til en risikoklasse. Score 9 bliver Risikoklasse A, score 4 eller 6 bliver Risikoklasse B, og score 1, 2 eller 3 bliver Risikoklasse C. Det holder samtalen fokuseret på relativ prioritet frem for falsk numerisk præcision. For ingen risikovurdering er mere præcis end de antagelser den bygger på.</p><p style="font-weight: 400;">En vigtig detalje som mange teams overser: Product owner deltager i risk poker, modsat planning poker. Product owner repræsenterer interessenterne og bidrager med det forretningsmæssige perspektiv som udviklere og testere kan undervurdere, særligt når det handler om at kalibrere konsekvensen af en fejl korrekt. Scrum Masteren faciliterer men spiller ikke selv.</p><p style="font-weight: 400;">Resultatet? En risikotabel. Et struktureret overblik over alle user stories i sprintet med en risikoklasse for hver relevant kvalitetskarakteristik.</p><h2>Fra risikoklasse til testintensitet</h2><p style="font-weight: 400;">Okay, vi har vores risikotabel. Hvad nu?</p><p style="font-weight: 400;">Nu bestemmer teamet hvor intensivt hver kombination af story og kvalitetskarakteristik skal testes. Testintensitet udtrykkes i tre niveauer: ••• (høj), •• (mellem) og • (lav).</p><p style="font-weight: 400;">Reglen er enkel. Risikoklasse A kræver mindst ét ••• . Risikoklasse B kræver mindst •• . Risikoklasse C får aldrig mere end • . Det er tilladt at gå ned i intensitet, men kun med en dokumenteret begrundelse som alle kan se.</p><p style="font-weight: 400;">Denne struktur forhindrer to klassiske fejl. Den første: At behandle alle stories ens uanset risiko. Den anden: At beslutte uformelt at teste noget &#8220;lidt mere&#8221; uden at gøre den beslutning synlig. I en CI/CD-pipeline der kører kontinuerligt, er usynlige beslutninger om testintensitet en direkte kilde til uforudsigelig kvalitet.</p><h2>Kvalitetstiltag: Fra intensitet til konkret handling</h2><p style="font-weight: 400;">Testintensitet fortæller <em>hvor meget</em>. Kvalitetstiltag fortæller <em>hvordan</em>.</p><p style="font-weight: 400;">For hver kombination af story, kvalitetskarakteristik og testintensitet vælger teamet de konkrete kvalitetstiltag de vil anvende. Og her er det vigtigt at forstå, at kvalitetstiltag ikke er begrænset til dynamisk test. Tværtimod. Det fulde spektrum inkluderer tre kategorier:</p><p style="font-weight: 400;"><strong>Forebyggende tiltag</strong> der bygger kvalitet ind fra starten</p><ul><li>Pair programming</li><li>Test-Driven Development</li><li>Behavior Driven Development</li><li>Specification by example</li></ul><p style="font-weight: 400;">Disse hører hjemme tidligt i leverancecyklussen, i Plan- og Code-stadierne af pipelinen.</p><p style="font-weight: 400;"><strong>Afslørende tiltag</strong> der demonstrerer kvalitetsniveauet</p><ul><li>Funktionel test</li><li>Performancetest</li><li>Sikkerhedstest</li><li>Statisk analyse</li><li>Eksplorativ test</li></ul><p style="font-weight: 400;">Disse fordeles over pipeline-stadierne afhængigt af hvad der skal verificeres og hvornår.</p><p style="font-weight: 400;"><strong>Korrigerende tiltag</strong> der proaktivt forbedrer kvaliteten</p><ul><li>Refaktorering</li><li>Feature toggles</li></ul><p style="font-weight: 400;">Disse hører hjemme i Integrate-stadiet og i teamets løbende refleksion.</p><p style="font-weight: 400;">Og så er der en forbindelse som mange teams overser, nemlig risiciene og måden at dække dem på er direkte forbundet med acceptkriterierne på story-kortet. En velbeskrevet Confirmation indeholder ikke kun de glade scenarier. Den inkluderer fejlsituationer, edge cases og hints om hvilke testmetoder der er relevante. Det er den forbindelse der gør teststrategien konkret og handlingsorienteret frem for et dokument ingen læser.</p><h2>Fra teststrategi til quality engineering strategi</h2><p style="font-weight: 400;">En traditionel teststrategi fokuserer primært på de afslørende kvalitetstiltag. Altså det vi normalt forstår ved &#8220;test&#8221;. Men i DevOps er kvalitet et teamansvar fordelt over hele leverancecyklussen, og så er en traditionel teststrategi ikke nok.</p><p style="font-weight: 400;">Det fører os til begrebet quality engineering strategi: En udvidelse af teststrategien der giver lige vægt til forebyggende, afslørende og korrigerende tiltag, og eksplicit placerer hvert tiltag der, hvor det hører hjemme i leveranceprocessen.</p><p style="font-weight: 400;">Lad os tage et konkret eksempel. Et team bygger en ny funktion i deres app der viser brugere deres præcise ventetid i en kø. Teamet klassificerer dette som høj risiko (risikoklasse A). Hvis ventetiden vises forkert, bliver brugerne frustrerede og tilliden til appen falder. Som forebyggende tiltag vælger teamet pair programming under Code-stadiet. Som afslørende tiltag anvender de funktionel test og performancetest med fokus på svartid. Som korrigerende tiltag planlægger de refaktorering under Integrate-stadiet.</p><p style="font-weight: 400;">Det er ikke bare en testplan. Det er en bevidst, risikobaseret fordeling af kvalitetsaktiviteter over hele sprintcyklussen med hvert tiltag begrundet i den risiko det adresserer.</p><p style="font-weight: 400;">I en CI/CD-kontekst får dette en direkte operationel betydning. Teams der bruger Jira eller Azure DevOps kan registrere risikoklassen og de aftalte kvalitetstiltag direkte på hver user story. Pipeline-konfigurationen kan herefter referere til disse oplysninger og anvende de relevante testsæt på hvert stadie. Stories med høj risiko kræver den højeste testintensitet på tværs af pipeline-stadierne. Stories med lav risiko kører et målrettet subset. Quality gates, de definerede kriterier som en build skal opfylde inden den avancerer til næste pipeline-stadie, omsætter strategien til konkret pipeline-håndhævelse.</p><h2>Strategien er levende, ikke et dokument der samler støv</h2><p style="font-weight: 400;">Her kommer den del som mange glemmer.</p><p style="font-weight: 400;">En quality engineering strategi skabes ikke én gang og lægges i en skuffe. User stories ændrer sig. Nye stories tilføjes. Risikoopfattelsen skifter efterhånden som teamet lærer mere om produktet og dets brugere. Og når en hændelse opstår i produktion, giver den reel evidens for at risikovurderingen af det berørte komponent var sat for lavt.</p><p style="font-weight: 400;">Kapable DevOps-teams stiller spørgsmålet &#8220;skal vi opdatere vores quality engineering strategi?&#8221; ved hvert daily standup og i hvert retrospektiv. For teamet er strategien primært en to-do-liste: En klar og fælles aftale om hvilke kvalitetsaktiviteter der skal udføres, med hvilken intensitet og på hvilket tidspunkt i leverancen.</p><p style="font-weight: 400;">Når den liste er synlig, vedligeholdt og ejet af hele teamet, holder kvalitet op med at være en kontrolaktivitet forbeholdt testere til sidst i processen og bliver en del af måden teamet arbejder på. Hver dag. I hvert sprint.</p><p style="font-weight: 400;">Og det er egentlig det, som det hele drejer sig om.</p><p> </p><h4><strong data-start="1273" data-end="1327">Bliv bedre til at omsætte teststrategi til praksis<br /></strong>Risikobaseret teststrategi i CI/CD kræver fælles sprog, tydelige prioriteringer og konkrete kvalitetstiltag i teamet. På vores <a href="https://key2quality.dk/testkurser/">testkurser</a> arbejder du praktisk med teorien, får eksempler fra virkelige IT-projekter og sparring fra undervisere med solid erfaring fra praksis. Se vores kommende kurser i <a href="https://key2quality.dk/testkurser/">ISTQB</a>, <a href="https://key2quality.dk/testkurser/">TMAP</a> og test — eller <a href="https://key2quality.dk/kontakt/">kontakt os</a> om et skræddersyet forløb til jeres team</h4>								</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-169eebf e-flex e-con-boxed e-con e-parent" data-id="169eebf" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-367df70 elementor-widget elementor-widget-button" data-id="367df70" data-element_type="widget" data-e-type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
									<div class="elementor-button-wrapper">
					<a class="elementor-button elementor-button-link elementor-size-sm" href="">
						<span class="elementor-button-content-wrapper">
									<span class="elementor-button-text">Se kursuskalender</span>
					</span>
					</a>
				</div>
								</div>
				</div>
					</div>
				</div>
				</div>
		<p>The post <a href="https://key2quality.dk/risikobaseret-teststrategi-i-ci-cd/">Risikobaseret teststrategi i CI/CD</a> appeared first on <a href="https://key2quality.dk">Key2Quality</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>GenAI: Din nye kollega i test og kvalitetssikring</title>
		<link>https://key2quality.dk/genai-din-nye-kollega-i-test-og-kvalitetssikring/</link>
		
		<dc:creator><![CDATA[Julie Sloth]]></dc:creator>
		<pubDate>Fri, 24 Apr 2026 07:29:15 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[AI X Test]]></category>
		<category><![CDATA[forsiden]]></category>
		<category><![CDATA[Morten Engberg]]></category>
		<category><![CDATA[Nyheder]]></category>
		<category><![CDATA[Vidensdeling]]></category>
		<guid isPermaLink="false">https://key2quality.dk/?p=10859</guid>

					<description><![CDATA[<p>Her kommer der lige en lille disclaimer: Denne artikel er ikke nedfældet af en kunstig intelligens, men derimod et helt almindeligt menneske. Ret vildt, synes du ikke? Det der for ganske få år siden ville have været en selvfølge, bliver i dag gradvist en sjældenhed i forhold til AI-generet indhold. Med nogle få instruktioner kunne [&#8230;]</p>
<p>The post <a href="https://key2quality.dk/genai-din-nye-kollega-i-test-og-kvalitetssikring/">GenAI: Din nye kollega i test og kvalitetssikring</a> appeared first on <a href="https://key2quality.dk">Key2Quality</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="10859" class="elementor elementor-10859" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-779f8f12 e-flex e-con-boxed e-con e-parent" data-id="779f8f12" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-24bbebd6 elementor-widget elementor-widget-text-editor" data-id="24bbebd6" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p style="font-weight: 400;">Her kommer der lige en lille disclaimer: Denne artikel er ikke nedfældet af en kunstig intelligens, men derimod et helt almindeligt menneske.</p><p style="font-weight: 400;">Ret vildt, synes du ikke?</p><p style="font-weight: 400;">Det der for ganske få år siden ville have været en selvfølge, bliver i dag gradvist en sjældenhed i forhold til AI-generet indhold.</p><p>Med nogle få instruktioner kunne jeg nemt have fået en AI til at generere enten et udkast eller en hel artikel om dette emne, alt afhængigt af hvilken grad af autonomi jeg ville tildele den.</p><p style="font-weight: 400;">For det går hurtigt med AI, meget hurtigt.</p><p style="font-weight: 400;">Særligt inden for softwareudvikling, hvor millionvis af AI-genererede linjer kode bliver spyttet ud dagligt på tværs af vores lille blå planet.</p><p style="font-weight: 400;">Og når udviklingshastigheden stiger, ja så må hastigheden på at kvalitetssikre dets output følge med.</p><p style="font-weight: 400;">Så lad os tage et kig på, hvad GenAI egentlig er og hvordan det passer ind i en test og QA-kontekst.</p><p style="font-weight: 400;">Hvis du allerede nu føler, at det der GenAI har du bare helt styr på, så kan du passende springe ned til overskriften: <strong><em>‘Hvordan kan GenAI bruges i test kontekst?’</em></strong>.</p><p>Her vil jeg komme med eksempler på, hvordan GenAI kan anvendes i test og QA-opgaver.</p><h3>Hvad er GenAI?</h3><p style="font-weight: 400;">Lad os prøve at visualisere, hvad AI egentlig er.<br />Forestil dig, at langt ude i skoven lå et bjerg kaldet AI.</p><p style="font-weight: 400;">På det bjerg stod der så et lille træ, som vi vælger at kalde Generative AI eller blot GenAI.</p><p style="font-weight: 400;">Træets rødder kaldes neural networks. Rødderne løber op i stammen, language models (LM). På stammen sidder der en gren, pre-trained language models (PLM). På grenen er der tre kviste, en lille kvist, small language models (SLM), en mellem kvist, large language models (LLM) og en stor kvist, multimodal LLM. Og på den store multimodal LLM-kvist sidder der nogle blade, vision-language modeller.</p><p style="font-weight: 400;">Forvirrende? Lad os dykke ned i, hvad de forskellige elementer så egentlig betyder.</p><h3>Neural network<strong>s</strong></h3><p style="font-weight: 400;">Neural networks eller på dansk kaldet neurale netværk, udgør selve fundamentet for den moderne kunstige intelligens, som vi kender til i dag. De neurale netværk fungerer ved at efterligne vores menneskelige hjerner ved at behandle information gennem bittesmå beregningsenheder, som vi ofte kalder neuroner. Neurale modeller, altså matematiske modeller opbygget gennem neurale netværk, har været igennem en massiv udvikling gennem flere generationer. Fra de tidlige neurale modeller som Recurrent Neural Networks (RNN), der behandler data sekventielt, til de nuværende modeller bygget på Transformer-arkitekturen, som behandler data parallelt.</p><p style="font-weight: 400;">Det gennemgående for de neurale modeller er deres evne til at processere konteksten af store tekstmængder. Men det er netop her, at Transformer-arkitekturen skiller sig ud fra de tidlige neurale modeller. Hvor RNN-baserede modeller læser tekst som vi læser en bog, ord for ord og fra venstre mod højre, så kan Transformer-baserede modeller læse hele sætningen på én gang og vurdere, hvilke ord der er vigtige ift. hinanden. Det er en uhyre egenskab, som vi kalder self-attention mekanismen.</p><p style="font-weight: 400;">Forestil dig lige en gang, at du er i gang med at læse en fejlrapport. I rapporten står der sætningen:<em> “Log ind knappen virker ikke, når brugeren trykker på den”. </em>En RNN-baseret model ville behandle hvert ord i rækkefølge, og dermed risikere at “glemme” den indledende del, inden den havde læst sætningen til ende. En transformer-baseret model forstår derimod med det samme at “knappen” og “trykker” hænger sammen, idet self-attention mekanismen beregner relationerne mellem alle ord i sætningen parallelt.</p><h3>De to grundsten: Tokens og Embeddings</h3><p style="font-weight: 400;">For at en GenAI kan forstå dine prompts, skal den først nedbryde teksten. Det sker gennem to koncepter, der er fundamentet for det hele:</p><ul><li><strong>Tokenization:</strong> Her bliver dine prompts nedbrudt i mindre enheder, også kaldet tokens. Tokens kan være enkle tegn eller et helt ord.</li><li><strong>Embeddings:</strong> Hold fast, for nu bliver det lidt teknisk. De nedbrudte tokens bliver derefter oversat til tal i et kæmpe koordinatsystem. Tokens med lignende betydninger og anvendelse, placeres tæt på hinanden. På den måde &#8220;forstår&#8221; modellen de semantiske sammenhænge mellem de nedbrudte tokens.</li></ul><h3>Language models (LM) &amp; pre-trained language models (PLM)</h3><p style="font-weight: 400;">De neurale netværks rødder løber op i stammen, language models (LM). En language model er kort fortalt en model, der er trænet i at forstå og forudsige sprog ved at lære mønstre fra tekst. Som det tidligere er beskrevet i de to grundsten: tokens og embeddings, så er det her modellens forståelse opstår. Teksten nedbrydes, den oversættes til et tal og gennem talrepræsentationen lærer modellen at genkende mønstre og forudsige sprog.</p><p style="font-weight: 400;">Fra stammen vokser der sig en gren, pre-trained language models (PLM). En PLM er en videreudvikling af LM der, fremfor at være blevet trænet på en specifik opgave, først bliver trænet på massive mængder tekst – her taler vi alt fra klassiske romaner og videnskabelige artikler til madopskrifter. Denne proces kalder vi pre-training, som giver modellen en generel sprogforståelse, inden den bliver taget i brug med specifikke opgaver.</p><h3>SLM &amp; LLM: Sprogmodellerne der har læst (næsten) alt</h3><p style="font-weight: 400;">Åh ja, så kom vi til de to mindste kviste; small language models (SLM) og large language models (LLM).</p><p style="font-weight: 400;">Den mindste kvist, Small Language Models (SLM), er kompakte modeller. Det vil sige, at modellerne har færre end 10 milliarder parametre, hvor parametre skal forstås som de talværdier, der udgør den specifikke og veldefinerede viden som modellen har opbygget under sin pre-training. Modellens specifikke viden og kompakte størrelse gør altså at den er væsentligt lettere at køre og i modsætning til bladet ved siden af, så kan den faktisk afvikles til veldefinerede opgaver lokalt på din computer eller smartphone – det er da ret sejt.</p><p>Den mellemste kvist, large language models (LLM), har du formentlig hørt om allerede. Det er dem vi i det daglige kender fra Claude, Gemini, Mistral og ChatGPT. Hvor SLM’er er nogle små kompakte specialister, er LLM’er derimod nogle store og brede generalister. Under dens pre-training har den fået en massiv mængde viden om alskens slags, og med netop den viden kan modellen forstå, når vi mennesker kommer med input til den gennem prompts.</p><h3>Fra fundament til de helt svære opgaver</h3><p style="font-weight: 400;">De brede generalist LLM’er kan derimod også blive videreudviklet. Udviklingen af en LLM minder lidt om en konsulents avancement i konsulenthuset. Den starter som en <strong>Foundation LLM</strong>, der er en generalist, som ved lidt om alting (juniorniveau). Derefter bliver den <strong>Instruction-tuned, </strong>altså trænet specifikt i at forstå og følge menneskelige instruktioner (mellemniveau). Og til sidst har vi <strong>Reasoning LLMs</strong>, som udbygger instruction-tuned modeller gennem kognitive evner som syllogisme, multi-trin problemløsning, og det vi kalder chain-of-thought reasoning.</p><p style="font-weight: 400;">For at holde dem på rette spor bruger man <strong>Reinforcement Learning from Human Feedback (RLHF)</strong>. Her er det altså rigtige mennesker, der giver feedback til modellen for at sikre, at den opfører sig ordentligt og svarer sikkert.</p><h3>Multimodal LLM&#8217;er og Vision-Language Modeller</h3><p style="font-weight: 400;">Nå, men fra den fine pre-trained language models (PLM) gren sidder der også en stor kvist, Multimodale LLM<em>. </em>Den multimodale LLM udvider LLM’ernes evne til at behandle andre typer data end tekst, herunder billeder, video og lyd. Dette grundet deres træning på store og forskelligartede datasæt. For at modellen kan håndtere de forskelligartede modaliteter, bliver den iboende tokenization tilpasset de forskellige datatyper. Dette ses bl.a. ved konverteringen af billedtokens til embeddings, som vi tidligere har set med tekst.</p><p style="font-weight: 400;"><em> </em></p><p style="font-weight: 400;">På den store kvist sidder der flere blade, Vision-language-modeller, der specifikt integrerer visuel og tekstuel information for at udføre opgaver såsom billedtekstning (image captioning), visuel spørgsmålsbesvarelse (visual question answering) og analyse af overensstemmelsen mellem tekstuelt og visuelt input.</p><p style="font-weight: 400;">Og når vi så taler om GenAI i forbindelse med test og QA, så giver multimodale LLM&#8217;er, og særligt LLM&#8217;er suppleret med vision-language-modeller, betydelige muligheder. Eksempelvis ved at analysere visuelle elementer i applikationer, såsom screenshots og GUI-wireframes, sammen med tilhørende tekstbeskrivelser, herunder fejlrapporter eller user stories. Denne egenskab gør det muligt for testere at identificere uoverensstemmelser mellem forventede resultater og de faktiske visuelle elementer.</p><h2><strong>Hvordan kan GenAI bruges i test kontekst?</strong></h2><p style="font-weight: 400;">At bringe GenAI ind i softwaretest er ikke bare en lille opgradering – det er et regulært paradigmeskift. Vi bevæger os væk fra de tunge, regelbaserede metoder og over mod en mere intelligent og adaptiv automatisering, der dækker hele vejen fra de første krav til den endelige rapport.</p><p style="font-weight: 400;">Her er de fem områder, hvor GenAI for alvor kan gøre en forskel lige nu:</p><h3>1. Analyse af krav og testdesign: AI som din &#8220;sparringspartner&#8221;</h3><p style="font-weight: 400;">Vi kender det alle sammen: Kravspecifikationer, der er mere mudrede end en dansk efterårsdag. Her er LLM’er geniale:</p><ul><li><strong>Oprydning i kravene:</strong> Smid dine dokumenter ind i en LLM’ers chat interface, og den vil lynhurtigt spotte eventuelle uklarheder eller manglende info. Modellen kan muligvis give dig de helt rigtige spørgsmål til dine stakeholders, som du måske først ville have opdaget halvvejs i testfasen.</li><li><strong>Automatisk generering af testcases:</strong> AI’en kan hurtigt læse dine BDD-user stories og derefter generere testcases, mål og forventede resultater på ingen tid.</li><li><strong>De skæve scenarier:</strong> AI’en er god til at finde de der &#8220;edge cases&#8221;, som vi mennesker overser, når vi har hovedet fuldt af de mest gængse brugerrejser.</li></ul><h3>2. Implementering og data: Slut med at vente på testdata</h3><p style="font-weight: 400;">Det er her, vi for alvor mærker hastigheden:</p><ul><li><strong>Syntetisk testdata:</strong> Har du også prøvet at kæmpe med GDPR-regler og anonymisering af kundedata? AI kan generere realistiske, men 100% kunstige datasæt, der ligner den ægte vare på en prik, uden at du kommer i klemme med lovgivningen.</li></ul><h3>3. Vedligeholdelse der klarer sig selv (næsten)</h3><p style="font-weight: 400;">En af de største frustrationer i testautomatisering er skrøbelige scripts, der fejler ved selv de mindste UI ændringer.</p><ul><li><strong>Self-healing:</strong> Moderne AI-frameworks kan selv opdatere dine scripts, når UI’en eller API’et ændrer sig.</li><li><strong>Intelligent prioritering:</strong> Ved at kigge på historiske data kan AI’en fortælle dig, hvilke testcases der er vigtigst at køre lige nu, baseret på hvor risikoen for fejl er størst.</li></ul><h3>4. Analyse af resultater: Hvad gik der egentlig galt?</h3><p style="font-weight: 400;">Når testen fejler, starter detektivarbejdet. Men AI’en har allerede læst logfilerne for dig:</p><ul><li><strong>Forklaring af fejl:</strong> I stedet for at kigge på en kryptisk sensor-log eller 500 linjer fejlmeddelelser, kan AI’en give dig en sammenhængende forklaring på, <em>hvorfor</em> det gik galt, og hvad du skal gøre for at fikse det.</li><li><strong>Automatisk dokumentation:</strong> Den kan endda skrive dine defekter og rapporter færdige, så de er klar til audit uden det store manuelle benarbejde.</li></ul><h3>5. Husk nu mennesket i maskinrummet</h3><p style="font-weight: 400;">Selvom alt det her lyder som den rene QA-lykke, så kræver det en hybridmodel. Vi kan ikke bare læne os tilbage og lade AI&#8217;en styre showet alene:</p><ul><li><strong>Tjek resultatet:</strong> Selvom GenAI og LLM’er er smarte, så kan modellerne ligesom du og jeg stadig lave fejl. De kan skrive testlogik, der ser rigtig ud, men som ikke stemmer overens med testobjektet. Derfor skal du altid have en ekspert (dig!) med i loopet.</li><li><strong>Styr på standarderne:</strong> Vi skal sikre os, at det AI’en genererer til os, rent faktisk lever op til vores kvalitetskrav og den gældende lovgivning.</li></ul><p style="font-weight: 400;">Puha, det blev en lang omgang. Hvis du stadig læser med, så kommer der lige en kort opsummering:</p><ul><li>GenAI bygger på neurale netværk og transformer-arkitekturen, som gør modellerne i stand til at forstå tekst parallelt og dermed relationen mellem ord</li><li>Sprogmodeller forstår tekst gennem tokens og embeddings – altså nedbrydning i enheder og nummerering.</li><li>Pre-training giver sprogmodeller baggrundsviden &#8211; både til SLM specialisterne og LLM generalisterne</li><li>Multimodale LLM’er kan kombinere tekst og billeder, eksempelvis screenshots af GUI-baserede fejl og user story.</li><li>GenAI kan hjælpe med meget af det manuelle arbejde i test og QA, fra kravanalyse og testdesign til fejlforklaring, men det er stadig vigtigt med et human-in-the-loop.</li></ul><p style="font-weight: 400;">Og som jeg skrev i det indledende, så går det meget hurtigt med AI. Men hvis vi lige vender den formulering på hovedet engang. Mens alle andre bekymrer sig om, hvorvidt GenAI kommer til at erstatte dem på arbejdspladsen, så sidder du nu med en bedre forståelse af, hvad det hele egentlig drejer sig om. Du ved hvad et neuralt netværk er, du ved hvorfor transformer-baserede modeller er klogere end RNN-baserede modeller, og du ved hvordan GenAI kan blive din nye buddy i testarbejdet. Det gør dig bestemt ikke overflødig, det gør dig snarere farlig. Altså på den gode måde. Så ja, det går hurtigt. Men det bliver også sjovere at være tester.</p>								</div>
				</div>
					</div>
				</div>
				</div>
		<p>The post <a href="https://key2quality.dk/genai-din-nye-kollega-i-test-og-kvalitetssikring/">GenAI: Din nye kollega i test og kvalitetssikring</a> appeared first on <a href="https://key2quality.dk">Key2Quality</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
