Sono profondamente confuso dalla differenza. Ho letto tante definizioni e spiegano sempre il test funzionale come test del requisito è soddisfatto. Bene, questo è solo riformulare il nome functional test
. Questo non chiarisce la differenza.
Mi interessa un codice reale per dimostrare la differenza.
Supponiamo di avere una funzione in una libreria che esegue l'hashing:
def custom_hasher(scheme, val):
# use many hashing libraries...
def hasher(inlist, scheme):
""" Take a list and outputs the hashed values of a list. """
output = list()
for val in inlist:
output.append(custom_hasher(scheme, val))
return output
Ora per un test funzionale, suppongo che vogliamo testare ['a', 'b']
viene restituito come qualcosa come ['jask34sdasdas', 'asasjdk234sjdk']
dato qualche schema.
Ma questo è solo quello che può fare un test di integrazione! So esattamente quale tipo di input desidero (voglio una buona esecuzione in modo tale che io passi in una lista), o voglio che aumenti l'eccezione di Object has no append method
se passo in un dizionario.
Posso farlo in entrambi. Dov'è la differenza?
Un altro esempio è una web app:
@logged_in # only logged in user can do this
@route("/invite", method=['POST'])
def send_invite(request):
recp_email = request.data['recp_email']
# now do a bunch of logics before and after sending an email
Quindi nel mio test di integrazione, lo farò sicuramente su una rete (far funzionare il server). Invia qualche richiesta a questo URL. Lo stesso vale per il test funzionale.
Come disegnare una linea? In questo caso, posso scrivere un test funzionale che verifica se viene trovata una email guardando il registro di invio in alcune tabelle. Ma questa è una funzione diversa da quella che sto testando (la vista send_invite
).
Quindi non vedo come differenziare i due. Entrambi affermano qualcosa.
Per favore aiuto.