Testleitfaden für Woocommerce

Testleitfaden für Integrationen

Dieser Leitfaden prüft, ob eine Integration das tut, was sie verspricht. Er gilt für jede Umsetzung — ob von uns geliefert, von Ihrem Team gebaut oder aus unserer Spezifikation erzeugt. Jeder Schritt nennt die Vorbereitung, die Durchführung und das Ergebnis, das eintreten muss. Tritt es nicht ein, ist die Integration nicht abnahmefähig.

Sechs der Schritte sind als Ausschlusskriterium gekennzeichnet. Sie prüfen nicht die Bequemlichkeit, sondern die Wirksamkeit der Sperre. Wer sie nicht besteht, hat eine Alterssperre, die sich umgehen lässt — und damit keine.

Abnahme anfragen Zur Installationsanleitung


Vorbereitung

UmgebungTestumgebung von insic, nicht die Produktivumgebung. Bestellungen dürfen keine Zahlung auslösen.
ZugängeAdministratorkonto im Shop, Zugriff auf das Protokoll, Postfach für Testadressen.
WerkzeugeBrowser mit Entwicklerwerkzeugen. Für die Schnittstellen-Schritte genügt „Als cURL kopieren“ im Netzwerk-Tab — ein eigenes Werkzeug ist nicht nötig.
TestdatenEine frische E-Mail-Adresse je Durchlauf. Adressen aus früheren Läufen verfälschen das Ergebnis, weil bereits ein Konto besteht.
AusgangszustandKaufsperre eingeschaltet, geforderter Status verifiziert, Protokollierung der Rückmeldungen aktiv.

Alle Schritte im privaten Fenster durchführen. Eine bestehende Administratorsitzung verfälscht mehrere Prüfungen, weil sie Zwischenspeicher und Berechtigungen mitbringt, die eine Kundin nicht hat.


A — Grundfunktion

A1 · Widget erscheint vollständig

DurchführungVerifizierungsseite als abgemeldeter Besucher aufrufen.
ErwartetDas Widget erscheint mit Beschriftungen, in den Farben des Partners, ohne Fehlermeldung in der Browserkonsole.
Nicht bestandenFelder ohne Beschriftung oder ohne Gestaltung: Die Domain ist nicht freigeschaltet. Leere Fläche: Der Loader wird nicht geladen oder die Kennung fehlt.

A2 · Registrierung legt ein Konto an

DurchführungIm Widget mit frischer Adresse registrieren und die Prüfstrecke durchlaufen.
ErwartetIm Shop entsteht ein Konto mit dieser Adresse. Es trägt eine Kennung des Prüfdienstes.
Nicht bestandenKein Konto vorhanden. Prüfen Sie, ob der Browser-Rücklauf feuert und ob die Kontoanlage über Rückmeldung eingeschaltet ist.

A3 · Rückmeldung erreicht den Shop

DurchführungNach A2 die Statusanzeige beobachten, ohne die Seite neu zu laden.
ErwartetDer Status wechselt selbsttätig. Im Protokoll steht ein Eingang mit dem Ergebnis übernommen.
Nicht bestandenProtokoll leer: Die Rückmeldeadressen zeigen nicht auf diesen Shop. Eingang vorhanden, aber kein Konto gefunden: Die Zuordnung über Kennung oder Adresse greift nicht.

B — Wirksamkeit der Sperre

Der Kern der Abnahme. Vier der sechs Ausschlusskriterien stehen hier.

B1 · Kasse verweigert ungeprüfte Konten

VorbereitungKonto mit Status 0, altersbeschränktes Produkt im Warenkorb.
DurchführungKasse aufrufen und Bestellung abschicken.
ErwartetDie Bestellung wird abgelehnt, mit verständlichem Hinweis und Weg zur Prüfung. Keine Bestellung in der Übersicht.
Nicht bestandenBestellung geht durch, oder der Hinweis erscheint erst nach der Zahlung.

B2 · Sperre hält auch ohne Oberfläche · Ausschlusskriterium

VorbereitungWie B1. Im Netzwerk-Tab die Anfrage der Kasse mit „Als cURL kopieren“ sichern.
DurchführungDie kopierte Anfrage im Terminal erneut senden, unter Umgehung der Oberfläche.
ErwartetDie Schnittstelle antwortet mit einem Fehler. Es entsteht keine Bestellung.
Nicht bestandenDie Bestellung wird angelegt. Dann sitzt die Prüfung im Browser statt auf dem Server — die Sperre ist wirkungslos, weil sie sich mit fünf Zeilen umgehen lässt.

B3 · Geprüfte Konten kommen durch

VorbereitungDasselbe Konto, jetzt mit Status verifiziert.
DurchführungBestellung erneut abschicken.
ErwartetDie Bestellung geht durch, ohne erneute Prüfung und ohne zusätzliche Rückfrage.
Nicht bestandenWeiterhin gesperrt. Häufigste Ursache: Der geforderte Status ist höher gesetzt als der erreichte.

B4 · Widerruf wirkt sofort · Ausschlusskriterium

VorbereitungVerifiziertes Konto aus B3, Warenkorb gefüllt.
DurchführungDen Status beim Prüfdienst zurücksetzen und ohne Abmelden sofort bestellen.
ErwartetDie Bestellung wird abgelehnt.
Nicht bestandenDie Bestellung geht durch. Dann verlässt sich die Integration auf einen gespeicherten Wert, statt vor der Bestellung nachzufragen.

B5 · Nur betroffene Ware ist gesperrt

VorbereitungSperre auf eine Kategorie eingegrenzt, Konto mit Status 0.
DurchführungErst ein freies Produkt bestellen, dann ein gesperrtes.
ErwartetDas freie Produkt geht durch, das gesperrte nicht. Ein gemischter Warenkorb wird abgelehnt.
Nicht bestandenDer gemischte Warenkorb geht durch — dann ließe sich die Sperre durch Beilegen eines freien Artikels aushebeln.

C — Verhalten bei Störung und Angriff

C1 · Ausfall sperrt, statt durchzulassen · Ausschlusskriterium

VorbereitungKonto mit Status 0. Die API-Adresse in den Einstellungen auf eine nicht erreichbare Adresse ändern.
DurchführungBestellung versuchen.
ErwartetDie Bestellung wird abgelehnt. Die Meldung nennt eine vorübergehende Störung, keinen technischen Fehler.
Nicht bestandenDie Bestellung geht durch. Dann genügt es, den Prüfdienst zu stören, um die Sperre auszuschalten.

Adresse anschließend zurücksetzen. Alle folgenden Schritte brauchen wieder eine erreichbare API.

C2 · Rückmeldung ohne Nachweis wird verworfen · Ausschlusskriterium

DurchführungEine gültige Rückmeldung nachbilden, die einem bestehenden Konto Status 2 zuweist — aber ohne Kopfzeile mit dem Token beziehungsweise mit falscher Signatur senden.
ErwartetAntwort mit Fehlercode. Der Status des Kontos bleibt unverändert. Im Protokoll steht abgewiesen.
Nicht bestandenDer Status ändert sich. Dann kann jeder, der die Adresse kennt, sich selbst verifizieren — und, wenn Gutscheine daran hängen, in Serie Geld erzeugen.

C3 · Kein Nachweis, keine Annahme

VorbereitungDas Token in den Einstellungen leeren.
DurchführungEine korrekte Rückmeldung senden.
ErwartetSie wird abgewiesen. Eine Integration ohne gesetztes Geheimnis darf nichts annehmen, statt alles anzunehmen.
Nicht bestandenDie Rückmeldung wird verarbeitet.

C4 · Wiederholung schadet nicht

DurchführungDieselbe gültige Rückmeldung dreimal hintereinander senden.
ErwartetEin Konto, ein Status, ein Gutschein. Keine Dubletten.
Nicht bestandenMehrere Konten oder mehrere Gutscheine. Prüfdienste wiederholen Rückmeldungen bei Zeitüberschreitung — das passiert im Betrieb ohne Zutun.

C5 · Browser-Ereignisse gelten nicht als Nachweis · Ausschlusskriterium

DurchführungIn der Browserkonsole das Ereignis nachbilden, mit dem das Widget eine bestandene Prüfung meldet.
ErwartetDie Anzeige darf sich kurzzeitig ändern, der Status auf dem Server nicht. Eine anschließende Bestellung wird abgelehnt.
Nicht bestandenDer Status wird übernommen und die Bestellung geht durch.

D — Konto und Anmeldung

D1 · Zugang ohne bekanntes Passwort

VorbereitungKonto, das über die Rückmeldung entstanden ist.
DurchführungDie zugestellte Mail öffnen, dem Link folgen, Passwort setzen.
ErwartetNach dem Setzen ist die Person angemeldet. Der Link funktioniert genau einmal.
Nicht bestandenDer Link führt auf die Anmeldeseite des Shopsystems oder lässt sich mehrfach verwenden.

D2 · Anmeldung bricht die Strecke nicht

DurchführungAuf der Anmeldeseite absichtlich ein falsches Passwort eingeben.
ErwartetDie Fehlermeldung erscheint auf derselben Seite. Die Meldung verrät nicht, ob die Adresse bekannt ist.
Nicht bestandenWeiterleitung auf die Standard-Anmeldeseite des Shopsystems, oder eine Meldung wie „Benutzer unbekannt“.

D3 · Abmelden beendet beide Sitzungen

DurchführungAbmelden, dann die Verifizierungsseite erneut aufrufen.
ErwartetDas Widget zeigt die Registrierung, nicht die Strecke des vorherigen Kontos.
Nicht bestandenDie vorherige Prüfstrecke erscheint. Am geteilten Rechner sähe die nächste Person die Daten der vorherigen.

E — Datensparsamkeit

E1 · Der Shop speichert keine Personendaten · Ausschlusskriterium

DurchführungNach einer vollständigen Prüfung alle zum Konto gespeicherten Zusatzfelder ansehen.
ErwartetKennung, Status, Zeitpunkt, zuletzt gelaufenes Verfahren. Sonst nichts.
Nicht bestandenGeburtsdatum, Anschrift, Ausweisnummer oder Bankverbindung sind gespeichert. Auch dann, wenn es „nur zur Anzeige“ geschieht.

E2 · Das Protokoll enthält keine Inhalte

DurchführungProtokolleinträge und Serverprotokoll nach einem Durchlauf durchsehen.
ErwartetZeitpunkt, Art des Vorgangs, Ergebnis. Keine übertragenen Inhalte, keine Passwörter, keine Token.
Nicht bestandenVollständige Rückmeldungen stehen im Klartext im Protokoll.

F — Optionale Funktionen

Nur zu prüfen, wenn eingeschaltet.

F1 · Bestätigungscode

ErwartetOhne Code keine Bestellung. Nach mehreren Fehlversuchen wird der Code ungültig. Ändert sich der Warenkorb, ist erneut zu bestätigen. Ein abgelaufener Code wird abgewiesen.
Nicht bestandenDer Code lässt sich beliebig oft raten oder gilt nach Änderung des Warenkorbs weiter.

F2 · Gutschein

ErwartetGenau ein Gutschein je Person. Er ist an die geprüfte Adresse gebunden und einmal einlösbar. Nach Löschen und erneutem Anlegen des Kontos entsteht kein zweiter.
Nicht bestandenMehrfachausgabe, oder der Code lässt sich mit beliebiger Adresse einlösen.

Abnahmeprotokoll

Zum Ausfüllen und Zurücksenden. Eine Integration gilt als abgenommen, wenn alle Ausschlusskriterien bestanden sind und die übrigen Abweichungen benannt und begründet wurden.

SchrittBestandenBemerkung
A1 Widget vollständig
A2 Konto entsteht
A3 Rückmeldung kommt an
B1 Kasse verweigert
B2 Sperre ohne Oberfläche
B3 Geprüfte kommen durch
B4 Widerruf wirkt
B5 Nur betroffene Ware
C1 Ausfall sperrt
C2 Rückmeldung ohne Nachweis
C3 Kein Geheimnis, keine Annahme
C4 Wiederholung schadet nicht
C5 Browser-Ereignis zählt nicht
D1 Zugang ohne Passwort
D2 Anmeldung bricht nicht
D3 Abmelden wirkt doppelt
E1 Keine Personendaten
E2 Protokoll ohne Inhalte
F1 Bestätigungscode
F2 Gutschein

Geprüft von · Datum · System und Version · Umgebung

Protokoll einreichen


Hinweise zur Durchführung

Warum die Schnittstellen-Schritte nicht weggelassen werden dürfen

B2, C1, C2 und C5 prüfen dasselbe aus vier Richtungen: ob die Entscheidung auf dem Server fällt. Genau das ist die Stelle, an der Integrationen erfahrungsgemäß scheitern — die Oberfläche sieht richtig aus, die Prüfung sitzt aber im Browser. Wer nur durchklickt, bemerkt das nicht.

Testkonten hinterlassen Spuren

Jeder Durchlauf erzeugt ein Konto beim Prüfdienst, im Shop und gegebenenfalls einen Gutschein. Löschen Sie Testkonten nach der Abnahme in beiden Systemen, sonst blockieren sie die Adressen für spätere Läufe.

Nach jeder Aktualisierung erneut prüfen

Ein Update des Shopsystems, des Themes oder eines Zahlungsmoduls kann die Sperre aushebeln, ohne dass jemand die Integration angefasst hat. Die Gruppe B mit rund zehn Minuten Aufwand gehört deshalb in jede Abnahme nach einer Aktualisierung.

Nur gegen eigene Systeme

Dieser Leitfaden beschreibt Prüfungen, die Konten anlegen und Bestellvorgänge auslösen. Führen Sie ihn ausschließlich auf Systemen durch, für die Sie verantwortlich sind, und ausschließlich in der Testumgebung.

Test guide for integrations

This guide verifies that an integration does what it claims. It applies to every implementation — shipped by us, built by your team, or generated from our specification. Each step states the setup, the action and the result that must occur. If it does not occur, the integration is not ready for acceptance.

Six steps are marked as a blocking criterion. They do not test convenience, they test whether the gate actually holds. An integration that fails them has an age gate that can be bypassed — which means it has none.

Request acceptance Installation guide


Preparation

EnvironmentThe insic test environment, not production. Orders must not trigger a payment.
AccessAdministrator account in the shop, access to the log, a mailbox for test addresses.
ToolsA browser with developer tools. For the API steps, „Copy as cURL“ in the network tab is enough — no dedicated tool required.
Test dataA fresh email address per run. Addresses from earlier runs distort the result because an account already exists.
Starting statePurchase gate enabled, required status verified, callback logging switched on.

Run every step in a private window. An existing administrator session distorts several checks because it carries caches and capabilities a customer does not have.


A — Basic function

A1 · Widget renders completely

ActionOpen the verification page as a signed-out visitor.
ExpectedThe widget appears with labels, in the partner’s colours, with no error in the browser console.
Failed ifFields without labels or styling: the domain is not allowlisted. Empty area: the loader is not being fetched, or the partner identifier is missing.

A2 · Registration creates an account

ActionRegister in the widget with a fresh address and complete the verification flow.
ExpectedAn account with that address exists in the shop and carries an identifier from the verification service.
Failed ifNo account exists. Check whether the browser callback fires and whether account creation via callback is enabled.

A3 · Callback reaches the shop

ActionAfter A2, watch the status display without reloading the page.
ExpectedThe status changes on its own. The log shows an entry with the outcome accepted.
Failed ifEmpty log: the callback URLs do not point at this shop. Entry present but no account found: matching by identifier or address is not working.

B — Effectiveness of the gate

The core of the acceptance test. Four of the six blocking criteria are here.

B1 · Checkout rejects unverified accounts

SetupAccount at status 0, age-restricted product in the cart.
ActionOpen the checkout and place the order.
ExpectedThe order is rejected, with an understandable message and a path to verification. No order appears in the list.
Failed ifThe order goes through, or the message only appears after payment.

B2 · The gate holds without the interface · blocking criterion

SetupAs in B1. In the network tab, capture the checkout request with „Copy as cURL“.
ActionReplay the captured request from a terminal, bypassing the interface.
ExpectedThe API responds with an error. No order is created.
Failed ifThe order is created. The check then lives in the browser rather than on the server — the gate is worthless, because five lines are enough to bypass it.

B3 · Verified accounts pass

SetupThe same account, now at status verified.
ActionPlace the order again.
ExpectedThe order goes through, with no repeat verification and no extra prompt.
Failed ifStill blocked. Most common cause: the required status is set higher than the one reached.

B4 · Revocation takes effect immediately · blocking criterion

SetupThe verified account from B3, cart filled.
ActionReset the status at the verification service and order immediately, without signing out.
ExpectedThe order is rejected.
Failed ifThe order goes through. The integration then relies on a stored value instead of asking before the order.

B5 · Only affected goods are blocked

SetupGate limited to one category, account at status 0.
ActionFirst order an unrestricted product, then a restricted one.
ExpectedThe unrestricted product passes, the restricted one does not. A mixed cart is rejected.
Failed ifThe mixed cart passes — the gate could then be bypassed by adding an unrestricted item.

C — Behaviour under failure and attack

C1 · An outage blocks rather than allows · blocking criterion

SetupAccount at status 0. Change the API endpoint in the settings to an unreachable address.
ActionAttempt an order.
ExpectedThe order is rejected. The message refers to a temporary disruption, not a technical error.
Failed ifThe order goes through. Disrupting the verification service would then be enough to switch the gate off.

Restore the endpoint afterwards. All later steps need a reachable API again.

C2 · A callback without proof is discarded · blocking criterion

ActionReproduce a valid callback that sets an existing account to status 2 — but send it without the token header, or with an invalid signature.
ExpectedAn error response. The account status is unchanged. The log shows rejected.
Failed ifThe status changes. Anyone who knows the URL could then verify themselves — and, where coupons depend on it, mint money in a loop.

C3 · No secret, no acceptance

SetupClear the token in the settings.
ActionSend a correct callback.
ExpectedIt is rejected. An integration without a configured secret must accept nothing rather than everything.
Failed ifThe callback is processed.

C4 · Repetition does no harm

ActionSend the same valid callback three times in a row.
ExpectedOne account, one status, one coupon. No duplicates.
Failed ifMultiple accounts or multiple coupons. Verification services retry callbacks on timeout — this happens in production without anyone’s involvement.

C5 · Browser events are not proof · blocking criterion

ActionIn the browser console, reproduce the event the widget emits when verification succeeds.
ExpectedThe display may change briefly; the status on the server must not. A subsequent order is rejected.
Failed ifThe status is adopted and the order goes through.

D — Account and sign-in

D1 · Access without a known password

SetupAn account created through a callback.
ActionOpen the email that was sent, follow the link, set a password.
ExpectedAfter setting it, the person is signed in. The link works exactly once.
Failed ifThe link leads to the shop system’s own login page, or can be used more than once.

D2 · Signing in does not break the flow

ActionEnter a deliberately wrong password on the sign-in page.
ExpectedThe error appears on the same page. The message does not reveal whether the address is known.
Failed ifA redirect to the shop system’s default login page, or a message such as „unknown user“.

D3 · Signing out ends both sessions

ActionSign out, then open the verification page again.
ExpectedThe widget shows registration, not the flow of the previous account.
Failed ifThe previous verification flow appears. On a shared computer the next person would see the previous person’s data.

E — Data minimisation

E1 · The shop stores no personal data · blocking criterion

ActionAfter a complete verification, inspect every additional field stored against the account.
ExpectedIdentifier, status, timestamp, most recent method. Nothing else.
Failed ifDate of birth, address, ID number or bank details are stored — including when it happens „only for display“.

E2 · The log contains no payloads

ActionReview the log entries and the server log after a run.
ExpectedTimestamp, type of event, outcome. No transmitted content, no passwords, no tokens.
Failed ifFull callback bodies appear in the log in clear text.

F — Optional features

Only to be tested where enabled.

F1 · Confirmation code

ExpectedNo order without a code. After several failed attempts the code becomes invalid. A changed cart requires a new confirmation. An expired code is rejected.
Failed ifThe code can be guessed indefinitely, or remains valid after the cart changes.

F2 · Coupon

ExpectedExactly one coupon per person, restricted to the verified address and redeemable once. Deleting and recreating the account does not produce a second one.
Failed ifMultiple issues, or the code can be redeemed with any address.

Acceptance record

To be completed and returned. An integration is accepted when all blocking criteria pass and any remaining deviations are named and justified.

StepPassedNote
A1 Widget complete
A2 Account created
A3 Callback arrives
B1 Checkout rejects
B2 Gate without interface
B3 Verified accounts pass
B4 Revocation takes effect
B5 Only affected goods
C1 Outage blocks
C2 Callback without proof
C3 No secret, no acceptance
C4 Repetition does no harm
C5 Browser event is not proof
D1 Access without password
D2 Sign-in does not break
D3 Sign-out ends both
E1 No personal data
E2 Log without payloads
F1 Confirmation code
F2 Coupon

Tested by · Date · System and version · Environment

Submit the record


Notes on running the tests

Why the API steps must not be skipped

B2, C1, C2 and C5 test the same thing from four directions: whether the decision is made on the server. That is precisely where integrations tend to fail — the interface looks right while the check sits in the browser. Clicking through does not reveal it.

Test accounts leave traces

Every run creates an account at the verification service, one in the shop, and possibly a coupon. Delete test accounts in both systems after acceptance, otherwise they block the addresses for later runs.

Retest after every update

An update to the shop system, the theme or a payment module can defeat the gate without anyone touching the integration. Group B takes about ten minutes and belongs in every post-update check.

Only against your own systems

This guide describes tests that create accounts and trigger checkout attempts. Run it only against systems you are responsible for, and only in the test environment.