Ho una domanda generica su come testare le applicazioni di ricerca, e quello che sto cercando sono i riferimenti alle risorse sull'argomento che posso andare a fare ricerche per conto mio. Ho provato la google semi-informata, semi-non orientata, ma questo ha comportato un sacco di distrazioni e vicoli ciechi (o forse le mie capacità di ricerca non sono poi così nette).
Prima un po 'di setup. Quando dico "un'applicazione di ricerca", intendo questo:
- hai alcune origini dati che puoi mettere insieme in un indice di ricerca
- la tua applicazione ha un'API che accetta come input una query di ricerca (parole chiave e, facoltativamente, altre cose), e il suo risultato è un elenco di risultati in ordine di rilevanza dall'indice di ricerca.
- c'è tutta una serie di business logic oltre al semplice recupero dei risultati dall'indice - il risultato finale impostato nell'output potrebbe avere una grande distanza di modifica dal set di risultati originale della ricerca.
- supponiamo che nella realtà, l'indice sia grande e impieghi un po 'di tempo a costruire
L'attività è scrivere test per l'applicazione. La struttura di base di un test è "data la richiesta di ricerca X, mi aspetto che la risposta Y sia costituita da risultati ordinati per pertinenza". Il problema, quindi, è: qual è una buona strategia per generare i dati sottostanti per i test?
Ecco alcuni approcci di cui sono a conoscenza (e che ho usato in pratica):
- Non generare dati di test. Inizia con un indice reale e applica modifiche mirate ad esso per "introdurre" i casi limite per i test in base alle esigenze. Upside: vicino alla vita reale. Aspetti negativi: grande indice di prova; deve essere ricostruito ogni volta che viene apportata una modifica allo schema di indicizzazione; la maggior parte non è utilizzata dai casi di test esistenti.
- Genera dati falsi in modo che per ogni richiesta X sia presente un insieme di risultati Y ben definito e intenzionalmente costruito che verrà restituito. Aspetti positivi: pieno controllo sui dati di ricerca; solo la quantità di dati necessaria per i test, più rapida e facile da modificare. Aspetti negativi: devono ancora ricostruire tutto nelle modifiche dello schema di indicizzazione; dati non necessariamente realistici, che potrebbero lasciare gli aspetti del sistema non testati o sottovalutati; troppa flessibilità e conoscenza del dominio specifica per il test separata dal dominio reale dell'applicazione.
In realtà è qui che finisce la mia conoscenza attuale. Qualcosa mi dice che c'è una buona via di mezzo che consente di testare la flessibilità senza deviare dal modo in cui l'applicazione funziona nella vita reale, o un approccio di test completamente diverso che elimina queste preoccupazioni. Quali approcci potresti prendere in considerazione?