Actividad Final - Ruiz Myriam

25
Myriam Ruiz Pág 1 / 25 Actividad Final: Aprendizaje Obtenido en el Curso de Testing Alumna: Ruiz, Myriam Noemí del Valle Lugar: NAC – Ente Cultural (San Miguel de Tucumán) Temario 1. Metodologías para el desarrollo de Software 1.1. Etapas de un Ciclo de Desarrollo 1.2. Cascada 1.3. Iterativo 1.4. Incremental 1.5. Iterativo Incremental 1.6. Ágil 2. Programa 2.1. Concepto 2.2. Interfaz de Programa 2.3. Algoritmo 3. Variables 3.1. Concepto 3.2. Alcances 4. Conceptos de Programación (en Macros – VBA) 4.1. Mostrar por pantalla (msgbox) 4.2. Ingreso de datos 4.3. Función para convertir a mayúsculas (UCase) y minúsculas (LCase) 4.4. Condicional if/si, ElseIf 4.5. Estructura de decisión Select 5. Comandos Linux/Huayra 5.1. Qué es Linux/Qué es Huayra 5.2. Comandos 6. Lenguajes Estáticos y Dinámicos 7. Fuertemente y débilmente tipado 8. Programación en Groovy 8.1. Qué es Groovy 8.2. Declaración de variables y Operaciones 8.3. Sentencias para ingresar y mostrar datos 8.4. Condicionales 8.5. Estructuras Repetitiva (While) 8.6. Funciones 9. Programación Orientada a Objetos 9.1. Concepto de Objeto 9.2. Propiedades 9.3. Métodos 9.4. Eventos 9.5. Listas 9.6. Creación de clases 10. Testeo 10.1. Qué es el testing 10.2. Qué hace un Tester 10.3. Que se evalúa 10.4. Tipos de testeo

Transcript of Actividad Final - Ruiz Myriam

Myriam Ruiz Pág 1 / 25

Actividad Final: Aprendizaje Obtenido en el Curso de Testing

Alumna: Ruiz, Myriam Noemí del Valle Lugar: NAC – Ente Cultural (San Miguel de Tucumán)

Temario 1. Metodologías para el desarrollo de Software

1.1. Etapas de un Ciclo de Desarrollo 1.2. Cascada 1.3. Iterativo 1.4. Incremental 1.5. Iterativo Incremental 1.6. Ágil

2. Programa 2.1. Concepto 2.2. Interfaz de Programa 2.3. Algoritmo

3. Variables 3.1. Concepto 3.2. Alcances

4. Conceptos de Programación (en Macros – VBA) 4.1. Mostrar por pantalla (msgbox) 4.2. Ingreso de datos 4.3. Función para convertir a mayúsculas (UCase) y minúsculas (LCase) 4.4. Condicional if/si, ElseIf 4.5. Estructura de decisión Select

5. Comandos Linux/Huayra 5.1. Qué es Linux/Qué es Huayra 5.2. Comandos

6. Lenguajes Estáticos y Dinámicos 7. Fuertemente y débilmente tipado 8. Programación en Groovy

8.1. Qué es Groovy 8.2. Declaración de variables y Operaciones 8.3. Sentencias para ingresar y mostrar datos 8.4. Condicionales 8.5. Estructuras Repetitiva (While) 8.6. Funciones

9. Programación Orientada a Objetos 9.1. Concepto de Objeto 9.2. Propiedades 9.3. Métodos 9.4. Eventos 9.5. Listas 9.6. Creación de clases

10. Testeo 10.1. Qué es el testing 10.2. Qué hace un Tester 10.3. Que se evalúa 10.4. Tipos de testeo

Myriam Ruiz Pág 2 / 25

10.4.1. Testeo Manual 10.4.2. Informe

CURSO DE TESTING 1. Metodologías para el desarrollo de Software

1.1. Etapas de un ciclo de desarrollo 1. Análisis de requerimientos (Delimitación y objetivos): Se extraen los requisitos del producto de software. En esta etapa la habilidad y experiencia en la ingeniería del software es crítica para reconocer requisitos incompletos, ambiguos o contradictorios. El contenido de comunicación en esta etapa es muy intenso ya que el objetivo es eliminar la ambigüedad en la medida de lo posible y poner un límite a cuál es nuestra obligación al hacer desarrollo. Entrevistar al personal sobre cómo lo quiere al soft, por ejemplo como será interfaz. 2. Análisis: Determinar la posibilidad de realizar lo que se estableció en los puntos anteriores. 3. Diseño: Determinar cómo funcionará de forma general sin entrar en detalles incorporando consideraciones de la implementación tecnológica, como el hardware, la red, etc. Consiste en el diseño de los componentes del sistema que dan respuesta a las funcionalidades descritas en la segunda etapa también conocidas como las entidades de negocio. 4. Implementación: Se traduce el diseño a código. Es la parte más obvia del trabajo de ingeniería de software y la primera en que se obtienen resultados “tangibles”.. 5. Verificación: Consiste en comprobar que el software responda/realice correctamente las tareas indicadas en la especificación. Es una buena praxis realizar pruebas a distintos niveles (por ejemplo primero a nivel unitario y después de forma integrada de cada componente) y por equipos diferenciados del de desarrollo (pruebas cruzadas entre los programadores o realizadas por un área de test independiente). 6. Mantenimiento: En esta etapa se realizan un mantenimiento correctivo (resolver errores) y un mantenimiento evolutivo (mejorar la funcionalidades y/o dar respuesta a nuevos requisitos). ¿Qué etapa será la que consume más tiempo? ¿Y la más corta? Las etapas que más tiempo consumen son Implementación y Verificación, pudiendo tomar el 70% del tiempo de desarrollo. Por otro lado, la etapa de Mantenimiento también podría considerarse como larga, debido a que dura mientras el software se use. La etapa más corta, a mi entender, es la de Requerimientos, ya que estimo que no toma mucho tiempo entrevistar a los clientes e indagar que características requiere el sistema que quieren que se desarrolle.

1.2. Cascada Comenzó a diseñarse en 1966 y se terminó alrededor de 1970. Se define como una secuencia de fases en la que al final de cada una de ellas se reúne la documentación para garantizar que cumple las especificaciones y los requisitos antes de pasar a la fase siguiente.

Myriam Ruiz Pág 3 / 25

Ventajas:

• Es un modelo sencillo y disciplinado

• Es fácil aprender a utilizarlo y comprender su funcionamiento

• Está dirigido por los tipos de documentos y resultados que deben obtenerse al final de

cada etapa

• Ha sido muy usado y, por tanto, está ampliamente contrastado

• Ayuda a detectar errores en las primeras etapas a bajo costo

• Ayuda a minimizar los gastos de planificación, pues se realiza sin problemas

Desventajas:

• Los proyectos raramente siguen el proceso lineal tal como se definía originalmente el

ciclo de vida

• Es difícil que el cliente exponga explícitamente todos los requisitos al principio

• El cliente debe tener paciencia pues obtendrá el producto al final del ciclo de vida

• No refleja exactamente cómo se programa realmente el sistema, en el que suele haber

un gran componente iterativo

• Puede resultar complicado regresar a etapas anteriores (ya acabadas) para realizar

correcciones

• El producto final obtenido puede que no refleje todos los requisitos del usuario

1.3. Iterativo

El proyecto se divide en “iteraciones”, cuyo entregable es una versión del sistema

Todo está sujeto a ser modificado en la siguiente iteración

Myriam Ruiz Pág 4 / 25

Se intenta aprovechar el aprendizaje durante el desarrollo

Es ideal para cuando los requerimientos no están del todo claros en un comienzo o pueden sufrir modificaciones

Ventajas:

Más realista

Se adapta mejor a los cambios

Permite administrar mejor los riesgos

Mayor visibilidad para el cliente

Mejor retroalimentación para el equipo de desarrollo Desventajas

Falta de experiencia

Reacción al cambio de enfoque

Requieren distintos modelos de contrato

1. Proceso Iterativo según Jeff Patton

1.4. Incremental

Características:

Se evitan proyectos largos y se entrega "algo de valor" a los usuarios con cierta frecuencia.

El usuario se involucra más.

Dificil de evaluar el costo total.

Dificil de aplicar a los sistemas transaccionales que tienden a ser integrados y a operar como un todo.

Requiere gestores experimentados.

Los errores en los requisitos se detectan tarde.

El resultado puede ser positivo.

Myriam Ruiz Pág 5 / 25

Ventajas:

Con un paradigma incremental se reduce el tiempo de desarrollo inicial, ya que se implementa la funcionalidad parcial.

También provee un impacto ventajoso frente al cliente, que es la entrega temprana de partes operativas del software.

El modelo proporciona todas las ventajas del modelo en Cascada realimentado, reduciendo sus desventajas sólo al ámbito de cada incremento.

Resulta más sencillo acomodar cambios al acotar el tamaño de los incrementos. Desventajas:

El modelo incremental no es recomendable para casos de sistemas de tiempo real, de alto nivel de seguridad, de procesamiento distribuido y/o de alto índice de riesgos.

Requiere de mucha planeación, tanto administrativa como técnica.

Requiere de metas claras para conocer el estado del proyecto.

2. Proceso Incremental según Jeff Patton

1.5. Iterativo Incremental

Incremental: Desarrollar por partes el producto software, para después integrarlas a medida que se completan. Consiste en agregar cada vez más funcionalidad al sistema. Iterativo: En cada ciclo, iteración, se revisa y mejora el producto. En cada ciclo mejora más la calidad del producto. De la unión del ciclo de vida iterativo y el incremental al final de cada iteración se consigue una versión más estable del software, de más calidad, y añadiendo además nuevas funcionalidades respecto a versiones anteriores.

Myriam Ruiz Pág 6 / 25

3. Esquema Iterativo Incremental

4. Proceso Iterativo e Incremental según Steven Thomas

1.6. Ágil

Básicamente sería un ciclo de vida iterativo e incremental, con iteraciones cortas (semanas) y sin que dentro de cada iteración tenga porque haber fases lineales (tipo cascada). Quizá el caso más popular es el de Scrum (Creado por Ken Schwaber – 1985). En 2001 se decía que las Metodologías tradicionales era excesivamente “pesadas” y rígidas por su carácter normativo y fuerte dependencia de planificaciones detalladas previas al desarrollo. En respuesta a esto, se reúnen 17 críticos de las Metodologías de desarrollo y redactan el Manifiesto Ágil, donde se indica: Con este trabajo hemos llegado a valorar: 1. A los individuos y su interacción, por encima de los procesos y las herramientas. 2. El software que funciona, por encima de la documentación exhaustiva. 3. La colaboración con el cliente, por encima de la negociación contractual. 4. La respuesta al cambio, por encima del seguimiento de un plan. Aunque hay valor en los elementos de la derecha, valoramos más los de la izquierda.

Myriam Ruiz Pág 7 / 25

Ejemplo: Metodología Scrum

Product Backlog: conjunto de objetivos a alcanzar a largo plazo Sprint Backlog: Objetivo de la iteración actual, cuanto se pretende lograr durante el Spring. Spring: Dura 2-4 Semanas, es el tiempo en el que se trabaja para lograr el objetivo, con reuniones diarias (de 15 mins). Es una retroalimentación corta Resultado: Incremento de Producto potencialmente entregable

Volver

2. Programa

2.1. Concepto: Ejecución secuencial de sentencias o instrucciones secuenciadas: Porque la ubicación de cada instrucción determina el momento de su ejecución. Según Wikipedia, un programa es: un conjunto de instrucciones que una vez ejecutadas realizarán una o varias tareas en una computadora. Sin programas, estas máquinas no pueden funcionar.

2.2. Interfaz de Programa: Se considera así al conjunto de elementos que provee el programa, para facilitar la interacción. Interacción: el grado de respuesta que ofrece el programa ante las necesidades del usuario. Ej: Salir o cerrar, debe estar como opción, porque el usuario no tiene por qué saber que para salir debe presionar la X de la ventana.

2.3. Algoritmo: Se introdujo de soslayo el concepto de Algoritmo, a través de los ejercicios que pedían explicar que pasos seguiríamos por ejemplo para poder preparar una leche chocolatada. Pero, se podría dar una definición más formal:

Un algoritmo (del griego y latín, dixit algorithmus y este a su vez del matemático

persa Al-Juarismi) es un conjunto prescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad.

Myriam Ruiz Pág 8 / 25

Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solución. En los algoritmos no se utiliza ningún lenguaje de máquina, sino lenguaje humano común.

Ejemplo: Escribir un algoritmo para obtener el área de un triángulo, tomando en

cuenta que el área es: (base * altura)/2. ALGORITMO: 1- inicio 2- pedir la base y la altura (B,H) 3- multiplicar la base y la altura y dividirlas entre 2 (A=B*H/2) 4- mostrar resultados (A) 5- fin

Volver

3. Variables (en VBA)

3.1. Concepto: Espacio de Memoria (RAM) que se reserva, llevando asociado un nombre. Hay lenguajes que requieren la declaración de tipo de las variables (fuertemente tipados) y otros que no.

Ejemplo de declaración de variable local en VBA Sub Prueba ()

Dim num as String …

End Sub

Ejemplo de declaración de variable en Groovy Sin tipo de dato def num = 5 Con tipo de dato Integer num = 5

3.2. Alcances Las variables son visibles (utilizables) de diferentes formas, según donde se hayan declarado. Pueden ser: Local: Se declara dentro un Sub específico, viéndose solo dentro de él General: Se declara fuera de todo Sub y es visible en todo el formulario donde se encuentre, pero no en el resto. Pública: Son las declaradas en los Módulos (VBA), y pueden ser vistas por todo el proyecto

Volver

4. Conceptos de Programación (en Macros – VBA) 4.1. Mostrar por pantalla (msgbox)

Permite mostrarle un mensaje al usuario. Se usa así: Msgbox “Mensaje “

Myriam Ruiz Pág 9 / 25

4.2. Ingreso de datos Permite ingresar datos por teclado y almacenarlo en una varaiable. Variable = Inputbox (“Mensaje”) Ejemplo: Edad = InputBox("Ingrese su edad")

4.3. Función para convertir a mayúsculas (UCase) y minúsculas (LCase)

A veces es necesario convertir los datos a mayúsculas o minúsculas, por ejemplo para hacer una comparación de lo ingresado por teclado. Para ello se usa las instrucciones: Dato = InputBox(“Ingrese un nombre”) ‘ Suponga ingresado Myriam Dato = Ucase (Dato) ‘ La variable quedaría con MYRIAM Dato = LCase (Dato) ‘ La variable quedaría con myriam

4.4. Condicional if/si, ElseIf If … Then … End If: permite controlar si una condición es verdadera o falsa. Ejemplo: Si la luz del semáforo es roja freno, sino sigo Analicemos esto: Referencia: Lo que miro -> la luz del semáforo Condición: Que esté roja Acción verdadera: Que pasa si es verdad? –> Freno Acción Falsa: Cuando la condición es falsa -> Seguir Sintaxis If condición Then Acción verdadera Else Accion Falsa End If Ejemplo: Ingresar el nombre de un usuario, si es igual a Myriam, responder Bienvenida Myriam, sino Bienvenido Usuario

Dim Usuario as String

Sub Saludar_Click()

Usuario = InputBox("ingrese apellido")

If usuario = “Myriam” then Msgbox (“Bienvenida Myriam”)

Else Msgbox (“Bienvenido Usuario”) End If

End Sub

Myriam Ruiz Pág 10 / 25

Si tengo más opciones puede usar la instrucción ElseIf: Dim Edad As Integer

Private Sub CommandButton1_Click()

MsgBox ("Bienvenidos al curso Tester NAC")

Usuario = InputBox("ingrese Nombre")

If UCase(Usuario) = “MYRIAM" Then

MsgBox ("Bienvenido " & Usuario)

ElseIf Usuario = "Pedro" Then

MsgBox ("Bienvenido" & Usuario)

Else

MsgBox ("Error de usuario")

End If

End Sub

4.5. Estructura de decisión Select

Se utiliza cuando tenemos muchas respuestas Sintaxis: Select Case expresión_prueba

[Case lista_expresion-n [instrucciones-n]] ...

[Case Else [instrucciones_else]]

End Select Ejemplo

Usuario = InputBox("ingrese Nombre")

Select Case UCase(Usuario)

Case “MYRIAM”

MsgBox ("Bienvenida Myriam”)

Case "PEDRO"

MsgBox ("Bienvenido Pedro”)

Case "FABIÁN"

MsgBox ("Bienvenido Fabián”)

Case Else

MsgBox ("Error de usuario")

End Select

Volver

5. Comandos Linux/Huayra

5.1. Qué es Linux GNU/Linux es uno de los términos empleados para referirse a la combinación del núcleo o kernel libre similar a Unix denominado Linux con el sistema GNU. Todo su código fuente puede ser utilizado, modificado y redistribuido libremente por

Myriam Ruiz Pág 11 / 25

cualquiera bajo los términos de la GPL (Licencia Pública General de GNU, en inglés: General Public License) y otra serie de licencias libres. El proyecto GNU, que se inició en 1983 por Richard Stallman; tiene como objetivo el desarrollo de un sistema operativo Unix completo y compuesto enteramente de software libre. La historia del núcleo Linux está fuertemente vinculada a la del proyecto GNU. En 1991 Linus Torvalds empezó a trabajar en un reemplazo no comercial para MINIX10 que más adelante acabaría siendo Linux. Cuando Torvalds liberó la primera versión de Linux, el proyecto GNU ya había producido varias de las herramientas fundamentales para el manejo del sistema operativo, incluyendo un intérprete de comandos, una biblioteca C y un compilador, pero como el proyecto contaba con una infraestructura para crear su propio núcleo (o kernel), el llamado Hurd, y este aún no era lo suficiente maduro para usarse, comenzaron a usar a Linux a modo de continuar desarrollando el proyecto GNU, siguiendo la tradicional filosofía de mantener cooperatividad entre desarrolladores. Entonces, el núcleo creado por Linus Torvalds, quien se encontraba por entonces estudiando la carrera de Ingeniería Informática en la Universidad de Helsinki, llenó el "espacio" final que había en el sistema operativo de GNU. Qué es Huayra

Huayra GNU/Linux es un sistema operativo desarrollado por el Programa Conectar Igualdad de Argentina. Huayra está basado en GNU/Linux, es una metadistribución de Debian. Liberado con la Licencia GNU/GPL, Huayra es software libre. Huayra toma su nombre del vocablo Quechua que significa Viento. Su desarrollo está a cargo del Centro Nacional de Investigación y Desarrollo de Tecnologías Libres (CENITAL) de Argentina, dependiente de la ANSES y toma en consideración las necesidades tanto de estudiantes como de docentes y otros actores involucrados en el programa Conectar Igualdad.

Página de descarga: http://huayra.conectarigualdad.gob.ar/bajar

5.2. Comandos Básicos (Actividades)

# 1. Abrir una consola. ¿Puedo abrir dos consolas simultáneamente? # > Si se puede, primero una luego la otra, desde Aplicaciones > Accesorios > Terminal, o con Ctrl + Alt + T # 2. Utilizar el comando man para conseguir ayuda sobre los comandos nombrados (man, rmdir, mkdir, ls, rm, cd, etc)

Myriam Ruiz Pág 12 / 25

Comando man: El comando man, que es la abreviatura de manual, proporciona información sobre el comando solicitado o permite a los usuarios buscar comandos relacionados con un determinada palabra clave. Sintaxis: man nombre_comando [opciones] opciones:

-a Muestra un mensaje de ayuda de una línea y sale

-k Busca las palabra claves en todos los manuales disponibles.

Ejemplo: man mkdir

Comando mkdir:

Sirve para crear una carpeta Sintaxis

mkdir [opciones] directorio... Opciones

-m modo, --mode=modo Establece los permisos de los directorios creados a modo, que puede ser simbólico como en chmod y entonces emplea el modo predeterminado como el punto de partida.

-p, --parents Crea los directorios padre que falten para cada argumento directorio. Los permisos para los directorios padre se ponen a la umask modificada por u+rwx. No hace caso de argumentos que correspondan a directorios existentes. (Así, si existe un directorio /a, entonces mkdir /a es un error, pero mkdir -p /a no lo es.) Ejemplo: Para crear varios directorios a la vez usaremos:

mkdir -p /dir1/dir2/dir3/... donde dir1, dir2, dir3 son los nombres de los respectivos directorios.

--verbose

Muestra un mensaje para cada directorio creado. Esto es más útil con --parents. Ejemplo: mkdir prueba

Comando rmdir: Permite eliminar un directorio Sintaxis

Myriam Ruiz Pág 13 / 25

rmdir [opciones] directorio Opciones

rmdir --ignore-fail-on-non-empty directorio --> Borra el directorio aunque no esté vacio

rmdir -p a/b/c --> Borra el directorio c, así como sus directorios padre indicados (a y b) Ejemplo rmdir prueba

Comando ls Lista el contenido de un directorio Sintaxis

ls [opciones] [directorio]

Opciones ls sin argumentos muestra el listado del directorio actual ls archivo1 archivo2 archivo3 ... subdir1 subdir2 subdir3 ... : muestra un listado de los archivos y subdirectorios especificados en la línea de órdenes. -l muestra un listado en el formato largo, con información de permisos, número de enlaces asociados al archivo, usuario, grupo, tamaño y fecha de última modificación además del nombre. -h con -l imprime el tamaño de los archivos de forma entendible para los humanos (ej. 1K 234M 2G). -d muestra solamente el nombre del subdirectorio, sin entrar en él ni dar un listado del contenido. -t muestra ordenado por la fecha de última modificación. -c muestra ordenado por la fecha de última modificación del estado del archivo. -r cuando el listado se hace por orden temporal, los archivos más recientes van al principio. Si se indica la -r se invierte el orden, mostrando los más recientes al final. -L en los enlaces simbólicos, muestra los datos del archivo referido en vez de los del link. -1 muestra el listado en una sola columna. Sin la opción -1 el listado se muestra en varias columnas, tantas como permita el ancho de la terminal (generalmente controlado con la variable de entorno $COLUMNS). -i muestra el número del i-nodo antes del nombre de archivo. -m muestra los archivos en una línea y separados por comas.

Myriam Ruiz Pág 14 / 25

-R hace un listado recursivo. Lista primero los archivos del directorio en curso, luego los de los subdirectorios de éste, luego los de los subdirectorios contenidos en ellos (nietos) y así sucesivamente. -s muestra delante del nombre del fichero el tamaño en kilobytes del mismo. --color muestra cada tipo de archivo de un color distinto: un color para los directorios, otro para los archivos regulares, otro para los enlaces simbólicos, otro para los sockets, otro para las tuberías FIFO, etc. Este parámetro no se acepta en todas las versiones de ls y, por supuesto, requiere que la terminal sea capaz de mostrar distintos colores o intensidades. - a muestra los archivos ocultos. Ejemplo

Mostrar archivos ocultos, con estilo largo

$ ls -la

total 1444

drwxr-xr-x 3 user1 grp1 4096 May 13 22:34 .

drwxrwxrwt 56 root root 8192 May 13 22:35 ..

-rw-r--r-- 1 user1 grp1 176 May 13 22:29 .data

-rw-r--r-- 1 mail bin 40661 May 13 22:27 Manual.txt.gz

-rw-r--r-- 1 nobody nogroup 0 May 13 22:26 archivo1.txt

-rw-r--r-- 1 root root 825 May 13 22:26 hosts

lrwxrwxrwx 1 user1 grp1 5 May 13 22:31 servidores -> hosts

-rw-r----- 1 sys sys 1405600 May 13 22:27 syslog.0

Comando rm Permite eliminar un archivo o un directorio Sintaxis rm [opciones] archivo Opciones

rm archivo Borra el fichero archivo (no puede borrar directorios) rm -f archivo --> No pide confirmación e ignora los archivos inexistentes. rm -i archivo --> Pide confirmación al borrar cada fichero rm -r directorio --> Borra el directorio y todo su contenido rm -d directorio --> Borra el directorio con unlink en vez de con rmdir (utilizar

preferiblemente rm -r)

Comando cd Cambiar de directorio (entrar o salir)

Myriam Ruiz Pág 15 / 25

Sintaxis cd [opciones] [directorio] Opciones cd .. -> con espacio y .. regresa a su directorio padre

cd / -> Con barra va hacia el directorio raíz cd -> Sin opciones ni nombres vuelve al home del usuario cd nombre -> entra al directorio nombre

# 3. Crear una carpeta, visualizar que la carpeta fue creada utilizando el comando ls eliminar la carpeta y utilizar nuevamente ls para asegurarse que fue eliminada. mkdir prueba ls rmdir prueba ls # 4. Crear una carpeta utilizando la interfaz gráfica y utilizar ls para comprobar que la carpeta fue creada. ls carpeta2 # 5. En Linux al igual que en Windows existen archivos y directorios ocultos. Algunos archivos suelen estar ocultos porque no suele ser necesario verlos todo el tiempo. Investigar en internet como utilizar el comando ls para ver los archivos ocultos del Home del usuario (recordamos que el home es el directorio en que estamos cuando se abre una terminal) Pista: una posible búsqueda en google podría ser: mostrar archivos ocultos en linux ls -a # los archivos ocultos aparecen con un punto a la izquierda # 6. Si utilizamos el comando pwd en el home, vemos que estamos en el directorio /home/alumno. Utilizar cd .. para ir al directorio /home y ver su contenido con ls. Ir al directorio "/" (llamado directorio raíz[) y ver su contenido. Usar cd para volver al home. pwd # Present Working Directory cd .. ls cd / cd # sin parámetros vuelve al home # 7. Utilizar la interfaz gráfica para crear un archivo de texto y escribir en él nuestro nombre completo. Para esto utilizar algún algun editor como Pluma, Gedit, SublimeText # 8. Abrir una terminal y utilizar ls para ver que efectivamente se creó el archivo del punto 7. cd Documentos ls # 9. Utilizar el comando cat para ver el contenido del archivo del punto 7 cat Ejemplo # lo creé sin extensión y lo mismo lo lee, si tuviera tendría que escribirla también # 10. Utilizar el comando less para ver el contenido del archivo del punto 7

Myriam Ruiz Pág 16 / 25

less Ejemplo # presionar q para salir # 11. Borrar el archivo creado en el punto 7 desde la línea de comandos. rm Ejemplo # Los comandos son sensibles a mayúscula y minúsculas, no sería lo mismo

querer borrar Ejemplo que ejemplo

Volver 6. Lenguajes Estáticos y Dinámicos

Lenguajes Estáticos: En estos, antes de poder ejecutar nuestro programa, se requiere pasar antes por una transformación del código en un archivo ejecutable, esto se llama Compilación y Linkeo. En estos lenguajes, si tuviéramos algún tipo de error, por ejemplo de sintaxis, nos avisaría durante el momento de compilación. Lenguajes Dinámicos: No requieren realizar un paso previo de compilación, ya que esto se realiza automáticamente cuando lo vamos a ejecutar. Si tenemos algún error de sintaxis, no podríamos saberlo hasta el momento que el programa se está ejecutando.

Volver 7. Fuertemente y débilmente tipado

Lenguajes Fuertemente Tipados: Requieren que el programador defina siempre que tipo de dato tiene la variable que están utilizando. Esta característica hace que sea más fácil testear cuando haya error de tipo de dato. Por ejemplo, esperar ciertos resultados pensando que estamos trabajando con números con decimales, cuando en realidad trabajamos con enteros. Lenguajes Débilmente Tipados: No requieren que el programador informe los tipos de datos de las variables, y estos se ajustan automáticamente según reglas propias del lenguaje. Esto brinda una mayor flexibilidad a la hora de programar, pero también facilita la posibilidad de errores. Ejemplos de esto son Python y PHP.

Volver

8. Programación en Groovy 8.1. Qué es Groovy

Es un lenguaje de programación dinámico, orientado a objetos, basado en la máquina virtual Java, que permite mezclar entre un modelo fuertemente tipado y otro dinámicamente tipado. Página de descarga: http://groovy.codehaus.org/Download

Tipearemos nuestro código en la groovyConsole

Myriam Ruiz Pág 17 / 25

Los programas creados en este lenguaje se guardan con extensión .groovy 8.2. Declaración de variables y Operaciones

Sin tipo de Dato específico: def num = 0 Con tipo de dato: Integer num = 0 Tipos de datos que se puede utilizar: BigDecimal, Integer, String, Double, BigInteger, etc.

8.3. Sentencias para ingresar y mostrar datos

Ingresar y convertir a entero: variable = System.console().readLine("Mensaje").toInteger() Mostrar: Se puede mostrar un texto y concatenar con una variable si se quiere: println "Mensaje de salida " + variable Ejemplo: println "Respuesta: "+ cm1 + "cm son " + pul + " pulgadas"

8.4. Condicionales If: if (condición) { Acciones_cuando_es_verdadera } else { Acciones_cuando_es_falsa }

Myriam Ruiz Pág 18 / 25

Ejemplo: Si la hora es menor a 12 es de mañana, sino es de tarde def hora_actual = new Date().Hours if (hora_actual < 12) { println "es de mañana"

} else { println "es de tarde" }

ElseIf: If (condición1) { Acciones_cuando_condicion1_es_verdadera } ElseIf (condicion2) { Acciones_cuando_condicion_2_es_verdadera

} Else {

Acciones_cuando_condicion2_es_falsa } Ejemplo: Realizar una función llamada Minimo que acepte tres números como parámetros y retorne el más pequeño de los tres. if (num1<num2) { if (num1<num3){ return (num1) } else if (num2<num3){ return(num2) } else{ return(num3) } } else if (num1<num3){ return (num3) } else if (num2<num3){ return (num2) } else { return(num3) }

Myriam Ruiz Pág 19 / 25

8.5. Estructuras Repetitiva (While) Se usa cuando el programa tiene que repetir un bloque de instrucciones mientras sea

cierta una condición.

Sintaxis:

while (condición) {

bloque_a_repetir

}

Ejemplo: Hacer un programa que le pida números al usuario hasta que ingrese el

número cero. Luego debe informar el valor promedio de los números ingresados (sin

contar el cero)

def cont=0

def sum=0

def prom=0

def num= System.console().readLine("Ingrese un numero (cero fin) - Ejerc. 2)

Promedio sin el cero: ").toInteger()

while (num!=0) {

sum = sum + num

cont = cont+1

num=System.console().readLine("Ingrese un numero (cero fin): ").toInteger()

}

if (cont!=0){

prom = sum/cont

println "Promedio = " + prom

}

else

{

println "ingresó Cero. Fin"

}

8.6. Funciones Una función, matemáticamente, es una especificación, una REGLA o CRITERIO, para

obtener cierto resultado a partir de datos existentes. En informática es una idea similar, y la podemos imaginar como una “caja negra” en la que metemos datos, dentro de esa “caja” pasa algo, y entonces, de la “caja” sale un resultado, un “producto”.

En groovy una función se declara de la siguiente manera: def NombreFuncion (argumento1, argumento 2, etc) { código_de_la_función…. return (valor) }

Myriam Ruiz Pág 20 / 25

Dónde: NombreFuncion: es el nombre por el cual de identifica de manera univoca a la

función Argumento1, argumento 2, etc: Son los parámetros o argumentos de la función, o sea

los datos que necesita para resolver un problema. código_de_la_función: son las instrucciones que resolverán el problema return: Sirve para devolver el resultado al que llegó la función Ejemplo: Hacer una función que transforme una distancia de centímetros a pulgadas. // FUNCION def cm_a_pulgadas (cm){ return (cm*2.4) } // Invoco la función, o sea, como la uso println "CONVERSION DE CENTIMETROS A PULGADAS\n" def conti=1 while (conti!=0) { def cm1= System.console().readLine("Ingrese centímetros (solo números con punto decimal): ").toDouble() def pul = cm_a_pulgadas(cm1) println "Respuesta: "+ cm1 + "cm son " + pul + " pulgadas" conti = System.console().readLine("Desea hacer otra comparacion? (0.NO, 1.Si): ").toInteger() }

Volver

9. Programación Orientada a Objetos 9.1. Concepto de Objeto

La orientación a Objetos (OO) es una forma de pensar la resolución de los problemas en la cual se intenta modelar los elementos y conceptos de la vida real que forman parte del problema, en estructuras de código que interactúan entre sí. Supongamos que queremos modelar el objeto Auto, que cosas guardaríamos de él?

9.2. Propiedades Son las características propias de los objetos, en el ejemplo del auto, pueden ser el color, la cantidad de puertas, el modelo, el dominio, velocidad etc. Todos los autos pertenecen a la misma Clase, y se dice que cada uno es una Instancia de la clase, es decir que una instancia consiste en un objeto de la clase Auto que tomó ciertos valores particulares en sus propiedades.

9.3. Métodos Son las acciones que puede realizar el objeto. Por ejemplo, el auto puede frenar, acelerar, girar hacia la derecha, etc.

9.4. Eventos Son situaciones que le suceden a los objetos. Por ejemplo: Pasa un peatón, un auto viene en contra mano, el semáforo se puso en rojo, etc.

Myriam Ruiz Pág 21 / 25

9.5. Listas Es una clase de objeto en la que podemos guardar una lista de cosas: de números, de palabras, de otras listas, de objetos, etc. Características:

Tiene un número finito de elementos

Tienen un cierto orden, aunque se refiere al orden de los valores, sino un orden para de creación, que también sirve para poder listarlas.

Tiene decena de métodos y atributos Ejemplo: def lista_numeros = [] def num_ingresado = System.console().readLine("Ingrese numero (cero para termiar): ").toInteger() while (num_ingresado!=0){ lista_numeros.add(num_ingresado) num_ingresado = System.console().readLine("Ingrese numero (cero para termiar): ").toInteger() } println "La lista tiene " + lista_numeros.size() + " elementos" println "La lista original es " + lista_numeros lista_numeros.sort() println "La lista ordenada es " + lista_numeros System.in.read()

Destaco algunos métodos:

Se crea una lista facia

def lista_numeros = []

Se podría crear también listas con ítems de entrada def Trimestre1 =*“Enero”,”Febrero”,”Marzo”+

Se agrega un ítem a la lista lista_numeros.add(ítem) Saber el tamaño de la lista lista_numeros.size()

Ordenar una lista lista_numeros.sort() Mostrar un ítem en particular: println Trimestre[1] // Mostraría Febrero, pues empieza de cero

Myriam Ruiz Pág 22 / 25

9.6. Creación de Objetos Declarar una clase class Nombre { Propiedades Metodos } Extender una clase, o sea, utilizar las propiedades y métodos de una clase, para definir una nueva clase. La nueva clase Hereda lo de la anterior, y puede sobreescribir (Polimorfismo) algún método o agregar nuevas propiedades o métodos (Especialización). class OtroNombre extends Nombre { Propiedades Metodos } Ejemplo: class Persona { def nombre def apellido def Saludar() { "Hola, soy ${nombre}" } } class Alumno extends Persona {

def curso def Saludar(){ "Hola profe, soy ${nombre}" } } def Per = new Persona(nombre:"Myriam") def Al = new Alumno(nombre:"Juana") println Per.Saludar() println Al.Saludar() System.in.read() Como resultado muestra: Hola, soy Myriam Hola profe, soy Juana

Volver

Myriam Ruiz Pág 23 / 25

10. Testeo 10.1. Qué es el testing

El testing consiste en verificar que el programa se ejecuta sin problemas en la mayor cantidad de casos posibles, y si se detecta algún caso en que no funcione como es esperado, dejarlo anotado para que sea solucionado. Se dice que en la mayor cantidad de casos, porque en realidad no existen programas libres de errores.

10.2. Qué hace un Tester Persona encargada de Probar un programa o sistema de acuerdo a parámetros de evaluación que ya están predefinidos. Se suele pensar que el tester solo trabaja en la etapa de Verificación del desarrollo del software, sin embargo, las tareas de testeo se pueden realizar durante todo el proceso, interactuando el tester con el QA (departamento de Quality Assurance / Aseguramiento de la calidad) e incluso con el cliente. Se puede decir que el Tester es el intermediario entre el programador y el usuario final, sufriendo un constante “tironeo” entre los intereses contrapuestos de programadores, área ventas y de sí mismo. Un buen tester llega a dejar en evidencia los errores de otros.

10.3. Que se evalúa El testeo consiste en evaluar:

Eficacia: Verificar si cumple con el objetivo buscado, Si devuelve o hace lo esperado.

Eficiencia: Probar si consume la menor cantidad de recursos posibles. Agilidad: Probar si es fácil de usar, sin son intuitivos. Niveles de Interacción: Evaluar cómo responde el programa antes las

necesidades del usuario. 10.4. Tipos de testeo

10.4.1. Testeo Manual

Un Test Manual consiste en gran parte, en ejecutar la aplicación y usarla, para verificar el resultado con diferentes tipos de entradas.

Cuando estamos codificando solemos hacer algunas pruebas, intentando verificar si el programa hace lo que se pide, pero no probamos que pasa en los casos extremos, o si se usa mal. En cambio cuando estamos testeando realmente el programa ya desarrollado, lo que se intenta es forzar la ruptura, el error. Un ejemplo trivial en casi todas las aplicaciones que hicimos es, testear.

Es común que el que programó pruebe inconscientemente solo aquellos casos que sabe funcionarán bien, por lo que se recomienda siempre pedirle a otra persona que lo pruebe por nosotros, si fuimos quienes lo programamos.

10.4.2. Informe

No existe una forma única de informar los errores, cada empresa puede tener su propio formato de error, o sus propias herramientas de comunicación para estas tareas.

Si hay diálogo constante y directo con el o los desarrolladores, lo más fácil es mostrarle en vivo y en directo el problema. Pero esto no siempre es posible.

Myriam Ruiz Pág 24 / 25

La idea del informe es proveer al programador con la mayor cantidad de información posible para reproducir el problema. Si el programador no puede, por el motivo que sea, ver el mismo problema que el tester, le será muy difícil poder solucionarlo.

Entonces en general un buen reporte de error debe incluir la siguiente información

Un título, un nombre corto que describa el error lo mejor posible. Un paso a paso, lo más detallado posible, de cada acción que se debe

realizar para que siempre que se siga ese proceso se produzca el error. El detalle de cuál fue el resultado incorrecto que se produjo El detalle de cuál era el resultado que se esperaba Se puede incluir una sugerencia de cómo podría resolverse el

problema Un ejemplo de esto puede ser el siguiente fragmento de Informe:

#4 Nombre: Ingreso imprevisto de letras cuando se espera números Tipo: Tiempo de Ejecución Página: 27 (se refiere a los ejemplos del apunte del curso) Se produce cuando: Al introducir letras, símbolos o presionar Enter sin haber

introducido nada

Resultado Erróneo: La ejecución del programa se interrumpe

Resultado Esperado: Mostrar el resultado de la suma de los valores ingresados

Sugerencia: Validar, estableciendo una condición para averiguar si lo ingresado es número o no, de modo que si no lo es pida que se repita el ingreso.

Estos informes, se pueden hacer con el apoyo de ciertas herramientas, que nos servirán para hacer el seguimiento de los errores. Estas herramientas se suele denominar issue tracking. Algunas de las herramientas más famosas son Trac, Jira (de pago), Bugzilla, Redmine.

Ej: Uso de GitHub (https://github.com/). Primero Ir al botón Nuevo número Escribir Title (Título) y en describir el error en Leave a comment (dejar un comentario)

Myriam Ruiz Pág 25 / 25

Volver BIBLIOGRAFÍA: http://agilismoatwork.blogspot.com.ar/2013/06/desarrollo-iterativo-versus-

incremental.html http://procesosoftware.wikispaces.com/Modelo+Incremental http://es.wikipedia.org/?title=GNU/Linux Groovy: http://www.slideshare.net/nbellocam/groovyv2