QA The Other WayKwaliteitsborging voor het tijdperk van door AI geschreven tests. QA The Other Way.
Praktische QA

Zet de klok vooruit, niet de testlooptijd.

Test de vervaldatum aan de browserzijde met gecontroleerde tijd, terwijl u de servertijd en het echte wachten buiten de claim houdt.

7 minuten leestijdQA The Other Way
Een geschreven klok- en timergrensdiagram.
Geschreven redactionele illustratie.
Illustratieve video bij dit artikel. Engelse tekst op het scherm; selecteer ondertitels voor deze taal.

Vertaalde editie. Technische identificatiegegevens blijven in hun oorspronkelijke vorm.

Test de vervaldatum aan de browserzijde met gecontroleerde tijd, terwijl u de servertijd en het echte wachten buiten de claim houdt.
Illustratieve lokale demo met verzonnen inputs, geen klant- of leveranciersinterface.

Na een lange periode van inactiviteit verschijnt er een herinnering. De test wacht de hele periode. Dat maakt het gebruik van de suite duur, dus iemand vermindert de vertraging bij een speciale build. Nu wordt bij de test niet langer dezelfde timingregel toegepast. Gecontroleerde browsertijd biedt een ander pad, op voorwaarde dat het resultaat eerlijk wordt genoemd.

Deze handleiding gebruikt Playwright's klokdocumentatie om een kleine lokale herinnering te controleren. Het visuele aspect is een verzonnen aftelling, geen productiesessie of prestatiebenchmark. We controleren de tijd aan de browserzijde om het geselecteerde gedrag uit te oefenen. We beweren niet dat het vooruitzetten van die klok een externe server verandert, een echt token laat verlopen of elke planningsvoorwaarde opnieuw creëert.

Scheid de wandklok van de timer

Een applicatie kan de huidige datum lezen, een time-out plannen of met een interval updaten. Deze mechanismen zijn met elkaar verbonden, maar een test moet weten welke het gedrag aandrijft. Een datumlabel waarop morgen staat en een terugbelsignaal dat over zestig seconden afgaat, zijn verschillende contracten.

De klokgids van Playwright beschrijft het beheren van tijd-API's, inclusief datum en timers. De vaste-tijdmethode verandert de gerapporteerde tijd zonder de timers vooruit te zetten. Het installeren van de klok zorgt voor een bredere gecontroleerde opstelling. Kies de methode op basis van de daadwerkelijke regel van de toepassing, en niet op basis van het voorbeeld dat het gemakkelijkst te plakken is.

Voor onze demo plant de pagina een herinnering via setTimeout. Installeer de gecontroleerde klok voordat de timingcode van de pagina begint. Blader vervolgens bewust door het terugbelschema:

await page.clock.install();
await page.setContent(`
  <p role="status">Waiting</p>
  <script>
    setTimeout(() => {
      document.querySelector('[role=status]').textContent = 'Reminder ready';
    }, 60000);
  </script>
`);
await page.clock.runFor(60000);
await expect(page.getByRole('status')).toHaveText('Reminder ready');

Het fragment gebruikt een lokale HTML-fixture en een geïmporteerde Playwright-verwachting. Het is een mechanismevoorbeeld, geen volledige herinneringsfunctie. De test moet ook nagaan wat iemand kan doen nadat de herinnering verschijnt en wat er gebeurt als hij of zij de herinnering negeert. Het voortschrijden van de tijd kan deze productbeslissingen niet leveren.

Kies hoe gemiste terugbelverzoeken zich gedragen

De klokgids maakt onderscheid tussen het doorlopen van timers en het springen in de tijd. Lees dat onderscheid voordat u lang wachten vervangt. Een systeem dat één keer per seconde wordt bijgewerkt, kan zich anders gedragen als elke geplande callback wordt uitgevoerd, vergeleken met een sprong die simuleert dat een browser na een pauze wordt ontwaakt.

Gebruik runFor wanneer het geselecteerde scenario voortgang vereist met geplande callbacks. Overweeg fastForward voor een ander scenario waarin gemiste timing van belang is, volgens de gedocumenteerde semantiek. Beschouw de twee operaties niet als onderling uitwisselbaar, alleen maar omdat beide op een later tijdstip plaatsvinden. Een testnaam moet zeggen welke situatie deze vertegenwoordigt.

Bewaar een klein hoesje voor de grens net vóór de herinnering en een ander voor het punt waarop deze zou moeten verschijnen. Voor een herhalende timer voegt u de herhalingsregel alleen toe als de functie dit belooft. Eén enkele laatste bewering kan een vroege herinnering of meerdere dubbele meldingen missen.

Browsertijd is niet de klok van de server

Een echte sessie kan verlopen volgens het serverbeleid. Het verplaatsen van de browserklok verandert dat beleid niet. Een aftelling van de UI kan verlopen terwijl de server het verzoek nog accepteert, of de server kan het verzoek afwijzen voordat de UI het merkt. Dat zijn verschillende bewijsstukken die afzonderlijk moeten worden getest.

Voor een geverifieerde functie moet u vaststellen of de bron van de waarheid een serverreactie, een vervaltijdstempel of een lokale timer is. Gebruik goedgekeurde staging-inputs en gecontroleerde identiteiten. Wijzig nooit de sessie van een live account of de systeemklok van een machine, alleen maar om een ​​illustratieve timingcontrole gemakkelijk te maken.

Tijdzone en landinstelling zijn een andere grens. Een timertest valideert niet automatisch een kalenderdeadline rond zomertijdwijzigingen of de weergegeven datum in elke landinstelling. Voeg die gevallen toe aan de echte vereiste in plaats van de betekenis van één groen resultaat uit te breiden.

Laat een nuttig timingcontract achter voor reviewers

Registreer de tijdsbron, het geïnstalleerde mechanisme, de initiële staat, de voortgang en de verwachte grens. Dat korte briefje laat een teamgenoot begrijpen waarom de test geen minuut slaapt en welk gedrag hij nog steeds beschermt. Als de test later mislukt, controleer dan of de applicatie de timing naar een andere laag heeft verplaatst voordat de willekeurige wachttijden zijn verhoogd.

AnyTest beschrijft agenten die een applicatie verkennen en end-to-end-tests bouwen voor menselijke beoordeling. Gebruik het timingcontract om elke voorgestelde vervalreis te bekijken. Deze handleiding beweert niet dat er sprake is van een AnyTest-klokbesturingsfunctie of runner-integratie. Snellere tests zijn handig als de sneltoets de vraag behoudt, en niet als deze stilletjes een andere klok vervangt.

Veelgestelde vragen

Verloopt de browsertijd tijdens een serversessie?

Nee. De browserklok heeft geen controle over de klok van de externe server of het sessiebeleid ervan.

Zijn runFor en fastForward uitwisselbaar?

Nee. Selecteer hun gedocumenteerde terugbelgedrag voor het specifieke timingscenario.

Bronnen