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
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:
-
Nombre de casos de prova generats.
-
Nombre d’errors detectats a cada fase del projecte.
-
Temps i recursos dedicats als procediments de proves.
-
Tipus de proves dutes a terme.
-
Tipus de proves que més errors han detectat.
-
Nivell de qualitat del programari.
-
Mòduls on més errors s’han detectat.
-
Errors que han arribat fins als usuaris finals.
-
Nombre de casos de prova erronis detectats.
EINES DE PROVES DE PRGRAMARI
-
Proves unitàries:
-
JUnit. Automatitza les proves unitàries i d’integració. Proveeix classes i mètodes que faciliten la tasca d’efectuar proves en el sistema per tal d’assegurar la consistència i funcionalitat del programari desenvolupat.
-
-
Proves estàtiques de codi:
-
PMD. Pot ser integrat a diverses eines: JDeveloper, Eclipse, jEdit, etc. Permet trobar en el codi errors en el maneig d’excepcions, codi mort, codi sense optimitzar, codi duplicat…
-
FindBugs. Pot integrar-se a Eclipse. Efectua un escaneig de codi per mitjà del qual troba errors comuns, males pràctiques de programació, codi vulnerable, rendiment, seguretat…
-
YASCA. Permet trobar vulnerabilitats de seguretat, qualitat en el codi, rendiment… Aprofita la funcionalitat dels connectors FindBugs, PMD i Jlint.
-
-
Proves de rendiment:
-
JMeter. Permet efectuar proves de rendiment, d’estrès, de càrrega i de volum, sobre recursos estàtics o dinàmics.
-
OpenSTA. Permet captar les peticions de l’usuari generades en un navegador web, després guardar-les, i poder-les editar per al seu posterior ús.
-
WEbLoad. permet dur a terme proves de rendiment, a través d’un entorn gràfic en el qual es poden desenvolupar, gravar i editar script de proves.
-
Grinder. és un framework (entorn de treball) escrit en Java, amb el qual es poden efectuar proves de rendiment, per mitjà d’script escrits en llenguatge Jython. Permet gravar les peticions del client sobre un navegador web per ser després reproduït.
-
-
Proves d’acceptació:
-
Fitness. Permet comparar el que ha de fer el programari amb el que realment fa. Es poden efectuar proves d’acceptació i proves de regles de negoci.
-
Avignon. Permet als usuaris expressar proves d’acceptació d’una forma no ambigua abans que comenci el desenvolupament. Treballa en conjunt amb JUnit, HTTPUnit…
-
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: RefactorIt, Condenser, JCosmo, Xrefactory, jFactor, IntelliJ IDEA.
-
Visual C++, Visual C#, Visual Basic .NET, ASP.Net, …: Visual Studio.
-
C++: CppRefactory, Xrefactory.
-
C#: C# Refactoring Tool, C# Refactory.
-
SQL: SQL Enlight.
-
Delphi: Modelmaker tool, Castalia.
-
Smalltalk: RefactoringBrowser.
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)