Unità 5 / 11

Automazione dei test API: convalida di contratti, schemi e end-to-end con l'intelligenza artificiale

Guadagni:

  • Capacità di condurre test API approfonditi con il supporto dell'intelligenza artificiale a livello di codice di stato, schema/contratto, regola aziendale e livelli negativi/di autorizzazione
  • Capacità di generare uno schema JSON dalla risposta di esempio ed evitare la pseudo-confidenza di guardare solo il codice di stato con tipo e convalida imperativa
  • Possibilità di testare scenari di sicurezza come autorizzazione e IDOR con dati sintetici e per scopi difensivi solo nell'ambito dell'autorizzazione

La maggior parte dei software moderni comunica tra loro in background tramite API (Application Programming Interface: l'interfaccia in cui due software comunicano in base a un contratto specifico). Quando un'app mobile aggiunge articoli al carrello, invia effettivamente una richiesta a un'API sul server. Il test API verifica che questa conversazione sia corretta, sicura e coerente, indipendentemente dall'interfaccia; È più veloce, più stabile e più approfondito dei test dell'interfaccia utente. L'intelligenza artificiale (AI) è molto efficiente nel test delle API: genera test da una definizione API, estrae lo schema di risposta (il contratto che definisce la struttura dei dati), elenca i casi limite. Ma ancora una volta vale l'avvertenza centrale: l'intelligenza artificiale non conosce le reali regole aziendali della tua API; tende a produrre test superficiali che confermano solo "200 restituiti". Il tuo compito è assicurarti che il test verifichi il contratto effettivo e la logica aziendale.

In questa unità imparerai come impostare test API approfonditi supportati dall'intelligenza artificiale con approcci come Postman, REST Assured e convalida dello schema.

Livelli di test API

Considera i test API a diversi livelli, con l'intelligenza artificiale che aiuta in modo diverso a ogni livello:

1. Codice di stato e risposta di base. La richiesta restituisce il codice di stato HTTP previsto (200/201 per successo, 400/401/404 per errore)? Questo è lo strato più superficiale; L’intelligenza artificiale produce facilmente ma da sola dà falsa fiducia.

2. Convalida dello schema/contratto. La struttura della risposta è adatta al contratto: i campi previsti sono presenti, i tipi sono corretti, mancano i campi obbligatori? L'intelligenza artificiale può generare JSON Schema, lo standard che definisce la struttura di un documento JSON, da una risposta campione e i test possono convalidarsi rispetto a tale schema. Questo è molto più efficace rispetto alla scrittura manuale di un'asserzione basata sul campo.

3. Convalida delle regole aziendali. Il valore reale è qui: "Per un ordine da 1000 TL, il campo sconto dovrebbe essere 100", "un ordine annullato non può essere annullato nuovamente". L’intelligenza artificiale li verificherà solo se gli fornisci le regole; Se non glielo dai, salterà.

4. Negativo e sicurezza. 401 per token non valido, 403 per accesso ai dati di qualcun altro, cancella 400 per corpo non valido. I test di autorizzazione (verifica che un utente possa accedere solo ai propri dati) sono il cuore della sicurezza delle API e vengono eseguiti a fini difensivi.

Suggerimento: non richiedere un test senza dire all'IA di "convalidare non solo il codice di stato, ma anche lo schema di risposta e le regole aziendali". Altrimenti, rimarrai con test che dicono "200 restituiti, superati" ma non noterai che l'API restituisce dati danneggiati.

Prompt debole / Prompt forte

Debole: "Scrivi test per questa API".
Forte: "Scrivi test REST Assuring (Java) per l'endpoint POST/ordine. Accordo: productId e quantità sono obbligatori nel corpo; 201 e {orderId, total, discount, status} vengono restituiti in caso di successo. Regole aziendali: sconto del 10% oltre 1000 TL; 400 se quantità <=0; 401 se token non valido; 403 quando viene visualizzato l'ordine di un altro utente. Test: (1) codice di stato, (2) risposta Convalida dello schema JSON, (3) regola aziendale di sconto, (4) associare ogni asserzione a una regola aziendale esplicita, non limitarsi a controllare 200/201."

Il potente prompt fornisce il contratto, le regole aziendali, gli scenari di sicurezza e le aspettative di convalida dello schema.

Test del contratto: prevenire le separazioni tra i team

Nelle architetture a microservizi (la struttura in cui l'applicazione è divisa in piccoli servizi indipendenti l'uno dall'altro e che comunicano con l'API), la modifica del formato di risposta di un servizio interrompe silenziosamente gli altri servizi ad esso collegati. Il test del contratto – il test che verifica che il contratto API tra il servizio del fornitore e il servizio del consumatore non sia interrotto da entrambe le parti – rileva tempestivamente tali interruzioni. L'idea è questa: il consumatore definisce come “contratto” la forma di risposta che si aspetta dal produttore; Ad ogni modifica, il produttore verifica di essere ancora conforme a questo accordo. Pertanto, quando il nome o il tipo di un campo cambia, il consumatore avvisa la pipeline prima che si blocchi.

L’intelligenza artificiale accelera due compiti in questo contesto: redigere un contratto che rifletta le aspettative dei consumatori da una risposta API esistente e premarcare quale clausola contrattuale una modifica potrebbe interrompere. Ma il contratto stesso è una decisione aziendale: l’esperto determina quali aree sono veramente critiche, quali modifiche interromperanno la compatibilità con le versioni precedenti: i vecchi consumatori continueranno a lavorare. L'AI scrive il contratto; Sei tu che lo approvi.

Suggerimento: l'eliminazione di un campo o la modifica del tipo di campo in un'API rappresenta quasi sempre una modifica sostanziale. L'aggiunta di nuovi campi è generalmente sicura. Il fatto che l'intelligenza artificiale classifichi una modifica come "interessante o sicura" fornisce un rapido controllo di sicurezza prima del rilascio.

Postino o basato su codice?

criterio

Postino/Newman

REST assicurato / codice (Java, C#, JS)

Apprendimento

Facile, visivo

È richiesta la conoscenza del codice

Controllo della versione

Raccolta JSON

Direttamente nel codice sorgente

logica complessa

Limitato (script JS)

Piena potenza di programmazione

Integrazione CI/CD

con Newmann

Direttamente dipendente dalla build

Convalida dello schema

Con script di prova

Potente con libreria

Scala della squadra

piccolo/medio

grande, maturo

L'intelligenza artificiale genera codice per entrambi; Sii chiaro quale vuoi.

Quattro modelli copiabili

1) Test API basati su contratto:

Il tuo ruolo: ingegnere senior di test API. Scrivi test per il seguente endpoint con [strumento/linguaggio]: [metodo + percorso].Contratto: [campi obbligatori, codice di successo, struttura di risposta].Regole aziendali: [regole].Livello di test: (1) codice di stato (2) convalida dello schema di risposta(3) ogni regola aziendale (4) negativo + autorizzazione.Collega ciascuna asserzione alla regola/clausola contrattuale pertinente.

2) Generazione dello schema dalla risposta del campione:

Genera lo schema JSON dalla risposta API di esempio riportata di seguito. Specificare i campi obbligatori, i tipi, i vincoli di formato (data, email, intervallo di numeri). Quindi fornire un esempio di test che venga convalidato rispetto a questo schema. Risposta di esempio: [incolla JSON]

3) Scenari negativi e autorizzativi:

Genera casi di test negativi e di sicurezza per l'endpoint[endpoint]. Include: campo mancante/obbligatorio, tipo errato, valore troppo grande, token non valido/scaduto, accesso a risorsa non autorizzata (IDOR: accesso al record di qualcun altro modificando ID), limite di velocità. Specificare il codice di stato previsto e il corpo dell'errore per ogni scenario. Nota: verrà testato solo sulla mia API, autorizzata.

4) Controllo della pseudo-fiducia:

Dai un'occhiata a questo test API. Questo test rileverebbe se il server restituisse il codice di stato corretto ma FALSEbody/data? In caso contrario, aggiungere la convalida dello schema e delle regole aziendali. Prova: [prova incolla]

tre mini custodie

Caso 1: il potere della convalida dello schema. Un team controllava solo il codice di stato nei test prodotti con l'intelligenza artificiale. In una versione, l'API iniziava a restituire erroneamente il campo totale come testo ("1200"); i test sono rimasti verdi perché ne restituivano ancora 200. L'applicazione mobile si è bloccata. Dopo aver aggiunto la convalida del tipo con il modello "Generazione di schema dalla risposta di esempio", è stato immediatamente rilevato lo stesso errore.

Caso 2 — Divario di autorità (IDOR). Un esperto ha eseguito il test IDOR tra gli “scenari negativi e di autorizzazione” generati dall’IA: ha richiesto l’ID dell’ordine dell’utente B con il token dell’utente A. L’API ha restituito i dati di 200 e B: una grave vulnerabilità di autorizzazione. Questo test difensivo ha chiuso la fuga di dati prima che diventasse attiva.

Caso 3 – Aggirare le regole aziendali. L'intelligenza artificiale ha generato 8 test per l'endpoint di sconto; tutti controllavano 200, nessuno verificava l'importo dello sconto. L'esperto ha aggiunto le regole aziendali al prompt e le ha fatte riprodurre. Nuovi test hanno rivelato che lo sconto è stato calcolato in modo errato al limite di 1000 TL (lo sconto è stato applicato anche a 999). Il controllo dei contratti non è sufficiente; Il controllo delle regole aziendali è un must.

Errori comuni

  • Basta guardare il codice di stato. Per dire "200 sono tornati e sono passati"; non vedere il corpo corrotto (falsa fiducia).
  • Bypassare la convalida dello schema. Non controllare i tipi di campo e gli obblighi; i cambiamenti di tipo passano silenziosamente.
  • Richiedere test senza fornire regole aziendali. L'intelligenza artificiale non conosce le regole; produce solo controllo tecnico.
  • Dimenticando scenari negativi e di diritto. Le vulnerabilità della sicurezza (IDOR, accesso non autorizzato) vengono rilevate solo da questi test.
  • Utilizzo di token e dati reali/di produzione. Utilizzare supporti dedicati e dati sintetici per i test; Non inserire chiavi vere nel veicolo.
  • Test di sicurezza non autorizzati. Esegui test di autorizzazione solo sulla tua API e con autorizzazione.

In sintesi

I test API verificano il parlato di parti di software in modo rapido e approfondito, indipendentemente dall'interfaccia. IA; i test del contratto sono molto efficienti nel generare schemi JSON e scenari negativi/di sicurezza dalla risposta di esempio. Ma i test superficiali che controllano solo il codice di stato danno una pseudo-confidenza. Richiedi tutti e quattro i livelli: codice di stato, convalida dello schema, regola aziendale, negativo e autorizzazione. Imporre tempestivamente le regole aziendali e il contratto; Eseguire test di sicurezza con dati sintetici e solo con autorizzazione.

Compito dell'applicazione

Scegli un endpoint API dal tuo progetto. Chiedi all'intelligenza artificiale di scrivere test a quattro livelli con il modello di "test API basato su contratto". Quindi aggiungere la convalida del tipo/applicazione con la "generazione di schema dalla risposta di esempio" e applicare il "controllo della pseudo-attendibilità". Esegui almeno uno scenario IDOR/autorizzazione nel tuo ambiente di test. Segnalare qualsiasi violazione del contratto o delle regole aziendali riscontrata; Se non riesci a trovarne nessuna, esegui il test su una risposta deliberatamente confusa per dimostrare che l'ha rilevata.

lista di controllo

  • [ ] Ho coperto i quattro livelli di test (caso, schema, regola aziendale, negativo/autorizzazione).
  • [] Ho chiaramente dato il contratto e le regole aziendali ad AI.
  • [ ] Impostato test che convalidano lo schema di risposta (campo, tipo, imperativo).
  • [ ] Ho provato almeno uno scenario di autorizzazione/IDOR in modo difensivo.
  • [ ] Ho utilizzato l'ambiente di test e i dati sintetici anziché i token/dati reali.
  • [ ] Ho dimostrato con un "controllo di pseudo-confidenza" che ogni test rileva la risposta corrotta.