Che cos'è un modello di test di integrazione per una permutazione estensibile dei casi (ad esempio dimensioni dei dati seme e filtro per dette dimensioni)?

-3

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.

    
posta Andrew Cheong 20.11.2018 - 13:04
fonte

1 risposta

2

Penso che la cosa che stai cercando sia un test guidato dai dati.

Quando si ha questo tipo di situazione in cui ci sono molti test simili che seguono tutti lo stesso test guidato dai dati del modello, dove si scrive un singolo test e si elencano una serie di parametri diversi da passare ad esso, può ridurre il volume di codice che è necessario scrivere senza compromettere la copertura del test.

Quindi nel tuo caso potresti scrivere un test che accetta un filtro e un set di risultati attesi come parametri.

Quindi disponi di un intero blocco di vari filtri e dei risultati attesi che eseguono tutti lo stesso test.

    
risposta data 20.11.2018 - 14:29
fonte

Leggi altre domande sui tag