TestFlight: test din iPhone-app før du sender den til Apple
Af Mehdi Azizi
Opdateret , 8 min.
Interne og eksterne testere, betareview, offentligt link og builds, der gælder i 90 dage: TestFlight forklaret enkelt, med tjeklisten før Apple.
Hvad er TestFlight, og hvad bruger man det til?
TestFlight er Apples tjeneste, som lader dig installere din app på rigtige iPhones, før den udkommer i App Store. Du sender en build til App Store Connect, inviterer testere, og de installerer den med TestFlight-appen, som er gratis i App Store. Der findes to slags testere: interne, op til 100 medlemmer af dit team, uden review fra Apple; og eksterne, op til 10.000 personer, inviteret via e-mail eller offentligt link, efter et betareview af din første build. Hver build kan testes i 90 dage.
| Kriterie | Interne testere | Eksterne testere |
|---|---|---|
| Maksimalt antal | 100 | 10.000 |
| Adgang til din konto | Ja, med en rolle | Nej |
| Invitation | Tilføjes til den interne gruppe | E-mail eller offentligt link |
| Apples betareview | Intet | På den første build |
| Til hvem | Dig, en partner, en nærtstående | Venner, de første brugere |
For at bruge TestFlight skal du have en betalt Apple Developer-konto: tjenesten er ikke tilgængelig med en gratis konto. Resten af guiden går ud fra, at du har en, under standardprogrammet: Apples Enterprise-program giver ikke adgang til TestFlight.
På mine apps går hver build, der sendes med EAS Submit, gennem TestFlight og min iPhone, før den sendes til review. Det er der, jeg finder de problemer, man ikke ser under udviklingen.
Send en build til TestFlight
En build er en kompileret og signeret version af din app: er den signeret forkert, afviser Apple den ved upload med ITMS-90034. For at den dukker op i TestFlight, skal du sende den til App Store Connect. Med Expo er det eas build --platform ios og derefter eas submit --platform ios, med et build-image, der er nyt nok til at undgå ITMS-90725. Ifølge Expos dokumentation dukker buildet op i TestFlight, når Apple har behandlet det, typisk efter 10 til 15 minutter. Du kan gøre alt det fra en pc: guiden udgiv en iOS-app uden Mac gennemgår hele kæden.
To detaljer spænder ofte ben første gang:
- Build-nummeret skal ændres ved hver upload. Apple afviser to builds med samme nummer for den samme version. Med EAS slår du automatisk optælling til, og så skal du ikke tænke mere på det.
- Spørgsmålet om kryptering. Indtil du har svaret på spørgsmålet om brug af kryptering, står buildet fast med status Missing Compliance. Du kan svare hver gang i App Store Connect eller erklære det én gang for alle i din apps konfiguration.
Interne testere: dit team, uden ventetid
Interne testere er brugere af din App Store Connect-konto med en tildelt rolle. Apple tillader op til 100, og hver af dem kan installere appen på flere enheder, op til 30.
Deres store fordel: intet betareview. Så snart buildet er færdigbehandlet, uden en automatisk fejl som ITMS-90717, tilføjer du det til din interne gruppe, og så er det tilgængeligt. Det er den rigtige gruppe til dig selv og til en partner eller en nærtstående, som du giver adgang til din konto.
Deres begrænsning: de skal tilføjes som brugere af din App Store Connect-konto. Det passer ikke til fremmede.
Eksterne testere og betareview
Eksterne testere behøver ingen adgang til din konto. Du kan invitere op til 10.000 via e-mail eller offentligt link. Det er den rigtige gruppe til venner, de første brugere og et fællesskab.
Til gengæld tjekker Apple buildet, før det åbnes for dem. Når du tilføjer den første build af en version til en ekstern gruppe, går den til betareview. De næste builds af samme version kræver ikke nødvendigvis et fuldt review.
Før du sender, beder App Store Connect dig om testoplysninger:
- en beskrivelse af betaen, som fortæller testerne, hvad de skal kigge på;
- en e-mailadresse til feedback;
- dine kontaktoplysninger, så Apple kan få fat i dig.
Betareviewet er ikke App Store-reviewet. En build, der er godkendt i TestFlight, kan stadig blive afvist ved udgivelsen.
Betareviewet tjekker, at buildet overholder reglerne, men det endelige review ser også på din produktside, dine abonnementer, dine juridiske tekster og hele oplevelsen. Hav de klassiske afvisningsgrunde i baghovedet. Dem fortæller jeg om i hvorfor Apple afviser en app.
Inviter testere via offentligt link
Det offentlige link er den nemmeste måde at få folk, du endnu ikke kender, til at teste din app. Her er Apples fremgangsmåde med de engelske labels fra brugerfladen:
- Åbn din app i App Store Connect, og gå til fanen TestFlight.
- Under External Testing vælger du din eksterne gruppe.
- Klik på Create Public Link.
- Vælg Open to Anyone for at åbne linket for alle, eller Filter by Criteria for at begrænse det til bestemte enheder og iOS-versioner.
- Hvis du vil, sætter du en grænse for antallet af testere med Set Limit.
Derefter deler du linket, hvor du vil: besked, sociale medier, e-mail. Personen installerer TestFlight-appen, åbner linket og accepterer invitationen.
To ting, du skal vide, før du spreder det bredt:
- Sæt en grænse. Hvis dit link bliver delt mere end planlagt, beholder du kontrollen over antallet af testere.
- Testere via offentligt link er anonyme. App Store Connect viser kun installationsdato, sessioner og nedbrud for dem. Vil du vide, hvem der har testet hvad, så inviter hellere via e-mail.
Hvor længe holder en TestFlight-build?
En build er tilgængelig for testerne i 90 dage. Derefter udløber den, og dine testere kan ikke længere åbne den. Varer din beta længere, sender du bare en ny build før udløbet.
I praksis sender du nye builds meget oftere: ved hver vigtig rettelse. Hver ny build, der tilføjes gruppen, bliver tilbudt dine testere, som henter den i TestFlight-appen.
Få feedback fra testerne
TestFlight har et indbygget feedbacksystem: testeren tager et skærmbillede i din app, kan tegne på det og sender det til dig. Hvis appen crasher, får du en nedbrudsrapport, og testeren kan tilføje kontekst. Du finder det hele i App Store Connect.
Det er nyttigt, men det er ikke nok til at forstå et bestemt nedbrud. På mine apps tilføjer jeg Sentry, som melder fejlen med den kodelinje, der er skyld i den, og PostHog, som viser, hvor brugerne falder fra. Begge virker i en TestFlight-build ligesom i produktion.
Test abonnementer i TestFlight
Hvis din app sælger et abonnement, er det i TestFlight, du tjekker, at det rent faktisk virker. Køb i en TestFlight-build går gennem Apples testmiljø: dine testere bliver ikke trukket penge. Fornyelserne er fremskyndet: hvert abonnement fornyes én gang om dagen, højst seks gange på en uge, uanset den reelle varighed.
Tjek som minimum, at de viste priser er rigtige, at købet låser appen op, og at gendannelsesknappen finder abonnementet efter en geninstallation. Jeg bruger RevenueCat til abonnementerne i mine apps; hele opsætningen, fra produkterne i App Store Connect til paywallen, er beskrevet på siden in-app-abonnementer på iOS.
Det skal du teste, før du sender til Apple
Det her er listen, jeg følger før hver indsendelse til review. Hvert punkt svarer til en afvisningsgrund eller et nedbrud, der kunne undgås.
Første opstart
- Slet appen, geninstaller den fra TestFlight, og åbn den. Det er det, revieweren gør.
- Gå hele onboardingen igennem uden at springe noget over.
- Afvis hver tilladelse (notifikationer, kamera, placering), og tjek, at appen stadig virker.
Pengene
- Paywallen viser priser, varighed og links til brugsbetingelserne og privatlivspolitikken.
- Købet virker, og det gør gendannelsen også.
- Alle konfigurerede produkter er synlige for revieweren: guideline 2.1 kræver, at køb i appen er komplette, synlige og fungerende.
De svære forhold
- Flytilstand og langsomt netværk: en tydelig besked, ikke en hvid skærm.
- Den mindste og den største iPhone, du understøtter: intet skåret af, intet skjult af tastaturet. Det var en afskåret skærm på en lille iPhone, der gav mig en afvisning på Solys.
- Lange tekster, hvis din app er oversat.
Materialet til revieweren
- Kræver din app login, så læg en demokonto i review-noterne, og hav din backend kørende. Guideline 2.1 kræver det udtrykkeligt.
- Review-noter, der med to sætninger forklarer, hvad appen gør, og hvor hovedfunktionen findes.
Bliver din app alligevel afvist, forklarer siden app afvist af Apple, hvordan du svarer uden at miste en uge. Og for overblikket over udgivelsen, fra produktside til lancering, så læs udgiv en app i App Store.
Et testskema, du udfylder på dit build
Download skemaet med 16 scenarier i CSV-format. Det skelner mellem forberedelse, handlingen, der skal udføres, det forventede resultat og det observerede bevis. Importér det i Numbers, Excel eller Google Sheets, og udfyld version, enhed og resultat for hvert forsøg.
For en fiktiv læsedagbog er "gem en side" ikke nok: notér side 24, luk appen helt, start den igen, og find værdien igen. En test, der ikke er udført, forbliver "Skal testes". Har din app intet abonnement, så skriv "Ikke relevant" ved købsscenarierne, med den begrundelse.
Skemaet er et udgangspunkt, du tilpasser, ikke en certificering. Find også App Review-noterne og de andre gratis skabeloner, så du kan forklare revieweren det forløb, du faktisk har tjekket.
Fra TestFlight til App Store
TestFlight er trinnet, hvor din app bliver virkelig: den kører på en rigtig iPhone i hænderne på rigtige mennesker. I forløbet i iOS Kit er det andet trin: byg kernen af appen og test den på din iPhone med TestFlight, før du kobler abonnementerne på og forbereder udgivelsen.
Efter TestFlight kommer Apples review: Apple Review Kit samler min tjekliste før indsendelse og noterne til testeren. Forsiden viser de fire trin til at lave din mobilapp med Claude Code.
Ingen kan garantere dig, at Apple godkender din app: det er Apple, der bestemmer.
Ofte stillede spørgsmål
Hvordan tester man sin iPhone-app med TestFlight?
Send en build til App Store Connect, og tilføj den derefter til en testergruppe. Med Expo kompilerer du den med EAS Build og sender den med EAS Submit: den dukker op i TestFlight, når Apple har behandlet den, typisk efter 10 til 15 minutter ifølge Expo. Dine testere installerer den med TestFlight-appen, som er gratis i App Store. Du skal have en betalt Apple Developer-konto.
Hvordan laver man et TestFlight-link til at invitere testere?
Åbn fanen TestFlight for din app i App Store Connect, vælg din gruppe under External Testing, og klik på Create Public Link. Vælg Open to Anyone eller Filter by Criteria, og sæt en grænse med Set Limit. Testere via offentligt link forbliver anonyme: vil du vide, hvem der har testet hvad, så inviter dem hellere via e-mail.
Erstatter TestFlights betareview App Store-reviewet?
Nej. Betareviewet tjekker, at buildet overholder reglerne, men det endelige review ser også på din produktside, din aldersklassificering, dine abonnementer, dine juridiske tekster og hele oplevelsen. En build, der er godkendt i TestFlight, kan altså stadig blive afvist ved udgivelsen. Kun eksterne testere udløser et betareview, på den første build af en version: interne testere kræver intet.
Hvor mange testere kan man invitere på TestFlight?
Du kan invitere op til 100 interne testere og op til 10.000 eksterne testere. De interne er medlemmer af din App Store Connect-konto, uden betareview, og hver af dem kan installere appen på op til 30 enheder. De eksterne inviteres via e-mail eller offentligt link efter et betareview af den første build. Hver build kan testes i 90 dage.
Kan man teste et abonnement i TestFlight uden at blive trukket penge?
Ja, køb i en TestFlight-build går gennem Apples testmiljø: dine testere bliver ikke trukket penge. Fornyelserne er fremskyndet: hvert abonnement fornyes én gang om dagen, højst seks gange på en uge, uanset den reelle varighed. Tjek som minimum de viste priser, at appen låses op, og gendannelsen efter en geninstallation. Hele opsætningen er beskrevet på in-app-abonnementer på iOS.
Hvad skal man tjekke i TestFlight, før man sender appen til Apple?
Geninstaller appen fra TestFlight, som revieweren gør, og gå hele onboardingen igennem. Afvis hver tilladelse, test køb og gendannelse, og prøv så flytilstand samt den mindste og den største iPhone, du understøtter. Kræver appen login, så forbered en demokonto i review-noterne, og hav din backend kørende.