SlideShare una empresa de Scribd logo
1 de 54
Guillermo Delgado
QA
Sobre mí
gdelgado@emergya.com
Guillermo Luis Delgado Vázquez
@willifog
Índice (1)
1. ¿Qué es QA?
2. ¿Cómo obtenemos esa calidad?
3. ¿Cuándo se es QA?
4. ¿Qué pruebas hay?
1. Test unitario: Pruebas de caja negra.
2. Test unitario: Pruebas de caja blanca.
5. Test de Stress
6. Smoke test
7. Test de Aceptación
8. Pruebas de Regresión
Índice (2)
9. ¿Qué herramientas utilizo?
10. Redmine
11. Jenkins
12. Eclipse + Selenium WebDriver + TestNG
13. Ejemplo Proyecto Selenium
➢ Project Overview
➢ TestSet
➢ PageObject
➢ Properties File
➢ Acceptance/Regression Suite
➢ Reports
¿Qué es QA?
▶ Definición:
▶ QA significa Quality Assurance, o aseguramiento de la calidad. Se trata de un
conjunto de actividades de evaluación de las distintas etapas del proceso de
desarrollo para garantizar que el producto final sea de calidad.
▶ El concepto de calidad se presta a múltiples interpretaciones, pero siempre implica
que el software satisfaga las necesidades del cliente.
¿Qué significa la “calidad”?
▶ ¿Qué piensan las personas? ▶ ¿Qué piensan las empresas?
¿Documentación?
¿Certificados?
Para nosotros:
▶ Podemos decir que significa:
▶ Desarrollar.
▶ Diseñar
▶ Producir
▶ Mantener
▶ Un Producto que sea económico, el mas útil y siempre satisfactorio para el
consumidor.
Punto de vista
del cliente:
▶ Grado en que un cliente
y/o usuario percibe que el
producto software
satisface sus necesidades.
Punto de vista
de la industria:
▶ Grado en que un producto
de software satisface su
especificación de
requerimientos.
¿Cómo obtenemos esa calidad?
Parte humana:
▶ Aprendiendo de errores y
éxitos
▶ Evaluando siempre cada
proyecto
▶ Haciendo que todas las partes
se involucren (clientes,
desarrolladores, testers)
▶ Sabiendo tus límites
▶ Pidiendo ayuda cuando sea
necesario
▶ Manteniendo una mente
abierta
▶ Intentando siempre aprender
todo lo posible
▶ Construir una “cultura de calidad” donde la calidad es vista como responsabilidad de todos
Parte técnica:
▶ Identificar casos de prueba.
▶ Verificación de estándares y requerimientos.
▶ Ejecución y documentación de pruebas. (Test case).
▶ Identificar y clasificar los errores y/o defectos.
▶ Crear un entorno de pruebas adecuado. ( Dev > CI > QA > Staging > Pre-Production)
▶ Diseño y ejecución integral de pruebas.
▶ Realizar reportes estadísticos al final del proyecto.
¿Cuándo se es QA?
▶ La concepción tradicional relega a QA al final de todo el proceso.
Un tremendo error si pretendemos ser ágiles: conseguir que nuestra empresa pueda
moverse rápido desarrollando poco a poco y contrastando las expectativas del
cliente para subir a producción en pequeños sprints de dos semanas, por ejemplo.
Y, por supuesto, ir rectificando rápidamente lo que no funciona o no acaba de
encajar.
▶ ¿Al comienzo?
▶ ¿Mientras se desarrolla?
▶ ¿Al final?
▶ Para conseguir los objetivos que plantean las metodologías ágiles, desarrollo
y QA deben ir de la mano, integrados en el día a día. Cada equipo de
desarrolladores debería contar con un encargado de QA que siga el proceso de
desarrollo durante la concepción, análisis, desarrollo y, obviamente,
verificación.
¿Qué pruebas hay?
▶ Test Unitario: Garantizar la calidad de módulos o partes aisladas.
▶ Pruebas de Caja Negra.
▶ Pruebas de Caja Blanca.
▶ Test funcionales, divididos en distintos grupos:
▶ Acceptance/Smoke: Garantizar la calidad del core del proyecto.
▶ Regression: Garantizar la calidad de la aplicación entera.
▶ Progression: Garantizar la calidad del desarrollo actual (Release)
▶ Test de rendimiento: Garantizar la disponibilidad del sistema.
▶ Test Responsive: Garantizar que se cumplan las reglas de responsividad
definidas.
Breve resumen
Pruebas de caja negra
¿Qué son las pruebas de caja negra?
▶ Son pruebas funcionales, dedicadas a “mirar” en el exterior de lo que se prueba. Sabiendo solo la
entrada y la salida.
▶ Estas pruebas permiten obtener un conjunto de condiciones de entrada que ejerciten
completamente todos los requisitos funcionales de un programa. En ellas se ignora la estructura de
control, concentrándose en los requisitos funcionales del sistema y ejercitándolos.
▶ No es una alternativa a las pruebas de caja blanca, sino un enfoque complementario que intenta
descubrir diferentes tipos de errores a los encontrados en los métodos de la Caja Blanca
▶ Las funciones del software son
operativas
▶ La entrada se acepta de forma
correcta
▶ Se produce una salida correcta
▶ La integridad de la información
externa se mantiene
▶ Funciones incorrectas o ausentes
▶ Errores en la interfaz
▶ Errores en estructuras de datos o en
accesos a bases de datos externas
▶ Errores de rendimiento
▶ Errores de inicialización y de
terminación
¿Qué pretenden demostrar? ¿Qué pretenden
encontrar?
Pruebas de caja blanca.(1)
▶ Tambien llamadas pruebas modulares ya que nos permiten determinar si un módulo del
programa esta listo y correctamente terminado.
▶ ¿De qué nos sirve una gran interfaz si, cuando voy a hacer una compra de entradas para el concierto
de mi grupo favorito, el módulo de venta de entradas tiene un bug y no me permite comprar?
▶ La experiencia nos ha enseñado que los bugs son imposibles de evitar, y menos en procesos de
Continuous Delivery donde hay nuevas versiones que refactorizan o incorporan nuevos módulos
al proyecto.
▶ Los tests unitarios deben comprobar que una función que se ha programado,
siempre debe funcionar igual.
Con este pequeño test, nos aseguramos que la función
siempre nos devolverá la multiplicación de
ambos números.
Si alguien del equipo modifica esta función y
el test falla, sabremos que existe un bug antes
de que el fallo llegue a producción. Sin él, en un
proyecto de decenas de miles de líneas de
código fuente lo más probable es que el bug
no sea detectado hasta estar en producción.
Pruebas de caja blanca.(2)
Este conocido framework para PHP nos
permite crear y ejecutar juegos de tests
unitarios de manera sencilla.
Basado en la familia de frameworks xUnit constituye
junto con alternativas como SimpleTest o phpt, los
principales frameworks de pruebas unitarias en PHP.
Test de Stress
▶ Las pruebas de performance permiten conocer y mitigar los riesgos relacionados con el
mal desempeño de las aplicaciones en los entornos de producción y realizar las
correcciones necesarias antes de salir al mercado.
▶ Se cuantifica la capacidad de la infraestructura, se validan los requerimientos de
performance, la escalabilidad de las plataformas y del sistema a probar.
▶ De esta manera, la empresa puede conocer qué cantidad de clientes simultáneos
soporta su producto, con tiempos y datos razonables sobre la infraestructura y las
plataformas propuestas.
▶ En general los objetivos de los test de Stress suelen ser mejorar:
▶ Rendimiento
▶ Escalabilidad
▶ Estabilidad
Smoke test o pruebas de humo
▶ Este tipo de pruebas son pruebas rápidas que buscan encontrar problemas graves (fuego oculto) en el
software recientemente modificado.
El nombre viene de los sistemas electrónicos donde la prueba inicial es que no hay humo al
conectar la fuente de energía.
▶ Las pruebas de humo buscan problemas críticos en la aplicación que hacen que no valga la pena
validar otro tipo de pruebas. Preguntas como: ¿El sistema inicia correctamente? o ¿El menú principal
se presenta correctamente? caracterizan el objetivo de las pruebas de humo.
Test de aceptación
▶ Los test de aceptación son aquellos destinados a determinar si los requisitos de cierta
funcionalidad han sido cumplidos, centrarse en que la parte funcional cumple las
expectativas creadas al inicio del Sprint.
▶ El test de aceptación termina de definir el nivel de calidad de un software y le
permite conocer al equipo de desarrollo qué tan bien supo interpretar los pedidos del
cliente durante la gestación del proyecto.
Pruebas de regresión
▶ Las pruebas de regresión son las pruebas que se ejecutan después de un
cambio en el sistema (nueva característica o solución a un bug). Su objetivo
principal es validar que las características previas al cambio no se vean
afectadas.
▶ Son las primeras candidatas a automatización pues deben repartirse
periódicamente con cada uno de los cambios o actualizaciones
¿Que herramientas utilizo?
Redmine (1)
Redmine (2)
Redmine (3)
Jenkins
▶ ¿Qué es Jenkins?
▶ Jenkins es un servidor de integración continua, gratuito, open-source y actualmente uno de los más
empleados para esta función.
▶ La base de Jenkins son las tareas, donde indicamos qué es lo que hay que hacer en un build. Por
ejemplo, podríamos programar una tarea en la que se compruebe el repositorio de control de
versiones cada cierto tiempo, y cuando un desarrollador quiera subir su código al control de
versiones, este se compile y se ejecuten las pruebas.
▶ Si el resultado no es el esperado o hay algún error, Jenkins notificará al desarrollador, al equipo de
QA, por email o cualquier otro medio, para que lo solucione. Si el build es correcto, podremos
indicar a Jenkins que intente integrar el código y subirlo al repositorio de control de versiones.
▶ Desde Jenkins podrás indicar que se lancen métricas de calidad y visualizar los resultados dentro de
la misma herramienta. También podrás ver el resultado de los tests, generar y visualizar la
documentación del proyecto o incluso pasar una versión estable del software al entorno de QA para
ser probado, a pre-producción o producción.
¿ Eclipse + Selenium WebDriver + TestNG ?
▶ Esta combinación nos proporciona bastantes cosas:
▶ Programar test en Java, que interactúan con la aplicación web.
▶ Permite hacer debug de los mismos.
▶ Hacer capturas de lo que ocurre cuando un test falla.
▶ Grabar un video de los test que se lanzan.
▶ Crear un report en el que se visualizan los resultados de los tests.
¿Qué hace Selenium?
▶ Un breve resumen sería lo siguiente:
▶ Selenium levanta un navegador Firefox, que según el test que se haya lanzado,
simulará ciertas acciones sobre una aplicación web (clicks, scrolls, moverse a
través de las páginas, seleccionar elementos, etc ) para comprobar que el
comportamiento es el adecuado de acuerdo a unas pre y post condiciones que
hemos programado.
▶ Si el test falla, mostrará donde ha fallado, y si se ha programado bien, se verá en
que sitio ha ocurrido el error, por lo que será fácilmente averiguar el por qué de
ese error.
▶ Con el uso de algunos plugins selenium puede hacer capturas en el momento en el
que ocurre un error o grabar la ejecución entera de un test en video, por lo que al
desarrollador le es mas fácil llegar al problema.
Ejemplo proyecto Selenium
Project Overview
Ejemplo de Proyecto Selenium
TestSet (1)
TestSet (2)
TestSet (3)
PageObject(1)
PageObject(2)
Factory(Users)
Properties File
Acceptance Suite
Regression Suite
Reports
Agradecimientos
Alejandro Gómez Morón
Oscar Castaño Calle
Jose Antonio Dorado Ceron
Antonio José Rodríguez Ríos
A vosotros por haber asistido!

Más contenido relacionado

La actualidad más candente

Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOpsAhmed Adel
 
Gitflow with FME and Autobuilding a Project with the Gitlab Build Pipeline
Gitflow with FME and Autobuilding a Project with the Gitlab Build PipelineGitflow with FME and Autobuilding a Project with the Gitlab Build Pipeline
Gitflow with FME and Autobuilding a Project with the Gitlab Build PipelineSafe Software
 
Poo1 aula 1 - java - história e introdução
Poo1   aula 1 - java -  história e introduçãoPoo1   aula 1 - java -  história e introdução
Poo1 aula 1 - java - história e introduçãoDenis Sobrenome
 
#PhpirstAid - Replanteamiento de diseño de software
#PhpirstAid - Replanteamiento de diseño de software#PhpirstAid - Replanteamiento de diseño de software
#PhpirstAid - Replanteamiento de diseño de softwareJavier Ferrer González
 
Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration Amazon Web Services
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaÁlvaro Farias Pinheiro
 
테스트자동화와 TDD
테스트자동화와 TDD테스트자동화와 TDD
테스트자동화와 TDDSunghyouk Bae
 
ISTQB - What's testing
ISTQB - What's testingISTQB - What's testing
ISTQB - What's testingHoangThiHien1
 
Técnicas de modelagem de teste (parte 1)
Técnicas de modelagem de teste (parte 1)Técnicas de modelagem de teste (parte 1)
Técnicas de modelagem de teste (parte 1)Fabrício Campos
 
Selenium with Cucumber
Selenium  with Cucumber Selenium  with Cucumber
Selenium with Cucumber Knoldus Inc.
 
ISTQB Foundation Level Basic
ISTQB Foundation Level BasicISTQB Foundation Level Basic
ISTQB Foundation Level BasicErol Selitektay
 
Testes De Software - Uma Visão Geral
Testes De Software - Uma Visão GeralTestes De Software - Uma Visão Geral
Testes De Software - Uma Visão Geralpaulo peres
 
ISTQB / ISEB Foundation Exam Practice - 4
ISTQB / ISEB Foundation Exam Practice - 4ISTQB / ISEB Foundation Exam Practice - 4
ISTQB / ISEB Foundation Exam Practice - 4Yogindernath Gupta
 
Bilgi Güvenliğinde Sızma Testleri
Bilgi Güvenliğinde Sızma TestleriBilgi Güvenliğinde Sızma Testleri
Bilgi Güvenliğinde Sızma TestleriBGA Cyber Security
 
Métrica da Felicidade
Métrica da FelicidadeMétrica da Felicidade
Métrica da FelicidadeVladson Freire
 
manual-testing
manual-testingmanual-testing
manual-testingKanak Mane
 

La actualidad más candente (20)

Devops and git basics
Devops and git basicsDevops and git basics
Devops and git basics
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOps
 
Gitflow with FME and Autobuilding a Project with the Gitlab Build Pipeline
Gitflow with FME and Autobuilding a Project with the Gitlab Build PipelineGitflow with FME and Autobuilding a Project with the Gitlab Build Pipeline
Gitflow with FME and Autobuilding a Project with the Gitlab Build Pipeline
 
Poo1 aula 1 - java - história e introdução
Poo1   aula 1 - java -  história e introduçãoPoo1   aula 1 - java -  história e introdução
Poo1 aula 1 - java - história e introdução
 
#PhpirstAid - Replanteamiento de diseño de software
#PhpirstAid - Replanteamiento de diseño de software#PhpirstAid - Replanteamiento de diseño de software
#PhpirstAid - Replanteamiento de diseño de software
 
Gestion De Calidad Cap 26
Gestion De Calidad Cap 26Gestion De Calidad Cap 26
Gestion De Calidad Cap 26
 
Manual Testing
Manual TestingManual Testing
Manual Testing
 
Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com Java
 
테스트자동화와 TDD
테스트자동화와 TDD테스트자동화와 TDD
테스트자동화와 TDD
 
ISTQB - What's testing
ISTQB - What's testingISTQB - What's testing
ISTQB - What's testing
 
Técnicas de modelagem de teste (parte 1)
Técnicas de modelagem de teste (parte 1)Técnicas de modelagem de teste (parte 1)
Técnicas de modelagem de teste (parte 1)
 
Selenium with Cucumber
Selenium  with Cucumber Selenium  with Cucumber
Selenium with Cucumber
 
ISTQB Foundation Level Basic
ISTQB Foundation Level BasicISTQB Foundation Level Basic
ISTQB Foundation Level Basic
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Testes De Software - Uma Visão Geral
Testes De Software - Uma Visão GeralTestes De Software - Uma Visão Geral
Testes De Software - Uma Visão Geral
 
ISTQB / ISEB Foundation Exam Practice - 4
ISTQB / ISEB Foundation Exam Practice - 4ISTQB / ISEB Foundation Exam Practice - 4
ISTQB / ISEB Foundation Exam Practice - 4
 
Bilgi Güvenliğinde Sızma Testleri
Bilgi Güvenliğinde Sızma TestleriBilgi Güvenliğinde Sızma Testleri
Bilgi Güvenliğinde Sızma Testleri
 
Métrica da Felicidade
Métrica da FelicidadeMétrica da Felicidade
Métrica da Felicidade
 
manual-testing
manual-testingmanual-testing
manual-testing
 

Similar a Software Quality Assurance

Similar a Software Quality Assurance (20)

Pruebas de software
Pruebas de softwarePruebas de software
Pruebas de software
 
Curso_Pruebas_ee v2.pptx
Curso_Pruebas_ee v2.pptxCurso_Pruebas_ee v2.pptx
Curso_Pruebas_ee v2.pptx
 
Capacitacitación Tester - QA 1
Capacitacitación Tester - QA 1Capacitacitación Tester - QA 1
Capacitacitación Tester - QA 1
 
Fundamento pruebas Ingeniería del software
Fundamento pruebas Ingeniería del softwareFundamento pruebas Ingeniería del software
Fundamento pruebas Ingeniería del software
 
S9-DAW-2022S1.pptx
S9-DAW-2022S1.pptxS9-DAW-2022S1.pptx
S9-DAW-2022S1.pptx
 
pruebas de calidad.pdf
pruebas de calidad.pdfpruebas de calidad.pdf
pruebas de calidad.pdf
 
Auditoria ii
Auditoria iiAuditoria ii
Auditoria ii
 
Auditoria ii
Auditoria iiAuditoria ii
Auditoria ii
 
Auditoria ii
Auditoria iiAuditoria ii
Auditoria ii
 
Vuelta_a_los_origines_Testing.pdf
Vuelta_a_los_origines_Testing.pdfVuelta_a_los_origines_Testing.pdf
Vuelta_a_los_origines_Testing.pdf
 
Pruebas de software
Pruebas de softwarePruebas de software
Pruebas de software
 
Pruebas de software
Pruebas de softwarePruebas de software
Pruebas de software
 
Curso Basico-Testing-03r003.pdf
Curso Basico-Testing-03r003.pdfCurso Basico-Testing-03r003.pdf
Curso Basico-Testing-03r003.pdf
 
Testing & Pizza by Lito & nitsnets
Testing & Pizza by Lito & nitsnetsTesting & Pizza by Lito & nitsnets
Testing & Pizza by Lito & nitsnets
 
Enfoque estrategico para la prueba de software
Enfoque estrategico para la prueba de softwareEnfoque estrategico para la prueba de software
Enfoque estrategico para la prueba de software
 
Pruebas de software
Pruebas de softwarePruebas de software
Pruebas de software
 
Fundamentos Rational Tester
Fundamentos Rational TesterFundamentos Rational Tester
Fundamentos Rational Tester
 
pruebasunitarias-110921232512-phpapp02.pptx
pruebasunitarias-110921232512-phpapp02.pptxpruebasunitarias-110921232512-phpapp02.pptx
pruebasunitarias-110921232512-phpapp02.pptx
 
Pruebas - Fundamentos
Pruebas - FundamentosPruebas - Fundamentos
Pruebas - Fundamentos
 
Pruebas fundamentos
Pruebas fundamentosPruebas fundamentos
Pruebas fundamentos
 

Software Quality Assurance

  • 2. Índice (1) 1. ¿Qué es QA? 2. ¿Cómo obtenemos esa calidad? 3. ¿Cuándo se es QA? 4. ¿Qué pruebas hay? 1. Test unitario: Pruebas de caja negra. 2. Test unitario: Pruebas de caja blanca. 5. Test de Stress 6. Smoke test 7. Test de Aceptación 8. Pruebas de Regresión
  • 3. Índice (2) 9. ¿Qué herramientas utilizo? 10. Redmine 11. Jenkins 12. Eclipse + Selenium WebDriver + TestNG 13. Ejemplo Proyecto Selenium ➢ Project Overview ➢ TestSet ➢ PageObject ➢ Properties File ➢ Acceptance/Regression Suite ➢ Reports
  • 4. ¿Qué es QA? ▶ Definición: ▶ QA significa Quality Assurance, o aseguramiento de la calidad. Se trata de un conjunto de actividades de evaluación de las distintas etapas del proceso de desarrollo para garantizar que el producto final sea de calidad. ▶ El concepto de calidad se presta a múltiples interpretaciones, pero siempre implica que el software satisfaga las necesidades del cliente.
  • 5. ¿Qué significa la “calidad”? ▶ ¿Qué piensan las personas? ▶ ¿Qué piensan las empresas? ¿Documentación? ¿Certificados?
  • 6. Para nosotros: ▶ Podemos decir que significa: ▶ Desarrollar. ▶ Diseñar ▶ Producir ▶ Mantener ▶ Un Producto que sea económico, el mas útil y siempre satisfactorio para el consumidor.
  • 7. Punto de vista del cliente: ▶ Grado en que un cliente y/o usuario percibe que el producto software satisface sus necesidades. Punto de vista de la industria: ▶ Grado en que un producto de software satisface su especificación de requerimientos.
  • 9. Parte humana: ▶ Aprendiendo de errores y éxitos ▶ Evaluando siempre cada proyecto ▶ Haciendo que todas las partes se involucren (clientes, desarrolladores, testers) ▶ Sabiendo tus límites ▶ Pidiendo ayuda cuando sea necesario ▶ Manteniendo una mente abierta ▶ Intentando siempre aprender todo lo posible ▶ Construir una “cultura de calidad” donde la calidad es vista como responsabilidad de todos
  • 10. Parte técnica: ▶ Identificar casos de prueba. ▶ Verificación de estándares y requerimientos. ▶ Ejecución y documentación de pruebas. (Test case). ▶ Identificar y clasificar los errores y/o defectos. ▶ Crear un entorno de pruebas adecuado. ( Dev > CI > QA > Staging > Pre-Production) ▶ Diseño y ejecución integral de pruebas. ▶ Realizar reportes estadísticos al final del proyecto.
  • 11. ¿Cuándo se es QA? ▶ La concepción tradicional relega a QA al final de todo el proceso. Un tremendo error si pretendemos ser ágiles: conseguir que nuestra empresa pueda moverse rápido desarrollando poco a poco y contrastando las expectativas del cliente para subir a producción en pequeños sprints de dos semanas, por ejemplo. Y, por supuesto, ir rectificando rápidamente lo que no funciona o no acaba de encajar. ▶ ¿Al comienzo? ▶ ¿Mientras se desarrolla? ▶ ¿Al final? ▶ Para conseguir los objetivos que plantean las metodologías ágiles, desarrollo y QA deben ir de la mano, integrados en el día a día. Cada equipo de desarrolladores debería contar con un encargado de QA que siga el proceso de desarrollo durante la concepción, análisis, desarrollo y, obviamente, verificación.
  • 13. ▶ Test Unitario: Garantizar la calidad de módulos o partes aisladas. ▶ Pruebas de Caja Negra. ▶ Pruebas de Caja Blanca. ▶ Test funcionales, divididos en distintos grupos: ▶ Acceptance/Smoke: Garantizar la calidad del core del proyecto. ▶ Regression: Garantizar la calidad de la aplicación entera. ▶ Progression: Garantizar la calidad del desarrollo actual (Release) ▶ Test de rendimiento: Garantizar la disponibilidad del sistema. ▶ Test Responsive: Garantizar que se cumplan las reglas de responsividad definidas. Breve resumen
  • 14. Pruebas de caja negra ¿Qué son las pruebas de caja negra? ▶ Son pruebas funcionales, dedicadas a “mirar” en el exterior de lo que se prueba. Sabiendo solo la entrada y la salida. ▶ Estas pruebas permiten obtener un conjunto de condiciones de entrada que ejerciten completamente todos los requisitos funcionales de un programa. En ellas se ignora la estructura de control, concentrándose en los requisitos funcionales del sistema y ejercitándolos. ▶ No es una alternativa a las pruebas de caja blanca, sino un enfoque complementario que intenta descubrir diferentes tipos de errores a los encontrados en los métodos de la Caja Blanca ▶ Las funciones del software son operativas ▶ La entrada se acepta de forma correcta ▶ Se produce una salida correcta ▶ La integridad de la información externa se mantiene ▶ Funciones incorrectas o ausentes ▶ Errores en la interfaz ▶ Errores en estructuras de datos o en accesos a bases de datos externas ▶ Errores de rendimiento ▶ Errores de inicialización y de terminación ¿Qué pretenden demostrar? ¿Qué pretenden encontrar?
  • 15. Pruebas de caja blanca.(1) ▶ Tambien llamadas pruebas modulares ya que nos permiten determinar si un módulo del programa esta listo y correctamente terminado. ▶ ¿De qué nos sirve una gran interfaz si, cuando voy a hacer una compra de entradas para el concierto de mi grupo favorito, el módulo de venta de entradas tiene un bug y no me permite comprar? ▶ La experiencia nos ha enseñado que los bugs son imposibles de evitar, y menos en procesos de Continuous Delivery donde hay nuevas versiones que refactorizan o incorporan nuevos módulos al proyecto.
  • 16. ▶ Los tests unitarios deben comprobar que una función que se ha programado, siempre debe funcionar igual. Con este pequeño test, nos aseguramos que la función siempre nos devolverá la multiplicación de ambos números. Si alguien del equipo modifica esta función y el test falla, sabremos que existe un bug antes de que el fallo llegue a producción. Sin él, en un proyecto de decenas de miles de líneas de código fuente lo más probable es que el bug no sea detectado hasta estar en producción. Pruebas de caja blanca.(2) Este conocido framework para PHP nos permite crear y ejecutar juegos de tests unitarios de manera sencilla. Basado en la familia de frameworks xUnit constituye junto con alternativas como SimpleTest o phpt, los principales frameworks de pruebas unitarias en PHP.
  • 17. Test de Stress ▶ Las pruebas de performance permiten conocer y mitigar los riesgos relacionados con el mal desempeño de las aplicaciones en los entornos de producción y realizar las correcciones necesarias antes de salir al mercado. ▶ Se cuantifica la capacidad de la infraestructura, se validan los requerimientos de performance, la escalabilidad de las plataformas y del sistema a probar. ▶ De esta manera, la empresa puede conocer qué cantidad de clientes simultáneos soporta su producto, con tiempos y datos razonables sobre la infraestructura y las plataformas propuestas. ▶ En general los objetivos de los test de Stress suelen ser mejorar: ▶ Rendimiento ▶ Escalabilidad ▶ Estabilidad
  • 18. Smoke test o pruebas de humo ▶ Este tipo de pruebas son pruebas rápidas que buscan encontrar problemas graves (fuego oculto) en el software recientemente modificado. El nombre viene de los sistemas electrónicos donde la prueba inicial es que no hay humo al conectar la fuente de energía. ▶ Las pruebas de humo buscan problemas críticos en la aplicación que hacen que no valga la pena validar otro tipo de pruebas. Preguntas como: ¿El sistema inicia correctamente? o ¿El menú principal se presenta correctamente? caracterizan el objetivo de las pruebas de humo.
  • 19. Test de aceptación ▶ Los test de aceptación son aquellos destinados a determinar si los requisitos de cierta funcionalidad han sido cumplidos, centrarse en que la parte funcional cumple las expectativas creadas al inicio del Sprint. ▶ El test de aceptación termina de definir el nivel de calidad de un software y le permite conocer al equipo de desarrollo qué tan bien supo interpretar los pedidos del cliente durante la gestación del proyecto.
  • 20. Pruebas de regresión ▶ Las pruebas de regresión son las pruebas que se ejecutan después de un cambio en el sistema (nueva característica o solución a un bug). Su objetivo principal es validar que las características previas al cambio no se vean afectadas. ▶ Son las primeras candidatas a automatización pues deben repartirse periódicamente con cada uno de los cambios o actualizaciones
  • 21.
  • 26. Jenkins ▶ ¿Qué es Jenkins? ▶ Jenkins es un servidor de integración continua, gratuito, open-source y actualmente uno de los más empleados para esta función. ▶ La base de Jenkins son las tareas, donde indicamos qué es lo que hay que hacer en un build. Por ejemplo, podríamos programar una tarea en la que se compruebe el repositorio de control de versiones cada cierto tiempo, y cuando un desarrollador quiera subir su código al control de versiones, este se compile y se ejecuten las pruebas. ▶ Si el resultado no es el esperado o hay algún error, Jenkins notificará al desarrollador, al equipo de QA, por email o cualquier otro medio, para que lo solucione. Si el build es correcto, podremos indicar a Jenkins que intente integrar el código y subirlo al repositorio de control de versiones. ▶ Desde Jenkins podrás indicar que se lancen métricas de calidad y visualizar los resultados dentro de la misma herramienta. También podrás ver el resultado de los tests, generar y visualizar la documentación del proyecto o incluso pasar una versión estable del software al entorno de QA para ser probado, a pre-producción o producción.
  • 27.
  • 28.
  • 29. ¿ Eclipse + Selenium WebDriver + TestNG ? ▶ Esta combinación nos proporciona bastantes cosas: ▶ Programar test en Java, que interactúan con la aplicación web. ▶ Permite hacer debug de los mismos. ▶ Hacer capturas de lo que ocurre cuando un test falla. ▶ Grabar un video de los test que se lanzan. ▶ Crear un report en el que se visualizan los resultados de los tests.
  • 30. ¿Qué hace Selenium? ▶ Un breve resumen sería lo siguiente: ▶ Selenium levanta un navegador Firefox, que según el test que se haya lanzado, simulará ciertas acciones sobre una aplicación web (clicks, scrolls, moverse a través de las páginas, seleccionar elementos, etc ) para comprobar que el comportamiento es el adecuado de acuerdo a unas pre y post condiciones que hemos programado. ▶ Si el test falla, mostrará donde ha fallado, y si se ha programado bien, se verá en que sitio ha ocurrido el error, por lo que será fácilmente averiguar el por qué de ese error. ▶ Con el uso de algunos plugins selenium puede hacer capturas en el momento en el que ocurre un error o grabar la ejecución entera de un test en video, por lo que al desarrollador le es mas fácil llegar al problema.
  • 35.
  • 37.
  • 39.
  • 41.
  • 43.
  • 45.
  • 47.
  • 49.
  • 51.
  • 53. Agradecimientos Alejandro Gómez Morón Oscar Castaño Calle Jose Antonio Dorado Ceron Antonio José Rodríguez Ríos
  • 54. A vosotros por haber asistido!