tillbaka till startsidan

91. 1000 rader

Lyssna på Spotify lyssna! Lyssna på iTunes

Vi inleder med glögg och födelsedagar innan vi pratar om ett enda ensamt end-2-end-test. Det blir allt om stora och små tester, att inte mocka saker, happy path, 6 månader senare, att “skuggprogrammera”, lite hat mot configfiler och att inte städa upp efter sig själv. Dessutom en hel del om happy path, mittemellan unit och e2e, en kanske upprepad anekdot om att DDOSa sig själv och mycket mycket annat.

Om du gillar podden blir vi väldigt glada för en liten recension i iTunes eller en prenumeration på Spotify. Följ oss och säg hej på @asdfpodden på Instagram eller Twitter (Anton, Therése) <3

Länkar

Avsnittets skämt:

Varför vill stallägare anställa mockare?
För att de är bra på att mocka.
Inskickat av Erik
Skrapa här!!
Transkribering
Transkriberingen är gjord av nån "AI-grej". Du kan förbättra den genom att klicka precis här :)
00:00:00
Varför vill stallägare anställa testare?
00:00:04
För de mockar.
00:00:07
Jajamän, slasch egentligen för de är bra på att mocka.
00:00:10
Men det flög ändå.
00:00:12
Ja men det här skämtet har ju jag typ redan dragit.
00:00:15
Nej det tror jag inte.
00:00:17
Jo.
00:00:18
Och om det är så, då har alla glömt bort dig, fytan du.
00:00:23
Det är också ett skämt från vår lyssnare Erik, så tack Erik.
00:00:26
Och sen Therese direkt bashar, han har snott skämtet av mig.
00:00:30
Nej jag bara säger att du borde ha bättre koll på våra skämt.
00:00:34
Ja, ja, ja.
00:00:35
Allt är på dig, ingenting på lyssnarna.
00:00:37
Nej, så är det alltid.
00:00:38
Välkomna hörni till ett nytt avsnitt av AFSDF.
00:00:41
Jag ber om ursäkt om det klirrar litegrann, jag vet inte om det här hörs.
00:00:44
Hör du det här Therese?
00:00:45
Ja.
00:00:46
Ja det är ett härligt klirr, för jag har liksom unnat mig årets första glögg.
00:00:51
Kyld också, men stor isbit i.
00:00:55
Alltså nu vet ju jag att det säkert finns någon som blir upprörd för att det inte är december än.
00:01:01
Ja men det är på gränsen.
00:01:03
Och när det här avsnittet släpps så fyller jag år, och som den, som vi pratade om för några avsnitten,
00:01:08
narcissist jag är, så tar jag upp det själv.
00:01:10
Just det, för att det släpps verkligen på din kalsdag.
00:01:14
Så är det.
00:01:15
Och då kan man unna sig en inspelningsglögg, jag vet inte vilka glögg.
00:01:19
Woho!
00:01:23
Nej jag har inga planer, det ska bli jävligt skönt att bara ta det lugnt.
00:01:27
Jag ska väl fira att det här avsnittet har släppts. Det är större än att jag fyller år.
00:01:32
Wow.
00:01:33
Jajamän.
00:01:34
Var det så att det släpptes ett avsnitt på min födelsedag förra året?
00:01:37
Nej, jag minns faktiskt inte.
00:01:42
Ingen aning, det kan vi kolla upp till nästa avsnitt.
00:01:45
Verkligen inte viktigt, det är bara för att det är på julafton, så det är snarare frågan, släppte vi ett avsnitt på julafton?
00:01:52
Nej, vi släppte vår julkalender, ett avsnitt på julafton.
00:01:57
Ja, just det.
00:02:00
Och den kan vi avslöja nu en vecka innan, att julkalendern återkommer i år igen.
00:02:07
Bättre än någonsin.
00:02:10
Hahaha, okej.
00:02:15
Det är så skönt att i energinivå så tror jag att du är våra lyssnare, och jag är fonden.
00:02:23
Jag hajpar vår julkalender och de säger, okej.
00:02:29
Men alltså, okej, vill du att jag ska hajpa mer? Du vet ju att jag inte är den personen.
00:02:37
Nej, därför kan vi verkligen lägga det bakom oss och gå in på dagens ämne som jag har funderat på lite grann.
00:02:43
Senast tre dagar, kanske till och med tre och en halv, har jag skrivit ett test.
00:02:55
Och det här testet klockade in på 1015 rader när jag då merjade det idag.
00:03:04
Och det kändes väldigt härligt faktiskt.
00:03:09
Nej, nej men usch. Varför då? Varför då?
00:03:16
Jo, men det är ett test som gör väldigt mycket. Och då blev det väldigt långt.
00:03:23
Ja, det var inte ett junitest hoppas jag.
00:03:26
Nej, då hade det kanske varit över någon typ av gräns.
00:03:30
Du testar en sak.
00:03:32
Jag testar en sak, men väldigt noggrant.
00:03:38
Nej, det var ett en-till-en-test skrivet med Playwright.
00:03:42
Jag tror kanske att jag pratade lite grann om en-till-en-testet förut i podden någon gång.
00:03:47
Men fan vad jag älskar Playwright. Det är så jäkla trevligt att jobba med.
00:03:51
Och det här en-till-en-testet, om man ska förklara vad det gör så att folk fattar.
00:03:57
Jag försökte skriva en sammanfattning på det.
00:04:02
Så du behövde skriva dokumentation på ditt test som i sig är dokumentation?
00:04:08
Ja, lite grann. Men det var typ att jag ville skicka det till folk som inte utvecklade det.
00:04:12
Och bara så här, nu har vi det här testet. Det kommer testa de här sakerna.
00:04:17
Och jag tror att det är, vad kan det vara? Ska vi säga att det är 200 steg kanske?
00:04:25
Hur lång tid tar det att köra?
00:04:29
Ja, det är en bra fråga. Det kan vi också titta på.
00:04:32
När man kör lokalt så tar det typ två minuter, tror jag.
00:04:37
Och sen är ju frågan hur lång tid det tar när man kör i vår pipeline.
00:04:42
För det gör vi ju. Totaltid 7.51, men det är nog inte bara det testet. Det är nog lite fler test.
00:04:51
Det är väl rätt okej ändå säkert. Men är det så att ni har någon githook som måste köra det varje gång ni ska kommitta eller pusha?
00:04:58
Nej, alltså den stoppar inget.
00:05:01
Utan den här en-till-en-testen kör bara på sidan om och skriker om någonting går fel.
00:05:07
Men det är väldigt trevligt. Och jag satt ändå och i början klurade lite på så här,
00:05:14
fan ska vi skriva allt det här som ett test? Eller ska jag dela upp det i fler test?
00:05:20
Men landade liksom i att, vad har vi testat och skrivit det som ett jättelångt test?
00:05:24
Och då ser vi hur långt det blir och om det blir bra eller inte.
00:05:28
Och för lite kontext då, så det jag bygger är ett rekryteringssystem.
00:05:33
Och då går det ut på att man som användare så finns det ett ganska långt flöde framförallt.
00:05:40
Som är att man skriver ner vilka krav man har på en tjänst. Man publicerar en annons med de här kraven.
00:05:48
Man förbereder sina intervjuer eller sina mallar som man ska ha intervjuerna på.
00:05:54
Man håller intervjuerna utifrån mallarna. Man utvärderar kandidaterna.
00:05:59
Man bokar in möten och intervjuerna med dem under tiden.
00:06:04
Och till slut så godkänner man eller tackar nej till kandidaterna.
00:06:09
Och det som gör att jag inte ens ville skriva det här som flera tester var att all den här datan beror på varann.
00:06:16
De kraven du sätter i det första steget, de ska vara med och utvärderas i sista steget.
00:06:23
Och de ska vara med i intervjuerna och de ska visas upp på ansökan som har kommit in och allt sånt.
00:06:28
Och jag kände bara så här, fan det som alltid blir jobbigt när man skriver tester
00:06:33
är ju att man måste manuellt skapa upp massa data.
00:06:38
Så att för att kunna testa utvärderingen i det här fallet, om jag bara ville göra det där,
00:06:43
så hade jag behövt skapa upp en massa utvärderingar på den här kandidaten.
00:06:47
Eller skapa upp någon intervju där de har gjort den här utvärderingen manuellt, ner i databasen bara.
00:06:52
Och det är, i min erfarenhet så ställer det alltid bara till mer problem än vad det hjälper.
00:06:58
Och då kände jag, men vad fan, jag kan ju göra så att i testet så skapar testanvändaren all data jag behöver.
00:07:05
Jo, jag fattar ju den grejen och det är ju jäkligt smutst.
00:07:09
Men jag tror också att det är en otrolig happy path.
00:07:13
Alltså det är ju inte bara att allting går precis som förväntat och att den användare använder systemet
00:07:19
precis som ni har förväntat er, utan det är att de gör det sekvensiellt, utan en enda paus,
00:07:24
utan en enda, liksom, plocka upp ett steg senare.
00:07:31
Blir det ett problem?
00:07:33
Det finns ju liksom ingen tidsaspekt riktigt i alla steg, utan det känns som att
00:07:37
den här testen är ett flöde, sen spelar det egentligen ingen roll om det skiljer en dag, två dagar eller en vecka mellan att man gör något steg.
00:07:45
Datan kommer ju se likadan ut.
00:07:48
Sen är det ju verkligen så att jag testar ju inga edge cases i det här testet.
00:07:53
Det här är ju väldigt tydligt happy flow för att se att det funkar.
00:07:57
Syftet med testet är verkligen att eftersom allting hänger ihop så mycket så vill jag se till att
00:08:04
om vi gör någonting på ett ställe så ska inte det paja någonting annat.
00:08:09
Det blir också en grej att om jag skapar upp massa data manuellt i testerna så kanske man inte vet att
00:08:15
två saker som hänger ihop väldigt mycket, som man testat separat, att man har förstört kopplingen mellan dem.
00:08:21
Det är där jag var ute efter att faktiskt testa.
00:08:25
Jag förstår verkligen grejen.
00:08:31
Jag förstår verkligen varför du gör det och det är säkert toppen.
00:08:33
Men jag bara känner tröttheten av att komma in i det här teamet, göra någonting, paja det här testet någonstans
00:08:45
och se mig in i den här filen och bara ""ja, det här ska jag fixa nu"".
00:08:51
Jag bara känner tröttheten komma över mig.
00:08:56
Det kommer ju vara en utmaning, det kommer ju oundvikligen hända, att det här testet pajar.
00:09:04
Det kommer också vara oundvikligen så att det funkar lokalt.
00:09:07
Men när man kör upp det i pipelinen så pajar det, skickar ut de fel som är typ ""på rad 745 så failade den här expecten som vi har här"".
00:09:19
Och det säger ingenting om varför den har failat.
00:09:23
Det är bara att någonstans i de här tidigare 744-raderna så har vi förstört någonting.
00:09:28
Ja, för att alltså, jag menar, inte för att vara sån, men i min erfarenhet så är ju end-to-end LSE-ledning testet det mest flaky vi har.
00:09:35
Jag kanske bara byggt dem dåligt, jag vet inte.
00:09:38
Jo, absolut. Selenium, samma erfarenhet.
00:09:41
Cypress, samma erfarenhet.
00:09:43
Playwright, så jävla bra.
00:09:47
Alltså jag har ju inte testat än, men jag såg ju snacket där en från Playwright gick igenom.
00:09:53
Det verkar jävligt nice, jag är ju verkligen sugen på att testa det.
00:09:56
Men det är ju sällan jag sätter mig ner och skriver ett test för att jag känner för det.
00:10:00
Bara för att jag kommer ihåg hennes namn nu så var det väl Debbie O'Brien, va?
00:10:05
Från Microsoft tror jag, som sitter i Playwright-teamet.
00:10:10
Jag tror hennes snack finns väl på Youtube, så vi kan väl länka det.
00:10:14
Det var ju också då jag plockade upp Playwright.
00:10:17
Men det är någonting med Playwright som gör att det är väldigt trevligt.
00:10:20
De har ju typ lånat API från Testing Library, alltså som ReactTester Library Review.
00:10:27
Alltså att du testar från användarperspektiv i det att du ska inte använda CSS-selektorer för att ta tag i element.
00:10:35
Du ska inte querya sånt, du ska bara testa från användaren.
00:10:38
Så typ, jag vill klicka på en knapp som det står det här på.
00:10:44
Jo, men samarbetade de inte också med, om det var Kency Dodds eller Testing Library, sa de?
00:10:50
Jo, det var inte att de bara snodde det rakt av, utan det var nog väldigt tydligt att
00:10:54
det här API är svinajs, vi vill köra i Playwright också.
00:10:57
Jo, men att de har gått igenom det tillsammans och jobbat med det och itererat över det tillsammans.
00:11:02
Ja, så kan det verkligen vara.
00:11:05
Men det är i alla fall inbyggt i Playwright, så du behöver inte ett Playwright Testing Library som wrapper.
00:11:11
Nej, men alltså jag gillar ju Testing Library, det måste jag ju ändå säga.
00:11:17
Ja, och jag vet inte, det är någonting med allt det här som gör det väldigt bra.
00:11:20
Playwright är också väldigt bra på att göra, när någonting faktiskt går fel, som händer hela tiden,
00:11:28
så har de ändå väldigt bra verktyg för att lösa det.
00:11:32
För det ena så är det att de spelar in en film på allt de gör, om man vill.
00:11:41
Så du kan få ut en film som är i en browser, de visar allting, så de har klickat på allting de har gjort.
00:11:47
Sen kan man få ut något som de kallar för en trace, och det är liksom att de har
00:11:51
Jag tänkte att du har spelat in, eller du har sparat ett snapshot av statet i webbläsaren
00:12:00
mellan varje action som tas.
00:12:03
Så att du kan till exempel öppna upp den i en browser och köra inspect för att kolla hur var statet i det här.
00:12:09
Du kan se nätverksloggen, du kan se konsolloggen, du kan se allting sånt och felsöka utifrån det.
00:12:16
Sen har de också en väldigt bra debugger, som är att du kan köra igång tester lokalt
00:12:21
och så kan du steppa igenom det med en debugger.
00:12:24
Enda jag stömmer på är att jag inte hittat att det går att sätta breakpoints.
00:12:29
Så att klickar man play så måste man vara med på pausknappen, när man vill stanna,
00:12:34
istället för att man bara kan stanna av sig själv.
00:12:36
Och i ett test som är tusen rader långt och tar två minuter att köra så är det lite jobbigt
00:12:41
om man missar det man vill stanna inför när man har kommit halvvägs.
00:12:46
Jag undrar om de hade det scenariot i åtanke när de gjorde det här.
00:12:49
""Åh, men tusen rader långt test, absolut!""
00:12:52
Jag vet inte om det är långt.
00:12:54
Det är absolut det längsta testet jag har skrivit i hela mitt liv.
00:12:57
Men det känns så jävla bra nu. Jag vill bara skriva långa tester.
00:13:02
Men, usch.
00:13:03
Men alltså, hade inte de någon sån här grej också där du kunde sätta upp hela skalet av testet
00:13:09
genom att klicka i guvet?
00:13:11
Jo, precis. Det är ungefär samma som du använder till Cinderbugger,
00:13:14
alltså samma tooling, att du kan spela in vad du klickar på.
00:13:18
Min erfarenhet, jag har inte kört det jättemycket,
00:13:21
min erfarenhet är att den ger oftast mer selekta på den här CSS-klassen.
00:13:27
Och så blir det en lång CSS-selektor med ""den ska ha en direct child som är det här""
00:13:32
""som har en sibling som är det där"" med den här CSS-klassen.
00:13:36
Och det blir ju flaky direkt. Särskilt när man, som de flesta gör idag,
00:13:41
kör genererade CSS-klasser. För då smäller ju testet så fort det bygger om.
00:13:46
Mm.
00:13:48
Så jag tycker det är väldigt bra. Och också så här, mycket smarta grejer.
00:13:53
Typ att när man kör i, eller det finns en config som man kan ställa in
00:13:58
att den ska retrya testerna. Så att om de smäller, och på grund av att de är flaky till exempel,
00:14:04
då kan den liksom, ""ja men jag har tre retries"" så då kör den bara om testerna.
00:14:08
Och fortsätter. Och sen om det smäller efter tre, då smäller hela testet.
00:14:13
Men också då att då finns det liksom config som hänger ihop med den här trace,
00:14:17
alltså ska jag spara en trace eller inte? Då finns det typ ""ja den är på"" eller ""av"".
00:14:22
Men det kan också vara att den är på på första retryen.
00:14:26
Så att du liksom får inte overheaden på att spela in trace när du kör testerna
00:14:32
och de funkar. Så då går testet snabbt, eller snabbare, när de funkar.
00:14:37
Men smäller de, då kommer den att retrya och så kommer den att spara ner en trace andra gången.
00:14:41
Vilket gör att testet tar lite längre tid att köra, men det spelar ingen roll.
00:14:45
Och det känns genomtänkt.
00:14:49
Overhead.
00:14:53
Ja men det måste jag säga, jag gillar också så här retriesen, då kan den ligga i pipen
00:14:57
och bara ticka pengar.
00:14:59
Nej jag skojar bara.
00:15:02
Jag undrar om min kund betalar för de här utröna retriesen jag kör.
00:15:07
Jag vet inte riktigt.
00:15:09
Vi kör, alltså jag tror inte, det är inte så många som kör, vi kör den i GitHub
00:15:13
på just en-till-en testerna och sen har vi en annan egen pipeline för
00:15:18
liksom själva bygget och sånt.
00:15:20
Men jag tror inte så många andra team kör det, så jag tänker att vi ligger säkert
00:15:24
under någon gräns. Det är säkert lugnt.
00:15:27
Jag hade jäkla problem i CircleCI med flaky tester, att man bara körde om och om igen
00:15:32
och det bara... pengar.
00:15:35
Ja, det kan jag förstå.
00:15:36
Slurpade pengar.
00:15:38
Ja, nej vet inte, så nu sitter jag och funderar på om jag ska skriva lite fler tester
00:15:45
som täcker edge cases liksom.
00:15:47
Och då kan man ju kanske, då behöver man inte göra dem tusen rader långa,
00:15:51
tänker jag mig.
00:15:52
Men om du också då för dina edge cases behöver hitta ett sätt för att generera upp datan.
00:15:57
Ja, jag vet, då är jag liksom tillbaka på allt.
00:16:00
Då går det liksom.
00:16:02
Då hade du ju lika gärna kunnat splitta upp där.
00:16:07
Vad säger resten av teamet om det här beteendet? Är de nöjda?
00:16:10
Nej, alltså vi må programmera ju 100% egentligen.
00:16:14
Men det här har du 100% gjort på skuggorna.
00:16:17
Ja, det här är exakt. Det här är liksom saker jag har gjort samtidigt som jag har stött i samtal med de andra
00:16:22
och varit halvengagerad så har jag liksom stött och skrivit det här testet i tre dagar
00:16:26
utan att någon har riktigt tänkt på det.
00:16:29
Och sen så berättade de, just det hörrni, kan ni kodgranska mitt test?
00:16:34
Det är bara tusen rader.
00:16:35
Kan ni kodgranska mitt tusen radertest?
00:16:38
Fy fan vad äckligt.
00:16:40
De sa, nej det tänker vi inte göra.
00:16:44
Och då sa jag, okej då mörks det ja.
00:16:46
[skratt]
00:16:48
Så att vi har inte så stark kodgranskningskultur i teamet i och med att vi må programmera heller.
00:16:56
Så att det fanns inte en chans att någon skulle kolla den där koden.
00:17:01
Nej, det är också ett test.
00:17:04
Ja, exakt. Det är inte hela världen om det smäller.
00:17:07
Men när jag skrev det här testet så hittade jag kanske tre små buggar som behövde fixas.
00:17:14
Så det är ändå något.
00:17:17
Men har du gjort den här filen bra nu?
00:17:21
Har du separerat den ut den i olika sektioner där du har headlines över vilken sektion och vilket steg du befinner dig på
00:17:28
så att den i alla fall är läsbar så att man ser tydligt det här, det här, det här?
00:17:32
Den är absolut läsbar.
00:17:34
Jag har kommentarer på vad den gör i olika steg.
00:17:37
Och jag ska säga att Playwright är ganska lättläst ändå.
00:17:41
Det är typ ofta så här ""await page.getbyrollbutton name bla bla bla""
00:17:48
Det är svårt att missuppfatta vad den koden gör.
00:17:52
Ja, man tycker ju det när man är mitt inne i saker också.
00:17:57
Och sen så sitter man där och kollar på ett Capybara-test i Ruby on Rails.
00:18:02
Det är så folk kommer känna sig när de tittar på det här testet om ett halvår igen.
00:18:08
Även jag kanske, om det ska sägas.
00:18:10
Ja, du bara ""men jag skrev jättebra kommentarer"".
00:18:13
Ja, för att du var i kontexten.
00:18:15
För att det maked sense i kontexten.
00:18:17
Det är mycket möjligt att det är det som är verkligheten.
00:18:22
Men det som också, jag vet inte, om jag ska återkomma till just end-to-end-tester
00:18:27
det jag också tycker är nice är att vi har fått till en setup där vi verkligen testar så mycket som möjligt.
00:18:34
Alltså vi spinner upp en Postgres-databas till exempel när vi kör våra tester.
00:18:39
Som vi kör in alla våra databas-migreringar mot.
00:18:43
Och sen på den i sin tur så mockar vi nästan ingenting på tal om att stallägare gillar att testa det.
00:18:52
Så mockar vi nästan ingenting.
00:18:56
Eller så här, vi mockar ju, men vi mockar inte i kod.
00:18:59
Utan vi kör ju mock-service-worker som jag väl har hyllat tidigare i poddens historia någon gång.
00:19:05
Det har jag glömt.
00:19:08
Du vet vad mock-service-worker är ändå?
00:19:10
Nej.
00:19:12
Jo...
00:19:13
Nej, det är en service-worker som mockar saker.
00:19:17
Ja, typ så.
00:19:20
Jag försökte söka nu och se om jag hade pratat om det här förut, men det kanske jag inte har.
00:19:27
Någon kan påminna mig om det är så.
00:19:31
Du för världen framåt, det här har vi ju pratat om.
00:19:38
Avsnitt 78 kan man lyssna på, där pratar jag om också mock-service-worker.
00:19:42
Det är ju ett verktyg som gör att man liksom, du mockar inte i själva applikationskoden utan den ligger och fångar upp alla nätverksanrop som görs.
00:19:54
Och så kan man liksom, du kan svara, det blir som att du, den tjänsten du anropar, som att den svarar tillbaka i koden.
00:20:05
Så du behöver inte liksom mocka några tjänster, ingenting.
00:20:08
Och det är också så sjukt trevligt.
00:20:10
Och själva requesterna kan du testa hela liksom.
00:20:12
Ja, exakt.
00:20:13
Request-flödet.
00:20:14
Exakt. Så det gör ju också att en-till-en-tester blir väldigt trevliga.
00:20:18
Typ, nu till exempel så satt vi, vi har liksom en mail-tjänst där vi skickar massa mail ifrån.
00:20:24
Och nu testar jag den i det här en-till-en-flödet genom att jag skriver ner i den här mock-service-worker, den som fångar requestet.
00:20:32
Då skriver jag ner de fångade mailen till disk.
00:20:36
Och sen i mitt en-till-en-test så läser jag upp dem från disk och assertar att det har gått iväg liksom.
00:20:41
Och då vet jag ju att requestet har gått iväg, jag kommer veta att innehållet i mailet blev rätt och så vidare och så vidare.
00:20:46
Utan att faktiskt testa, eller liksom inspektera någon kod eller någonting sånt, eller vad som anropas med vad eller så.
00:20:53
Just det. Och det här kommer jag ihåg. Och du för världen framåt och jag är bara trött.
00:20:59
Ja, det kanske är en repris på det här avsnittet, det var inte så länge sedan, det är typ ett halvår sedan.
00:21:04
Ja, men typ alltså. Men det här, alltså för att, det är ju ganska nice att spinna upp en tom databas som man sen bara purgerar liksom.
00:21:15
Och så får allting bara köra där. Och det kommer jag ihåg att jag försökte med en gång i mitt liv.
00:21:21
Gav upp, grät en skvätt och konstaterade att jag inte för världen framåt.
00:21:27
Här ska jag verkligen erkänna att det här är inte jag som har gjort. Det här är någon kollega till mig som har kanske skrivit, kanske kopierat från någon annan tjänst på bygget.
00:21:38
Där de liksom typ, alltså det är en jävla källskript som jag vet verkligen inte vad den gör för något.
00:21:49
Men hur funkar det där då, är det en dockermiljö som man kör allting i? Så att okej, jag spinner upp den här dbn och sen så kör jag mot den i mina tester, bla bla bla och allt i samma miljö. Eller hur funkar det?
00:21:59
Ja, eller så här, det är väl egentligen två sätt för oss. Vi har en lokal setup som spinner upp en postgres server lokalt och den tror jag bara kör på att du har postgres installerat på datorn, tror jag.
00:22:16
Har du inte postgres då kommer det gå åt helvete?
00:22:21
Ja, jag tror det. Jag försöker hitta koden nu men det är så jävla många filer och så jävla många config filer ifrån den projekten.
00:22:30
Så den bara tycker att den spinner upp en db på en specifik path och den ska du bara ha lokalt?
00:22:35
Ja, precis. Jag tror att det är så. Jag hittar verkligen inte vart det här var. Men det är när man kör lokalt och sen när man kör i, för sen vi kör GitHub Actions som sagt och då i den action konfigurationen eller yaml-filen.
00:22:55
Då kan man spinna upp en postgres i den. Alltså du spesar bara att jag vill ha en service som heter postgres och den ska ha de här värdena och så vidare. Och då finns det i GitHub Actions som en tjänst.
00:23:10
Ja, ja, som en särdhet. Det heter väl inte orb i GitHub Actions säkert. Något typ av sånt.
00:23:16
Ja, jag kommer inte ihåg. Något typ services. Jag kommer inte ihåg. Man spesar att jag vill ha den här servicen. Kanske att den använder docker image för att spinna upp det här. Och sen är det väl typ det.
00:23:30
Så det är, jag vet inte.
00:23:34
När man inser att man måste in och dabla i en yaml-fila så, fy fan.
00:23:38
Men det är typ samma sak. Jag tror att för våra, vi har ju lite tester som faktiskt kör på varje commit också. Eller som kör i vår vanliga pipeline.
00:23:47
Men det är mer integrationstester. Och de kör faktiskt också mot databasen. Och de tror jag spinner upp en postgres in memory liksom.
00:23:59
Kan du förklara för mig vad ett integrationsteste är? Är det som ett kontrakttest?
00:24:03
Det här är ju den eviga frågan. Vad är integration? Vad är end-to-end? Vad är smoke? Vad är unit? Vad har vi mer?
00:24:12
Ja, men alltså unit är ju det de vanliga små. End-to-end för mig är ju ofta ui-test. Klikklicklicklick.
00:24:21
Sen är det ju det här med integrationstest. Och jag vet aldrig vad folk menar när de säger integrationstest.
00:24:27
Nej, alltså jag tror vi kallar det integrationstest för att det är inte ett end-to-end-test. Och det är inte ett unit-test.
00:24:34
Utan det är någonstans mitt emellan. Alltså våra tester testar ofta typ så här, kanske en hel tjänst men även med integrationen till databasen.
00:24:43
Eller typ så här, vi kanske testar, vi har några väldigt komplicerade databas-transaktioner. Sen kör vi prisma så att det går via prisma.
00:24:53
Sen går vi via det som vi testar där och då vill vi testa att det blir rätt i databasen också. Så de spinner upp en test, eller de spinner inte upp en test, de spinner upp en databas.
00:25:02
Och sen testar de specifika funktioner som går mot databasen. Alltså hur de integrerar kanske då med databasen.
00:25:11
Ja, vilket är logiskt och det är väl så jag tänkt att det är. Att det också skulle kunna vara, ja men typ som kontrakttest.
00:25:19
Alltså det här API-erna, snackar de med varandra på rätt sätt som vi förväntar oss att de ska göra.
00:25:25
Men ja, bara förvirrad. Egentligen är det logiskt men ändå förvirrad. Som vanligt, skulle jag vilja säga.
00:25:34
Ja, men det där är svimförvirrande. Och då känns det som att varje gång man kommer till ett nytt ställe så kallar de testen för olika.
00:25:41
Det är samma sak med smoke-test. Det är också en sån grej som jag bara så här, vad är skillnaden mot en-till-en-test?
00:25:48
Men nu tänker jag att smoke-test är typ QA. Alltså typ mitt superduper tusen raders test nu är väl typ ett smoke-test. Att se så här, ja men ingenting har gått sönder.
00:26:00
Men är det ett smoke-test? Alltså jag tycker att ett smoke-test är att man bara testar att det är mest basic fungerar, typ renderar det?
00:26:09
Ja, kanske. Ja, det är sant. Det kan det också vara kanske.
00:26:13
Är det rök liksom, när det förväntas vara det?
00:26:16
Ja, det kanske är sant. Det har du nog rätt i.
00:26:21
Men jag vet inte. Jag vet verkligen inte. Jag är bara glad att jag inte behöver göra. Jag håller mig till unitest oftast, kanske ui-test.
00:26:31
När folk börjar snacka lasttest och sånt, då bara drar jag. Då checkar jag ut.
00:26:36
Ja, lasttester har jag sysslat med lite tidigare i min karriär. Har jag berättat om, det här måste väl vara preskriberat nu, när jag jobbade på Systembolaget
00:26:44
och typ höll på att sänka deras autentiserings-server, inte för externa tjänster utan för alla användare på Systembolaget.
00:26:58
Alltså de kunde inte logga in på sin dator, typ.
00:27:01
Alltså du har ju berättat det för mig, det vet jag ju. Men i vilken kontext du har berättat det, det vet jag inte.
00:27:07
Jag har kollat på vad som sägs i podden och vad som inte sägs. Men det var så här, att jag byggde lite lasttester via något.
00:27:17
Jag tror det var något gammalt Visual Studio verktyg. Om man körde Visual Studio Enterprise så fick man med någon typ av verktyg för att bygga lasttester.
00:27:26
Och de här lasttesterna skrev jag själv. Jag skulle bara göra lite basic-grejer på några nya tjänster jag hade byggt.
00:27:33
Och då fungerade det så att man körde den här från sin dator men man fick installera olika agenter.
00:27:38
Och så skulle man ha ett gäng agenter så att alla agenter kunde skicka en viss mängd trafik.
00:27:42
Så i vår datahall så installerade jag det här på lite slumpfalt utvalda maskiner.
00:27:50
Det var någon som körde någon liten intern tjänst som inte användes ofta. Det var någon som bara låg där och hade någon fileserver.
00:27:55
Så där installerade jag lite sådana här blandade på 5-6 stycken.
00:27:57
Vad är det värsta som kan hända?
00:27:59
Det här är det sjuka. Jag installerade det på mitt konto. Det var inga konstigheter. Jag gjorde det väldigt mycket med allas approval.
00:28:13
Så jag gjorde det här, vi körde lasttesterna. Allting fungerade utmärkt. Alltså inga konstigheter. Jag stängde av lasttesterna.
00:28:20
Gick vidare i livet. Och sen kan det ha varit en två och en halv månad senare så ringer en person från mig från företaget som skötte infrastrukturen.
00:28:32
Och bara tja, vi ser att din användare försöker logga in här med fel lösnord på vår autentisering server typ 3000 gånger i sekunden.
00:28:44
Och jag bara, va? Går tillbaka till min dator. Min dator står framför mig, är upplåst. Jag bara, jag sitter och tittar på min dator nu. Det är inga konstigheter.
00:28:56
Han bara, jag vet inte vad det kan vara. Jag bara, jag kan stänga av den. Jag stängde av min dator. Hände fortfarande ingenting.
00:29:02
Fick gå ner till en mötesrum där de satt. Jag bara, det är ingenting.
00:29:04
Jag bara, vad fan kan ni inte se? Vart kommer trafiken ifrån?
00:29:08
Han bara, jo men den kommer från fem olika servrar där. Det är de här namnen.
00:29:14
Och jag bara, nu börjar det ringa någon liten klocka i mig.
00:29:16
Och jag bara, men vad fan har det här med mitt användarande av lösnord? Varför sitter det ändå pengar där hela tiden?
00:29:24
Och då kom jag på det. Det hade varit obligatoriskt lösnordsbyte den morgonen. Så jag hade bytt lösnord på mitt konto.
00:29:32
Och de här agenterna var tydligen så jävla usla. Så att om de fick, nej det gick inte att logga in. Vad gjorde de? De försökte igen.
00:29:42
Och mitt gamla lösnord var bara inställt på de här agenterna. Så de låg och pingade den här inloggningsservern för att bara kolla.
00:29:50
Vi lever, det är lugnt. Vi finns här.
00:29:52
Men vad var meningen att de bara skulle fortsätta köra i evighet?
00:29:57
Nej, alltså jag avinstallerade dem inte. Men jag hade ju inte en tanke på att de skulle pinga den här jävla servern för att de låg installerade.
00:30:05
Så du körde en gång och städade inte ordentligt?
00:30:09
Jag avinstallerade dem inte efteråt. Det gjorde jag inte. För jag tänkte ändå att vi kanske gör det här någon mer gång. Det kan vara bra att ha kvar dem där.
00:30:16
Men de bara levde vidare?
00:30:19
De levde vidare tills de blev upptäckta av att jag hade blivit tvingad att byta lösnord. Vilket också är en jävla urusel policy. Utan den hade det aldrig hänt.
00:30:28
Tills du slutade?
00:30:32
Ja det är sant och då hade det varit ännu värre.
00:30:36
Då tycker jag ändå att det är najs kanske att det skedde när det fortfarande var kvar.
00:30:43
Det finns en poäng där, det gör det absolut.
00:30:47
Med det så säger vi väl tack för oss för idag kanske?
00:30:52
Ja.
00:30:54
Vi säger så och så hörs vi snart igen.
00:30:58
Hör min energi. Ha det fint allihopa. Hej då.
00:31:02
Hej då.
Tillbaka upp