Vra

Kom ons sê ons het 'n eenvoudige funksie gedefinieer in 'n pseudo taal.

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

Ons slaag in 'n ongesorteerde lys van getalle en 'n boolean spesifiseer stygende of dalende volgorde. In ruil daarvoor, kry ons 'n gesorteerde lys van getalle.

In my ervaring, sommige mense is beter by die opneem van randvoorwaardes as ander. Die vraag is, "Hoe weet jy wanneer jy 'gedoen' is die opneem van toets gevalle"?

Ons kan begin notering gevalle nou en 'n paar slim persoon sal ongetwyfeld dink aan 'n meer 'n geval dat nie gedek word deur enige van die vorige.

Was dit nuttig?

Oplossing

Moenie mors te veel tyd probeer om te dink van elke Boundryweg toestand. Jou toetse sal nie in staat wees om te vang elke fout eerste keer rond. Die idee is om toetse wat redelik goed het , en dan elke keer as 'n fout nie oppervlak, skryf 'n nuwe toets wat spesifiek vir daardie fout sodat jy nooit weer hoor van dit .

Nog 'n nota ek wil maak oor-kode dekking gereedskap. In 'n taal soos C # of Java waar jou baie kry / stel en soortgelyke metodes, jy moet nie skiet vir 100% dekking. Dit beteken dat jy mors te veel tyd skryf van toetse vir triviale kode. Jy net wil 100% dekking op jou komplekse besigheid logika. As jou volle kodebasis is nader aan 70-80% dekking, doen jy 'n goeie werk. As jou kode dekking gereedskap kan verskeie dekking statistieke, die beste een is 'n blok dekking ", wat dekking van 'n basiese blokke" meet. Ander tipes is klas en metode dekking (wat nie jy soveel inligting wil gee) en lyn dekking (wat is te fyn graan).

Ander wenke

  

Hoe weet jy wanneer jy 'gedoen' is die opneem van toets gevalle?

Jy don't.You kan nie 100% kry, behalwe vir die mees triviale gevalle. Ook 100% dekking (van lyne, paaie, voorwaardes ...) nie vertel wat jy alles randvoorwaardes getref.

Die belangrikste is, is die toets gevalle nie skryf-en-vergeet. Elke keer as jy 'n fout vind, skryf 'n bykomende toets. Gaan dit nie met die oorspronklike program, gaan dit verby met die gekorrigeer program en voeg dit by jou toets stel.

'n Uittreksel uit Die kuns van sagteware toets deur Glenford J. Myers:

  1. As 'n inset toestand spesifiseer 'n verskeidenheid van waardes, skryf toets gevalle vir die einde van die reeks, en ongeldig-insette toets gevalle vir situasies net buite die uithoeke.
  2. As 'n inset toestand spesifiseer 'n aantal waardes, skryf toets gevalle vir die minimum en maksimum aantal waardes en een onder en buite hierdie waardes.
  3. Gebruik riglyn 1 vir elke uitset toestand.
  4. Gebruik riglyn 2 vir elke uitset toestand.
  5. As die inset of uitset van 'n program is 'n geordende stel fokus aandag op die eerste en laaste elemente van die stel.
  6. Verder, gebruik jou vernuf om te soek na ander randvoorwaardes

( Ek het net geplak die absolute minimum vir kopiereg redes. )

Punte 3. en 4. hierbo is baie belangrik. Mense is geneig om randvoorwaardes vir die uitgange vergeet. 5. is OK. 6. regtig nie help: -)

Kort eksamen

Dit is moeiliker as wat dit lyk. Myers bied hierdie toets:

  

Die program lees drie heelgetalwaardes van 'n dialoog insette. Die drie waardes verteenwoordig die lengtes van die kante van 'n driehoek. Die program vertoon 'n boodskap wat sê of die driehoek ongelyksydig, gelykbenige, of gelyksydige.

     

Onthou dat 'n Ongelyksydige driehoek is een waar geen twee kante gelyk is, terwyl 'n gelykbenige driehoek het twee gelyke sye, en 'n gelyksydige driehoek het drie sye ewe lank. Verder het die hoeke teenoor die gelyke sye in 'n gelykbenige driehoek ook gelyk is (dit volg ook dat die kante teenoorgestelde gelyke hoeke in 'n driehoek gelyk), en alle hoeke in 'n gelyksydige driehoek is gelyk.

Skryf jou toets gevalle. Hoeveel het jy? Myers vra 14 vrae oor jou proef gestel en berigte dat hoogs gekwalifiseerde professionele programme gemiddelde 7,8 uit 'n moontlike 14.

Van 'n praktiese oogpunt, ek 'n lys van toetse wat ek glo moet voor aanvaarding slaag. Ek toets hierdie en outomatiseer waar moontlik. Op grond van hoeveel keer dat ek na raming vir die taak of hoeveel tyd ek het gekry, ek brei my toets dekking om items wat vooraf moet slaag om aanvaarding te sluit. Natuurlik, die lyn tussen mos en moet subjektief. Daarna het ek werk outomatiese toetse as foute ontdek.

@Keith

Ek dink jy dit vasgespyker,-kode dekking is belangrik om te kyk na as jy wil om te sien hoe "gedoen" jy is nie, maar ek dink 100% is 'n bietjie onrealisties 'n doel. Strewe na 75-90% sal jy redelik goed dekking gee sonder oorboord gaan ... moenie te toets vir die suiwer ter wille van die slaan van 100%, want op daardie stadium jy net mors jou tyd.

'n Goeie kode dekking gereedskap regtig help.

100% dekking beteken nie dat dit beslis voldoende getoets, maar dit is 'n goeie aanduiding.

Vir Net NCover se heel goed, maar is nie meer open source.


@Mike Stone - Ja, miskien is dit moes gewees het "hoë dekking" -. Ons mik vir 80% minimum, verlede ongeveer 95% dit gewoonlik dalende meeropbrengs, veral as jy 'gordel 'n' draadjies kode

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top