Domanda

Supponiamo di avere una semplice funzione definita in un pseudo linguaggio.

List<Numbers> SortNumbers(List<Numbers> unsorted, bool ascending);

Passiamo in una lista non ordinata di numeri e un valore booleano che specifica l'ordinamento crescente o decrescente.In cambio, si ottiene una lista ordinata di numeri.

Nella mia esperienza, alcune persone sono più a catturare le condizioni al contorno di altri.La domanda è, "Come fai a sapere che quando si e 'di fatto', l'acquisizione di casi di test"?

Possiamo iniziare elenco di casi ora e qualche persona intelligente senza dubbio pensare di 'un altro' caso che non è coperto da nessuna delle precedenti.

È stato utile?

Soluzione

Non perdere troppo tempo a cercare di pensare ogni confine condizione.Il test non essere in grado di catturare ogni bug prima volta intorno.L'idea è di avere le prove che sono abbastanza buona, e quindi ogni volta che un bug non superficie scrivi un nuovo test specifico per il bug in modo che non si sente mai da esso di nuovo.

Un'altra nota sulla copertura del codice di strumenti.In un linguaggio come C# o Java, dove il sono molti get/set e metodi simili, si dovrebbe non le riprese per il 100% di copertura.Questo significa che si sta perdendo troppo tempo a scrivere test per il corretto codice.Si solo desidera una copertura del 100% sulla logica di business complessi.Se la vostra piena codebase è più vicino al 70-80% di copertura, si sta facendo un buon lavoro.Se il tuo strumento di copertura del codice consente a più metriche di copertura, la migliore e ' in blocco 'copertura' che le misure di copertura dei 'blocchi di base'.Altri tipi di sono di classe e metodo di copertura (che non ti danno più informazioni) e la linea di copertura (che è troppo a grana fine).

Altri suggerimenti

Come fai a sapere che quando si e 'di fatto', l'acquisizione di casi di test?

Non.Non è possibile arrivare al 100%, tranne che per i casi più banali.Anche la copertura del 100% (di linee, percorsi, condizioni...) non dico hai colpito tutte le condizioni al contorno.

Ancora più importante, i casi di test sono non scrivere-e-dimentica. Ogni volta che si trova un bug, scrivi un ulteriore test. Di controllo ha esito negativo con il programma originale, controllare che non passa con il programma corretto e aggiungere al vostro set di test.

Un estratto dal L'Arte di Test del Software da Glenford J.Myers:

  1. Se una condizione di ingresso consente di specificare un intervallo di valori, scrittura test case per le estremità della gamma, e le voci di input di casi di test per le situazioni appena oltre l'estremità.
  2. Se una condizione di ingresso consente di specificare un numero di valori, scrittura test case per il numero minimo e massimo di valori al di sotto e al di là di questi valori.
  3. Utilizzare linee guida 1 per ogni condizione di uscita.
  4. Utilizzare linee guida 2 per ogni condizione di uscita.
  5. Se l'input o l'output di un programma è un insieme ordinato di focalizzare l'attenzione sul primo e l'ultimo elemento della serie.
  6. Inoltre, utilizzare il vostro ingegno per la ricerca per altre condizioni di contorno

(Io ho solo incollato il minimo indispensabile per motivi di copyright.)

Punti 3.e 4.di cui sopra sono molto importanti.Le persone tendono a dimenticare le condizioni al contorno per le uscite.5.è OK.6.davvero non aiuta :-)

Breve esame

Questo è più difficile di quello che sembra.Myers offre questo test:

Il programma legge i tre valori interi da una finestra di dialogo di immissione.I tre valori rappresentano le lunghezze dei lati di un triangolo.Il programma visualizza un messaggio che indica se il triangolo è scaleno, isoscele o equilatero.

Ricordate che un triangolo scaleno è uno dove non esistono due lati sono uguali, mentre un triangolo isoscele ha due lati uguali, e un triangolo equilatero ha tre lati di uguale lunghezza.Inoltre, gli angoli opposti uguali i lati in un triangolo isoscele, inoltre, sono uguali (ne consegue anche che i lati opposti uguali gli angoli in un triangolo sono uguali), e tutti gli angoli di un triangolo sono uguali.

Scrivere i vostri test.Quanti ne hai?Myers chiede 14 domande circa il vostro set di test e report di professionisti altamente qualificati programmi di media di 7.8 su un massimo di 14.

Da un punto di vista pratico, ho creato una lista di test che credo deve passare, prima dell'accettazione.I test di questi e automatizzare dove possibile.In base a quanto tempo ho stimato per l'attività o per quanto tempo mi è stata data, rivolgo il mio test di copertura per includere elementi che deve trascorrere prima dell'accettazione.Naturalmente, la linea tra il necessario è soggettivo.Dopo di che, l'aggiornamento di test automatizzati come bug vengono scoperti.

@Keith

Penso che hai azzeccato, la copertura del codice, è importante guardare se si desidera vedere come è "fatto" si, ma penso che al 100% è un po ' irrealistico un obiettivo.Lottano per il 75-90% vi darà abbastanza buona copertura senza esagerare...non prova per il puro gusto di colpire al 100%, perché a quel punto si sta solo sprecando il vostro tempo.

Un buon strumento di copertura del codice aiuta veramente.

La copertura del 100% non significa che sicuramente è adeguatamente testato, ma è un buon indicatore.

Per .Net NCover è abbastanza buono, ma non è più a sorgente aperto.


@Mike Stone - Sì, forse che dovrebbe essere stato "elevato livello di copertura" - il nostro obiettivo è per l ' 80% minimo, passato circa il 95% è di solito di rendimenti decrescenti, soprattutto se si dispone di cintura 'n' bretelle codice.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top