Test della logica con dati esterni [duplicato]

0

Ho un sito programmato in PHP dove faccio più chiamate a server esterni che mi restituiscono un grande xml di dati. Per ogni record dell'xml devo fare un'altra chiamata esterna per ottenere altri dati.

Quindi la mia logica di funzionamento è:

1) crea una richiesta esterna in XML

2) ottieni la risposta XML

3) per ogni record dell'XML fai un'altra richiesta esterna in XML

Quindi ci sono tre funzioni per ottenere tutti i dati per la mia pagina. In teoria per fare dei buoni test ho bisogno di creare un test per ogni funzione, ma il problema è che ogni funzione è collegata con l'altra funzione perché ho bisogno di dati registrati per fare l'ultima funzione.

Quindi è corretto creare un grande test che includa tutte le funzioni in sequenza per avere tutti i dati per realizzare tutte le funzioni o è meglio un altro modo che non conosco?

Faccio prova con PHPUnit ma vorrei sapere se questa pratica è una buona pratica o c'è un altro modo per fare un buon test per questa funzione.

Considera che faccio più richiesta esterna (Punto 3) non solo uno, quindi ho più funzioni per ottenere tutti i dati di cui ho bisogno (ho già tagliato i dati che non mi servono).

Grazie

    
posta Alessandro Minoccheri 25.03.2015 - 09:40
fonte

1 risposta

3

Idealmente, vuoi entrambi test unitari (che testano le singole funzioni) e test di integrazione (che testano tutte le funzioni insieme), non solo uno o l'altro. Avrai anche bisogno di un modo per prendere in giro il servizio web che stai chiamando in modo che questi test non dipendano da questo.

Per indirizzare direttamente alcune delle sotto-domande:

So is correct to create a big test that include all functions in sequence to have all data to make all functions or is better another way that I don't know?

Sì, si chiama test di integrazione. Non è corretto fare affidamento esclusivamente sui test di integrazione, ma sicuramente ne vuoi alcuni.

I make test with PHPUnit but I would like to know if this practice is a good practice or there is another way to make good test for this feature.

Questa parte è essenzialmente una domanda di raccomandazione del software quindi è tecnicamente fuori tema qui, ma da quello che posso dire che il framework ha un modo per deridere i servizi web, dichiarare quante chiamate dovrebbe aspettarsi il servizio di simulazione e cosa dovrebbe restituire ogni volta, quindi dovrebbe fare il lavoro. In generale, utilizzare un framework di test per i test è quasi sempre una buona idea, poiché l'alternativa è scrivere e mantenere un lotto di codice di simulazione del servizio e codice di presentazione del messaggio di errore.

    
risposta data 25.03.2015 - 10:08
fonte

Leggi altre domande sui tag