Supponiamo di avere un servizio che restituisce utenti in determinate categorie, ad es.
- Ascolta un determinato artista.
- Ascolta una determinata playlist.
- Ascolta un determinato genere.
- È tra età X e Y.
- Si trova nell'area geografica Z.
Supponiamo che una% esterna di% equivale a gestire le categorie valide e utilizziamo un CategoryService
per i nostri test di integrazione. Questo dispositivo può o non può venire con categorie definite, ad es. potremmo usare una fixture precaricata con le categorie di produzione attuali, oppure possiamo ripristinare l'apparecchiatura e aggiungere le nostre categorie, eg
categoryServiceFixture.addArtist("Eminem");
categoryServiceFixture.addArtist("Red Hot Chili Peppers");
categoryServiceFixture.addPlaylist("Techno Bunker");
categoryServiceFixture.addGenre("Jazz");
categoryServiceFixture.addAgeGroup("90s Teens", 1970, 1990);
categoryServiceFixture.addCountry("US");
categoryServiceFixture.addCity("New York");
Ancora una volta, il nostro servizio, CategoryServiceFixture
, recupera gli utenti che corrispondono a un determinato filtro, e.g.
listenerTargetingService.fetchUsers(
new ListenerTargetingFilterBuilder()
.addGenres("House", "Tech House")
.addCountries("GB")
.build());
Non penso sia necessario scrivere test per la permutazione ogni delle dimensioni. Penso che sia sufficiente scrivere test come ...
@Test test_findByArtist_noneFound();
@Test test_findByArtist_someFound();
@Test test_findByArtist_invalidArtist();
@Test test_findByArtists_allFound();
@Test test_findByArtists_invalidArtist();
... per ogni dimensione e quindi una serie di test che combina i filtri:
@Test test_findByAllCategories_exactlyOneFound();
@Test test_findByAllButOneCategory_exactlyNFound();
@Test test_findByAllButTwoCategories_exactlyNFound();
// Doesn't need to be exhaustive. This is probably enough.
Quindi ecco dove ho avuto modo di pensare: okay, quindi posso generare a livello di codice i dati seme in modo che il numero di permutazioni trovato in ciascuno dei casi combinati sia sempre calcolabile.
Posso andare avanti da solo, ma sembra che esisterebbe già un modello o un idioma ben definito per questo tipo di test. Che cos'è? La ricerca di cose come "test di permutazione" porta in genere a risultati su metodi in statistica, o articoli su "metodi di test ortogonali" (che sono mirati ma troppo accademici).
Nel caso in cui un pacchetto o uno strumento possano essere raccomandati, sto specificatamente utilizzando Java, JUnit, Mockito, Dagger, ecc.