Optimització de programari

Disseny i realització de proves de programari

Fases de desenvolupament d’un projecte: presa de requeriments, anàlisi, disseny, desenvolupament, proves, finalització i transferència

Error – Depurador

Cicle de vida d’un projecte

Image preview

Fig.1 Cicle de vida en V: fases de  prova

Procediments, tipus i casos de proves

Fig 2.Procés de proves

PLANIFICACIÓ DE LES PROVES

Pla de proves segons IEEE 829-2008 “Standard for Software and System Test Documentation:

  • Identificador del pla de proves
  • Descripció del pla de proves
  • Elements del programari a provar
  • Elements del programari que no s’han de provar
  • Estratègia del pla de proves
  • Definició de la configuració del pla de proves
  • Documents a lliurar
  • Tasques especials
  • Recursos
  • Responsables i Responsabilitats
  • Calendari del pla de proves

DISSENY DE LES PROVES

Tipus de proves. Mètodes, Tècniques i Estratègies

  • Estructurals o de capsa blanca: cobertura de flux de control i compexitat ciclomàtica (CC = nombre de branques – nombre de nodes + 2)
  • Funcionals o de capsa negra: classes d’equivalència, anàlisi dels valors límit, estudi d’errors típics, maneig d’interfície gràfica, dades aleatòries
  • D’integració: proves d’integració ascendent i proves d’integració incrementals descendents
  • de Càrrega i acceptació: proves alfa i proves beta
  • De sistema i de seguretat: proves de rendiment, proves de resistència, de robustesa, de seguretat, d’usabilitat, d’instal·lació
  • De regressió i de fum

Proves unitàries (capsa blanca o capsa negra)

Casos de prova i procediments

Cicle de vida clàssic dels casos de prova:

  • Definició dels casos de prova
  • Creació dels casos de prova
  • Selecció dels valors per als tests
  • Execució dels casos de prova
  • Comparació dels resultats obtinguts amb els resultats esperats

Informació d’un cas de prova

  • Identificador del cas de prova.
  • Mòdul o funció a provar.
  • Descripció del cas de prova detallat.
  • Entorn que s’haurà de complir abans de l’execució del cas de prova.
  • Dades necessàries per al cas, especificant els seus valors.
  • Tasques que executarà el pla de proves i la seva seqüència.
  • Resultat esperat.
  • Resultat obtingut.
  • Observacions o comentaris després de l’execució.
  • Responsable del cas de prova.
  • Data d’execució.
  • Estat (finalitzat, pendent, en procés).

EXECUCIÓ DE LES PROVES

Fig. 3 Execució de les proves

AVALUACIÓ DE LES PROVES I ANÀLISI D’ERRORS

Informe:

  • Nom­bre de casos de prova gene­rats.
  • Nom­bre d’errors detec­tats a cada fase del pro­jecte.
  • Temps i recur­sos dedi­cats als pro­ce­di­ments de pro­ves.
  • Tipus de pro­ves dutes a terme.
  • Tipus de pro­ves que més errors han detec­tat.
  • Nivell de qua­li­tat del pro­gra­mari.
  • Mòduls on més errors s’han detec­tat.
  • Errors que han arri­bat fins als usu­a­ris finals.
  • Nom­bre de casos de prova erro­nis detec­tats.

EINES DE PROVES DE PRGRAMARI

  • Pro­ves uni­tà­ries:
    • JUnit. Auto­ma­titza les pro­ves uni­tà­ries i d’inte­gra­ció. Pro­ve­eix clas­ses i mèto­des que faci­li­ten la tasca d’efec­tuar pro­ves en el sis­tema per tal d’asse­gu­rar la con­sis­tèn­cia i fun­ci­o­na­li­tat del pro­gra­mari desen­vo­lu­pat.
  • Pro­ves està­ti­ques de codi:
    • PMD. Pot ser inte­grat a diver­ses eines: JDe­ve­lo­per, Eclipse, jEdit, etc. Per­met tro­bar en el codi errors en el maneig d’excep­ci­ons, codi mort, codi sense opti­mit­zar, codi dupli­cat…
    • Find­Bugs. Pot inte­grar-se a Eclipse. Efec­tua un esca­neig de codi per mitjà del qual troba errors comuns, males pràc­ti­ques de pro­gra­ma­ció, codi vul­ne­ra­ble, ren­di­ment, segu­re­tat…
    • YASCA. Per­met tro­bar vul­ne­ra­bi­li­tats de segu­re­tat, qua­li­tat en el codi, ren­di­ment… Apro­fita la fun­ci­o­na­li­tat dels con­nec­tors Find­Bugs, PMD i Jlint.
  • Pro­ves de ren­di­ment:
    • JMe­ter. Per­met efec­tuar pro­ves de ren­di­ment, d’estrès, de càr­rega i de volum, sobre recur­sos està­tics o dinà­mics.
    • OpenSTA. Per­met cap­tar les peti­ci­ons de l’usu­ari gene­ra­des en un nave­ga­dor web, des­prés guar­dar-les, i poder-les edi­tar per al seu poste­rior ús.
    • WEbLoad. per­met dur a terme pro­ves de ren­di­ment, a tra­vés d’un entorn grà­fic en el qual es poden desen­vo­lu­par, gra­var i edi­tar script de pro­ves.
    • Grin­der. és un fra­mework (entorn de tre­ball) escrit en Java, amb el qual es poden efec­tuar pro­ves de ren­di­ment, per mitjà d’script escrits en llen­guatge Jyt­hon. Per­met gra­var les peti­ci­ons del cli­ent sobre un nave­ga­dor web per ser des­prés repro­duït.
  • Pro­ves d’accep­ta­ció:
    • Fit­ness. Per­met com­pa­rar el que ha de fer el pro­gra­mari amb el que real­ment fa. Es poden efec­tuar pro­ves d’accep­ta­ció i pro­ves de regles de negoci.
    • Avig­non. Per­met als usu­a­ris expres­sar pro­ves d’accep­ta­ció d’una forma no ambi­gua abans que comenci el desen­vo­lu­pa­ment. Tre­ba­lla en con­junt amb JUnit, HTT­PU­nit…

Referències

Eines per al control i documentació de programari

REFACCIÓ (Refactoring) i Patrons de refacció

  • Reanomenar
  • Moure
  • Extreure una variable  local
  • Extreure una constant
  • Convertir una variable local en un camp
  • Extreure una interficie
  • Extreure el mètode

Metodologia per implementar refacció

  • Desenvolupar el codi font.
  • Analitzar el codi font.
  • Dissenyar les proves unitàries i funcionals.
  • Implementar les proves.
  • Executar les proves.
  • Analitzar canvis a efectuar.
  • Definir una estratègia d’aplicació dels canvis.
  • Modificar el codi font.
  • Execució de les proves.

Eines d’ajuda a la refacció segons el llenguatge de programació

  • Java: Refac­to­rIt, Con­den­ser, JCosmo, Xre­fac­tory, jFac­tor, Inte­lliJ IDEA.
  • Visual C++, Visual C#, Visual Basic .NET, ASP.​Net, …: Visual Stu­dio.
  • C++: CppRe­fac­tory, Xre­fac­tory.
  • C#: C# Refac­to­ring Tool, C# Refac­tory.
  • SQL: SQL Enlight.
  • Delphi: Model­maker tool, Cas­ta­lia.
  • Small­talk: Refac­to­ring­Brow­ser.

CONTROL DE VERSIONS

Funcionalitats

Components: repositori, mòdul, tronc, branca, versió o revisió, etiqueta, cap, clonar, bifurcació, pull, push o fetch, canvi, sincronització, conflicte, fusionar, bloqueig, directori de treball, còpia de treball, tornar a la versió anterior

Classificació: locals, centralitzats o distribuïts

Operacions:

  • D’introducció de dades al repositori: importació de dades, pujar (commit o check in)
  • D’exportació de dades del repositori: baixar (check-out) i actualització (update)

Eines (independents o integrades)

  • Team Foundation Server (TFS): centralitzat i distribuït
  • CVS-Concurrent Version System: centralitzat
  • Subversion (SVN): centralitzat
  • Mercurial: distribuït
  • Git: distribuït

Tècniques per resoldre problemàtiques

  • Bloquejar els arxius utilitzats
  • Fusionar els arxius modificats

Instal·lació, operacions bàsiques i avançades de Git

  • ordres bàsiques: init, status, rm, commit, log i clone
  • ordres avançades: branch, chekout, merge, tag, show, reset, pull, push, remote i (fitxer .gitignore)

Clients gràfics que permeten treballar amb Git: SmartGit, GitKraken o SourceTree o Github Desktop

Repositori Remot Github (https://github.com/monicabuj/) + Gestió d’errors(issue)

Ingegració amb Eclipse (connector EGit)

Comentaris i documentació del programari: Interns i externs (JavaDoc)

Referències

Please follow and like us: