You are on page 1of 20

Generalitat de Catalunya

Departament d’Ensenyament
Institut Obert de Catalunya
Nom i cognoms

2252 CFGS Desenvolupament d'Aplicacions Multiplataforma


(DAM)

Mòdul 5 – Entorns de Desenvolupament.


UF2 – Optimització de programari
EAC2
(Curs 2015–16 / 1r semestre)

Presentació i resultats d'aprenentatge

Aquest exercici d’avaluació continuada (EAC) es correspon amb els continguts treballats a la unitat 2,
Desenvolupament de programari.

Els resultats d'aprenentatge que es plantegen són:


 Verifica el funcionament de programes dissenyant i realitzant proves.
 Optimitza codi emprant les eines disponibles en l'entorn de desenvolupament

Criteris d’avaluació

La puntuació màxima assignada a cada activitat s’indica a l’enunciat.

Els criteris que es tindran en compte per avaluar el treball de l’alumnat són els següents:
 Correcció i concreció a les respostes.
 Correctesa i claredat en els procediments realitzats.
 Robustesa, claredat, llegibilitat i documentació en el codi generat.

Forma i data de lliurament

Per respondre les qüestions heu d’utilitzar aquest mateix fitxer. Elimineu els apartats Presentació i resultats
d'aprenentatge, Criteris d’avaluació i Forma i data de lliurament.

Un cop finalitzat l’exercici d’avaluació continuada heu d’enviar el document des de l'apartat M5 Lliurament
EAC2 de l'aula, dins del termini establert. Tingueu en compte que el sistema no permetrà fer lliuraments
després de la data i hora indicades.

El nom del fitxer serà el següent: 2252M05_EAC2_Cognom1_Inicial del cognom2. Els cognoms
s’escriuran sense accents. Per exemple, l’estudiant Joan García Santos posaria el següent nom al seu fitxer
de l’EAC2: 2252M05_EAC2_Garcia_S.

Substituïu Nom i cognoms de la capçalera per les vostres dades personals.

Comprimiu tots els fitxers que heu de lliurar (aquest document amb les respostes i els fitxers que us
demanen alguns exercicis) amb el format lliure format zip.

Codi: I71 Exercici d'avaluació contínua 2 Pàgina 1 de 20

2252M05_EAC2_Enunciat_1516S1 Lliurament:
Versió: 02
13/11/2015
Formació professional
Nom i cognoms
Anomeneu aquest fitxer comprimit amb el mateix criteri que l'assenyalat pel fitxer odt:
"2252M05_EAC2_Cognom1_Inicialdelcognom2.zip". Pengeu aquest fitxer comprimit a l'àrea de
lliurament de la plataforma anomenada ”Lliurament EAC2”.

El termini de lliurament finalitza a les 23:55 h del dia 13/11/2015. La proposta de solució de l’EAC es
publicarà el dia 24/11/2013 i les qualificacions el dia 24/11/2015.

Enunciat

1. (1 punt) Proves de programari, refacció i Sistemes de Control de Versions.


Per a cadascuna de les afirmacions següents, indica si és certa o falsa tot escrivint una X a la casella
corresponent. Cada resposta encertada suma 0,025 i cada resposta equivocada resta 0,025.

Afirmació Cert Fals


Les proves de caixa blanca es centren en la implementació d'un programa.
X
Un error no detectat a l’inici del desenvolupament d’un projecte pot arribar
a necessitar 50 vegades més esforços per ser solucionat que si és detectat a temps.
X
A les proves de capsa negra es dissenyen casos de prova que comprovin tots els camins
possibles d'execució del codi.
X
Les proves alfa es realitzen a l'entorn del client
X
Els analistes han programat el codi que verifiquen.
X
Les proves de càrrega valoren la capacitat del sistema per suportar entrades no correctes.
X
Les proves de capsa blanca es centren en la implementació per escollir els casos de
prova.
X
Les proves unitàries les efectuen els analistes.
X
Les proves de càrrega busquen comprovar el rendiment i la integritat de l'aplicació
acabada amb dades reals.
X
Les proves de regressió es realitzen a la vegada que les proves unitàries.
X
Les proves unitàries tenen com a objectiu la detecció d’errors en les dades, en els
algorismes i en la lògica d’aquests.
X
Les proves d'acceptació es duen a terme durant el desenvolupament del programari.
X
Les proves d'acceptació busquen la validació de l'aplicació per part dels usuaris.
X
El mètode de complexitat ciclomàtica consisteix a utilitzar l’estructura de
control del programa per obtenir els casos de prova, que són dissenyats de manera
que garanteixin que almenys es passa una vegada per cada camí del programa.
X
Les proves de sistema les realitzen els mateixos programadors del codi. X

Codi: I71 Exercici d'avaluació contínua 2 Pàgina 2 de 20

Lliurament:
Versió: 02 2252M05_EAC2_Enunciat_1516S1
13/11/2015
Formació professional
Nom i cognoms
Afirmació Cert Fals
Les proves de sistemes busquen detectar errors en l'assoliment dels requeriments.
X
Les proves funcionals són les encarregades de detectar els errors en la implementació
dels requeriments d’usuari.
X
Les proves funcionals busquen la detecció d'errors en la implementació dels requeriments
del desenvolupador.
X
Les proves funcionals les efectuen els únicament els verificadors.
X
Les proves funcionals són les encarregades de detectar els errors en la implementació
dels requeriments d’usuari.
X
Les proves de robustesa valoren la capacitat del sistema per suportar entrades no
correctes
X
Les proves d'integració busquen la detecció d'errors de les interfícies i en les relacions
entre els components
X
Les proves d’usabilitat indicaran les operacions d’arrencada i d’actualització dels
programaris
X
Les proves de regressió cerquen detectar possibles nous errors o problemes que puguin
sortir en haver introduït canvis o millores en el programari
X
WebLoad pot integrar-se a Eclipse i efectua un escaneig de codi per mitjà del qual troba
errors comuns, males pràctiques de programació, codi vulnerable, rendiment, seguretat...
X
Avignon permet als usuaris expressar proves d’acceptació d’una forma no ambigua abans
que comenci el desenvolupament.
X
La refacció és transformar el codi font mantenint intacte el seu comportament, aplicant els
canvis només en la forma de programar o en l’estructura del codi font, cercant la seva
optimització.
X
El patró d'extreure una variable local li assigna a una nova variable local qualsevol
referència a l’expressió en l’àmbit local i serà substituïda per la variable nova.
X
El patró extreure una constant consisteix en convertir en una constant una cadena de
caràcters o un valor numèric i substituir per la constant qualsevol referència a aquesta
cadena de caràcters o valor numèric.
X
El patró convertir una variable local en un camp converteix un atribut en un paràmetre
d'una funció
X
El patró extreure el mètode converteix un tros de codi en un nou mètode
X
El patró extreure una interfície converteix una interfície en atribut de la classe
X
Un sistema de control de versions és una eina d’ajuda al desenvolupament de programari
que anirà emmagatzemant la situació del codi font en moments determinats X

Codi: I71 Exercici d'avaluació contínua 2 Pàgina 3 de 20

Lliurament:
Versió: 02 2252M05_EAC2_Enunciat_1516S1
13/11/2015
Formació professional
Nom i cognoms
Afirmació Cert Fals
Un sistema de control centralitzat disposa a cada ordinador de treball, així com el servidor,
d’una còpia de les versions emmagatzemades
X
Amb un check out, baixar, podem enviar, al repositori, les dades corresponents als canvis
que s’han produït en el servidor local
X
Un repositori és la part principal d’un sistema de control de versions. Són sistemes
dissenyats per enregistrar, guardar i gestionar tots els canvis i informacions sobre totes les
dades d’un projecte al llarg del temps
X
En un cvs només hi ha un sistema per solucionar la problemàtica d’accés simultani a un
mateix fitxer, i és el sistema de bloqueig d’arxius
X
JavaDoc permet la creació de documentació d’API en format HTML
X
git add nomFitxerOcarpeta-admetCaractersComodí Puja el fitxer anterior al repositori
remot
X
En un cvs una actualització, update, permet dur a terme una còpia de seguretat de totes
les dades del repositori a l’ordinador client amb què treballarà el programador
X

2. (2 punts) Sistemes de control de versions.


Utilitzarem un projecte com a repositori local. El nom del projecte serà el vostre nom i Cognoms
concatenats, així pel Jordi Messi el projecte tindrà el nom jordiMessi, en cas contrari no es valorarà aquesta
pregunta.

Crear un projecte nou amb una classe Java, aquesta classe tindrà un atribut.

1. Configuració del repositori local

Fer que GIT consideri el nostre projecte com a repositori. Per això cal:

1. situar-se a la carpeta arrel del projecte (o la carpeta on estigui la nostra feina)

2. teclejar l'ordre:

git init

Realitzeu una captura de la pantalla després d'executar l'ordre anterior.

Codi: I71 Exercici d'avaluació contínua 2 Pàgina 4 de 20

Lliurament:
Versió: 02 2252M05_EAC2_Enunciat_1516S1
13/11/2015
Formació professional
Nom i cognoms

2. Excloure fitxers.

Excloure els fitxers .class. Això es fa posant aquestes extensions al fitxer .gitignore. Pot fer-se, per exemple,
així:

echo *.class > .gitignore

Feu una captura de la pantalla del contingut del fitxer .gitignore:

3. Incloure fitxers al control de versions.

Afegir tot el que hi ha a la carpeta actual (incloent-hi les subcarpetes), podem fer:

git add .

4. Crear una classe nova al repositori i veure el que hi ha pendent de confirmar (entre altres
informacions):

git status

Capturar la pantalla:

5. Capturar la pantalla del Repositori de Git d'Eclipse:

Codi: I71 Exercici d'avaluació contínua 2 Pàgina 5 de 20

Lliurament:
Versió: 02 2252M05_EAC2_Enunciat_1516S1
13/11/2015
Formació professional
Nom i cognoms

6. Confirmar els canvis

Confirmar tots els fitxers modificats o esborrats des del darrer commit i que ja hi estaven inclosos, podem
fer-ho així:

git commit -a -m "missatge de confirmació"

(si hem creat un fitxer nou, en no haver-lo afegit amb git add cap vegada, no s'hi inclouria).

Captureu la pantalla un cop executada l'ordre anterior i git status per verificar que no hi ha canvis pendents:

7. Creació d'un repositori remot, configuració del repositori remot propi i sincronització d'aquest
amb el nostre:

Creeu un repositori remot a https://github.com/ i conecteu-vos-hi, el nom d'usuari del repositori remot
seràn el vostre nom concatenat amb el vostre cognom. En cas contrari la pregunta valdrà 0 punts.

Captureu la pantalla de la conexió i sincronització del repositori remot amb el nostre.

Per poder treballar amb repositoris remots cal indicar l'email, el nom d'usuari (la contrassenya la demanen
en fer ...) i la URL del repositori amb:

branca és la branca que pugem. La branca principal, per defecte, s'anomena master.
git config --global user.name "nomUsuari"
git config --global user.email "correuElectrònic"
git remote add origin https://URLdelRepositori(amb extensió .git)

Codi: I71 Exercici d'avaluació contínua 2 Pàgina 6 de 20

Lliurament:
Versió: 02 2252M05_EAC2_Enunciat_1516S1
13/11/2015
Formació professional
Nom i cognoms

Sincronitzar un repositori remot amb el nostre com a origen

git push -u origin branca

8. Sincronitzar el nostre repositori amb un repositori remot com a origen:

git pull https://https://github.com/xfaus/IOC-EAC2-2015.git

Descarregarem el codi de : https://github.com/xfaus/IOC-EAC2-2015.git

Poseu a continuació una captura de la pantalla amb el resultat de git pull i el directori descarregat:

Codi: I71 Exercici d'avaluació contínua 2 Pàgina 7 de 20

Lliurament:
Versió: 02 2252M05_EAC2_Enunciat_1516S1
13/11/2015
Formació professional
Nom i cognoms

9. Crear una branca al repositori local:

git checkout -b novaBranca

Poseu a continuació una captura de la pantalla:

10. Modificar a continuació el codi i executar altre cop git status, captureu la pantalla i poseu-la a
continuació:

Codi: I71 Exercici d'avaluació contínua 2 Pàgina 8 de 20

Lliurament:
Versió: 02 2252M05_EAC2_Enunciat_1516S1
13/11/2015
Formació professional
Nom i cognoms

11. Realitzar el commit de la branca actual i tornar a executar git status:

Codi: I71 Exercici d'avaluació contínua 2 Pàgina 9 de 20

Lliurament:
Versió: 02 2252M05_EAC2_Enunciat_1516S1
13/11/2015
Formació professional
Nom i cognoms

3. (2 punts) Refacció.
Reescriu la classe Persona tot aplicant, on sigui adient, les següents tècniques de refacció (o
refactorització):

• Extreure una variable local


• Extreure el mètode
• Extreure una constant

La finalitat d'aplicar-les sempre ha de ser bé evitar la repetició de càlculs (és a dir, tenir una solució més
eficient), bé evitar repeticions innecessàries del codi (codi més mantenible).

Una refacció pot haver-se de repetir a més d'un lloc del codi. Pots utilitzar les facilitats de l'entorn i/o fer-hi
modificacions manuals. Només cal entregar el resultat al requadre que hi ha a continuació.

Posa-hi comentaris del tipus // als llocs on has refactoritzat per indicar el patró utilitzat a cada part del codi.
Per facilitar la correcció, escriu en vermell aquests comentaris.

package eac2;

public class Persona{

private final String CNOM = " Nom : "; //EXTRACCIó D'UNA CONSTANT

private final String CCOGNOM = " COGNOM : "; //EXTRACCIó D'UNA CONSTANT

private String nom;

private String cognom;

private int edat;

public void setNom(String n){


nom=n;
}

public String getNom(){

return nom;
}

//EXTRACCIO DEL METODE, DE FET JA HI ERA EL TREIEM DEL CONSTRUCTOR

public void setEdat(int e){

if(e>=0)
{
edat=e;
}

public int getEdat(){

Codi: I71 Exercici d'avaluació contínua 2 Pàgina 10 de 20

Lliurament:
Versió: 02 2252M05_EAC2_Enunciat_1516S1
13/11/2015
Formació professional
Nom i cognoms

return edat;
}

public void aniversari(){

edat++;
}

Persona(String nom, int edat) {


this.nom=nom;
setEdat(edat);
}

public String toString(){

return CNOM+ nom+ CCOGNOM+ cognom;


}

public static void main(String [] args){


Persona p=new Persona(“Pere”,10);
System.out.println(p.CNOM+p.getNom());
}

4. (5 punts) Prova i documentació.


• El mètode buscar busca un enter en un vector d'enters que rep com a paràmetre. Tenim con a
condició que el vector no serà mai null.

• El mètode buscar2 busca un enter en un vector d'enters que rep com a paràmetre. Si el vector és
null, genera una excepció.

• El mètode positius passa a positiu els valors negatius del vector. Si el vector és null, genera una
excepció.

La classe CercaException representa les excepcions que llença la classe anterior.

public class Algorisme {

private final String VECTOR_NULL = "Vector null";

public Boolean buscar (int valor, int vector[]){

int i=0;
Boolean trobat=false;

while(i<vector.length && ! trobat){

if(vector[i]==valor)
{

Codi: I71 Exercici d'avaluació contínua 2 Pàgina 11 de 20

Lliurament:
Versió: 02 2252M05_EAC2_Enunciat_1516S1
13/11/2015
Formació professional
Nom i cognoms
trobat=true;
}
else
{
i++;
}
}

return trobat;
}

public Boolean buscar2 (int valor, int vector[]) throws CercaException {

int i=0;
Boolean trobat=false;

if (vector == null){
throw new CercaException(VECTOR_NULL);
}

while(i<vector.length && ! trobat){

if(vector[i]==valor)
{
trobat=true;
}
else
{
i++;
}
}

return trobat;
}

public void positius (int vector[])throws CercaException{


int i=0;

if (vector == null){
throw new CercaException(VECTOR_NULL);
}

while(i<vector.length){

if(vector[i]<0)
{
vector[i] =vector[i]*-1;
}

i++;
}

public static void main(String []args)

Codi: I71 Exercici d'avaluació contínua 2 Pàgina 12 de 20

Lliurament:
Versió: 02 2252M05_EAC2_Enunciat_1516S1
13/11/2015
Formació professional
Nom i cognoms
{
Algorisme a=new Algorisme();

int vector[]={1,2,34,5,-10};
int vector2[]=null;

try
{
System.out.println(a.buscar(2,vector));
System.out.println(a.buscar(3,vector));

a.positius(vector);
System.out.println(a.buscar2(3, vector2));
}
catch(Exception e)
{
System.out.println("Error :"+e.toString());
}

}
}

@SuppressWarnings("serial")
public class CercaException extends Exception {

public CercaException(String text) {


super(text);
}
}

Per realitzar els punts 4.2., 4.3. i 4.4. cal realitzar un únic projecte d'Eclipse. Caldrà lliurar comprimides les
carpetes src i doc d'aquest projecte juntament amb les respostes a aquest enunciat.

4.1. (2 punts) Realitza el disseny dels casos de prova per comprovar el funcionament correcte de la classe
Algorisme, amb el codi que figura a l'enunciat.

Cal seguir els següents passos:

a) Dissenya les classes d'equivalència. Cal seguir els passos que s'indiquen al punt del material 1.3.2
(Disseny de les proves. Tipus de proves), apartat “Classes d'equivalència” (és a dir, els passos són:
“Identificar les condicions, restriccions o continguts de les entrades i les sortides” i ”Identificar, a partir de les
condicions, les classes d’equivalència de les entrades i les sortides”). Tingues en compte que, per a cada
mètode caldrà trobar les seves classes d'equivalència.
public Boolean buscar (int valor, int vector[])

Condicions:
• D'entrada: El vector valors no ha de ser null.
• De sortida: Torna cert si el valor està al vector i fals en cas contrari, valor i vector tenen els
mateixos valors que abans de cridar a la funció; si el vector és null, es genera una excepció
NullPointerException

Codi: I71 Exercici d'avaluació contínua 2 Pàgina 13 de 20

Lliurament:
Versió: 02 2252M05_EAC2_Enunciat_1516S1
13/11/2015
Formació professional
Nom i cognoms
Classes d'equivalència:
1. Entrada vàlida: El vector valors no és null
2. Entrada invàlida: El vector valors és null
• Les classes d'equivalència que es generarien a partir de les condicions de sortida ja van incloses a
les classes anteriors.

public Boolean buscar2 (int valor, int vector[]) throws CercaException

Condicions:
• D'entrada: El vector valors no ha de ser null.
• De sortida: Torna cert si el valor està al vector i fals en cas contrari, valor i vector tenen els
mateixos valors que abans de cridar a la funció; si el vector és null, es genera una excepció
CercaException

Classes d'equivalència:
1. Entrada vàlida: El vector valors no és null
2. Entrada invàlida: El vector és null
• Les classes d'equivalència que es generarien a partir de les condicions de sortida ja van incloses a
les classes anteriors.

public void positius (int vector[])throws CercaException

Condicions:
• D'entrada: El vector valors no ha de ser null.
• De sortida: Torna cert si el valor està al vector i fals en cas contrari, valor i vector tenen els
mateixos valors que abans de cridar a la funció; si el vector és null, es genera una excepció
CercaException

Classes d'equivalència:
1. Entrada vàlida: El vector no és null
2. Entrada invàlida: El vector és null
• Les classes d'equivalència que es generarien a partir de les condicions de sortida ja van incloses a
les classes anteriors.

b) Dissenya els casos de prova a partir de les classes d'equivalència seleccionades anteriorment. Tingues
en compte que:
• Com a mínim ha d'haver un representant de cada classe d'equivalència
• Han de cobrir els valors límit i els errors típics
• Han de recórrer almenys una vegada cada camí independent (això últim està relacionat amb els
apartats “Cobertura del flux de control” i “Complexitat ciclomàtica”).

public Boolean buscar(int valor, int vector[])

Classes d'equivalència:
1. Entrada vàlida: el vector valors no és null
Casos de prova
• Valor límit (vector): el vector no té cap valor: { } i qualsevol valor
• Valor límit (valor): el vector només té un valor {8} i valor hi és al vector
• Valor límit (valor): el vector només té un valor {8} i valor hi és al vector (val 8, per tant)
• Valor límit (valor): el vector té més d'un valor: {4, 6, 8, 4, 9, 5, 6, 7, 10, 34, 11, 80} i valor n'és
el primer (4)
• Valor límit (valor): el vector té més d'un valor: {4, 6, 8, 4, 9, 5, 6, 7, 10, 34, 11, 80} i valor n'és
l'últim (80)

Codi: I71 Exercici d'avaluació contínua 2 Pàgina 14 de 20

Lliurament:
Versió: 02 2252M05_EAC2_Enunciat_1516S1
13/11/2015
Formació professional
Nom i cognoms
• Valor intermedi (valor): el vector té més d'un valor: {4, 6, 8, 4, 9, 5, 6, 7, 10, 34, 11, 80} i valor
és a la posició intermitja (val 5)
(s'ha triat un vector de longitud 12, però podria ser de qualsevol altra longitud > 1) i el valor=90
no està al vector.

2. Entrada invàlida: el vector valors és null


Cas de prova: null

Càlcul de la complexitat ciclomàtica: nombre de branques – nombre de nodes + 2 = 6 - 5 + 2 = 3

Els camins són 1-2-3-1-5, 1-2-4-1-5 i 1-5. Amb els casos de prova anteriors es cobreixen.

public Boolean buscar2 (int valor, int vector[]) throws CercaException

Classes d'equivalència:
3. Entrada vàlida: el vector valors no és null
Casos de prova
• Valor límit (vector): el vector no té cap valor: { }
• Valor límit (valor): el vector només té un valor {8} i valor hi és al vector
• Valor límit (valor): el vector només té un valor {8} i valor hi és al vector (val 8, per tant)
• Valor límit (valor): el vector té més d'un valor: {4, 6, 8, 4, 9, 5, 6, 7, 10, 34, 11, 80} i valor n'és
el primer (4)
• Valor límit (valor): el vector té més d'un valor: {4, 6, 8, 4, 9, 5, 6, 7, 10, 34, 11, 80} i valor n'és
l'últim (80)
• Valor intermedi (valor): el vector té més d'un valor: {4, 6, 8, 4, 9, 5, 6, 7, 10, 34, 11, 80} i valor
és a la posició intermitja (val 5)
(s'ha triat un vector de longitud 12, però podria ser de qualsevol altra longitud > 1) i el valor=90

Codi: I71 Exercici d'avaluació contínua 2 Pàgina 15 de 20

Lliurament:
Versió: 02 2252M05_EAC2_Enunciat_1516S1
13/11/2015
Formació professional
Nom i cognoms
no està al vector.

4. Entrada invàlida: el vector valors és null


Cas de prova: null

Càlcul de la complexitat ciclomàtica: nombre de branques – nombre de nodes + 2 = 9 - 7 + 2 = 4

Els camins són 1-2-4-5-2-7, 1-2-4-6-2-7 , 1-2-7 i 1-3-7. Amb els casos de prova anteriors es cobreixen tots.

public void positius (int vector[])throws CercaException

Classes d'equivalència:
1. Entrada vàlida: el vector no és null
Casos de prova:
• Valors límit: vector buit, {}
• Valors no limits: el vector té només un valor positiu: { 8 }
el vector té només un valor negatiu: { -8 }
el vector té més d'un valor i tots són positius:
{4, 6, 8, 4, 9, 5, 6, 7, 10, 34, 11, 80}

Codi: I71 Exercici d'avaluació contínua 2 Pàgina 16 de 20

Lliurament:
Versió: 02 2252M05_EAC2_Enunciat_1516S1
13/11/2015
Formació professional
Nom i cognoms
el vector té més d'un valor i tots són negatius:
{-4, -6, -8, -4, -9, -5, -6, -7, -10, -34, -11, -80}
el vector té més d'un valor i n'hi ha tant positius com negatius:
{-4, 6, -8, 4, -9, -5, 6, 7, 10, -34, 11, -80}

2. Entrada invàlida: el vector és null

Càlcul de la complexitat ciclomàtica: nombre de branques – nombre de nodes + 2 = 9 - 7 + 2 = 4

Els camins són 1-2-4-5-6-2-7, 1-2-4-6-2-7, 1-2-7 i 1-3-7. Amb els casos de prova anteriors es cobreixen
tots.

4.2. (1 punt) Crea un projecte amb les classes Algorisme, i CercaException. Executa-hi les proves
dissenyades a l'apartat 4.1. amb l'ajut de JUnit.

Observacions (llegeix-les totes abans de començar; la darrera et pot estalviar feina):


• JUnit ja el teniu amb Eclipse heu de fer : File -> new JUnitTestCase.

Codi: I71 Exercici d'avaluació contínua 2 Pàgina 17 de 20

Lliurament:
Versió: 02 2252M05_EAC2_Enunciat_1516S1
13/11/2015
Formació professional
Nom i cognoms
• Després cal crear una classe de test (al material també indica com fer-ho amb un assistent). Ha de
ser al mateix paquet que la classe que es vol provar i el seu nom ha de començar per Test (p.e.
TestAlgorisme).

En aquesta classe cal posar un mètode precedit per @Test per a cada prova que vulguem fer.
A cada mètode podeu fer diferents proves. (p.e. el mètode provaBuscar que passi al mètode
buscar un vector amb valors i un enter que hi és i un altre enter que no hi és, el mètode
provaPositius que cridi al mètode positius amb un vector buit, altres que cridin al mètode
provaPositius en diferents circumstàncies, etc.). Pots posar tants mètodes com vulguis. En
executar les proves s'aniran executant l'una darrera l'altre.

• Per controlar el resultat cal utilitzar les anotacions o mètodes de JUnit que creguis adients per fer
cada prova. Pots trobar informació al respecte a l'annex del primer apartat, “Disseny i realització de
proves de programari”, del material. Cal tenir present que on posa “Declaracions” s'està referint a
mètodes de la classe org.junit.Assert.

• Després ja pots executar aquesta classe com “JUnit Test”. Veuràs que diu a quins mètodes ha anat
bé la prova i a quins no.

• Si amb l'assistent creas una classe JUnit Test Case (s'hi arriba per New → Other → JUnit...) veuràs
que el propi assistent realitza una bona part dels passos anteriors.

Realitzar una captura de pantalla de l'execució dels tests i on es vegin els tests realitzats i enganxar-
la a continuació:

Codi: I71 Exercici d'avaluació contínua 2 Pàgina 18 de 20

Lliurament:
Versió: 02 2252M05_EAC2_Enunciat_1516S1
13/11/2015
Formació professional
Nom i cognoms

4.3. (1 punt) Documenta les classes Algorisme, Persona i CercaException. Després genera els Javadoc
corresponents a la carpeta doc, a l'arrel del vostre projecte (en principi, hauria de ser la que aparegués per
defecte amb l'assistent). És important que t'asseguris que aquesta carpeta ( doc) queda dins del projecte
perquè aquest exercici es corregirà a partir del contingut del teu projecte.

4.4. (0.5 punts) Ús del depurador.

Amb l'ajut del depurador que porta integrat l'IDE Eclipse, realitza les següents operacions sobre aquest
projecte:

1. Prepara l'entorn perquè el programa s'aturi just després d'haver cridat al mètode positius.

2. Executa la classe que conté el main en mode depuració (cal fer clic amb el botó dret a sobre de la
classe i triar “Debug as” → “Java Application”).

3. S'ha d'aturar el depurador en la instrucció que heu indicat al pas 1. Fes que l'entorn mostri les
dades que conté el resultat d'haver cridat al mètode positius i el punt on s'ha aturat l'execució.
Captura la pantalla i adjunta-la a continuació. Abans d'adjuntar-la, però, retalla de la imatge la part
que no sigui significativa pel que es demana.

Codi: I71 Exercici d'avaluació contínua 2 Pàgina 19 de 20

Lliurament:
Versió: 02 2252M05_EAC2_Enunciat_1516S1
13/11/2015
Formació professional
Nom i cognoms

4.5. (1 punt) Proves de la interfíce gràfica:

En aquest punt cal treballar amb el repositori que ja us heu descarregat anteriorment de
https://github.com/xfaus/IOC-EAC2-2015.git Per execurar el codi heu de tenir configurat el Windows Builder
a l'EAC1.

Has d'indicar dins del requadre que hi ha a continuació quines proves cal realitzar al programa esmentat per
verificar el seu correcte funcionament (el material et dóna una orientació, al subapartat “Ús d'interfície
gràfica”).

- Proves sobre finestres: funcionen les icones minimitzar, maximitzar i tancar, que són a l'angle superior
dret. La finestra es pot desplaçar per la pantalla. Al començament, el resultat que indica la calculadora és
0.

- Proves sobre menús i ús de ratolí: no hi ha res d'especial.

- Proves d'entrada de dades: caldrà comprovar el següent:


• Es poden posar 7 xifres prement els botons corresponents.
• Podem posar nombres escrivint a la caixa de text.
• Per cada botó posem la xifra corresponen.
• Un cop hem introduït un nombre podem realitzar les operacions prement els botons corresponents
i altres nombres i el resultat és l'esperat pel botó /,+, - i *.
• Si intentem dividir per 0 surt el missatge d'error.
• Si posem lletres a la caixa de text l'aplicació falla a la línia 251
java.lang.NumberFormatException

Codi: I71 Exercici d'avaluació contínua 2 Pàgina 20 de 20

Lliurament:
Versió: 02 2252M05_EAC2_Enunciat_1516S1
13/11/2015

You might also like