Come testare un algoritmo con più input?

1

Voglio controllare un gruppo di algoritmi che ha fino a 8 opzioni di input. L'idea nativa sarebbe quella di verificare tutte le possibilità tramite la forza bruta. Come posso ridurlo senza tralasciare le combinazioni richieste?

Poiché non lo conosco meglio, sto usando loop multipli che terminano nel peggiore dei casi in una complessità di O(n8) .

Per dare un suggerimento su quali sono questi input:

  • Conteggio punti dati (predefinito 28 ma può essere 14-70 o qualsiasi altra cosa > 5)
  • Indice relativo al giorno relativo basato sui punti dati
  • Preferenze (limitato a 3)
  • Temperatura (limitata a 34-38 ° C in incrementi di 0,05)
  • Un indicatore su un giorno (limitato ai possibili valori dai punti dati)

Ho più algoritmi che hanno la stessa interfaccia, ma alcuni algoritmi concreti usano solo alcuni campi e non tutti. Tuttavia dovrei aver bisogno di controllare anche quegli altri casi poiché l'algoritmo potrebbe essere stato aggiornato e il test è stato dimenticato per alcuni motivi?

Hai alcune buone pratiche su come controllare l'algoritmo?

    
posta rekire 19.10.2015 - 12:37
fonte

1 risposta

2

Dovresti scrivere test per la logica come è ora - non come potrebbe essere in seguito o per qualche ipotetico caso di test.

I test unitari dovrebbero essere veloci, quindi concentrati sui test delle linee di corsa e quelli ai limiti dei parametri.

Se il numero di casi che ti preoccupa, alcuni framework di test unitari come NUnit ti permettono di specificare un intervallo di valori e generare un test per tutti loro. Può anche crunch combinazioni di parametri. Quindi supponi di avere i parametri X e Y in cui X potrebbe essere 1 o 2 e Y potrebbe essere 1-5, creerebbe tutti i possibili casi per te.

Se do desidera testare tutte le possibili combinazioni, ciò è perfettamente accettabile ma probabilmente dovrebbe avvenire al di fuori del normale ciclo di test delle unità di sviluppo. Forse come test di integrazione o di ammollo che dicono, esegui una volta ogni build / settimana ecc.

    
risposta data 19.10.2015 - 12:50
fonte

Leggi altre domande sui tag