SlideShare una empresa de Scribd logo
1 de 16
Descargar para leer sin conexión
EJEMPLO DE PRUEBAS UNITARIAS Y DE INTEGRACIÓN.




              Escuela Superior de Informática (UCLM)
        Ingeniería Técnica en Informática de Sistemas.
                              Ingeniería del Software.




                         1
Se desean realizar las pruebas unitarias y de integración de las 3 clases cuyo
código se ofrece a continuación:
Cliente.java:
import java.util.Vector;


public class Cliente {
    String mNIF, mNombre;
    Vector mFacturas;


    public Cliente(String nif, String nombre) {
        mNIF=nif; mNombre=nombre; mFacturas=new Vector();
    }


    public void add(Factura f) {
        mFacturas.addElement(f);
    }


    public void show() {
        System.out.println("Facturas del cliente " + mNombre + ":");
        for (int i=0; i<mFacturas.size(); i++) {
            System.out.println("Factura " + (i+1));
            ((Factura) mFacturas.elementAt(i)).show();
            System.out.println("-------------------nn");
        }
    }
}


Factura.java:
import java.util.Vector;


public class Factura implements Euro {
Macario Polo Usaola                                2         Ingeniería Técnica en Informática de Sistemas.
Escuela Superior de Informática (UCLM)                                           Ingeniería del Software.
String mNumero, mFecha;
    Linea mLineas[];


    public Factura(String n, String f) {
        mNumero=n; mFecha=f;
        mLineas=new Linea[10];
    }


    public void add(Linea l) {
        int i=0;
        for (i=0; mLineas[i]!=null; i++) ;
        mLineas[i]=l;
    }


    public void quitar(int i) {
        mLineas[i].mArticulo=null;
        mLineas[i].mPrecio=0;
    }


    public void show() {
        double total=0;
        System.out.println(mNumero + "; " + mFecha);
        for (int i=0; mLineas[i]!=null; i++) {
            mLineas[i].show();
            total+=mLineas[i].mPrecio;
        }
        System.out.println("tTotal .... " + total + " pts.");
        System.out.println("t           " + (total/kCambio) + " euros");
    }
}


Macario Polo Usaola                              3       Ingeniería Técnica en Informática de Sistemas.
Escuela Superior de Informática (UCLM)                                       Ingeniería del Software.
Linea.java:
public class Linea {
    String mArticulo;
    double mPrecio;


    public Linea(String a, double p) {
        mArticulo=a;
        mPrecio=p;
    }


    public void show() {
        System.out.println("t" + mArticulo + " ..... " + mPrecio + " pts");
    }
}


Euro.java:
interface Euro {
    final double kCambio = 166.386;
}




Macario Polo Usaola                            4       Ingeniería Técnica en Informática de Sistemas.
Escuela Superior de Informática (UCLM)                                     Ingeniería del Software.
MATRICES DE USO DE MIEMBROS DE DATOS.


Cliente          Cliente add show

mNIF              t

mNombre           t               o

mFacturas t                   t       o


Factura      Factura add quitar show

mNumero t                                 o

mFecha        t                           o

mLineas       t           t       t       o


Línea       Linea show

mArticulo t           o

mPrecio      t        o




Macario Polo Usaola                           5   Ingeniería Técnica en Informática de Sistemas.
Escuela Superior de Informática (UCLM)                                Ingeniería del Software.
PRUEBAS UNITARIAS
1. Pruebas unitarias de Cliente:
1.1 Corte de mNIF:
El único método que hay en este corte es el constructor. Para comprobar el
funcionamiento de este constructor podemos hacer dos cosas:
        a) Añadir un método getNIF() para ver que devueleva mNIF
        b) Construir una clase con permiso para acceder a los atributos de Cliente,
            de manera que muestre el valor de mNIF.


Si optamos por la 2ª opción, dicha clase podría ser la siguiente:
public class Principal {
      public static void main(String args[]) throws Exception {
          Cliente c=new Cliente(null, null);
          System.out.println("NIF: " + c.mNIF);
          System.in.read();
      }
}


    •    Caso de prueba 111: El resultado de la ejecución del fragmento de código
        anterior, que ejecuta el caso de prueba en el que mNIF=null, es el de la
        siguiente figura:




    •    Caso de prueba 112: Otra prueba puede ser la siguiente:
Cliente c=new Cliente(new String(), null); ß Nótese que el valor del 2º parámetro
no me importa, ya que estoy en el corte correspondiente a mNIF, al que se le da
valor en el primer parámetro del constructor.




Macario Polo Usaola                          6   Ingeniería Técnica en Informática de Sistemas.
Escuela Superior de Informática (UCLM)                               Ingeniería del Software.
1.2. Corte de mNombre:
Cliente(String, String)
show()


Como en show() se utiliza el atributo mFacturas, que es de un tipo no básico, lo
obviamos en este tipo de pruebas.
Casos de prueba:
    •    121: Cliente c=new Cliente(null, null); c.show()




    •    122: Cliente c=new Cliente(new String(), new String()); c.show();




    •    123: Cliente c=new Cliente(“5.655.999J”, “Paco Pil”); c.show();




Macario Polo Usaola                        7      Ingeniería Técnica en Informática de Sistemas.
Escuela Superior de Informática (UCLM)                                Ingeniería del Software.
1.3. Corte de mFacturas.
Puesto que éste es un atributo que representa un objeto agregado, y que además
no es de un tipo básico, y que además no ha sido probado, no probamos este
corte.


2. Pruebas unitarias de Factura.
2.1 Corte de mNumero.
Influyen aquí Factura(String, String) y show().
    •    Caso de prueba 211.
Factura f=new Factura(null, null); f.show();




    •    Caso de prueba 212.
Factura f=new Factura(new String(), null); f.show();




    •    Caso de prueba 213.
Factura f=new Factura(“1/2001”, null); f.show();



Macario Polo Usaola                        8       Ingeniería Técnica en Informática de Sistemas.
Escuela Superior de Informática (UCLM)                                 Ingeniería del Software.
2.2. Corte de mFecha.
Los casos de prueba del corte de mNumero pueden probarse para este corte con
resultados satisfactorios.


2.3. Corte de mLineas.
Como este atributo representa una colección de objetos agregados, que no son de
un tipo básico (int, float...) y no ha sido probado, no realizamos pruebas de unidad
para este corte.


3. Pruebas de unitarias de Linea.
3.1. Corte de mArticulo
    •    Caso de prueba 311.
Linea l=new Linea(null, 0); l.show();




    •    Caso de prueba 312.
Linea l=new Linea(new String(), 0); l.show();




    •    Caseo de prueba 313.
Linea l=new Linea(“Agua fresca”, 0); l.show();




3.2. Corte de mPrecio.
    •    Caso de prueba 321.


Macario Polo Usaola                       9      Ingeniería Técnica en Informática de Sistemas.
Escuela Superior de Informática (UCLM)                               Ingeniería del Software.
Sirve el caso de prueba 311, en el que esperamos el valor 0 y obtenemos el valor
0.
     •   Caso de prueba 322.
Linea l=new Linea(“Agua fresca”, null); l.show();




Conclusiones sobre los resultados de las pruebas unitarias:
No se ha realizado interpretación de los resultados de las pruebas porque
carecemos de requisitos funcionales y no sabemos, por tanto, cómo debe
comportarse este sistema ante los valores 0, null, etc.
Podemos suponer que el cliente nos ha pedido como único requisito que no haya
errores en tiempo de ejecución, con lo que todos los casos de prueba han
resultado satisfactorios.




Macario Polo Usaola                      10         Ingeniería Técnica en Informática de Sistemas.
Escuela Superior de Informática (UCLM)                                  Ingeniería del Software.
PRUEBAS DE INTEGRACIÓN
A la hora de realizar estas pruebas, debemos tener en cuenta el nivel de
complejidad de cada integración, en lo que influye mucho el grado de
interdependencia.
En nuestro sencillo ejemplo, parece claro que debemos comenzar probando la
integración de Factura con Linea.
1. Pruebas de integración de Factura con Linea.




                                         Factura add quitar show
                           show
                                             X                      X       mNumero
                Linea              X         X                      X        mFecha

                      X            X
   mArticulo
                                                              X
                      X
   mPrecio




En la matriz anterior notamos cosas raras que impiden seguir ejecutando las
pruebas de integración: los métodos Factura(String, String) y quitar(int) acceden a
mLineas directamente a los atributos de la clase Linea, lo cual está prohibido.
Deberíamos, por tanto, tener métodos get() y set(--) para todos los atributos de
Linea.


Los añadimos y volvemos a realizar pruebas de unidad en Linea. Hemos añadido
los métodos siguientes:

Macario Polo Usaola                        11    Ingeniería Técnica en Informática de Sistemas.
Escuela Superior de Informática (UCLM)                               Ingeniería del Software.
public void setArticulo(String a) { mArticulo=a; }
                public String getArticulo() { return mArticulo; }
                public void setPrecio(double p) { mPrecio=p; }
                public double getPrecio() { return mPrecio; }


      Funcionan perfectamente, con lo cual volvemos a las pruebas de integración.




                                               show        Factura add quitar show
                        getPrecio
                                                                X                         X       mNumero
                                       Linea     X
                                                                X                         X         mFecha
                setPrecio
                                         X
                                                 X
       getArtic.

setArtic.                                X                                         X

                   X             X
mArticulo
                        X                                           X
                                                                              getPrecio
mPrecio                                               X
            X

                   X                     X
                                                           setArtic.




      Con la matriz de ahora, sí que podemos continuar las pruebas de integración de
      Factura con Linea. Siguiendo los pasos que vimos en clase, tras dibujar la “matriz
      3D”, determinamos los casos de prueba, que, en principio, serán los mismos que
      al realizar las pruebas de unidad de la clase Factura.
      Igual que con las pruebas de unidad, probamos corte a corte.
      2.1. Corte de mNumero.
      En las pruebas de unidad, ejecutamos estos casos de prueba:

      Macario Polo Usaola                             12     Ingeniería Técnica en Informática de Sistemas.
      Escuela Superior de Informática (UCLM)                                     Ingeniería del Software.
211: Factura f=new Factura(null, null); f.show();
212: Factura f=new Factura(new String(), null); f.show();
213: Factura f=new Factura(“1/2001”, null); f.show();


Los tres casos consisten en una llamada al constructor de Factura y una llamada a
su método show(). Para continuar, miramos qué métodos de Linea son llamados
desde los métodos de Factura que pertenecen a este corte:
    •    Factura(String, String) llama a setArticulo(double)
    •    show() llama a show() y a setPrecio(double)
Podríamos volver a ejecutar los casos de prueba 211 a 213. Sin embargo,
debemos dar valores de prueba al atributo mLineas, añadiendo objetos de clase
Linea mediante el método add(Linea):
    •    Caso de prueba I-211-1.
Factura f=new Factura(null, null);
Linea l=new Linea(null, 0);
f.add(l);
f.show();


    •    Caso de prueba I-211-2.
Factura f=new Factura(null, null);
Linea l=new Linea(null, 0); Linea l2=new Linea(“Coca cola”, 1000);
f.add(l); f.add(l2);
f.show();




    •    Caso de prueba I-211-3.
Factura f=new Factura(null,
null);
Linea l=new Linea(null, 0);
Linea l2=new Linea(null, 0.001);
Macario Polo Usaola                        13       Ingeniería Técnica en Informática de Sistemas.
Escuela Superior de Informática (UCLM)                                  Ingeniería del Software.
f.add(l); f.add(l2);
f.show();


        •    Caso de prueba I-211-4.
Linea lineas[]={
    new Linea("Agua", 25), new Linea("Leche", 85),
    new Linea("Pan", 50), new Linea("Mistol", 240),
    new Linea("Gel", 195), new Linea("Tomates", 70),
    new Linea("Agua 2", 25), new Linea("Leche 2", 85),
    new Linea("Pan 2", 50), new Linea("Mistol 2", 240),
    new Linea("Gel 2", 195), new Linea("Tomates 2", 70)
};
Factura f=new Factura(null, null);
try {
    for (int i=0; i<lineas.length; i++)
            f.add(lineas[i]);
            f.show();
}
catch (Exception e) {System.out.println(e);}




Macario Polo Usaola                        14     Ingeniería Técnica en Informática de Sistemas.
Escuela Superior de Informática (UCLM)                                Ingeniería del Software.
APÉNDICE.
a) Código de Factura tras añadir métodos set y get a Linea:
import java.util.Vector;
public class Factura implements Euro {
   String mNumero, mFecha;
   Linea mLineas[];


   public Factura(String n, String f) {
       mNumero=n; mFecha=f;
       mLineas=new Linea[10];
   }


   public void add(Linea l) {
       int i=0;
       for (i=0; mLineas[i]!=null; i++) ;
       mLineas[i]=l;
   }


   public void quitar(int i) {
       mLineas[i].setArticulo(null);
       mLineas[i].setPrecio(0);
   }


   public void show() {
       double total=0;
       System.out.println(mNumero + "; " + mFecha);
       for (int i=0; mLineas[i]!=null; i++) {
           mLineas[i].show();
           total+=mLineas[i].getPrecio();
       }
       System.out.println("tTotal .... " + total + " pts.");
Macario Polo Usaola                             15      Ingeniería Técnica en Informática de Sistemas.
Escuela Superior de Informática (UCLM)                                      Ingeniería del Software.
System.out.println("t           " + (total/kCambio) + " euros");
    }
}


b) Código de Linea tras añadirle métodos set y get.
public class Linea {
    private String mArticulo;
    private double mPrecio;


    public Linea(String a, double p) {
        mArticulo=a;
        mPrecio=p;
    }


    public void setArticulo(String a) { mArticulo=a; }


    public String getArticulo() { return mArticulo; }


    public void setPrecio(double p) { mPrecio=p; }


    public double getPrecio() { return mPrecio; }


    public void show() {
        System.out.println("t" + mArticulo + " ..... " + mPrecio + " pts");
    }
}




Macario Polo Usaola                              16     Ingeniería Técnica en Informática de Sistemas.
Escuela Superior de Informática (UCLM)                                      Ingeniería del Software.

Más contenido relacionado

La actualidad más candente

Gestion de la configuracion del software
Gestion de la configuracion del softwareGestion de la configuracion del software
Gestion de la configuracion del softwareJohan Prevot R
 
Métrica de punto de función y lineas de codigo
Métrica de punto de función y lineas de codigoMétrica de punto de función y lineas de codigo
Métrica de punto de función y lineas de codigoJesús E. CuRias
 
DEFINICION DE CALIDAD Y CALIDAD DE SOFTWARE
DEFINICION DE CALIDAD Y CALIDAD DE SOFTWAREDEFINICION DE CALIDAD Y CALIDAD DE SOFTWARE
DEFINICION DE CALIDAD Y CALIDAD DE SOFTWARELidizz Garcia Alvarado
 
Extreme Programming-Fases
Extreme Programming-FasesExtreme Programming-Fases
Extreme Programming-FasesBelghy Chisag
 
Modelos de ciclo de vida del software
Modelos de ciclo de vida del softwareModelos de ciclo de vida del software
Modelos de ciclo de vida del softwareIEO Santo Tomás
 
Planificación de un proyecto de ingeniería de software
Planificación de un proyecto de ingeniería de softwarePlanificación de un proyecto de ingeniería de software
Planificación de un proyecto de ingeniería de softwareovefa
 
Modelos de proceso de desarrollo de software
Modelos de proceso de desarrollo de softwareModelos de proceso de desarrollo de software
Modelos de proceso de desarrollo de softwareUriel Ramos
 
Pruebas de sistemas y aceptacion
Pruebas de sistemas y aceptacionPruebas de sistemas y aceptacion
Pruebas de sistemas y aceptacionAbner Gerardo
 
Tema N° 6 Técnicas para el Levantamiento y Recolección de Requisitos
Tema N° 6 Técnicas para el Levantamiento y Recolección de RequisitosTema N° 6 Técnicas para el Levantamiento y Recolección de Requisitos
Tema N° 6 Técnicas para el Levantamiento y Recolección de RequisitosSaraEAlcntaraR
 
modelos del proceso del software
 modelos del proceso del software  modelos del proceso del software
modelos del proceso del software Brihany Rossell
 
Metodologia rup
Metodologia rupMetodologia rup
Metodologia rupmireya2022
 
Construccion y Pruebas de Software
Construccion y Pruebas de SoftwareConstruccion y Pruebas de Software
Construccion y Pruebas de SoftwareGustavo Bazan Maal
 
Validación de Requerimientos
Validación de RequerimientosValidación de Requerimientos
Validación de RequerimientosUTPL UTPL
 
PROCESOS DE CALIDAD DE SOFTWARE
PROCESOS DE CALIDAD DE SOFTWAREPROCESOS DE CALIDAD DE SOFTWARE
PROCESOS DE CALIDAD DE SOFTWAREAlejandro Leon
 
13 tipos de diagramas uml, la metodología de desarrollo ágil de software y la...
13 tipos de diagramas uml, la metodología de desarrollo ágil de software y la...13 tipos de diagramas uml, la metodología de desarrollo ágil de software y la...
13 tipos de diagramas uml, la metodología de desarrollo ágil de software y la...Uriel Herrera
 

La actualidad más candente (20)

Tecnicas de Pruebas
 Tecnicas de Pruebas  Tecnicas de Pruebas
Tecnicas de Pruebas
 
Gestion de la configuracion del software
Gestion de la configuracion del softwareGestion de la configuracion del software
Gestion de la configuracion del software
 
Métrica de punto de función y lineas de codigo
Métrica de punto de función y lineas de codigoMétrica de punto de función y lineas de codigo
Métrica de punto de función y lineas de codigo
 
DEFINICION DE CALIDAD Y CALIDAD DE SOFTWARE
DEFINICION DE CALIDAD Y CALIDAD DE SOFTWAREDEFINICION DE CALIDAD Y CALIDAD DE SOFTWARE
DEFINICION DE CALIDAD Y CALIDAD DE SOFTWARE
 
Extreme Programming-Fases
Extreme Programming-FasesExtreme Programming-Fases
Extreme Programming-Fases
 
Requerimientos del software
Requerimientos del software Requerimientos del software
Requerimientos del software
 
Ejemplo rup
Ejemplo rupEjemplo rup
Ejemplo rup
 
Proyecto Final - Calidad de Software
Proyecto Final - Calidad de SoftwareProyecto Final - Calidad de Software
Proyecto Final - Calidad de Software
 
Modelos de ciclo de vida del software
Modelos de ciclo de vida del softwareModelos de ciclo de vida del software
Modelos de ciclo de vida del software
 
Planificación de un proyecto de ingeniería de software
Planificación de un proyecto de ingeniería de softwarePlanificación de un proyecto de ingeniería de software
Planificación de un proyecto de ingeniería de software
 
Modelos de proceso de desarrollo de software
Modelos de proceso de desarrollo de softwareModelos de proceso de desarrollo de software
Modelos de proceso de desarrollo de software
 
Pruebas de sistemas y aceptacion
Pruebas de sistemas y aceptacionPruebas de sistemas y aceptacion
Pruebas de sistemas y aceptacion
 
Tema N° 6 Técnicas para el Levantamiento y Recolección de Requisitos
Tema N° 6 Técnicas para el Levantamiento y Recolección de RequisitosTema N° 6 Técnicas para el Levantamiento y Recolección de Requisitos
Tema N° 6 Técnicas para el Levantamiento y Recolección de Requisitos
 
Diapositivas xp
Diapositivas xpDiapositivas xp
Diapositivas xp
 
modelos del proceso del software
 modelos del proceso del software  modelos del proceso del software
modelos del proceso del software
 
Metodologia rup
Metodologia rupMetodologia rup
Metodologia rup
 
Construccion y Pruebas de Software
Construccion y Pruebas de SoftwareConstruccion y Pruebas de Software
Construccion y Pruebas de Software
 
Validación de Requerimientos
Validación de RequerimientosValidación de Requerimientos
Validación de Requerimientos
 
PROCESOS DE CALIDAD DE SOFTWARE
PROCESOS DE CALIDAD DE SOFTWAREPROCESOS DE CALIDAD DE SOFTWARE
PROCESOS DE CALIDAD DE SOFTWARE
 
13 tipos de diagramas uml, la metodología de desarrollo ágil de software y la...
13 tipos de diagramas uml, la metodología de desarrollo ágil de software y la...13 tipos de diagramas uml, la metodología de desarrollo ágil de software y la...
13 tipos de diagramas uml, la metodología de desarrollo ágil de software y la...
 

Destacado

Estrategias de aplicaciones para las pruebas de integración
Estrategias  de aplicaciones para las pruebas de integraciónEstrategias  de aplicaciones para las pruebas de integración
Estrategias de aplicaciones para las pruebas de integraciónPablo Navarrete
 
Estrategias de aplicación de prueba de unidad ,integración, sistema, y de ace...
Estrategias de aplicación de prueba de unidad ,integración, sistema, y de ace...Estrategias de aplicación de prueba de unidad ,integración, sistema, y de ace...
Estrategias de aplicación de prueba de unidad ,integración, sistema, y de ace...carlblakc
 
Tipos de pruebas de software
Tipos de pruebas de softwareTipos de pruebas de software
Tipos de pruebas de softwareGuillermo Lemus
 
Tipos de pruebas de software
Tipos de pruebas de softwareTipos de pruebas de software
Tipos de pruebas de softwarexpjair
 
Software caja negra y caja blanca
Software caja negra y caja blancaSoftware caja negra y caja blanca
Software caja negra y caja blancaStudentPc
 
Plan de Pruebas
Plan de PruebasPlan de Pruebas
Plan de Pruebaschoselin
 
Pruebas Unitarias - Uso de NUnit dentro de proyectos .NET
Pruebas Unitarias - Uso de NUnit dentro de proyectos .NETPruebas Unitarias - Uso de NUnit dentro de proyectos .NET
Pruebas Unitarias - Uso de NUnit dentro de proyectos .NETLa Red DBAccess
 
Pruebas De Software
Pruebas De SoftwarePruebas De Software
Pruebas De Softwarearacelij
 
Estrategias de aplicacion de las pruebas
Estrategias  de aplicacion de las pruebasEstrategias  de aplicacion de las pruebas
Estrategias de aplicacion de las pruebasJaimeTepancalcoPoblano
 
Estrategias de prueba de software
Estrategias de prueba de softwareEstrategias de prueba de software
Estrategias de prueba de softwarejtapiac
 
Estrategias de Pruebas de Software
Estrategias de Pruebas de SoftwareEstrategias de Pruebas de Software
Estrategias de Pruebas de SoftwareLucia Gasperin
 
Estrategias prueba de software
Estrategias prueba de softwareEstrategias prueba de software
Estrategias prueba de softwareCentro Líbano
 
Introducción de pruebas de software
Introducción de pruebas de softwareIntroducción de pruebas de software
Introducción de pruebas de softwareMarta Silvia Tabares
 

Destacado (20)

Estrategias de aplicaciones para las pruebas de integración
Estrategias  de aplicaciones para las pruebas de integraciónEstrategias  de aplicaciones para las pruebas de integración
Estrategias de aplicaciones para las pruebas de integración
 
Pruebas unitarias
Pruebas unitariasPruebas unitarias
Pruebas unitarias
 
Estrategias de aplicación de prueba de unidad ,integración, sistema, y de ace...
Estrategias de aplicación de prueba de unidad ,integración, sistema, y de ace...Estrategias de aplicación de prueba de unidad ,integración, sistema, y de ace...
Estrategias de aplicación de prueba de unidad ,integración, sistema, y de ace...
 
Tipos de pruebas de software
Tipos de pruebas de softwareTipos de pruebas de software
Tipos de pruebas de software
 
Pruebas De Software
Pruebas De SoftwarePruebas De Software
Pruebas De Software
 
Tipos de pruebas de software
Tipos de pruebas de softwareTipos de pruebas de software
Tipos de pruebas de software
 
Software caja negra y caja blanca
Software caja negra y caja blancaSoftware caja negra y caja blanca
Software caja negra y caja blanca
 
Plan de Pruebas
Plan de PruebasPlan de Pruebas
Plan de Pruebas
 
Casos de pruebas
Casos de pruebasCasos de pruebas
Casos de pruebas
 
Pruebas funcionales
Pruebas funcionalesPruebas funcionales
Pruebas funcionales
 
Pruebas Unitarias - Uso de NUnit dentro de proyectos .NET
Pruebas Unitarias - Uso de NUnit dentro de proyectos .NETPruebas Unitarias - Uso de NUnit dentro de proyectos .NET
Pruebas Unitarias - Uso de NUnit dentro de proyectos .NET
 
Pruebas De Software
Pruebas De SoftwarePruebas De Software
Pruebas De Software
 
Plan de pruebas
Plan de pruebasPlan de pruebas
Plan de pruebas
 
Plan de pruebas_inces
Plan de pruebas_incesPlan de pruebas_inces
Plan de pruebas_inces
 
Estrategias de aplicacion de las pruebas
Estrategias  de aplicacion de las pruebasEstrategias  de aplicacion de las pruebas
Estrategias de aplicacion de las pruebas
 
Estrategias de prueba de software
Estrategias de prueba de softwareEstrategias de prueba de software
Estrategias de prueba de software
 
Estrategias de Pruebas de Software
Estrategias de Pruebas de SoftwareEstrategias de Pruebas de Software
Estrategias de Pruebas de Software
 
8.realizacion de pruebas
8.realizacion de pruebas8.realizacion de pruebas
8.realizacion de pruebas
 
Estrategias prueba de software
Estrategias prueba de softwareEstrategias prueba de software
Estrategias prueba de software
 
Introducción de pruebas de software
Introducción de pruebas de softwareIntroducción de pruebas de software
Introducción de pruebas de software
 

Similar a ejemplos de pruebas unitarias y de integracion

Java problems
Java problemsJava problems
Java problemsNoe Lopez
 
Resolución de problemas con java
Resolución de problemas con javaResolución de problemas con java
Resolución de problemas con javadiegocastro1234
 
Manual de prácticas java 2015
Manual de prácticas java 2015Manual de prácticas java 2015
Manual de prácticas java 2015Ulises_312
 
CLASE 15 - PRINCIPIOS DE ALGORITMOS.pdf
CLASE 15 - PRINCIPIOS DE ALGORITMOS.pdfCLASE 15 - PRINCIPIOS DE ALGORITMOS.pdf
CLASE 15 - PRINCIPIOS DE ALGORITMOS.pdfAndrCamones
 
Practicas java gustavo carbajal macias 402
Practicas java gustavo carbajal macias 402Practicas java gustavo carbajal macias 402
Practicas java gustavo carbajal macias 402Gustavo Macias
 
Ejercicios resueltos de programacion
Ejercicios resueltos de programacionEjercicios resueltos de programacion
Ejercicios resueltos de programacionJaime amambal
 
Ejercicios resueltos de programacion
Ejercicios resueltos de programacionEjercicios resueltos de programacion
Ejercicios resueltos de programacionJaime amambal
 
UNIDAD III - ACTIVIDAD III
UNIDAD III - ACTIVIDAD IIIUNIDAD III - ACTIVIDAD III
UNIDAD III - ACTIVIDAD IIIMaiky Kobatakane
 
Practicas java gustavo carbajal macias 402
Practicas java gustavo carbajal macias 402Practicas java gustavo carbajal macias 402
Practicas java gustavo carbajal macias 402Gustavo Macias
 
Guia de Laboratorios 5 - VB.NET 2005
Guia de Laboratorios 5 - VB.NET 2005Guia de Laboratorios 5 - VB.NET 2005
Guia de Laboratorios 5 - VB.NET 2005Jose Ponce
 
Ucv 2014 1_ads clase 15
Ucv 2014 1_ads clase 15Ucv 2014 1_ads clase 15
Ucv 2014 1_ads clase 15Taringa!
 
Ejercicios
EjerciciosEjercicios
EjerciciosEzmee XD
 

Similar a ejemplos de pruebas unitarias y de integracion (20)

Sof rest 1
Sof rest 1Sof rest 1
Sof rest 1
 
Cecytem
CecytemCecytem
Cecytem
 
Java problems
Java problemsJava problems
Java problems
 
Resolución de problemas con java
Resolución de problemas con javaResolución de problemas con java
Resolución de problemas con java
 
Ejercicios3
Ejercicios3Ejercicios3
Ejercicios3
 
Manual de prácticas java 2015
Manual de prácticas java 2015Manual de prácticas java 2015
Manual de prácticas java 2015
 
CLASE 15 - PRINCIPIOS DE ALGORITMOS.pdf
CLASE 15 - PRINCIPIOS DE ALGORITMOS.pdfCLASE 15 - PRINCIPIOS DE ALGORITMOS.pdf
CLASE 15 - PRINCIPIOS DE ALGORITMOS.pdf
 
Practicas
PracticasPracticas
Practicas
 
Practicas java gustavo carbajal macias 402
Practicas java gustavo carbajal macias 402Practicas java gustavo carbajal macias 402
Practicas java gustavo carbajal macias 402
 
Ejercicios resueltos de programacion
Ejercicios resueltos de programacionEjercicios resueltos de programacion
Ejercicios resueltos de programacion
 
Ejercicios resueltos de programacion
Ejercicios resueltos de programacionEjercicios resueltos de programacion
Ejercicios resueltos de programacion
 
UNIDAD III - ACTIVIDAD III
UNIDAD III - ACTIVIDAD IIIUNIDAD III - ACTIVIDAD III
UNIDAD III - ACTIVIDAD III
 
Practicas java gustavo carbajal macias 402
Practicas java gustavo carbajal macias 402Practicas java gustavo carbajal macias 402
Practicas java gustavo carbajal macias 402
 
Guia de Laboratorios 5 - VB.NET 2005
Guia de Laboratorios 5 - VB.NET 2005Guia de Laboratorios 5 - VB.NET 2005
Guia de Laboratorios 5 - VB.NET 2005
 
Tutorial de MatLab
Tutorial de MatLabTutorial de MatLab
Tutorial de MatLab
 
Introduccion a C++.pdf
Introduccion a C++.pdfIntroduccion a C++.pdf
Introduccion a C++.pdf
 
Unidad temática v
Unidad temática vUnidad temática v
Unidad temática v
 
Ucv 2014 1_ads clase 15
Ucv 2014 1_ads clase 15Ucv 2014 1_ads clase 15
Ucv 2014 1_ads clase 15
 
Ejercicios
EjerciciosEjercicios
Ejercicios
 
Funciones
FuncionesFunciones
Funciones
 

Último

De Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETDe Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETGermán Küber
 
VIDEOS DE APOYO.docx E
VIDEOS DE APOYO.docx                                  EVIDEOS DE APOYO.docx                                  E
VIDEOS DE APOYO.docx Emialexsolar
 
El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosEl diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosLCristinaForchue
 
Los mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfLos mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfodalistar77
 
Matriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxMatriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxPaolaCarolinaCarvaja
 
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfInmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfOBr.global
 
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfActividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfalejandrogomezescoto
 
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfTENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfJoseAlejandroPerezBa
 
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfPresentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfymiranda2
 
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...RaymondCode
 
Inteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidadInteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidaddanik1023m
 
Hazte partner: Club Festibity 2024 - 2025
Hazte partner: Club Festibity 2024 - 2025Hazte partner: Club Festibity 2024 - 2025
Hazte partner: Club Festibity 2024 - 2025Festibity
 

Último (14)

BEDEC Sostenibilidad, novedades 2024 - Laura Silva
BEDEC Sostenibilidad, novedades 2024 - Laura SilvaBEDEC Sostenibilidad, novedades 2024 - Laura Silva
BEDEC Sostenibilidad, novedades 2024 - Laura Silva
 
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETDe Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
 
VIDEOS DE APOYO.docx E
VIDEOS DE APOYO.docx                                  EVIDEOS DE APOYO.docx                                  E
VIDEOS DE APOYO.docx E
 
El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosEl diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
 
Los mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfLos mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdf
 
Matriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxMatriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docx
 
BEDEC Proyecto y obra , novedades 2024 - Xavier Folch
BEDEC Proyecto y obra , novedades 2024 - Xavier FolchBEDEC Proyecto y obra , novedades 2024 - Xavier Folch
BEDEC Proyecto y obra , novedades 2024 - Xavier Folch
 
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfInmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
 
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfActividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
 
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfTENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
 
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfPresentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
 
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
 
Inteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidadInteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidad
 
Hazte partner: Club Festibity 2024 - 2025
Hazte partner: Club Festibity 2024 - 2025Hazte partner: Club Festibity 2024 - 2025
Hazte partner: Club Festibity 2024 - 2025
 

ejemplos de pruebas unitarias y de integracion

  • 1. EJEMPLO DE PRUEBAS UNITARIAS Y DE INTEGRACIÓN. Escuela Superior de Informática (UCLM) Ingeniería Técnica en Informática de Sistemas. Ingeniería del Software. 1
  • 2. Se desean realizar las pruebas unitarias y de integración de las 3 clases cuyo código se ofrece a continuación: Cliente.java: import java.util.Vector; public class Cliente { String mNIF, mNombre; Vector mFacturas; public Cliente(String nif, String nombre) { mNIF=nif; mNombre=nombre; mFacturas=new Vector(); } public void add(Factura f) { mFacturas.addElement(f); } public void show() { System.out.println("Facturas del cliente " + mNombre + ":"); for (int i=0; i<mFacturas.size(); i++) { System.out.println("Factura " + (i+1)); ((Factura) mFacturas.elementAt(i)).show(); System.out.println("-------------------nn"); } } } Factura.java: import java.util.Vector; public class Factura implements Euro { Macario Polo Usaola 2 Ingeniería Técnica en Informática de Sistemas. Escuela Superior de Informática (UCLM) Ingeniería del Software.
  • 3. String mNumero, mFecha; Linea mLineas[]; public Factura(String n, String f) { mNumero=n; mFecha=f; mLineas=new Linea[10]; } public void add(Linea l) { int i=0; for (i=0; mLineas[i]!=null; i++) ; mLineas[i]=l; } public void quitar(int i) { mLineas[i].mArticulo=null; mLineas[i].mPrecio=0; } public void show() { double total=0; System.out.println(mNumero + "; " + mFecha); for (int i=0; mLineas[i]!=null; i++) { mLineas[i].show(); total+=mLineas[i].mPrecio; } System.out.println("tTotal .... " + total + " pts."); System.out.println("t " + (total/kCambio) + " euros"); } } Macario Polo Usaola 3 Ingeniería Técnica en Informática de Sistemas. Escuela Superior de Informática (UCLM) Ingeniería del Software.
  • 4. Linea.java: public class Linea { String mArticulo; double mPrecio; public Linea(String a, double p) { mArticulo=a; mPrecio=p; } public void show() { System.out.println("t" + mArticulo + " ..... " + mPrecio + " pts"); } } Euro.java: interface Euro { final double kCambio = 166.386; } Macario Polo Usaola 4 Ingeniería Técnica en Informática de Sistemas. Escuela Superior de Informática (UCLM) Ingeniería del Software.
  • 5. MATRICES DE USO DE MIEMBROS DE DATOS. Cliente Cliente add show mNIF t mNombre t o mFacturas t t o Factura Factura add quitar show mNumero t o mFecha t o mLineas t t t o Línea Linea show mArticulo t o mPrecio t o Macario Polo Usaola 5 Ingeniería Técnica en Informática de Sistemas. Escuela Superior de Informática (UCLM) Ingeniería del Software.
  • 6. PRUEBAS UNITARIAS 1. Pruebas unitarias de Cliente: 1.1 Corte de mNIF: El único método que hay en este corte es el constructor. Para comprobar el funcionamiento de este constructor podemos hacer dos cosas: a) Añadir un método getNIF() para ver que devueleva mNIF b) Construir una clase con permiso para acceder a los atributos de Cliente, de manera que muestre el valor de mNIF. Si optamos por la 2ª opción, dicha clase podría ser la siguiente: public class Principal { public static void main(String args[]) throws Exception { Cliente c=new Cliente(null, null); System.out.println("NIF: " + c.mNIF); System.in.read(); } } • Caso de prueba 111: El resultado de la ejecución del fragmento de código anterior, que ejecuta el caso de prueba en el que mNIF=null, es el de la siguiente figura: • Caso de prueba 112: Otra prueba puede ser la siguiente: Cliente c=new Cliente(new String(), null); ß Nótese que el valor del 2º parámetro no me importa, ya que estoy en el corte correspondiente a mNIF, al que se le da valor en el primer parámetro del constructor. Macario Polo Usaola 6 Ingeniería Técnica en Informática de Sistemas. Escuela Superior de Informática (UCLM) Ingeniería del Software.
  • 7. 1.2. Corte de mNombre: Cliente(String, String) show() Como en show() se utiliza el atributo mFacturas, que es de un tipo no básico, lo obviamos en este tipo de pruebas. Casos de prueba: • 121: Cliente c=new Cliente(null, null); c.show() • 122: Cliente c=new Cliente(new String(), new String()); c.show(); • 123: Cliente c=new Cliente(“5.655.999J”, “Paco Pil”); c.show(); Macario Polo Usaola 7 Ingeniería Técnica en Informática de Sistemas. Escuela Superior de Informática (UCLM) Ingeniería del Software.
  • 8. 1.3. Corte de mFacturas. Puesto que éste es un atributo que representa un objeto agregado, y que además no es de un tipo básico, y que además no ha sido probado, no probamos este corte. 2. Pruebas unitarias de Factura. 2.1 Corte de mNumero. Influyen aquí Factura(String, String) y show(). • Caso de prueba 211. Factura f=new Factura(null, null); f.show(); • Caso de prueba 212. Factura f=new Factura(new String(), null); f.show(); • Caso de prueba 213. Factura f=new Factura(“1/2001”, null); f.show(); Macario Polo Usaola 8 Ingeniería Técnica en Informática de Sistemas. Escuela Superior de Informática (UCLM) Ingeniería del Software.
  • 9. 2.2. Corte de mFecha. Los casos de prueba del corte de mNumero pueden probarse para este corte con resultados satisfactorios. 2.3. Corte de mLineas. Como este atributo representa una colección de objetos agregados, que no son de un tipo básico (int, float...) y no ha sido probado, no realizamos pruebas de unidad para este corte. 3. Pruebas de unitarias de Linea. 3.1. Corte de mArticulo • Caso de prueba 311. Linea l=new Linea(null, 0); l.show(); • Caso de prueba 312. Linea l=new Linea(new String(), 0); l.show(); • Caseo de prueba 313. Linea l=new Linea(“Agua fresca”, 0); l.show(); 3.2. Corte de mPrecio. • Caso de prueba 321. Macario Polo Usaola 9 Ingeniería Técnica en Informática de Sistemas. Escuela Superior de Informática (UCLM) Ingeniería del Software.
  • 10. Sirve el caso de prueba 311, en el que esperamos el valor 0 y obtenemos el valor 0. • Caso de prueba 322. Linea l=new Linea(“Agua fresca”, null); l.show(); Conclusiones sobre los resultados de las pruebas unitarias: No se ha realizado interpretación de los resultados de las pruebas porque carecemos de requisitos funcionales y no sabemos, por tanto, cómo debe comportarse este sistema ante los valores 0, null, etc. Podemos suponer que el cliente nos ha pedido como único requisito que no haya errores en tiempo de ejecución, con lo que todos los casos de prueba han resultado satisfactorios. Macario Polo Usaola 10 Ingeniería Técnica en Informática de Sistemas. Escuela Superior de Informática (UCLM) Ingeniería del Software.
  • 11. PRUEBAS DE INTEGRACIÓN A la hora de realizar estas pruebas, debemos tener en cuenta el nivel de complejidad de cada integración, en lo que influye mucho el grado de interdependencia. En nuestro sencillo ejemplo, parece claro que debemos comenzar probando la integración de Factura con Linea. 1. Pruebas de integración de Factura con Linea. Factura add quitar show show X X mNumero Linea X X X mFecha X X mArticulo X X mPrecio En la matriz anterior notamos cosas raras que impiden seguir ejecutando las pruebas de integración: los métodos Factura(String, String) y quitar(int) acceden a mLineas directamente a los atributos de la clase Linea, lo cual está prohibido. Deberíamos, por tanto, tener métodos get() y set(--) para todos los atributos de Linea. Los añadimos y volvemos a realizar pruebas de unidad en Linea. Hemos añadido los métodos siguientes: Macario Polo Usaola 11 Ingeniería Técnica en Informática de Sistemas. Escuela Superior de Informática (UCLM) Ingeniería del Software.
  • 12. public void setArticulo(String a) { mArticulo=a; } public String getArticulo() { return mArticulo; } public void setPrecio(double p) { mPrecio=p; } public double getPrecio() { return mPrecio; } Funcionan perfectamente, con lo cual volvemos a las pruebas de integración. show Factura add quitar show getPrecio X X mNumero Linea X X X mFecha setPrecio X X getArtic. setArtic. X X X X mArticulo X X getPrecio mPrecio X X X X setArtic. Con la matriz de ahora, sí que podemos continuar las pruebas de integración de Factura con Linea. Siguiendo los pasos que vimos en clase, tras dibujar la “matriz 3D”, determinamos los casos de prueba, que, en principio, serán los mismos que al realizar las pruebas de unidad de la clase Factura. Igual que con las pruebas de unidad, probamos corte a corte. 2.1. Corte de mNumero. En las pruebas de unidad, ejecutamos estos casos de prueba: Macario Polo Usaola 12 Ingeniería Técnica en Informática de Sistemas. Escuela Superior de Informática (UCLM) Ingeniería del Software.
  • 13. 211: Factura f=new Factura(null, null); f.show(); 212: Factura f=new Factura(new String(), null); f.show(); 213: Factura f=new Factura(“1/2001”, null); f.show(); Los tres casos consisten en una llamada al constructor de Factura y una llamada a su método show(). Para continuar, miramos qué métodos de Linea son llamados desde los métodos de Factura que pertenecen a este corte: • Factura(String, String) llama a setArticulo(double) • show() llama a show() y a setPrecio(double) Podríamos volver a ejecutar los casos de prueba 211 a 213. Sin embargo, debemos dar valores de prueba al atributo mLineas, añadiendo objetos de clase Linea mediante el método add(Linea): • Caso de prueba I-211-1. Factura f=new Factura(null, null); Linea l=new Linea(null, 0); f.add(l); f.show(); • Caso de prueba I-211-2. Factura f=new Factura(null, null); Linea l=new Linea(null, 0); Linea l2=new Linea(“Coca cola”, 1000); f.add(l); f.add(l2); f.show(); • Caso de prueba I-211-3. Factura f=new Factura(null, null); Linea l=new Linea(null, 0); Linea l2=new Linea(null, 0.001); Macario Polo Usaola 13 Ingeniería Técnica en Informática de Sistemas. Escuela Superior de Informática (UCLM) Ingeniería del Software.
  • 14. f.add(l); f.add(l2); f.show(); • Caso de prueba I-211-4. Linea lineas[]={ new Linea("Agua", 25), new Linea("Leche", 85), new Linea("Pan", 50), new Linea("Mistol", 240), new Linea("Gel", 195), new Linea("Tomates", 70), new Linea("Agua 2", 25), new Linea("Leche 2", 85), new Linea("Pan 2", 50), new Linea("Mistol 2", 240), new Linea("Gel 2", 195), new Linea("Tomates 2", 70) }; Factura f=new Factura(null, null); try { for (int i=0; i<lineas.length; i++) f.add(lineas[i]); f.show(); } catch (Exception e) {System.out.println(e);} Macario Polo Usaola 14 Ingeniería Técnica en Informática de Sistemas. Escuela Superior de Informática (UCLM) Ingeniería del Software.
  • 15. APÉNDICE. a) Código de Factura tras añadir métodos set y get a Linea: import java.util.Vector; public class Factura implements Euro { String mNumero, mFecha; Linea mLineas[]; public Factura(String n, String f) { mNumero=n; mFecha=f; mLineas=new Linea[10]; } public void add(Linea l) { int i=0; for (i=0; mLineas[i]!=null; i++) ; mLineas[i]=l; } public void quitar(int i) { mLineas[i].setArticulo(null); mLineas[i].setPrecio(0); } public void show() { double total=0; System.out.println(mNumero + "; " + mFecha); for (int i=0; mLineas[i]!=null; i++) { mLineas[i].show(); total+=mLineas[i].getPrecio(); } System.out.println("tTotal .... " + total + " pts."); Macario Polo Usaola 15 Ingeniería Técnica en Informática de Sistemas. Escuela Superior de Informática (UCLM) Ingeniería del Software.
  • 16. System.out.println("t " + (total/kCambio) + " euros"); } } b) Código de Linea tras añadirle métodos set y get. public class Linea { private String mArticulo; private double mPrecio; public Linea(String a, double p) { mArticulo=a; mPrecio=p; } public void setArticulo(String a) { mArticulo=a; } public String getArticulo() { return mArticulo; } public void setPrecio(double p) { mPrecio=p; } public double getPrecio() { return mPrecio; } public void show() { System.out.println("t" + mArticulo + " ..... " + mPrecio + " pts"); } } Macario Polo Usaola 16 Ingeniería Técnica en Informática de Sistemas. Escuela Superior de Informática (UCLM) Ingeniería del Software.