Software">
Testing
Testing
Testing
Lucia Argañaraz
HORARIOS DE
CLASES
Martes , miércoles y Jueves a las 9 AM
Consulta viernes a las 15h
Requisitos para aprobar el curso:
-80% de asistencia
-TP aprobados y entregados a tiempo.
-Trabajo Final.
¿QUÉ ES
UN
SISTEMA
?
Conjuntos de elementos
relacionados y organizados
entre sí para cumplir un
objetivo en común.
CICLO DE VIDA DE UN
SISTEMA
EQUIPO DE
DESARROL
LO DE
SOFTWARE
¿QUÉ ES LA CALIDAD?
La calidad es una propiedad
que tiene una cosa u objeto, y
que define su valor, así como la
satisfacción que provoca en un
sujeto.
CALIDAD DE SOFTWARE
Este modelo indica que la calidad de software se debe medir en base a 6
características:
Funcionalidad: cumplimiento de los requisitos funcionales.
Fiabilidad: cumplimiento de las prestaciones requeridas.
Usabilidad: esfuerzo requerido por el usuario para utilizar el producto
satisfactoriamente.
Eficiencia: relación entre las prestaciones del software y los requisitos necesarios para
su utilización.
Mantenibilidad: facilidad para adaptarse a las nuevas especificaciones.
Portabilidad: capacidad del software para poder portarse de un entorno a otro.
DIFERENCIAS ENTRE QA Y QC
Aseguramiento de la calidad (QA)
Se puede decir que el aseguramiento de la calidad (Quality Assurance – QA) es un
proceso dentro de la gestión de proyectos que monitoriza y verifica que el resto de
procesos, métodos y actividades usados para generar los entregables del proyecto
han sido seguidos y ejecutados correctamente .
.
PRINCIPIO DE
LAS PRUEBAS
6. Las pruebas dependen del contexto
Es necesario adecuar las pruebas según el contexto del
objeto que se está probando, por ejemplo, no es igual
probar una aplicación web para uso médico, que una
aplicación móvil e-commerce.
7. La falacia de ausencia de errores
Es posible que la mayoría de los defectos críticos de
una aplicación hayan sido corregidos, pero esto no
asegura que el software sea exitoso. Se puede dar el
caso de que este no cumpla con las expectativas del
cliente o tal vez, que sea peor en comparación a
sistemas similares.
REQUERIMIENTO DE UN
SOFTWARE
Los requerimientos para un sistema son la descripción de los servicios
proporcionados por el sistema y sus restricciones operativas.:
1. Los requerimientos del usuario son declaraciones, en lenguaje natural y en
diagramas, de los servicios que se espera que el sistema proporcione y de las
restricciones bajo las cuales debe funcionar.
2. Los requerimientos del sistema establecen con detalle las funciones, servicios y
restricciones operativas del sistema. El documento de requerimientos del sistema
debe ser preciso. Debe definir exactamente qué es lo que se va a implementar.
REQUERIMIENTOS FUNCIONALES
Y NO FUNCIONALES
Los requerimientos de sistemas software se clasifican en funcionales y no
funcionales, o como requerimientos del dominio:
1. Requerimientos funcionales. Son declaraciones de los servicios que debe
proporcionar el sistema, de la manera en que éste debe reaccionar a entradas
particulares y de cómo se debe comportar en situaciones particulares. En algunos
casos, los requerimientos funcionales de los sistemas también pueden declarar
explícitamente lo que el sistema no debe hacer.
2. Requerimientos no funcionales. Son restricciones de los servicios o funciones
ofrecidos por el sistema. Incluyen restricciones de tiempo, sobre el proceso de
desarrollo y estándares.
REQUERIMIENTOS FUNCIONALES:
Los requerimientos funcionales de un sistema describen lo que el sistema debe hacer. Estos
requerimientos dependen del tipo de software que se desarrolle, de los posibles usuarios del
software y del enfoque general tomado por la organización al redactar requerimientos. Cuando
se expresan como requerimientos del usuario, habitualmente se describen de una forma bastante
abstracta.
Estos requerimientos funcionales del usuario definen los recursos específicos que el sistema
debe proporcionar.
La especificación de requerimientos funcionales de un sistema debe estar completa y ser
consistente. La completitud significa que todos los servicios solicitados por el usuario deben estar
definidos. La consistencia significa que los requerimientos no deben tener definiciones
contradictorias.
Es posible que los problemas surjan solamente después de un análisis más profundo o , a
veces, después de que se termine el desarrollo y el sistema se entregue al cliente.
REQUERIMIENTOS NO
FUNCIONALES:
Son aquellos requerimientos que no se refieren directamente a las funciones
específicas que proporciona el sistema, sino a las propiedades emergentes de éste
como la fiabilidad, el tiempo de respuesta y la capacidad de almacenamiento. De
forma alternativa, definen las restricciones del sistema como la capacidad de los
dispositivos de entrada/salida y las representaciones de datos que se utilizan en las
interfaces del sistema.
Pueden especificar el rendimiento del sistema, la protección, la disponibilidad y
otras propiedades emergentes.
Algunos de estos requerimientos pueden restringir el proceso que se debe utilizar
para desarrollar el sistema.
REQUERIMIENTOS NO
FUNCIONALES
Los requerimientos no funcionales surgen de las necesidades del usuario, debido a
las restricciones en el presupuesto, a las políticas de la organización, a la necesidad
de interoperabilidad con otros sistemas software o hardware, o a factores externos
como regulaciones de seguridad o legislaciones sobre privacidad.
Los tipos de requerimientos no funcionales son:
1. Requerimientos de producto.
2. Requerimientos organizacionales.
REQUERIMIENTO NO
FUNCIONALES
3. Requerimientos externos
¿CÓMO
PLANIFICAR Y
EJECUTAR
SPRINT DE LA
METODOLOGÍA
SCRUM?
SPRINT PLANNING
Es un evento de colaboración donde el equipo responde a dos preguntas básicas: qué
trabajo se puede llevar a cabo en este sprint y cómo se realizará el trabajo escogido.
En la sprint planning comienza el Sprint.
el sprint es un periodo definido de tiempo en el que se hace todo el trabajo.
Se decide cuánto tiempo va a durar, el objetivo del sprint y por dónde vas a empezar.
La sesión de planificación de Sprints inicia el sprint definiendo el orden del día y el
punto de atención.
DAILY SCRUM
El Daily Scrum, conocido comúnmente sólo como “La Daily”, es una reunión diaria
de 15 minutos en la que participa exclusivamente el Development Team.
En esta reunión todas y cada una de las personas del Development Team responden a
las siguientes preguntas:
¿Qué hice ayer para contribuir al Sprint Goal?
¿Qué voy a hacer hoy para contribuir al Sprint Goal?
¿Tengo algún impedimento que me impida entregar?
SPRINT REVIEW
El Sprint Review es la reunión que ocurre al final del Sprint, generalmente el último
viernes del Sprint, donde el product owner y el Develpment Team presentan a los
stakeholders el incremento terminado para su inspección y adaptación
correspondientes. En esta reunión organizada por el product owner se estudia cuál es
la situación y se actualiza el Product Backlog con las nuevas condiciones que puedan
afectar al negocio.
SPRINT RETROSPECTIVE
La retrospectiva ocurre al final del Sprint, justo después del Sprint Review. En
algunos casos y por comodidad de los equipos, se realiza conjuntamente con el
Sprint Planning, siendo la retrospectiva la parte inicial de la reunión.
El objetivo de la retrospectiva es hacer de reflexión sobre el último Sprint e
identificar posibles mejoras para el próximo. Aunque lo habitual es que el Scrum
Master sea el facilitador, es normal que distintos miembros del equipo Scrum vayan
rotando el rol de facilitador durante la retrospectiva.
ROLES
EN
SCRUM
HISTORIA DE USUARIO
HISTORIAS DE USUARIO
Una historia de usuario es la unidad de trabajo más pequeña en un marco ágil. Es un
objetivo final, no una función, expresado desde la perspectiva del usuario del
software.
Una historia de usuario es una explicación general e informal de una función de
software escrita desde la perspectiva del usuario final o cliente.
El propósito de una historia de usuario es articular cómo un elemento de trabajo
entregará un valor particular al cliente.
Las historias de usuario son unas pocas frases en lenguaje sencillo que describen el
resultado deseado. No entran en detalles, ya que los requisitos se añaden más tarde,
una vez acordados por el equipo.
¿POR QUÉ CREAR HISTORIAS
DE USUARIO?
Las historias centran la atención en el usuario. Una lista de tareas pendientes
mantiene al equipo centrado en tareas que deben completarse, pero un conjunto de
historias lo mantiene centrado en solucionar problemas para usuarios reales.
Las historias permiten la colaboración. Con el objetivo definido, el equipo puede
colaborar para decidir cómo ofrecer un mejor servicio al usuario y cumplir con dicho
objetivo.
Las historias impulsan soluciones creativas. Las historias fomentan que el equipo
piense de forma crítica y creativa sobre cómo lograr mejor un objetivo.
Las historias motivan. Con cada historia el equipo de desarrollo disfruta de un
pequeño reto y una pequeña victoria, lo que aumenta la motivación.
HISTORIAS DE USUARIO
Definición de “Listo”: la historia suele estar “lista” cuando el usuario puede completar
la tarea descrita, pero debes asegurarte de definir lo que representa completarla.
Describe tareas o subtareas: decide qué pasos específicos deben completarse y quién es
responsable de cada uno de ellos.
Perfiles de usuario: ¿para quién? Si hay varios usuarios finales, considera crear varias
historias.
Pasos ordenados: escribe una historia para cada paso en un proceso más grande.
Escucha el feedback: habla con los usuarios y capta sus problemas o necesidades en lo
que dicen. No es necesario tener que estar adivinando las historias cuando puedes
obtenerlas de tus clientes.
HISTORIAS DE USUARIO
Tiempo: el tiempo es un tema delicado. Muchos equipos de desarrollo evitan hablar
sobre el tiempo, y en su lugar confían en sus marcos de trabajo de estimación. Dado
que las historias deberían completarse en un sprint, aquellas que puedan necesitar
semanas o meses deberían dividirse en historias más pequeñas o considerarse un epic
independiente.
HISTORIAS DE USUARIOS
Las historias de usuario suelen expresarse con una frase simple con la siguiente estructura:
“Como [perfil], [quiero] [para].”
“Como [perfil]”: ¿para quién desarrollamos esto? No solo buscamos un puesto, buscamos el
perfil de la persona. Max. Nuestro equipo debería comprender quién es Max. Con suerte
hemos entrevistado a muchos Max. Comprendemos cómo trabaja esa persona, cómo piensa y
cómo se siente. Sentimos empatía por Max.
“Quiere”: aquí describimos su intención, no las funciones que usan. ¿Qué es lo que están
intentando lograr realmente? Esta descripción debería realizarse con independencia de las
implementaciones; si describes algún elemento de la IU y no el objetivo del usuario, estás
cometiendo un error.
“Para”: ¿cómo encaja su deseo inmediato de hacer algo en la perspectiva general? ¿Cuál es el
beneficio general que intentan lograr? ¿Cuál es el gran problema que debe resolverse?
HISTORIAS DE USUARIO
Ejemplos:
Como Max, quiero invitar a mis amigos, para que podamos disfrutar de este servicio
juntos.
Como Sascha, quiero organizar mi trabajo, para poder sentir que tengo un mayor
control.
Como gestor, quiero poder comprender el progreso de mis compañeros, para poder
informar sobre nuestros éxitos y fallos.
HISTORIAS DE USUARIOS
menudo las historias de usuario se expresan de la siguiente manera: perfil + necesidad
+ propósito.
Un usuario no puede enviar un formulario sin completar todos los campos obligatorios.
La información del formulario se almacena en la base de datos de participantes.
Está funcionando el filtro Anti-SPAM.
El pago puede efectuarse con tarjeta de crédito.
Se envía un mensaje de “Registración recibida” luego de recibir la información del
formulario.
Un usuario no puede registrarse con la misma información de otro usuario.
Se deberá chequear por dirección de mail.
Se podrá acceder con el login de Facebook o Google+.
¿QUÉ SON LAS PRUEBAS?
Las pruebas de software (Software Testing) comprenden el conjunto de actividades
que se realizan para identificar posibles fallos de funcionamiento, configuración o
usabilidad de un programa o aplicación, por medio de pruebas sobre el
comportamiento del mismo.
GET
POST
PUT
DELETE
Estos métodos son empleados por los clientes para crear, manipular y eliminar datos en los servidores,
respectivamente.
CÓMO
FUNCIONA
REST
REST es un conjunto de principios que
definen la forma en que se deben crear,
leer, actualizar y eliminar los datos. Es
una arquitectura conocida como
cliente-servidor, en la que el servidor y
el cliente actúan de forma
independiente, siempre y cuando la
interfaz sea la misma al procesar una
solicitud y una respuesta, que son los
elementos esenciales.
El servidor expone la API REST y el
cliente hace uso de ella. El servidor
almacena la información y la pone a
disposición del usuario, mientras que
el cliente toma la información y la
muestra al usuario o la utiliza para
realizar posteriores peticiones de más
información.
INFRAESTRUCTURA
DE LA API DE REST
VERBOS
HTTP y por ello usados por una API REST son:
INVOLUCRA
DOS EN UN
PUT: modificar un recurso existente.
REST SON
GET, POST, DELETE: eliminar un recurso determinado.
PUT, PATCH
Y DELETE. PATCH: modificar solamente un atributo de un recurso.
SERVICIOS REST
Estos métodos junto con la URI, nos proporciona una interfaz
uniforme que nos permite la transferencia de datos en el sistema REST
aplicando operaciones concretas sobre un recurso determinado. Aunque la
mayoría de las operaciones que componen una API REST podrían llevarse a
cabo mediante métodos GET y POST, el abuso de ellos para operaciones
que nada tienen que ver con el propósito con el que se concibieron, puede
provocar un mal uso del protocolo alejado del estándar o la construcción
de URIs con nomenclatura errónea mediante el uso de verbos.
Cuando se realiza una petición determinada, es de vital importancia
conocer si dicha operación se ha llevado a cabo de manera satisfactoria o
por el contrario se ha producido algún tipo de error. Para ello, HTTP
dispone de un amplio número de códigos de error/éxito.
SERVICIOS REST
200 OK. Respuesta estándar para peticiones correctas.
202 Accepted. La petición ha sido aceptada para procesamiento, pero este no ha sido completado.
403 Forbidden. La solicitud fue legal, pero el servidor rehúsa responder dado que el cliente no tiene los privilegios para hacerla.
404 Not Found. Recurso no encontrado. Se utiliza cuando el servidor web no encuentra la página o recurso solicitado.
500 Internal Server Error. Es un código comúnmente emitido por aplicaciones empotradas en servidores web, cuando se encuentran
con situaciones de error ajenas a la naturaleza del servidor web.
¿CUÁL ES LA PRINCIPAL
VENTAJA DE UNA API REST?
La principal ventaja del uso de una API REST reside en la independencia que
proporciona frente a cualquier consumidor, sin importar el lenguaje o plataforma con
el que se acceda a ella. Esto permite que una misma API REST sea consumida por
infinidad de clientes sea cual sea la naturaleza de estos y que el cambio a cualquier
otro tipo de consumidor no provoque impacto alguno en ella. Esta característica
proporciona fiabilidad, escalabilidad y una fácil portabilidad a cualquier otra
plataforma, ya que aisla por completo al cliente del servidor. Sólo se requiere que el
intercambio de información de las respuestas se haga en un formato soportado, por
lo general JSON o XML. Dicha separación entre el cliente y el servidor hace que se
pueda migrar a otros servidores o bases de datos de manera transparente, siempre y
cuando los datos se sigan enviado de manera correcta. Esto convierte a las APIs
REST en una de las arquitecturas web más utilizadas por la flexibilidad que aportan
a cualquier entorno de trabajo sea cual sea su naturaleza.
PRUEBAS ¿Que miden las pruebas de performance?
La importancia que tienen los listeners respecto a los otros tipos de componentes es que procesan las
peticiones realizadas a la aplicación objetivo por los samplers del testplan, y muestran el resultado
del procesamiento de diferentes formas según el tipo de listener de que se trate.
¿QUÉ SON
Se pueden usar los listeners de dos formas:
Si el testplan se ejecuta desde la interfaz GUI, muestran en tiempo real el procesamiento de las
peticiones que realizan los samplers. Así por ejemplo, el listener View Results Tree muestra los
LOS
samplers en el orden en que se ejecutan, y para cada uno de ellos se puede visualizar los datos de la
petición realizada y la respuesta de la aplicación (muy util para depurar un testplan mientras se
construye). Otro ejemplo: el listener Graph Results muestra en forma de gráfica los tiempos de
LISTENER
respuesta de la aplicación objetivo.
Una vez ejecutado el testplan, si se ha generado el fichero sample result, este se puede cargar en el
campo Filename: de un listener (por ejemplo creando un plan vacío que solo contenga el listener
S?
que nos interesa, o creando el componente listener que nos interesa en el componente Workbench de
la interfaz GUI). Al hacer esto, el listener mostrará el resultado de procesar el fichero en un
determinado formato.
Generar el fichero sample result en formato CSV, vía opción -l de la línea de comando o vía un
listener global del tipo Simple Data Writer.
Una vez ejecutada la prueba de rendimiento, cargar el fichero result sample generado en uno o
varios de los listeners que nos muestren las medidas de rendimiento que queremos obtener.
DESCOMPRIMIR E INGRESAR
ENTRAMOS EN LA CARPETA
BIN
EJECUTAR JMETER.BAT
CREAR UN NUEVO TEST PLAN