Testing Unitario. Laboratorio de Testing y Aseguramiento de la Calidad del Software
|
|
- Lidia Acuña Gallego
- hace 8 años
- Vistas:
Transcripción
1 Testing Unitario Laboratorio de Testing y Aseguramiento de la Calidad del Software
2 Introducción Testing ad hoc Automatización de testing Testing unitario Unidad y Suite de test GoogleTest Fixture e independencia Test parametrizados por datos
3 Testing ad hoc (no sistemático) Todo programador está habituado al testing. En muchos casos, la forma en la que hacemos testing es ad hoc, es decir, no sistemática. Ej: supongamos que queremos testear la siguiente función: #include <stdio.h> int main(int argc, char **argv) { int a,b,res; } if (argc!= 3) printf("uso: max <int> <int>\n\n"); else { a = atoi(argv[1]); b = atoi(argv[2]); if (a < b) res = b; else res = a; printf("resultado: %i\n\n", res); }
4 Testing ad hoc (cont.) En este caso, podemos testear la aplicación directamente desde la línea de comandos: $ gcc max.c -o max $ $./max 2 3 Resultado: 3 $./max Resultado: $./max Resultado: -3 $./max Uso: max <int> <int> $
5 Testing ad hoc (cont.) Ej: En caso que lo que tengamos no sea una aplicación, sino una funcionalidad interna: int max(int x, int y) { if (x < y) return y; else return x; } el testing ad hoc se vuelve más difícil: tenemos que programar un arnés para la rutina (i.e., un main que la invoque).
6 Dificultades del Testing ad hoc Es simple para testear aplicaciones, pero no almacena los tests para pruebas futuras. Requiere la construcción manual de arneses para la prueba de funcionalidades internas (no directamente invocables desde la interfaz de la aplicación). Requiere la inspección humana de la salida de los tests: se decide manualmente si el test pasó o no.
7 Automatización de testing Cuando el testing se vuelve complejo y caro como el testing es opcional, hay una tendencia a abandonarlo; o se lo intenta simplificar a través de su automatización. El costo de realizar y mantener un testing automatizado debe ser menor que el costo ahorrado por la reparación de defectos encontrados tardíamente.
8 Economía del Testing Esfuerzo en testing Incremento del esfuerzo Esfuerzo reducido Esfuerzo en desarrollo Esfuerzo inicial Esfuerzo ahorrado
9 Economía del Testing Esfuerzo en testing Incremento del esfuerzo Esfuerzo creciente Esfuerzo en desarrollo Esfuerzo inicial Esfuerzo ahorrado
10 Automatización de testing: objetivos Aumentar la calidad: utilizando tests como especificaciones; previniendo la reintroducción de defectos (en lugar de repararlos); localizando los defectos (ubicación y causa). Comprender el SUT: utilizando los tests como documentación. Reducir (y no introducir) riesgos: utilizando los tests como red de seguridad ; sin introducir cambios en el SUT.
11 Automatización de testing: objetivos Ser sencillos de ejecutar: completamente automáticos. self-checking. repetibles. Ser sencillos de escribir y mantener: simplicidad. expresividad. separación de incumbencias. Requerir mantenimiento mínimo: robustez.
12 Automatización de testing: problemas Muchas herramientas ofrecen automatizar test que interactuan con el SUT a través de su interfaz de usuario (metáfora record and playback) Estos test acarrean los siguientes problemas Sensibilidad al comportamiento Sensibilidad a la interfaz Sensibilidad a los datos Sensibilidad al contexto
13 Pruebas unitarias Testing unitario Unidad y Suite de test GoogleTest Fixture e independecia Test parametrizados por datos
14 Testing unitario Es una metodología para testear unidades individuales de código (SUT: Software under test), preferentemente de forma aislada de sus dependencias (DOC: Depend-on component). Las unidades pueden ser de distinta granularidad: porción de código, método, clase, librería, etc. Normalmente las pruebas son creadas por los mismos programadores durante el proceso de desarrollo. Normalmente se utiliza uno o mas frameworks para su sistematización y automatización.
15 Testing unitario (cont.) Normalmente las unidades son las partes mas pequeñas de un sistema: funciones o procedimientos, clases, etc. pero la granularidad es variable. Test unitario 1 ejercita alp unidad 1 Test unitario 2 ejercita Test unitario 3 ejercita unidad 2 usa Test unitario 4 ejercita componente 2 usa Test unitario 5 ejercita aplicación
16 Testing unitario: sistematización y automatización Una librería (framework) de apoyo al testing unitario ayuda a sistematizar y automatizar parte de las tareas manuales asociadas al testing: Define la estructura básica de un test: Inicialización Ejercitación Verificación Demolición Permite almacenar los tests como scripts. Permite definir la salida esperada como parte del script.
17 Testing unitario: sistematización y automatización Una librería (framework) de apoyo al testing unitario ayuda a sistematizar y automatizar parte de las tareas manuales asociadas al testing: Permite organizar tests en suites: Algunas librerías encuentran todos los test definidos y construyen la suite automáticamente. Otras requieren una construcción explícita. Las suites suelen organizarse jerárquicamente.
18 Testing unitario: sistematización y automatización Una librería (framework) de apoyo al testing unitario ayuda a sistematizar y automatizar parte de las tareas manuales asociadas al testing: Ofrece entornos para la ejecución de tests y suites: El test runner permite ejecutar automaticamente todos los test o subconjunto de ellos, de manera independiente. El test runner permite repetir un test con diferentes datos de entrada.
19 Testing unitario: sistematización y automatización Una librería (framework) de apoyo al testing unitario ayuda a sistematizar y automatizar parte de las tareas manuales asociadas al testing: Reporta información detallada sobre las pruebas: El test runner genera un reporte estadístico de la ejecución de las suites, El resultado puede incluir datos de benchmarking y cobertura.
20 Testing unitario con Google Test Google Test Framework es una librería de apoyo al testing unitario para C/C++ que incluye: descubrimiento automático de tests, amplio conjunto de aserciones (y aserciones definidas por el usuario), test negativos, fallas fatales y no fatales, test paramétricos, etc.
21 Estructura de un test arrange: se preparan los datos para alimentar al programa. #include <limits.h> #include "staticroutines.h" #include "gtest/gtest.h" TEST(MaxTest, Positive) { int a = 19; int b = 4; act: se ejecuta el programa con los datos construidos. int res = max(a,b); } EXPECT_TRUE(res == a); assert: se evalúa si los resultados obtenidos se corresponden con lo esperado.
22 Ejecución de tests Google Test necesita un runner explícito, que detecta automáticamente todos los test, y puede ser común a todos los test de un proyecto. se inicializa el framework int main(int argc, char **argv) { ::testing::initgoogletest(&argc, argv); } return RUN_ALL_TESTS(); se ejecutan todos los test
23 Demo Max
24 Algunas aserciones ASSERT_TRUE(<expr>): verifica que <expr> evalúe a true, parando la ejecución en caso de falla. ASSERT_FALSE(<expr>): verifica que <expr> evalúe a false, parando la ejecución en caso de falla. EXPECT_TRUE(<expr>): verifica que <expr> evalúe a true. EXPECT_FALSE(<expr>): verifica que <expr> evalúe a false. ASSERT_EQ(<expected>, <actual>): verifica que <actual> y <expected> evalúen al mismo valor. Sobre punteros verifica que sean la misma dirección y no que tengan el mismo valor! NE, LT, LE, GT, GE, para verificar desigualdad, menor, menor igual, mayor, y mayor igual respectivamente.
25 Algunas aserciones (cont.) ASSERT_STREQ(<expected>, <actual>): verifica que los strings <actual> y <expected> tengan el mismo contenido. STRNE: verifica que tengan diferente contenido. ASSERT_STRCASEEQ(<expected>, <actual>): verifica que los strings <actual> y <expected> tengan el mismo contenido, ignorando mayúsculas/minúsculas. STRCASENE: verifica que tengan diferente contenido ignorando mayúsculas/minúsculas. ASSERT_PREDn(<pred>, <val1>,..., <valn>): verifica que la función <pred> (de n parámetros) aplicada a <val1>,...,<valn> devuelva true.
26 Algunas aserciones (cont. 2) ASSERT_FLOAT_EQ(<expected>, <actual>): verifica los valores float <expected> y <actual> sean casi iguales. DOUBLE: para doubles ASSERT_NEAR(<val1>, <val2>, <error>): verifica que la diferencia entre <val1> y <val2> no supere el valor <error>. ASSERT_THROW(<prog>, <exception>): verifica que el programa <prog> lance la expeción <exception>. ASSERT_ANY_THROW(<prog>,): verifica que el programa <prog> lance cualquier excepción. ASSERT_NO_THROW(<prog>,): verifica que el programa <prog> no lance ninguna excepción. También tienen sus versiones EXPECT
27 Test negativos en Google Test Los tests negativos son aquellos en los que probamos que el SUT falla al ejecutar cierta porción de código bajo ciertas entradas. Con Google Test, podemos capturar los tests negativos con aserciones especiales: TEST(DeathTest, SegmentationFault) { ASSERT_DEATH({ int *n = NULL; int x = *n;}, "Segmentation fault:.*"); } TEST(DeathTest, NormalExit) { EXPECT_EXIT(NormalExit(), ::testing::exitedwithcode(0), "Success"); } TEST(DeathTest, SigKill) { EXPECT_EXIT(KillMyself(), ::testing::killedbysignal(sigkill), "Sending..."); }
28 Ejercicio Utilizando la clase Point: 1.Implementá el método equals. 2.Construí una suite de test para la clase, incluyendo al menos un test por método. 3. Descubriste algún bug? Corregilo.
29 Suites de test Cuando el SUT está compuesto por varias clases, o simplemente varios métodos de una clase, resulta claro que debemos organizar los tests. Los tests se organizan en test suites: una test suite es simplemente un conjunto de tests. Con Google Test, varios test lógicamente relacionados se puede agrupar en bajo un mismo nombre de Test Case. Una Suite (Fixture) es un conjunto de test bajo un mismo nombre de Test Case, definidos en una misma clase.
30 Suites de test y datos compartidos En muchos casos, los tests de una suite comparten los datos que manipulan. En estos contextos, suele ser útil organizar los tests definiendo procesos comunes de inicialización (o arrangement, o setup) para todos los tests. Similarmente, se pueden definir procesos comunes de destrucción (o teardown), que se ejecuten luego de cada test.
31 Suites de test y datos compartidos: un ejemplo Consideremos un ejemplo de testing de una clase Minefield, que representa el estado de un campo minado en el juego Buscaminas : class Mine { #include bool mined; "Mine.h" bool marked; class bool Minefield opened; { public: Mine field[8][8];! Mine(); public: void void setmined(bool open(int x, ismined); int y); bool void ismined(); close(int x, int y); void void setmarked(bool mark(int x, ismarked); int y); bool void ismarked(); unmark(int x, int y); void void setopened(bool putmine(int isopened); x, int y); bool void isopened(); removemine(int x, int y);! int minedneighbours(int x, int y);! }; }; Para poder testear minedneighbours, debemos crear el minefield, y ubicar minas en lugares específicos.
32 Suites de test y datos compartido: x un ejemplo x El proceso setup xen el siguiente ejemplo crea el escenario x x adecuado x para la ejecución de tests de minedneighbours. Se ejecuta antes de cada xtest. #include "Minefield.h" #include "gtest/gtest.h" class MinefieldTest : public ::testing::test {! protected:! Minefield testingfield;!! void SetUp() {!! testingfield.putmine(0, 0);!! testingfield.putmine(3, 4);!! testingfield.putmine(4, 3);!! testingfield.putmine(2, 2); TEST_F(MinefieldTest, NoOfMinedNeighbours01) { int number = testingfield.minedneighbours(1,!! 0); testingfield.putmine(0, 7); ASSERT_EQ(1, number);!! testingfield.putmine(7, 7); };!! testingfield.putmine(5, 1);!! testingfield.putmine(4, 7); TEST_F(MinefieldTest, NoOfMinedNeighbours02) {! } }; int number = testingfield.minedneighbours(7, }; 7); ASSERT_EQ(0, number); x
33 Sobre setup y teardown Es importante que no haya dependencias entre tests diferentes. No hay ninguna garantía sobre el orden en el que se ejecutan los tests GoogleTest construye un fixture fresco para cada test. testingfield = new Minefield(); testingfield.setup(); Las rutinas SetUp y TearDown ayudan NoOfMinedNeighbours01; a setear el contexto entre diferentes tests. testingfield.teardown(); free(testingfield); El método SetUp se ejecuta antes de cada test de la suite. testingfield.setup(); testingfield = new Minefield(); NoOfMinedNeighbours02; El método TearDown se ejecuta después de cada test testingfield.teardown(); de la suite. free(testingfield);
34 Independencia entre Tests GoogleTest asegura la independencia entre test (aunque class MineTest : public ::testing::test { se debe tener cuidado! con datos persistentes). protected: static void SetUpTestCase() { mine = new Mine(); } class MineTest : public ::testing::test {! static Mine* mine; class MineTest : protected: public ::testing::test }; {! Mine *mine; protected: }; Mine* MineTest::mine = NULL; Mine mine; }; TEST_F(MineTest, TEST_F(MineTest, Marked) { Marked) { mine = new Mine(); mine->setmarked(true); TEST_F(MineTest, mine->setmarked(true); Marked) { ASSERT_TRUE(mine->isMarked() &&!mine->isopened()); mine.setmarked(true); ASSERT_TRUE(mine->isMarked() }; &&!mine->isopened()); ASSERT_TRUE(mine.isMarked() }; &&!mine.isopened()); }; TEST_F(MineTest, Opened) { TEST_F(MineTest, Opened) mine->setopened(true); { TEST_F(MineTest, mine->setopened(true); Opened) { ASSERT_TRUE(!mine->isMarked() && mine->isopened()); mine.setopened(true); ASSERT_TRUE(!mine->isMarked() }; && mine->isopened()); ASSERT_TRUE(!mine.isMarked() }; && mine.isopened()); };
35 Demo Minefield
36 Ejercicio Utilizando las clases Minefield y Minefield_Test: 1.Agregá a Minefield_Test más casos de prueba para testear todos los métodos de Minefield. 2.Implementá el método minedneighbours en la clase Minefield y extendé el test correspondiente.
37 Tests parametrizados por los datos que manipulan Ya hemos visto varios casos en los cuales varios tests poseen exactamente la misma estructura, pero difieren en los datos que se utilizan para realizar el arrange del test. Para estos casos, Google Test ofrece una forma conveniente de organizar los tests, separando su estructura de los datos que manipulan. La clave es: definir un test como paramétrico. definir un generador de parámetros para la suite, que se usará para instanciar los datos para los tests.
38 Test parametrizados: un ejemplo Consideremos nuevamente el método max. El siguiente test parametrizado lo prueba con varios datos diferentes: using namespace std; using ::testing::testwithparam; using ::testing::values; Indica que la suite está formada por tests parametrizados. typedef ::tr1::tuple<int, int> mytuple; class MaxTest : public TestWithParam< mytuple > { }; TEST_P(MaxTest, Test) { mytuple row; int maxval, minval; } row = GetParam(); maxval = ::tr1::get<0>(row); minval = ::tr1::get<1>(row); ASSERT_EQ(maxVal, max(minval,maxval)); INSTANTIATE_TEST_CASE_P(MaxOnLeft, MaxTest, Values( mytuple (2,1), mytuple (45,-2), mytuple (-12,-90) )); Test paramétrico (TEST_P) Datos de los test
39 Test parametrizados Generador Descripción El runner genera una el conjunto instancia de valores de cada en el rango test por comenzando cada dato: en Range(begin, MaxOnLeft/MaxTest.Test/0 end, step) begin, terminando para (2,1) en end (no incluido) de a step incrementos. MaxOnLeft/MaxTest.Test/1 para (42,2) Values(v1,v2,...,vn) MaxOnLeft/MaxTest.Test/2 el conjunto para de valores (-12,-90) {v1, v2,..., vn}. Puede además haber más de una generador de datos (entonces ValuesIn(container) se genera el conjunto una instancia de valores por del contenedor cada test, container. por cada dato de cada generador). GoogleTest Bool define una el conjunto serie de de valores funciones {true, false}. para definir generadores de datos: Combine(g1,g2,...,gn) el producto cartesiano (tuple< >) de g1, g2,..., gn.
40 Demo Max Parametrizado Largest Parametrizado
41 Testing unitario: beneficios El testing unitario sistematizado: Facilita los cambios: los test permiten comprobar que la unidad continúa funcionando correctamente a pesar de cualquier tipo de cambio (refactoring o nuevas funcionalidades); su sistematización facilita el testing de regresión. Simplifica la integración: los test reducen la incertidumbre sobre las componentes individuales, facilitando la integración y su verificación, ya sea bottom-up o top-down (con la integración de mocks)
42 Testing unitario: beneficios El testing unitario sistematizado: Sirve como documentación: los test especifican las partes criticas del comportamiento de la unidad, ya sea su uso apropiado o inapropiado; sirven como ejemplo y descripción siempre actualizada de la API. Contribuye al diseño: los test sirven como ejemplo de uso y dan feedback temprano; fuerzan a enforcarse en el qué y en el cómo, encontrando defectos de diseño y aportando a su replanteamiento.
43 Testing unitario: principios Primero escribir los test. Diseñar pensando en la testeabilidad. Utilizar la puerta principal. Documentar los test fixtures. No modificar el SUT. Mantener la independencia de los test. Aislar el SUT. Minimizar el solapamiento. Minimizar el código inestable. Mantener la lógica de testing fuera del código de producción. Verificar sólo una condición por test. Probar diferentes incumbencias de forma separada.
44 Ejercicio Considerando los métodos definidos en staticroutines: 1.Extendé el test de largest para incluir más casos. 2.Construí una suite paramétrica para testear bubblesort. 3.Si encontrás bugs, corregilos.
45 Referencias Google Test: code.google.com/p/googletest/
Técnicas Avanzadas de Testing Automatizado
Técnicas Avanzadas de Testing Automatizado Introducción: Testing ad hoc Testing sistemático Testing unitario Unidad y Suite de tests Frameworks xunit Fixtures compartidos e independecia Tests parametrizados
Más detallesModulo 1 El lenguaje Java
Modulo 1 El lenguaje Java 13 - Codificación en Java Una de las grandes diferencias entre Java y Pascal en cuando a la codificación es que Java se trata de un lenguaje de los llamados case sensitive Esto
Más detallesPruebas de unidad con JUnit
Pruebas de unidad con JUnit Cuando se implementa software, resulta recomendable comprobar que el código que hemos escrito funciona correctamente. Para ello, implementamos pruebas que verifican que nuestro
Más detallesTema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle
Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Contenido Tipos de herencia Herencia y niveles de visibilidad Herencia y creación Redefinición de métodos Conversión
Más detallesCentro de Capacitación en Informática
Fórmulas y Funciones Las fórmulas constituyen el núcleo de cualquier hoja de cálculo, y por tanto de Excel. Mediante fórmulas, se llevan a cabo todos los cálculos que se necesitan en una hoja de cálculo.
Más detallesTesting. Tipos, Planificación y Ejecución de Pruebas
Testing Tipos, Planificación y Ejecución de Pruebas Contenido Definiciones del Testing de Software Objetivos, conceptos Tipos de Test Testing a-la RUP Rol del Testing en el proceso Artefactos Trabajadores
Más detallesLABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL
OBJETIVO Mejorar el nivel de comprensión y el manejo de las destrezas del estudiante para utilizar formulas en Microsoft Excel 2010. 1) DEFINICIÓN Una fórmula de Excel es un código especial que introducimos
Más detallesElementos requeridos para crearlos (ejemplo: el compilador)
Generalidades A lo largo del ciclo de vida del proceso de software, los productos de software evolucionan. Desde la concepción del producto y la captura de requisitos inicial hasta la puesta en producción
Más detallesIAP 1003 - ENTORNOS INFORMATIZADOS CON SISTEMAS DE BASES DE DATOS
IAP 1003 - ENTORNOS INFORMATIZADOS CON SISTEMAS DE BASES DE DATOS Introducción 1. El propósito de esta Declaración es prestar apoyo al auditor a la implantación de la NIA 400, "Evaluación del Riesgo y
Más detallesTema: Arreglos de Objetos en C++.
Programación II. Guía 5 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Arreglos de Objetos en C++. Objetivos Específicos Describir la implementación de arreglos de Objetos.
Más detallesTecnólogo Informático- Estructuras de Datos y Algoritmos- 2009
Árboles Ejemplos de estructuras arborescentes: con forma de árbol Regla de Alcance: los objetos visibles en un procedimiento son aquellos declarados en él mismo o en cualquier ancestro de él (cualquier
Más detallesProgramación Orientada a Objetos en JAVA
Programación Orientada a Objetos en JAVA Jorge Pérez Introducción a la Computación Jorge Pérez Programación Orientada a Objetos en JAVA 1 / 36 Orientación a Objetos OO es un paradigma de modelación y programación
Más detallesFundamentos de Investigación de Operaciones Investigación de Operaciones 1
Fundamentos de Investigación de Operaciones Investigación de Operaciones 1 1 de agosto de 2003 1. Introducción Cualquier modelo de una situación es una simplificación de la situación real. Por lo tanto,
Más detallesTema: Sobrecarga de Operadores.
Programación II. Guía 7 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Sobrecarga de Operadores. Objetivos Describir como redefinir (sobrecargar) operadores para que funcionen
Más detallesCapitulo 3. Test Driven Development
Capitulo 3. Test Driven Development 3.1 Uso de JUnit como framework para realizar pruebas unitarias Como ya se mencionó en el marco teórico Test Driven Development es una técnica de programación extrema
Más detallesProgramación I: Funciones y módulos
Programación I: Funciones y módulos Esteban De La Fuente Rubio 2 de abril de 23 Índice. Funciones.. Definición y llamado de funciones............................................. 2.2. Parámetros por omisión..................................................
Más detallesTécnicas Avanzadas de Testing Automatizado
Técnicas Avanzadas de Testing Automatizado Criterios de cobertura: Caja blanca/caja negra Clases de Equivalencia Valores de borde Cobertura basada en flujo de control CodeCover Mutación Jumble Criterios
Más detallesUML, ejemplo sencillo sobre Modelado de un Proyecto
UML, ejemplo sencillo sobre Modelado de un Proyecto Normal &DOLILFDU 0L3DQRUDPD 626 (VFULEHSDUD1RVRWURV Por Armando Canchala Contenido Introducción Objetivo Requerimientos Casos de Uso Subcasos de Uso
Más detallesIntroducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual
Introducción Algunas de las personas que trabajan con SGBD relacionales parecen preguntarse porqué deberían preocuparse del diseño de las bases de datos que utilizan. Después de todo, la mayoría de los
Más detallesEn cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.
Arboles-B Características Los árboles-b son árboles de búsqueda. La "B" probablemente se debe a que el algoritmo fue desarrollado por "Rudolf Bayer" y "Eduard M. McCreight", que trabajan para la empresa
Más detallesRESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA
UNED Centro Asociado de Cádiz RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA 1. OBJETOS Cualquier elemento del programa es un objeto. Un programa es un conjunto de objetos que se comunican entre sí
Más detallesBaires. Design - Test - Automate
SERVICIOS DE CONTROL DE CALIDAD Y TESTING DE SOFTWARE Áreas con falta de Calidad y Testing La falta de control de calidad orgánico en una empresa tiene impactos que van más allá de la aparición de errores
Más detallesBase de datos en la Enseñanza. Open Office
1 Ministerio de Educación Base de datos en la Enseñanza. Open Office Módulo 1: Introducción Instituto de Tecnologías Educativas 2011 Introducción Pero qué es una base de datos? Simplificando mucho, podemos
Más detallesTEMA 7: DIAGRAMAS EN UML
TEMA 7: DIAGRAMAS EN UML Diagramas en UML El bloque de construcción básico de UML es un Diagrama Introducción a UML 2 1 Modelo de Casos de Uso (MCU) Todos los casos de uso constituyen el MCU que describe
Más detallesINSTITUTO TECNOLOGICO de la laguna Programación Orientada a Objetos en C++
5.- Herencia Múltiple. Un hecho natural es que una persona tenga más de un pariente mayor, esta situación también se puede dar en la herencia de clases, naturalmente este tipo de herencia involucra un
Más detallesCapacitación Rational Funcional Tester
Capacitación Rational Funcional Tester Clínica Alemana Santiago, 28 de abril de 2009 Introducción La presente exposición es sobre las principales características de Rational Functional Tester Describiendo
Más detallesIntroducción a la programación orientada a objetos
Introducción a la programación orientada a objetos 1. Introducción a la programación orientada a objetos 2. Las clases 3. El tipo Struct 4. Diferencias entre Class y Struct 5. Pilares de la Programación
Más detallesTema 6. Reutilización de código. Programación 2015-2016. Programación - Tema 6: Reutilización de código
Tema 6 Reutilización de código Programación 2015-2016 Programación - Tema 6: Reutilización de código 1 Tema 6. Reutilización de código Modularidad. Implementación de métodos. Uso de métodos. Programación
Más detallesIntroducción al Proceso de Pruebas.
Introducción al Proceso de Pruebas. Javier Gutiérrez / javierj@us.es Introducción al proceso de pruebas Objetivo: repasar las ideas principales sobre las pruebas del software y, en concreto, las que usaremos
Más detallesISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA
ARREGLOS EN JAVA I I N T R O D U C C I Ó N En las sesiones anteriores, los datos manejados en los programas han sido datos simples (carácter, entero, reales) En un gran número de problemas es necesario
Más detallesIntroducción a Visual Studio.Net
Introducción a Visual Studio.Net Visual Studio es un conjunto completo de herramientas de desarrollo para la generación de aplicaciones Web ASP.NET, Servicios Web XML, aplicaciones de escritorio y aplicaciones
Más detallesConceptos. ELO329: Diseño y Programación Orientados a Objetos. ELO 329: Diseño y Programación Orientados a Objetos
Conceptos ELO329: Diseño y Programación Orientados a Objetos 1 Paradigmas de Programación Historia: Los computadores parten cableados por hardware, Luego se introduce la programación en binario, Se desarrolla
Más detallesMANUAL DE USUARIOS DEL MODULO DE EVALUACIÓN DE DESEMPEÑO SISTEMA DE ADMINISTRACIÓN DE SERVIDORES PÚBLICOS (SASP)
MINISTERIO DE ADMINISTRACIÓN PÚBLICA (MAP) Dirección de Tecnología de la Información y Comunicación MANUAL DE USUARIOS DEL MODULO DE EVALUACIÓN DE DESEMPEÑO SISTEMA DE ADMINISTRACIÓN DE SERVIDORES PÚBLICOS
Más detallesINSTRUCTIVO DEL COMANDO MAKE
INSTRUCTIVO DEL COMANDO MAKE Introducción Un programa escrito en C está normalmente compuesto por varios archivos. Estos archivos se van modificando según se va completando o cambiando el programa. Cada
Más detallesPRÁCTICA DE LABORATORIO 3 Tipo Abstrato de Dato
ESCUELA DE INGENIERÍA DE SISTEMAS DEPARTAMENTO DE COMPUTACIÓN PROGRAMACIÓN 2 PRÁCTICA DE LABORATORIO 3 Tipo Abstrato de Dato Contenido Introducción...1 Dato...1 Valor...1 Tipo de Dato...2 Tipo Abstracto
Más detallesApuntes de Matemática Discreta 1. Conjuntos y Subconjuntos
Apuntes de Matemática Discreta 1. Conjuntos y Subconjuntos Francisco José González Gutiérrez Cádiz, Octubre de 2004 Universidad de Cádiz Departamento de Matemáticas ii Lección 1 Conjuntos y Subconjuntos
Más detallesALGORITMICA Y PROGRAMACION POR OBJETOS I
ALGORITMICA Y PROGRAMACION POR OBJETOS I Nivel 2 Definiendo situaciones y manejando casos Marcela Hernández Hoyos Qué vamos a aprender en este nivel: Diferencia entre clase y objeto Modelar características
Más detallesArreglos. // Incluir E/S y Librerías Standard #include <stdlib.h> #include <stdio.h>
Arreglos Introducción. En los temas anteriores se han estudiado los diferentes tipos de datos simples de C++, usados para representar valores simples como enteros, reales o caracteres. Sin embargo, en
Más detallesMATERIAL 2 EXCEL 2007
INTRODUCCIÓN A EXCEL 2007 MATERIAL 2 EXCEL 2007 Excel 2007 es una planilla de cálculo, un programa que permite manejar datos de diferente tipo, realizar cálculos, hacer gráficos y tablas; una herramienta
Más detallesLEER Y ESCRIBIR ARCHIVOS O FICHEROS EN C. FOPEN, FCLOSE, MODOS DE ACCESO READ, WRITE Y APPEND (CU00536F)
APRENDERAPROGRAMAR.COM LEER Y ESCRIBIR ARCHIVOS O FICHEROS EN C. FOPEN, FCLOSE, MODOS DE ACCESO READ, WRITE Y APPEND (CU00536F) Sección: Cursos Categoría: Curso básico de programación en lenguaje C desde
Más detallesEDICIÓN Y FORMATO (II)
EDICIÓN Y FORMATO (II) 1. INTRODUCCIÓN Writer dispone de una serie de barras de herramientas predeterminadas, en las que se encuentran botones de acceso directo a comandos específicos que se activan con
Más detallesCASO PRÁCTICO DISTRIBUCIÓN DE COSTES
CASO PRÁCTICO DISTRIBUCIÓN DE COSTES Nuestra empresa tiene centros de distribución en tres ciudades europeas: Zaragoza, Milán y Burdeos. Hemos solicitado a los responsables de cada uno de los centros que
Más detallesOBTENER DATOS EXTERNOS
La herramienta Obtener datos externos nos va a permitir llevar a Excel datos que proceden de otras fuentes de datos, como archivos de texto o bases de datos, para su posterior tratamiento y análisis con
Más detallesCapítulo 6. Introducción a la POO
Capítulo 6. Introducción a la POO 6. 1. Clases, Objetos y Métodos Definición La Programación Orientada a Objetos (POO) es una forma especial de programar, más cercana a cómo expresaríamos las cosas en
Más detallesDiseño e implementación 15% Instalación y comisionamiento 6% Operación y mantenimiento 15%
SIS 202 Diseño funcional 15 minutos O Generalidades 1 Tipos de software 2 Ciclo de vida de desarrollo 3 Módulos de software certificados 4 Herramientas de utilidad de software 5 Sumario Generalidades En
Más detalles2. Estructura de un programa en Java
24 A. García-Beltrán y J.M. Arranz 2. Estructura de un programa en Java Objetivos: a) Describir la estructura del código fuente de una aplicación Java b) Presentar los conceptos de comentario y de identificador
Más detallesGUÍA TÉCNICA PARA LA DEFINICIÓN DE COMPROMISOS DE CALIDAD Y SUS INDICADORES
GUÍA TÉCNICA PARA LA DEFINICIÓN DE COMPROMISOS DE CALIDAD Y SUS INDICADORES Tema: Cartas de Servicios Primera versión: 2008 Datos de contacto: Evaluación y Calidad. Gobierno de Navarra. evaluacionycalidad@navarra.es
Más detallesIntroduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia
Introduccion al Lenguaje C Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Introducción C es un lenguaje de programación creado en 1972 por
Más detallesUniversidad Católica del Maule. Fundamentos de Computación Especificación de tipos de datos ESPECIFICACIÓN ALGEBRAICA DE TIPOS DE DATOS
Especificación algebraica ESPECIFICACIÓN ALGEBRAICA DE TIPOS DE DATOS Un tipo abstracto de datos se determina por las operaciones asociadas, incluyendo constantes que se consideran como operaciones sin
Más detallesProgramación Orientada a Objetos con Java
Programación Orientada a Objetos con Java M.C. Jorge Eduardo Ibarra Esquer jorgeeie@uabc.mx Sobrecarga de métodos Java permite la definición de dos o más métodos que tengan el mismo nombre, dentro de la
Más detallesCurso de Doctorado: Tecnologías de Objetos
Curso de Doctorado: Tecnologías de Objetos Grupo IMO Área de Lenguajes y Sistemas Informáticos Departamento de Informática J. Baltasar García Perez-Schofield http://webs.uvigo.es/jbgarcia/ Implementación
Más detalles11. Algunas clases estándar de Java (II)
122 A. García-Beltrán y J.M. Arranz 11. Algunas clases estándar de Java (II) Objetivos: a) Presentar la clase predefinida en Java para trabajar con arrays b) Interpretar el código fuente de una aplicación
Más detallesExamen escrito de Programación 1
Examen escrito de Programación 1 Escuela de Ingeniería y Arquitectura Departamento de Informática e Ingeniería de Sistemas 2 de septiembre de 2015 Se debe disponer sobre la mesa en lugar visible un documento
Más detallesPROBLEMAS DE PROBABILIDADES Y ESTADÍSTICA
Problema 1 PROBLEMAS DE PROBABILIDADES Y ESTADÍSTICA Hoja 2 Una población de 20 animales insectívoros se introduce en una zona donde el 14% de los insectos que le sirven de alimento son venenosos. Cada
Más detallesPráctica 2: Simón dice
Práctica 2: Simón dice Fecha de entrega: 31 de enero de 2016 0.- Descripción del juego (Wikipedia.org) Simon dice es un juego electrónico, creado por Ralph Baer, que consiste en reproducir una secuencia
Más detallesOrígenes y descripción de la Automatización 'Inteligente'
Orígenes y descripción de la Automatización 'Inteligente' Orígenes La automatización, como hoy la propone Agile, nace del concepto Jidoka; también llamado: Autonomation. Automation with a human touch.
Más detallesActividades para mejoras. Actividades donde se evalúa constantemente todo el proceso del proyecto para evitar errores y eficientar los procesos.
Apéndice C. Glosario A Actividades de coordinación entre grupos. Son dinámicas y canales de comunicación cuyo objetivo es facilitar el trabajo entre los distintos equipos del proyecto. Actividades integradas
Más detallesPrograma Presupuestos de Sevillana de Informática.
Programa Presupuestos de Sevillana de Informática. Introducción. En sus inicios, el programa Presupuestos estaba pensado únicamente para escribir e imprimir presupuestos, facilitando el trabajo con un
Más detallesTécnicas Avanzadas de Testing Automático
Técnicas Avanzadas de Testing Automático Marcelo Frias ITBA - Buenos Aires, Argentina CONICET Preliminares: Calidad Validación y Verificación Especificaciones y V&V Análisis estático y dinámico Inspecciones
Más detallesTema 1: Fundamentos de lógica, teoría de conjuntos y estructuras algebraicas: Apéndice
Tema 1: Fundamentos de lógica, teoría de conjuntos y estructuras algebraicas: Apéndice 1 Polinomios Dedicaremos este apartado al repaso de los polinomios. Se define R[x] ={a 0 + a 1 x + a 2 x 2 +... +
Más detallesLOGÍSTICA DE SALIDA: Métodos de Despacho de Mercadería. Sistema. IWMS MKR Systems
LOGÍSTICA DE SALIDA: Métodos de Despacho de Mercadería Sistema IWMS MKR Systems 1 Contenidos del Documento: Introducción. Pedidos de Cliente. Preparación de Cargas. o Concepto de Carga en IWMS. o Preparación
Más detallesGERENCIA DE INTEGRACIÓN
GERENCIA DE INTEGRACIÓN CONTENIDO Desarrollo del plan Ejecución del plan Control de cambios INTRODUCCIÓN La gerencia de integración del proyecto incluye los procesos requeridos para asegurar que los diversos
Más detallesParte 1 Múltiple Opción
Cada pregunta de la parte múltiple opción contestada correctamente tiene un valor de 1,5 puntos. Cada pregunta incorrecta de la múltiple opción resta 0,5 puntos. Esta parte consta de 25 preguntas por lo
Más detallesOperación 8 Claves para la ISO 9001-2015
Operación 8Claves para la ISO 9001-2015 BLOQUE 8: Operación A grandes rasgos, se puede decir que este bloque se corresponde con el capítulo 7 de la antigua norma ISO 9001:2008 de Realización del Producto,
Más detallesII. Relación con Terceros
II. Relación con Terceros Introducción a la Relación con Terceros Los terceros se refieren a las entidades con las cuales se realizan transacciones en la organización. Hay tres tipos de terceros, están:
Más detallesPROYECTO MIS IMÁGENES,
Jose Ignacio González Gómez. Departamento de Economía Financiera y Contabilidad Universidad de La Laguna www.jggomez.eu Tema: Script para subir ficheros a través de un formulario y almacenar otros campos
Más detallesActualización de versión a Bizagi 10.x
Actualización de versión a Bizagi 10.x Actualización de versión a Bizagi 10.x 1 Tabla de contenidos Introducción... 2 Actualizar un proyecto desde v9.1.x a 10.x... 2 Preparación... 3 Habilitación de formas
Más detallesDCU Diagramas de casos de uso
DCU Diagramas de casos de uso Universidad de Oviedo Departamento de Informática Contenidos Introducción Elementos básicos Más sobre los actores Más sobre los casos de uso Más sobre las asociaciones Otros
Más detallesInter American Accreditation Cooperation. Grupo de prácticas de auditoría de acreditación Directriz sobre:
Grupo de prácticas de auditoría de acreditación Directriz sobre: Auditando la competencia de los auditores y equipos de auditores de organismos de certificación / registro de Sistemas de Gestión de Calidad
Más detalles2.2.- Paradigmas de la POO
2.2.- Paradigmas de la POO Los principios propios de la orientación a objetos son: 2.2.1.- Abstracción de Datos 2.2.2.- Encapsulamiento 2.2.3.- Ocultamiento 2.2.4.- Herencia 2.2.5.- Polimorfismo Cualquier
Más detallesIV. CARGUE DE SOPORTES
IV. CARGUE DE SOPORTES Esta opción de cargue de soportes se ha realizado para efectuar las correcciones necesarias en cuanto a cargue de servicio se refiere, como anulación, modificación de RIPS de algún
Más detallesMANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO
MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO Fecha última revisión: Marzo 2016 INDICE DE CONTENIDOS HERRAMIENTA DE APROVISIONAMIENTO... 2 1. QUÉ ES LA HERRAMIENTA DE APROVISIONAMIENTO... 2 HERRAMIENTA
Más detallesEjercicio Nº 3: Realizar aumentos en una Tabla de Sueldos
SESION5: BASE DE DATOS PLANILLAS Ejercicio Nº : Realizar aumentos en una Tabla de Sueldos Veamos pues. En la hoja de calculo se tiene la Tabla de Sueldos de varios empleados (aquí ahora vemos solo empleados,
Más detallesOrganización de Computadoras
Organización de Computadoras Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Segundo Cuatrimestre de 2015 Proyecto N 1 Programación en Lenguaje C El objetivo principal
Más detallesTema 3. Test Driven Development
Tema 3. Test Driven Development Ejercicios Resueltos Ejercicio 01. Desarrolle mediante TDD una implementación del algoritmo de la Criba de Eratóstenes para calcular la lista de los números primos desde
Más detallesPRU. Fundamento Institucional. Objetivos. Alcance
PRU INSTRUCCIONES: a continuación se describe el flujo de trabajo correspondiente al área de procesos de PRUEBAS para el desarrollo de software, en el cual se debe apoyar para la ejecución de sus actividades;
Más detallesPatrones Creacionales Builder. Patrones Creacionales Abstract Factory. Patrones Creacionales Singleton. Patrones Creacionales Prototype
Temario Patrones de Diseño de Software Fundamentos de Ingeniería de SW Jocelyn Simmonds GOF: Patrones Creacionales Patrones Estructurales ILI-236 (JS) Patrones II 1 / 31 ILI-236 (JS) Patrones II 2 / 31
Más detallesEstimado usuario. Tabla de Contenidos
Estimado usuario. El motivo del presente correo electrónico es mantenerle informado de las mejoras y cambios realizados en el software Orathor (Athor/Olimpo) en su versión 5.7.041 la cual ha sido recientemente
Más detalles9. Objetos y clases. 9.1. Clases
Programación orientada a objetos con Java 103 9. Objetos y clases Objetivos: a) Presentar el concepto de objeto, clase, atributo, método e instancia b) Interpretar el código fuente de una aplicación Java
Más detallesSesión 3 - Movimiento Diferencial
Sesión 3 - Movimiento Diferencial Qué aprenderemos en esta sesión? Para entender como nuestro robot se va a desplazar por cualquier superficie, debemos aprender la manera en que lo hace, por eso, en esta
Más detalles4. EVALUACIÓN DEL PROGRAMA DE CAPACITACIÓN
4. EVALUACIÓN DEL PROGRAMA DE CAPACITACIÓN La etapa final del proceso de capacitación es la evaluación de los resultados obtenidos, mediante este proceso se puede responder a las siguientes preguntas:
Más detallesJornada informativa Nueva ISO 9001:2008
Jornada informativa Nueva www.agedum.com www.promalagaqualifica.es 1.1 Generalidades 1.2 Aplicación Nuevo en Modificado en No aparece en a) necesita demostrar su capacidad para proporcionar regularmente
Más detallesInformática I Notas del curso
EXCEL Objetivo: Identificar la funcionalidad general de Excel, sus herramientas y recursos Excel Objetivo Particular: Conocer los métodos básicos de trabajo de Excel, para el manejo de registros, datos
Más detallesCreación de Funciones de Conducción
Creación de Funciones de Conducción Requerimientos Para el desarrollo de esta actividad se requiere que: Contemos con un robot BoeBot armado con placa Arduino. Repetición En estos momentos habremos notado
Más detallesEscuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática
Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática Fundamentos de la informática 2. Algoritmos, diagramas de flujo y pseudocódigo Contenido Algoritmos Diagramas de flujo
Más detallesCENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES, BILIB RECETA TECNOLÓGICA REALIZACIÓN DE COPIAS DE SEGURIDAD CON GSYNC
CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES, BILIB RECETA TECNOLÓGICA REALIZACIÓN DE COPIAS DE SEGURIDAD CON GSYNC Fecha: 11 de Abril de 2012 Licencia Autor del documento: Centro de Apoyo Tecnológico a
Más detallesWinHIPE: edición, compilación y ejecución de programas; y generación de animaciones web. Manual de usuario.
WinHIPE: edición, compilación y ejecución de programas; y generación de animaciones web. Manual de usuario. Índice contenido. INTRODUCCIÓN... 1-2 1. ENTORNO DE TRABAJO... 1-2 2. EDICIÓN DE PROGRAMAS...
Más detallesSoftware para Seguimiento de Clientes. Descripción del Producto
Software para Seguimiento de Clientes Descripción del Producto Descripción del Sistema Es un completo sistema que permite tener un mejor control y manejo sobre clientes antiguos y nuevos, ya que permite
Más detallesÍndice 1 Instalación de la herramienta 2 Descripción de la herramienta 2 Arranque de la aplicación 3 Proyecto 4 Diagrama de clases 5
Índice Índice 1 Instalación de la herramienta 2 Descripción de la herramienta 2 Arranque de la aplicación 3 Proyecto 4 Diagrama de clases 5 Crear diagrama de clases 5 Crear elementos 7 Editar elementos
Más detallesProceso Unificado de Rational
RUP: El Proceso Unificado de Rational XP: Programacion Extrema EAP: Computación Científica Ciencia de la Computación V Prof. Oscar Brnito Pacheco Proceso Unificado de Rational Orígenes Modelo original
Más detallesCAPITULO VI ESTRATEGIAS DE OUTSOURCING
CAPITULO VI ESTRATEGIAS DE OUTSOURCING Cuando una compañía decide llevar a cabo un proceso de outsourcing debe definir una estrategia que guíe todo el proceso. Hay dos tipos genéricos de estrategia de
Más detallesEstándares para planes de calidad de software. Escuela de Ingeniería de Sistemas y Computación Desarrollo de Software II Agosto Diciembre 2008
Estándares para planes de calidad de software Escuela de Ingeniería de Sistemas y Computación Desarrollo de Software II Agosto Diciembre 2008 DIFERENCIA ENTRE PRODUCIR UNA FUNCION Y PRODUCIR UNA FUNCION
Más detallesMetodología Orientada a Objetos Clave 43100007 Maestría en Sistemas Computacionales
Metodología Orientada a Objetos Clave 43100007 Maestría en Sistemas Computacionales Modulo 03 UML: Vista de Casos de Uso Artefacto: Actores Catedrático MSC. Jose Juan Aviña Grimaldo e-mail josejuan_avina@gmail.com
Más detallesBeatriz Pérez. Jornada de Testing en Vivo - 1, 2, 3 probando!
Beatriz Pérez Proceso de Testing Funcional Principales características Etapas Actividades y Entregables Roles Principales características Independiente del proceso de desarrollo Testing funcional de productos
Más detallesINVENTARIO INTRODUCCIÓN RESUMEN DE PASOS
INVENTARIO INTRODUCCIÓN Es habitual que en las empresas realicen a final de año un Inventario. Con este proceso se pretende controlar el nivel de stock existente, para iniciar el nuevo ejercicio, conociendo
Más detalles1.2 Qué es un Sistemas de Información Geográfica?
1.1 Introducción En los últimos años, se ha desarrollado software especializado que permite el manejo de cartografía por computadora, favoreciendo a diferentes áreas, en el proceso de toma de decisiones.
Más detallesCatoira Fernando Fullana Pablo Rodriguez Federico [MINERIA DE LA WEB] Proyecto Final - Informe Final
Catoira Fernando Fullana Pablo Rodriguez Federico [MINERIA DE LA WEB] Proyecto Final - Informe Final INTRODUCCION En principio surgió la idea de un buscador que brinde los resultados en agrupaciones de
Más detallesLos números racionales
Los números racionales Los números racionales Los números fraccionarios o fracciones permiten representar aquellas situaciones en las que se obtiene o se debe una parte de un objeto. Todas las fracciones
Más detallesMesa de Ayuda Interna
Mesa de Ayuda Interna Documento de Construcción Mesa de Ayuda Interna 1 Tabla de Contenido Proceso De Mesa De Ayuda Interna... 2 Diagrama Del Proceso... 3 Modelo De Datos... 4 Entidades Del Sistema...
Más detallesEDWIN KÄMMERER ORCASITA INGENIERO ELECTRÓNICO
Identifica los tipos de datos y funciones - Tipos de Datos: Excel soporta 5 tipos de datos, estos son: a) Numéricos: Están formados por cualquiera de los 10 dígitos (del 0 al 9) y pueden estar acompañados
Más detalles