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

Test het uploadcontract, niet een bestandspad.

Gebruik een klein verzonnen bestand om de selectie en acceptatie te controleren en houd het bewijsmateriaal voor serververwerking gescheiden.

7 minuten leestijdQA The Other Way
Een geschreven bestandsselectie-, acceptatie- en verwerkingsdiagram.
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.

Gebruik een klein verzonnen bestand om de selectie en acceptatie te controleren en houd het bewijsmateriaal voor serververwerking gescheiden.
Illustratieve lokale demo met verzonnen inputs, geen klant- of leveranciersinterface.

Er wordt een bestandskiezer geopend, de test selecteert een bestand en de suite verklaart dat de upload voltooid is. De applicatie heeft alleen de invoerselectie ontvangen. Het kan zijn dat het formaat nog steeds wordt afgewezen, dat de validatie mislukt of dat de verwerking nooit wordt voltooid. Een groene selectiestap is een smaller resultaat dan een bruikbaar geüpload document.

Deze handleiding gebruikt Playwright's invoerdocumentatie om een klein lokaal tekstbestand te maken. Het bestand bevat verzonnen inhoud. Het is geen klantenbijlage, identiteitsbewijs of productvoorbeeld. We scheiden het browserinvoercontract van de verwerking die de applicatie daarna uitvoert.

Geef het armatuur een leesbare identiteit

Op een testopstelling moet de naam, het MIME-type en de inhoud worden vermeld. Voor een klein tekstvoorbeeld is een payload in het geheugen gemakkelijker te beoordelen dan een onverklaard binair bestand in een repository. Gebruik realistische, geldige input voor uw product, maar vermijd privébrondocumenten wanneer een gecontroleerd exemplaar de vraag zal beantwoorden.

await page.getByLabel('Demo attachment').setInputFiles({
  name: 'demo-note.txt',
  mimeType: 'text/plain',
  buffer: Buffer.from('Invented demo note\n', 'utf8')
});
await expect(page.getByRole('status')).toHaveText('Selected: demo-note.txt');

Het fragment gaat uit van toegankelijke bestandsinvoer en lokaal UI-gedrag dat de geselecteerde bestandsnaam rapporteert. De bewering bevestigt dat gedrag, en niet succesvolle serveropslag. Houd die grens vast in de testtitel en de verklarende figuur.

Playwright documenteert paden, meerdere bestanden, payload-objecten en wist de selectie via setInputFiles. Selecteer de kleinste invoervorm die bij het hoofdlettergebruik past. Bij een test met meerdere bestanden zijn eisen gesteld aan de volgorde, limieten en individuele fouten; het is niet eenvoudigweg dezelfde controle over het gelukkige pad, herhaald met meer namen.

Gebruik een kiezergebeurtenis alleen als dit de benodigde grens is

Sommige interfaces creëren de invoer dynamisch na een klik op de knop. De invoergids beschrijft het wachten op de filechooser-gebeurtenis vóór de actie en het vervolgens aanroepen van setFiles op de geretourneerde kiezer. Zet de gebeurtenis op de eerste plaats, zodat een snelle kiezer nog steeds verbonden is met de initiërende besturing.

const pendingChooser = page.waitForEvent('filechooser');
await page.getByRole('button', { name: 'Choose demo file' }).click();
const chooser = await pendingChooser;
await chooser.setFiles({
  name: 'demo-note.txt',
  mimeType: 'text/plain',
  buffer: Buffer.from('Invented demo note\n', 'utf8')
});

Dit zijn alternatieve selectiebenaderingen voor verschillende interfaces, en niet twee vereiste stappen in één upload. Automatiseer een native besturingssysteemdialoog niet op basis van geraden schermcoördinaten wanneer de gedocumenteerde invoer- of kiezergrens de actie direct kan uitdrukken.

Selectie, acceptatie en verwerking zijn afzonderlijke toestanden

Na selectie kan de applicatie het bestand inspecteren, naar een server sturen en een achtergrondprocessor uitvoeren. Schrijf de verwachte toestand voor elke relevante laag. Het gebruikersgerichte acceptatiebericht moet betekenen wat het zegt. Als de verwerking nog in behandeling is, mag de test niet het hele kenmerk als voltooid bestempelen.

Voor een daadwerkelijk uploadtraject gebruikt u goedgekeurde staging-opslag en verifieert u het definitieve gecontroleerde record aan de hand van het ondersteunde bewijsmateriaal van het product. Controleer of het juiste document beschikbaar is, en niet alleen of er een spinner is verdwenen. Upload geen verzonnen tests naar de map van een live klant alleen maar omdat de gebruikersinterface het gemakkelijk maakt.

Een bestandsnaam en MIME-type zijn invoergegevens en geen onafhankelijk bewijs van de bestandsinhoud. Een tekstpayload met de naam image.png is geen geldige afbeelding. Kies opzettelijk ongeldige specimens bij het testen van afstoting en geldige specimens bij het testen van acceptatie. Leg uit welk contract elk exemplaar moet uitoefenen.

Houd ongeldige gevallen klein en nuttig

Het product kan een niet-ondersteund formaat, een te grote invoer, een leeg bestand of een duplicaat weigeren. Stel het verwachte beleid van het applicatieteam vast voordat u deze beweringen schrijft. Bedenk geen maximale grootte en ga er niet vanuit dat een browseracceptatiekenmerk de volledige beveiligingsregel is.

Controleer de uitleg en veilige volgende actie voor een afgewezen bestand. Een gebruiker moet een ander bestand kunnen kiezen of de selectie kunnen verwijderen als dat het beoogde ontwerp is. Het opschonen van de test is ook belangrijk: een geaccepteerde staging-upload kan blijven bestaan ​​nadat de browser is gesloten, dus regel het verwijderen van records via een goedgekeurde route.

Houd armaturen en daaruit voortvloeiende storingsartefacten onder een privacybeoordeling. Kleine verzonnen inputs zijn gemakkelijker te inspecteren en veiliger te verspreiden dan vastgelegde echte documenten. Schermafbeeldingen en sporen kunnen geselecteerde bestandsnamen onthullen, zelfs als de bestandsbytes niet zijn bijgevoegd.

AnyTest beschrijft dat agenten een web-app verkennen en end-to-end-tests bouwen voor menselijke beoordeling. Gebruik deze grenzen om elk voorgesteld bestandstraject te beoordelen: geselecteerd, geaccepteerd, verwerkt en beschikbaar. Deze handleiding beweert niet dat er sprake is van een specifieke AnyTest-uploadinterface of validatie-integratie. Het voordeel is een duidelijk artefactcontract dat voorkomt dat een succesvolle invoeractie een valse belofte over serverresultaten wordt.

Veelgestelde vragen

Bewijst het selecteren van een bestand dat de upload voltooid is?

Nee. Selectie, acceptatie en uiteindelijke serververwerking zijn afzonderlijke bewijzen.

Kan het armatuur een echt klantdocument gebruiken?

Gebruik uitgevonden of goedgekeurde testmonsters. Vermijd privébestanden wanneer gecontroleerde inhoud de testvraag beantwoordt.

Bronnen