You are on page 1of 25

Myriam Ruiz Pg 1 / 25

Actividad Final: Aprendizaje Obtenido en el Curso de Testing




Alumna: Ruiz, Myriam Noem del Valle
Lugar: NAC Ente Cultural (San Miguel de Tucumn)

Temario

1. Metodologas 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 Programacin (en Macros VBA)
4.1. Mostrar por pantalla (msgbox)
4.2. Ingreso de datos
4.3. Funcin para convertir a maysculas (UCase) y minsculas (LCase)
4.4. Condicional if/si, ElseIf
4.5. Estructura de decisin Select
5. Comandos Linux/Huayra
5.1. Qu es Linux/Qu es Huayra
5.2. Comandos
6. Lenguajes Estticos y Dinmicos
7. Fuertemente y dbilmente tipado
8. Programacin en Groovy
8.1. Qu es Groovy
8.2. Declaracin de variables y Operaciones
8.3. Sentencias para ingresar y mostrar datos
8.4. Condicionales
8.5. Estructuras Repetitiva (While)
8.6. Funciones
9. Programacin Orientada a Objetos
9.1. Concepto de Objeto
9.2. Propiedades
9.3. Mtodos
9.4. Eventos
9.5. Listas
9.6. Creacin de clases
10. Testeo
10.1. Qu es el testing
10.2. Qu hace un Tester
10.3. Que se evala
10.4. Tipos de testeo

Myriam Ruiz Pg 2 / 25
10.4.1. Testeo Manual
10.4.2. Informe


CURSO DE TESTING


1. Metodologas para el desarrollo de Software
1.1. Etapas de un ciclo de desarrollo
1. Anlisis de requerimientos (Delimitacin y objetivos): Se extraen los requisitos
del producto de software. En esta etapa la habilidad y experiencia en la ingeniera
del software es crtica para reconocer requisitos incompletos, ambiguos o
contradictorios. El contenido de comunicacin en esta etapa es muy intenso ya que
el objetivo es eliminar la ambigedad en la medida de lo posible y poner un lmite a
cul es nuestra obligacin al hacer desarrollo. Entrevistar al personal sobre cmo lo
quiere al soft, por ejemplo como ser interfaz.
2. Anlisis: Determinar la posibilidad de realizar lo que se estableci en los puntos
anteriores.
3. Diseo: Determinar cmo funcionar de forma general sin entrar en detalles
incorporando consideraciones de la implementacin tecnolgica, como el hardware,
la red, etc. Consiste en el diseo de los componentes del sistema que dan respuesta
a las funcionalidades descritas en la segunda etapa tambin conocidas como las
entidades de negocio.
4. Implementacin: Se traduce el diseo a cdigo. Es la parte ms obvia del trabajo
de ingeniera de software y la primera en que se obtienen resultados tangibles..
5. Verificacin: Consiste en comprobar que el software responda/realice
correctamente las tareas indicadas en la especificacin. Es una buena praxis realizar
pruebas a distintos niveles (por ejemplo primero a nivel unitario y despus 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 ms tiempo? Y la ms corta?

Las etapas que ms tiempo consumen son Implementacin y Verificacin, pudiendo
tomar el 70% del tiempo de desarrollo.
Por otro lado, la etapa de Mantenimiento tambin podra considerarse como l arga,
debido a que dura mientras el software se use.

La etapa ms corta, a mi entender, es la de Requerimientos, ya que estimo que no
toma mucho tiempo entrevistar a los clientes e indagar que caractersticas requiere
el sistema que quieren que se desarrolle.


1.2. Cascada
Comenz a disearse 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 rene la documentacin
para garantizar que cumple las especificaciones y los requisitos antes de pasar a la
fase siguiente.

Myriam Ruiz Pg 3 / 25




Ventajas:

Es un modelo sencillo y disciplinado
Es fcil 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 planificacin, pues se realiza sin problemas

Desventajas:

Los proyectos raramente siguen el proceso lineal tal como se defina originalmente el
ciclo de vida
Es difcil que el cliente exponga explcitamente todos los requisitos al principio
El cliente debe tener paciencia pues obtendr el producto al final del ciclo de vida
No refleja exactamente cmo 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 versin del
sistema
Todo est sujeto a ser modificado en la siguiente iteracin

Myriam Ruiz Pg 4 / 25
Se intenta aprovechar el aprendizaje durante el desarrollo
Es ideal para cuando los requerimientos no estn del todo claros en un comienzo
o pueden sufrir modificaciones

Ventajas:
Ms realista
Se adapta mejor a los cambios
Permite administrar mejor los riesgos
Mayor visibilidad para el cliente
Mejor retroalimentacin para el equipo de desarrollo

Desventajas
Falta de experiencia
Reaccin al cambio de enfoque
Requieren distintos modelos de contrato






1. Proceso Iterativo segn Jeff Patton

1.4. Incremental
Caractersticas:

Se evitan proyectos largos y se entrega "algo de valor" a los usuarios con cierta
frecuencia.
El usuario se involucra ms.
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 Pg 5 / 25
Ventajas:

Con un paradigma incremental se reduce el tiempo de desarrollo inicial, ya que
se implementa la funcionalidad parcial.
Tambin 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 slo al mbito de cada incremento.
Resulta ms sencillo acomodar cambios al acotar el tamao 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 planeacin, tanto administrativa como tcnica.
Requiere de metas claras para conocer el estado del proyecto.




2. Proceso Incremental segn Jeff Patton

1.5. Iterativo Incremental

Incremental: Desarrollar por partes el producto software, para despus integrarlas a
medida que se completan. Consiste en agregar cada vez ms funcionalidad al
sistema.
Iterativo: En cada ciclo, iteracin, se revisa y mejora el producto. En cada ciclo
mejora ms la calidad del producto.
De la unin del ciclo de vida iterativo y el incremental al final de cada iteracin se
consigue una versin ms estable del software, de ms calidad, y aadiendo adems
nuevas funcionalidades respecto a versiones anteriores.


Myriam Ruiz Pg 6 / 25

3. Esquema Iterativo Incremental



4. Proceso Iterativo e Incremental segn Steven Thomas

1.6. gil
Bsicamente sera un ciclo de vida iterativo e incremental, con iteraciones cortas
(semanas) y sin que dentro de cada iteracin tenga porque haber fases lineales (tipo
cascada). Quiz el caso ms popular es el de Scrum (Creado por Ken Schwaber
1985).

En 2001 se deca que las Metodologas tradicionales era excesivamente pesadas y
rgidas por su carcter normativo y fuerte dependencia de planificaciones detalladas
previas al desarrollo. En respuesta a esto, se renen 17 crticos de las Metodologas
de desarrollo y redactan el Manifiesto gil, donde se indica:

Con este trabajo hemos llegado a valorar:
1. A los individuos y su interaccin, por encima de los procesos y las herramientas.
2. El software que funciona, por encima de la documentacin exhaustiva.
3. La colaboracin con el cliente, por encima de la negociacin contractual.
4. La respuesta al cambio, por encima del seguimiento de un plan.

Aunque hay valor en los elementos de la derecha, valoramos ms los de la izquierda.




Myriam Ruiz Pg 7 / 25
Ejemplo: Metodologa Scrum




Product Backlog: conjunto de objetivos a alcanzar a largo plazo
Sprint Backlog: Objetivo de la iteracin 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 retroalimentacin corta
Resultado: Incremento de Producto potencialmente entregable

Volver

2. Programa
2.1. Concepto: Ejecucin secuencial de sentencias o instrucciones secuenciadas: Porque
la ubicacin de cada instruccin determina el momento de su ejecucin.

Segn Wikipedia, un programa es: un conjunto de instrucciones que una vez
ejecutadas realizarn una o varias tareas en una computadora. Sin programas, estas
mquinas no pueden funcionar.

2.2. Interfaz de Programa: Se considera as al conjunto de elementos que provee el
programa, para facilitar la interaccin.

Interaccin: el grado de respuesta que ofrece el programa ante las necesidades del
usuario.
Ej: Salir o cerrar, debe estar como opcin, 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 travs de los
ejercicios que pedan explicar que pasos seguiramos por ejemplo para poder
preparar una leche chocolatada. Pero, se podra dar una definicin ms formal:

Un algoritmo (del griego y latn, dixit algorithmus y este a su vez del matemtico
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 Pg 8 / 25
Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un
estado final y se obtiene una solucin. En los algoritmos no se utiliza ningn lenguaje de
mquina, sino lenguaje humano comn.

Ejemplo: Escribir un algoritmo para obtener el rea de un tringulo, 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 declaracin de tipo de las variables (fuertemente
tipados) y otros que no.

Ejemplo de declaracin de variable local en VBA

Sub Prueba ()
Dim num as String

End Sub
Ejemplo de declaracin 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, segn donde se hayan
declarado. Pueden ser:

Local: Se declara dentro un Sub especfico, vindose 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.
Pblica: Son las declaradas en los Mdulos (VBA), y pueden ser vistas por todo el
proyecto

Volver

4. Conceptos de Programacin (en Macros VBA)
4.1. Mostrar por pantalla (msgbox)
Permite mostrarle un mensaje al usuario. Se usa as:
Msgbox Mensaje

Myriam Ruiz Pg 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. Funcin para convertir a maysculas (UCase) y minsculas (LCase)
A veces es necesario convertir los datos a maysculas o minsculas, por ejemplo
para hacer una comparacin de lo ingresado por teclado. Para ello se usa las
instrucciones:
Dato = InputBox(Ingrese un nombre) Suponga ingresado Myriam
Dato = Ucase (Dato) La variable quedara con MYRIAM
Dato = LCase (Dato) La variable quedara con myriam

4.4. Condicional if/si, ElseIf

If Then End If: permite controlar si una condicin es verdadera o falsa.

Ejemplo: Si la luz del semforo es roja freno, sino sigo
Analicemos esto:

Referencia: Lo que miro -> la luz del semforo
Condicin: Que est roja
Accin verdadera: Que pasa si es verdad? > Freno
Accin Falsa: Cuando la condicin es falsa -> Seguir

Sintaxis

If condicin Then
Accin 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 Pg 10 / 25
Si tengo ms opciones puede usar la instruccin 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 decisin Select
Se utiliza cuando tenemos muchas respuestas

Sintaxis:
Select Case expresin_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 "FABIN"
MsgBox ("Bienvenido Fabin)
Case Else
MsgBox ("Error de usuario")
End Select

Volver

5. Comandos Linux/Huayra
5.1. Qu es Linux
GNU/Linux es uno de los trminos empleados para referirse a la combinacin del
ncleo o kernel libre similar a Unix denominado Linux con el sistema GNU. Todo su
cdigo fuente puede ser utilizado, modificado y redistribuido libremente por

Myriam Ruiz Pg 11 / 25
cualquiera bajo los trminos de la GPL (Licencia Pblica General de GNU, en ingls:
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 ncleo Linux est fuertemente vinculada a la del
proyecto GNU. En 1991 Linus Torvalds empez a trabajar en un reemplazo no
comercial para MINIX10 que ms adelante acabara siendo Linux.

Cuando Torvalds liber la primera versin de Linux, el proyecto GNU ya haba
producido varias de las herramientas fundamentales para el manejo del sistema
operativo, incluyendo un intrprete de comandos, una biblioteca C y un compilador,
pero como el proyecto contaba con una infraestructura para crear su propio ncleo
(o kernel), el llamado Hurd, y este an no era lo suficiente maduro para usarse,
comenzaron a usar a Linux a modo de continuar desarrollando el proyecto GNU,
siguiendo la tradicional filosofa de mantener cooperatividad entre desarrolladores.
Entonces, el ncleo creado por Linus Torvalds, quien se encontraba por entonces
estudiando la carrera de Ingeniera Informtica en la Universidad de Helsinki, llen el
"espacio" final que haba 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 metadistribucin
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 Investigacin y Desarrollo de
Tecnologas Libres (CENITAL) de Argentina, dependiente de la ANSES y toma en
consideracin las necesidades tanto de estudiantes como de docentes y otros
actores involucrados en el programa Conectar Igualdad.

Pgina de descarga: http://huayra.conectarigualdad.gob.ar/bajar


5.2. Comandos Bsicos (Actividades)

# 1. Abrir una consola. Puedo abrir dos consolas simultneamente?
# > 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 Pg 12 / 25

Comando man:
El comando man, que es la abreviatura de manual, proporciona informacin 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 lnea 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 simblico 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 ms til con --parents.

Ejemplo:
mkdir prueba


Comando rmdir:
Permite eliminar un directorio

Sintaxis

Myriam Ruiz Pg 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 lnea de rdenes.

-l muestra un listado en el formato largo, con informacin de permisos, nmero de
enlaces asociados al archivo, usuario, grupo, tamao y fecha de ltima modificacin
adems del nombre.

-h con -l imprime el tamao 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 modificacin.

-c muestra ordenado por la fecha de ltima modificacin del estado del archivo.

-r cuando el listado se hace por orden temporal, los archivos ms recientes van al
principio. Si se indica la -r se invierte el orden, mostrando los ms recientes al final.

-L en los enlaces simblicos, muestra los datos del archivo referido en vez de los del link.

-1 muestra el listado en una sola columna. Sin la opcin -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 nmero del i-nodo antes del nombre de archivo.
-m muestra los archivos en una lnea y separados por comas.

Myriam Ruiz Pg 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 tamao 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 simblicos, otro para los sockets,
otro para las tuberas FIFO, etc. Este parmetro 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 confirmacin e ignora los archivos inexistentes.
rm -i archivo --> Pide confirmacin 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 Pg 15 / 25
Sintaxis
cd [opciones] [directorio]

Opciones
cd .. -> con espacio y .. regresa a su directorio padre
cd / -> Con barra va hacia el directorio raz
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 grfica 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 bsqueda en google podra 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 raz[) y ver su contenido. Usar cd para volver al home.
pwd # Present Working Directory
cd ..
ls
cd /
cd # sin parmetros vuelve al home

# 7. Utilizar la interfaz grfica para crear un archivo de texto y escribir en l nuestro
nombre completo. Para esto utilizar algn 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 extensin y lo mismo lo lee, si tuviera tendra que escribirla
tambin

# 10. Utilizar el comando less para ver el contenido del archivo del punto 7

Myriam Ruiz Pg 16 / 25
less Ejemplo # presionar q para salir

# 11. Borrar el archivo creado en el punto 7 desde la lnea de comandos.
rm Ejemplo # Los comandos son sensibles a mayscula y minsculas, no sera lo mismo
querer borrar Ejemplo que ejemplo

Volver

6. Lenguajes Estticos y Dinmicos

Lenguajes Estticos: En estos, antes de poder ejecutar nuestro programa, se requiere
pasar antes por una transformacin del cdigo en un archivo ejecutable, esto se llama
Compilacin y Linkeo. En estos lenguajes, si tuviramos algn tipo de error, por ejemplo
de sintaxis, nos avisara durante el momento de compilacin.

Lenguajes Dinmicos: No requieren realizar un paso previo de compilacin, ya que esto
se realiza automticamente cuando lo vamos a ejecutar. Si tenemos algn error de
sintaxis, no podramos saberlo hasta el momento que el programa se est ejecutando.

Volver
7. Fuertemente y dbilmente tipado

Lenguajes Fuertemente Tipados: Requieren que el programador defina siempre que tipo
de dato tiene la variable que estn utilizando. Esta caracterstica hace que sea ms fcil
testear cuando haya error de tipo de dato. Por ejemplo, esperar ciertos resultados
pensando que estamos trabajando con nmeros con decimales, cuando en realidad
trabajamos con enteros.

Lenguajes Dbilmente Tipados: No requieren que el programador informe los tipos de
datos de las variables, y estos se ajustan automticamente segn reglas propias del
lenguaje. Esto brinda una mayor flexibilidad a la hora de programar, pero tambin facilita
la posibilidad de errores. Ejemplos de esto son Python y PHP.

Volver

8. Programacin en Groovy
8.1. Qu es Groovy
Es un lenguaje de programacin dinmico, orientado a objetos, basado en la mquina
virtual Java, que permite mezclar entre un modelo fuertemente tipado y otro
dinmicamente tipado.

Pgina de descarga: http://groovy.codehaus.org/Download


Tipearemos nuestro cdigo en la groovyConsole


Myriam Ruiz Pg 17 / 25



Los programas creados en este lenguaje se guardan con extensin .groovy


8.2. Declaracin de variables y Operaciones

Sin tipo de Dato especfico:
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 (condicin) {
Acciones_cuando_es_verdadera
}
else {
Acciones_cuando_es_falsa
}


Myriam Ruiz Pg 18 / 25

Ejemplo: Si la hora es menor a 12 es de maana, sino es de tarde

def hora_actual = new Date().Hours
if (hora_actual < 12) {
println "es de maana"
}
else {
println "es de tarde"
}


ElseIf:

If (condicin1) {
Acciones_cuando_condicion1_es_verdadera
}
ElseIf (condicion2) {
Acciones_cuando_condicion_2_es_verdadera
}
Else {
Acciones_cuando_condicion2_es_falsa
}

Ejemplo: Realizar una funcin llamada Minimo que acepte tres nmeros como
parmetros y retorne el ms pequeo 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 Pg 19 / 25
8.5. Estructuras Repetitiva (While)
Se usa cuando el programa tiene que repetir un bloque de instrucciones mientras sea
cierta una condicin.
Sintaxis:
while (condicin) {
bloque_a_repetir
}

Ejemplo: Hacer un programa que le pida nmeros al usuario hasta que ingrese el
nmero cero. Luego debe informar el valor promedio de los nmeros 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 funcin, matemticamente, es una especificacin, una REGLA o CRITERIO, para
obtener cierto resultado a partir de datos existentes. En informtica 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 funcin se declara de la siguiente manera:

def NombreFuncion (argumento1, argumento 2, etc) {
cdigo_de_la_funcin.
return (valor)
}



Myriam Ruiz Pg 20 / 25
Dnde:

NombreFuncion: es el nombre por el cual de identifica de manera univoca a la
funcin
Argumento1, argumento 2, etc: Son los parmetros o argumentos de la funcin, o sea
los datos que necesita para resolver un problema.
cdigo_de_la_funcin: son las instrucciones que resolvern el problema
return: Sirve para devolver el resultado al que lleg la funcin

Ejemplo: Hacer una funcin que transforme una distancia de centmetros a
pulgadas.

// FUNCION
def cm_a_pulgadas (cm){
return (cm*2.4)
}
// Invoco la funcin, o sea, como la uso
println "CONVERSION DE CENTIMETROS A PULGADAS\n"
def conti=1
while (conti!=0) {
def cm1= System.console().readLine("Ingrese centmetros (solo nmeros 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. Programacin Orientada a Objetos
9.1. Concepto de Objeto
La orientacin a Objetos (OO) es una forma de pensar la resolucin 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 cdigo que interactan entre s.
Supongamos que queremos modelar el objeto Auto, que cosas guardaramos de l?

9.2. Propiedades
Son las caractersticas 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. Mtodos
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 peatn, un auto
viene en contra mano, el semforo se puso en rojo, etc.



Myriam Ruiz Pg 21 / 25
9.5. Listas

Es una clase de objeto en la que podemos guardar una lista de cosas: de nmeros,
de palabras, de otras listas, de objetos, etc.

Caractersticas:

Tiene un nmero finito de elementos
Tienen un cierto orden, aunque se refiere al orden de los valores, sino un orden
para de creacin, que tambin sirve para poder listarlas.
Tiene decena de mtodos 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 mtodos:

Se crea una lista facia
def lista_numeros = []

Se podra crear tambin listas con tems de entrada
def Trimestre1 =*Enero,Febrero,Marzo+

Se agrega un tem a la lista
lista_numeros.add(tem)

Saber el tamao de la lista
lista_numeros.size()

Ordenar una lista
lista_numeros.sort()

Mostrar un tem en particular:
println Trimestre[1] // Mostrara Febrero, pues empieza de cero




Myriam Ruiz Pg 22 / 25
9.6. Creacin de Objetos

Declarar una clase

class Nombre {
Propiedades
Metodos
}

Extender una clase, o sea, utilizar las propiedades y mtodos de una clase, para
definir una nueva clase. La nueva clase Hereda lo de la anterior, y puede
sobreescribir (Polimorfismo) algn mtodo o agregar nuevas propiedades o
mtodos (Especializacin).

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 Pg 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 algn 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 parmetros de
evaluacin que ya estn predefinidos.

Se suele pensar que el tester solo trabaja en la etapa de Verificacin 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 evala
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 fcil de usar, sin son intuitivos.
Niveles de Interaccin: Evaluar cmo 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 aplicacin 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 comn que el que program pruebe inconscientemente solo aquellos casos
que sabe funcionarn 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 comunicacin para
estas tareas.
Si hay dilogo constante y directo con el o los desarrolladores, lo ms fcil es
mostrarle en vivo y en directo el problema. Pero esto no siempre es posible.

Myriam Ruiz Pg 24 / 25
La idea del informe es proveer al programador con la mayor cantidad de
informacin 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 difcil
poder solucionarlo.
Entonces en general un buen reporte de error debe incluir la siguiente
informacin
Un ttulo, un nombre corto que describa el error lo mejor posible.
Un paso a paso, lo ms detallado posible, de cada accin que se debe
realizar para que siempre que se siga ese proceso se produzca el error.
El detalle de cul fue el resultado incorrecto que se produjo
El detalle de cul era el resultado que se esperaba
Se puede incluir una sugerencia de cmo podra resolverse el
problema

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

#4
Nombre: Ingreso imprevisto de letras cuando se espera nmeros
Tipo: Tiempo de Ejecucin
Pgina: 27 (se refiere a los ejemplos del apunte del curso)
Se produce cuando: Al introducir letras, smbolos o presionar Enter sin haber
introducido nada
Resultado Errneo: La ejecucin del programa se interrumpe
Resultado Esperado: Mostrar el resultado de la suma de los valores ingresados
Sugerencia: Validar, estableciendo una condicin para averiguar si lo ingresado es
nmero 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 servirn para
hacer el seguimiento de los errores. Estas herramientas se suele denominar issue tracking.
Algunas de las herramientas ms famosas son Trac, Jira (de pago), Bugzilla, Redmine.

Ej: Uso de GitHub (https://github.com/). Primero Ir al botn Nuevo nmero
Escribir Title (Ttulo) y en describir el error en Leave a comment (dejar un comentario)


Myriam Ruiz Pg 25 / 25




Volver

BIBLIOGRAFA:

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