SlideShare ist ein Scribd-Unternehmen logo
1 von 17
Downloaden Sie, um offline zu lesen
Estrategias de QA en un
entorno DevOps
JOSÉ CASTILLO VELÁSQUEZ
D e v O p s E n g i n e e r , M B A C a n d i d a t e , I n g . d e S i s t e m a s , I S T Q B C T A L T e s t M a n a g e r
E m a i l : p e p e _ c a s t 2 @ h o t m a i l . c o m
S e t i e m b r e , 2 0 1 7
Agenda
- ¿Qué es DevOps?
- Etapas, pilares y fases de DevOps
- TDD, BDD y ATDD
- Tipos de pruebas en DevOps
- La pirámide de testing
- Tipos de prueba vs Niveles de Prueba
- Reducir el tiempo de pruebas en DevOps – Docker y Niveles de pruebas
- Métricas de testing en DevOps
- Tableros de desempeño
- Conclusiones
Ing. José Castillo Velásquez, #HablemosDeTesting
¿Qué es DevOps?
DevOps es un enfoque de desarrollo de software que implica el desarrollo continuo, pruebas
continuas, integración continua, despliegue continuo y supervisión continua del software a lo
largo de su ciclo de vida de desarrollo.
Estas actividades son posibles sólo en DevOps, no Agile o cascada, y es por eso que las empresas
de primera han elegido DevOps como el camino a seguir para sus objetivos de negocio.
DevOps es el enfoque preferido para desarrollar software de alta calidad en ciclos de desarrollo
más cortos, lo que resulta en una mayor satisfacción del cliente.
Modelo Tradicional
Cascada
•Los requisitos
completos son
claros y fijos.
•La definición del
producto es
estable
Modelo Ágil
•Requerimientos
cambian
constantemente.
•Desarrollo
necesita ser más
rápido.
Reto DevOps
•Requerimientos
cambian
constantemente.
•Desarrollo
necesita ser ágil.
•Operaciones
necesita ser ágil.
Ing. José Castillo Velásquez, #HablemosDeTesting
Etapas de DevOps
Desarrollo continuo:
Esta es la etapa en el ciclo de vida de DevOps donde el Software se desarrolla continuamente. Esta etapa involucra las fases de Codificación y Construcción y utiliza herramientas como Git y SVN
para mantener las diferentes versiones del código, y herramientas como Ant, Maven, Gradle para construir / empaquetar el código en un archivo ejecutable que puede ser enviado a Los QA
para las pruebas.
Pruebas continuas:
Es la etapa donde el software desarrollado se prueba continuamente para los errores. Para la prueba continua se usan herramientas de automatización como Selenium, JUnit, etc. Además tipos
de desarrollo de prueba como TDD y BDD. En esta fase, el uso de contenedores Docker para simular el entorno de pruebas sobre la marcha, también es una opción preferida. Una vez que el
código se prueba, se integra continuamente con el código existente.
Integración continua:
Esta es la etapa en la que el código que soporta nueva funcionalidad está integrado con el código existente. Dado que hay un desarrollo continuo de software, el código actualizado necesita ser
integrado continuamente, así como suavemente con los sistemas para reflejar los cambios a los usuarios finales. Jenkins es una herramienta muy popular utilizada para la integración continua.
Despliegue continuo:
Es la etapa en la que el código se despliega en el entorno de producción. Aquí nos aseguramos de que el código se despliegue correctamente en todos los servidores. Si hay alguna adición de
funcionalidad o una nueva característica se introduce entonces uno debe estar listo para recibir mayor tráfico del sitio web. Por lo tanto, también es responsabilidad de SysAdmin escalar los
servidores para alojar más usuarios. Dado que el nuevo código se implementa de forma continua, las herramientas de automatización desempeñan un papel importante para ejecutar las tareas
de forma rápida y frecuente.
Monitoreo continuo:
Esta es una etapa muy crucial en el ciclo de vida de DevOps que tiene como objetivo mejorar la calidad del software mediante el seguimiento de su rendimiento. Esta práctica involucra la
participación del equipo de Operaciones que monitoreará la actividad del usuario por errores o cualquier comportamiento incorrecto del sistema. Esto también se puede lograr haciendo uso de
herramientas de monitoreo dedicadas que monitorearán continuamente el desempeño de la aplicación y resaltarán los problemas.
Ing. José Castillo Velásquez, #HablemosDeTesting
Pilares de DevOps
Ing. José Castillo Velásquez, #HablemosDeTesting
Fases de DevOps
Ing. José Castillo Velásquez, #HablemosDeTesting
TDD, BDD y ATDD
Desarrollo guiado por pruebas o TDD es una técnica de programación que se centra en el hecho de
que las pruebas las escribes antes de programar la funcionalidad, siguiendo el ciclo falla, pasa,
refactoriza [ red, green, refactor ] intentando así mejorar la calidad del software que producimos.
En BDD no se prueba solo unidades o clases, se prueban escenarios y el comportamiento de las
clases a la hora de cumplir dichos escenarios. Los test de aceptación son aquellos destinados a
determinar si los requisitos de cierta funcionalidad han sido cumplidos, como usuarios finales.
Ing. José Castillo Velásquez, #HablemosDeTesting
Tipos de testing en DevOps
Cuadrante Q1 - A nivel de unidad contiene unidades de pruebas, tecnología de
cara, pruebas sujetas a la automatización completa y la integración continua.
Cuadrante Q2 - A nivel de sistema, frente a negocios, se trata de pruebas
funcionales, ejemplos, pruebas de historias, prototipos de experiencias de
usuario y simulaciones basadas en los criterios de aceptación, sean manuales o
automatizadas. Creado como parte de la definición de hecho para una historia
Cuadrante Q3 - En el nivel de aceptación del sistema o del usuario, frente a los
negocios, contiene pruebas de pruebas exploratorias, escenarios, flujos de
proceso, pruebas de usabilidad, pruebas de aceptación del usuario, pruebas
alfa y pruebas beta. Estas pruebas suelen ser manuales y orientadas al usuario.
Cuadrante Q4 - En el nivel de aceptación del sistema o operacional, la
tecnología se enfrenta a pruebas de rendimiento, carga, estrés y escalabilidad,
pruebas de seguridad, mantenimiento, administración de memoria,
compatibilidad e interoperabilidad, migración de datos, infraestructura y
pruebas de recuperación. Estas pruebas suelen ser automatizadas.
Ing. José Castillo Velásquez, #HablemosDeTesting
Pirámide de testing
Ing. José Castillo Velásquez, #HablemosDeTesting
Reducir el tiempo de pruebas - Docker
Ing. José Castillo Velásquez, #HablemosDeTesting
Reducir el tiempo de pruebas - Niveles
L4
(1xd)
L3
(4h)
L2
(2h)
Test
failure
Submit
defect
Resolve
defect
Re-run
tests
Commits
L1
(20m-30m)
Davo
Piero
Pepo
Meme
Chino
L0
Ing. José Castillo Velásquez, #HablemosDeTesting
Métricas de QA en DevOps
Métricas de QA en DevOps
Ing. José Castillo Velásquez, #HablemosDeTesting
Tableros de desempeño
Conclusiones
•QA tiene que asegurarse de que todos sus casos de prueba son automatizados y lograr cerca del
100% de cobertura de código.
•QA necesita asegurarse de que sus entornos estén estandarizados y el despliegue en sus cajas
de control de calidad esté automatizado.
•Todas sus tareas de pre-prueba, clean, tareas de post-prueba, etc. son automatizadas y
alineadas con el ciclo de Integración Continua.
•En un entorno DevOps, el papel de QA es alimentar el nuevo código de desarrollo al entorno de
producción.
•Tradicionalmente, el papel del control de calidad es detectar bugs. Pero en la era DevOps, la
responsabilidad principal de QA es evitar que los errores ocurran en el primer lugar. Este
enfoque ayuda a ganar velocidad al mercado y ayuda a reducir los ciclos de prueba.
•La automatización de las pruebas es vital en el entorno DevOps.
Ing. José Castillo Velásquez, #HablemosDeTesting
Ing. José Castillo Velásquez, #HablemosDeTesting
Ing. José Castillo Velásquez, #HablemosDeTesting

Weitere ähnliche Inhalte

Was ist angesagt?

INTEGRATION TESTING
INTEGRATION TESTINGINTEGRATION TESTING
INTEGRATION TESTINGRohitK71
 
Pruebas De Software
Pruebas De SoftwarePruebas De Software
Pruebas De Softwarearacelij
 
소프트웨어 테스팅
소프트웨어 테스팅소프트웨어 테스팅
소프트웨어 테스팅영기 김
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven DevelopmentTung Nguyen Thanh
 
Agile Testing Process
Agile Testing ProcessAgile Testing Process
Agile Testing ProcessIntetics
 
A Not-So-Serious Introduction to Test Driven Development (TDD)
A Not-So-Serious Introduction to Test Driven Development (TDD) A Not-So-Serious Introduction to Test Driven Development (TDD)
A Not-So-Serious Introduction to Test Driven Development (TDD) CodeOps Technologies LLP
 
Agile testing - Testing From Day 1
Agile testing - Testing From Day 1Agile testing - Testing From Day 1
Agile testing - Testing From Day 1Kaizenko
 
Software Testing 101
Software Testing 101Software Testing 101
Software Testing 101QA Hannah
 
TDD (Test Driven Design)
TDD (Test Driven Design)TDD (Test Driven Design)
TDD (Test Driven Design)nedirtv
 
Pruebas de software agiles
Pruebas de software agilesPruebas de software agiles
Pruebas de software agilesGuino Henostroza
 
Understanding Unit Testing
Understanding Unit TestingUnderstanding Unit Testing
Understanding Unit Testingikhwanhayat
 
ISTQB Foundation Level Basic
ISTQB Foundation Level BasicISTQB Foundation Level Basic
ISTQB Foundation Level BasicErol Selitektay
 
Agile testing principles and practices - Anil Karade
Agile testing principles and practices - Anil KaradeAgile testing principles and practices - Anil Karade
Agile testing principles and practices - Anil KaradeIndicThreads
 
[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스철민 신
 
자동화된 Test Case의 효과
자동화된 Test Case의 효과자동화된 Test Case의 효과
자동화된 Test Case의 효과도형 임
 
Agile Testing and Test Automation
Agile Testing and Test AutomationAgile Testing and Test Automation
Agile Testing and Test AutomationNaveen Kumar Singh
 

Was ist angesagt? (20)

INTEGRATION TESTING
INTEGRATION TESTINGINTEGRATION TESTING
INTEGRATION TESTING
 
Pruebas De Software
Pruebas De SoftwarePruebas De Software
Pruebas De Software
 
소프트웨어 테스팅
소프트웨어 테스팅소프트웨어 테스팅
소프트웨어 테스팅
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
Agile Testing Process
Agile Testing ProcessAgile Testing Process
Agile Testing Process
 
A Not-So-Serious Introduction to Test Driven Development (TDD)
A Not-So-Serious Introduction to Test Driven Development (TDD) A Not-So-Serious Introduction to Test Driven Development (TDD)
A Not-So-Serious Introduction to Test Driven Development (TDD)
 
QA Best Practices in Agile World_new
QA Best Practices in Agile World_newQA Best Practices in Agile World_new
QA Best Practices in Agile World_new
 
Agile testing - Testing From Day 1
Agile testing - Testing From Day 1Agile testing - Testing From Day 1
Agile testing - Testing From Day 1
 
Software Testing 101
Software Testing 101Software Testing 101
Software Testing 101
 
TDD (Test Driven Design)
TDD (Test Driven Design)TDD (Test Driven Design)
TDD (Test Driven Design)
 
Pruebas de software agiles
Pruebas de software agilesPruebas de software agiles
Pruebas de software agiles
 
Unit Testing (C#)
Unit Testing (C#)Unit Testing (C#)
Unit Testing (C#)
 
Understanding Unit Testing
Understanding Unit TestingUnderstanding Unit Testing
Understanding Unit Testing
 
Presentation on Agile Testing
Presentation on Agile TestingPresentation on Agile Testing
Presentation on Agile Testing
 
ISTQB Foundation Level Basic
ISTQB Foundation Level BasicISTQB Foundation Level Basic
ISTQB Foundation Level Basic
 
Cucumber BDD
Cucumber BDDCucumber BDD
Cucumber BDD
 
Agile testing principles and practices - Anil Karade
Agile testing principles and practices - Anil KaradeAgile testing principles and practices - Anil Karade
Agile testing principles and practices - Anil Karade
 
[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스
 
자동화된 Test Case의 효과
자동화된 Test Case의 효과자동화된 Test Case의 효과
자동화된 Test Case의 효과
 
Agile Testing and Test Automation
Agile Testing and Test AutomationAgile Testing and Test Automation
Agile Testing and Test Automation
 

Ähnlich wie #HablemosDeTestingDay - José Castillo: Estrategia de QA en un contexto de DevOps

Ähnlich wie #HablemosDeTestingDay - José Castillo: Estrategia de QA en un contexto de DevOps (20)

Calidad de software y TDD
Calidad de software y TDDCalidad de software y TDD
Calidad de software y TDD
 
Ra.1..
Ra.1..Ra.1..
Ra.1..
 
Material trainer-depc-v1-parte2
Material trainer-depc-v1-parte2Material trainer-depc-v1-parte2
Material trainer-depc-v1-parte2
 
Curso Basico-Testing-03r003.pdf
Curso Basico-Testing-03r003.pdfCurso Basico-Testing-03r003.pdf
Curso Basico-Testing-03r003.pdf
 
Sqm
SqmSqm
Sqm
 
Metodologia clasica en cascada
Metodologia clasica en cascadaMetodologia clasica en cascada
Metodologia clasica en cascada
 
Software Quality Assurance
Software Quality AssuranceSoftware Quality Assurance
Software Quality Assurance
 
DevOps: una breve introducción
DevOps: una breve introducciónDevOps: una breve introducción
DevOps: una breve introducción
 
Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas
 
Shift Left: En busca del éxito del software
Shift Left: En busca del éxito del softwareShift Left: En busca del éxito del software
Shift Left: En busca del éxito del software
 
metodologia
metodologiametodologia
metodologia
 
Pruebas - Fundamentos
Pruebas - FundamentosPruebas - Fundamentos
Pruebas - Fundamentos
 
Pruebas fundamentos
Pruebas fundamentosPruebas fundamentos
Pruebas fundamentos
 
Metodologías Aágiles: TDD (Test Driven development)
Metodologías Aágiles: TDD (Test Driven development)Metodologías Aágiles: TDD (Test Driven development)
Metodologías Aágiles: TDD (Test Driven development)
 
Pruebas funcionales
Pruebas funcionalesPruebas funcionales
Pruebas funcionales
 
RA.1.pdf
RA.1.pdfRA.1.pdf
RA.1.pdf
 
Rup disciplinas
Rup disciplinasRup disciplinas
Rup disciplinas
 
ALM09 - Scrum, Visual Studio y Buenas Prácticas
ALM09 - Scrum, Visual Studio y Buenas PrácticasALM09 - Scrum, Visual Studio y Buenas Prácticas
ALM09 - Scrum, Visual Studio y Buenas Prácticas
 
Trabajo de desarrollo desoftware
Trabajo de desarrollo desoftwareTrabajo de desarrollo desoftware
Trabajo de desarrollo desoftware
 
Rup
RupRup
Rup
 

#HablemosDeTestingDay - José Castillo: Estrategia de QA en un contexto de DevOps

  • 1. Estrategias de QA en un entorno DevOps JOSÉ CASTILLO VELÁSQUEZ D e v O p s E n g i n e e r , M B A C a n d i d a t e , I n g . d e S i s t e m a s , I S T Q B C T A L T e s t M a n a g e r E m a i l : p e p e _ c a s t 2 @ h o t m a i l . c o m S e t i e m b r e , 2 0 1 7
  • 2. Agenda - ¿Qué es DevOps? - Etapas, pilares y fases de DevOps - TDD, BDD y ATDD - Tipos de pruebas en DevOps - La pirámide de testing - Tipos de prueba vs Niveles de Prueba - Reducir el tiempo de pruebas en DevOps – Docker y Niveles de pruebas - Métricas de testing en DevOps - Tableros de desempeño - Conclusiones Ing. José Castillo Velásquez, #HablemosDeTesting
  • 3. ¿Qué es DevOps? DevOps es un enfoque de desarrollo de software que implica el desarrollo continuo, pruebas continuas, integración continua, despliegue continuo y supervisión continua del software a lo largo de su ciclo de vida de desarrollo. Estas actividades son posibles sólo en DevOps, no Agile o cascada, y es por eso que las empresas de primera han elegido DevOps como el camino a seguir para sus objetivos de negocio. DevOps es el enfoque preferido para desarrollar software de alta calidad en ciclos de desarrollo más cortos, lo que resulta en una mayor satisfacción del cliente. Modelo Tradicional Cascada •Los requisitos completos son claros y fijos. •La definición del producto es estable Modelo Ágil •Requerimientos cambian constantemente. •Desarrollo necesita ser más rápido. Reto DevOps •Requerimientos cambian constantemente. •Desarrollo necesita ser ágil. •Operaciones necesita ser ágil. Ing. José Castillo Velásquez, #HablemosDeTesting
  • 4. Etapas de DevOps Desarrollo continuo: Esta es la etapa en el ciclo de vida de DevOps donde el Software se desarrolla continuamente. Esta etapa involucra las fases de Codificación y Construcción y utiliza herramientas como Git y SVN para mantener las diferentes versiones del código, y herramientas como Ant, Maven, Gradle para construir / empaquetar el código en un archivo ejecutable que puede ser enviado a Los QA para las pruebas. Pruebas continuas: Es la etapa donde el software desarrollado se prueba continuamente para los errores. Para la prueba continua se usan herramientas de automatización como Selenium, JUnit, etc. Además tipos de desarrollo de prueba como TDD y BDD. En esta fase, el uso de contenedores Docker para simular el entorno de pruebas sobre la marcha, también es una opción preferida. Una vez que el código se prueba, se integra continuamente con el código existente. Integración continua: Esta es la etapa en la que el código que soporta nueva funcionalidad está integrado con el código existente. Dado que hay un desarrollo continuo de software, el código actualizado necesita ser integrado continuamente, así como suavemente con los sistemas para reflejar los cambios a los usuarios finales. Jenkins es una herramienta muy popular utilizada para la integración continua. Despliegue continuo: Es la etapa en la que el código se despliega en el entorno de producción. Aquí nos aseguramos de que el código se despliegue correctamente en todos los servidores. Si hay alguna adición de funcionalidad o una nueva característica se introduce entonces uno debe estar listo para recibir mayor tráfico del sitio web. Por lo tanto, también es responsabilidad de SysAdmin escalar los servidores para alojar más usuarios. Dado que el nuevo código se implementa de forma continua, las herramientas de automatización desempeñan un papel importante para ejecutar las tareas de forma rápida y frecuente. Monitoreo continuo: Esta es una etapa muy crucial en el ciclo de vida de DevOps que tiene como objetivo mejorar la calidad del software mediante el seguimiento de su rendimiento. Esta práctica involucra la participación del equipo de Operaciones que monitoreará la actividad del usuario por errores o cualquier comportamiento incorrecto del sistema. Esto también se puede lograr haciendo uso de herramientas de monitoreo dedicadas que monitorearán continuamente el desempeño de la aplicación y resaltarán los problemas. Ing. José Castillo Velásquez, #HablemosDeTesting
  • 5. Pilares de DevOps Ing. José Castillo Velásquez, #HablemosDeTesting
  • 6. Fases de DevOps Ing. José Castillo Velásquez, #HablemosDeTesting
  • 7. TDD, BDD y ATDD Desarrollo guiado por pruebas o TDD es una técnica de programación que se centra en el hecho de que las pruebas las escribes antes de programar la funcionalidad, siguiendo el ciclo falla, pasa, refactoriza [ red, green, refactor ] intentando así mejorar la calidad del software que producimos. En BDD no se prueba solo unidades o clases, se prueban escenarios y el comportamiento de las clases a la hora de cumplir dichos escenarios. Los test de aceptación son aquellos destinados a determinar si los requisitos de cierta funcionalidad han sido cumplidos, como usuarios finales. Ing. José Castillo Velásquez, #HablemosDeTesting
  • 8. Tipos de testing en DevOps Cuadrante Q1 - A nivel de unidad contiene unidades de pruebas, tecnología de cara, pruebas sujetas a la automatización completa y la integración continua. Cuadrante Q2 - A nivel de sistema, frente a negocios, se trata de pruebas funcionales, ejemplos, pruebas de historias, prototipos de experiencias de usuario y simulaciones basadas en los criterios de aceptación, sean manuales o automatizadas. Creado como parte de la definición de hecho para una historia Cuadrante Q3 - En el nivel de aceptación del sistema o del usuario, frente a los negocios, contiene pruebas de pruebas exploratorias, escenarios, flujos de proceso, pruebas de usabilidad, pruebas de aceptación del usuario, pruebas alfa y pruebas beta. Estas pruebas suelen ser manuales y orientadas al usuario. Cuadrante Q4 - En el nivel de aceptación del sistema o operacional, la tecnología se enfrenta a pruebas de rendimiento, carga, estrés y escalabilidad, pruebas de seguridad, mantenimiento, administración de memoria, compatibilidad e interoperabilidad, migración de datos, infraestructura y pruebas de recuperación. Estas pruebas suelen ser automatizadas. Ing. José Castillo Velásquez, #HablemosDeTesting
  • 9. Pirámide de testing Ing. José Castillo Velásquez, #HablemosDeTesting
  • 10. Reducir el tiempo de pruebas - Docker Ing. José Castillo Velásquez, #HablemosDeTesting
  • 11. Reducir el tiempo de pruebas - Niveles L4 (1xd) L3 (4h) L2 (2h) Test failure Submit defect Resolve defect Re-run tests Commits L1 (20m-30m) Davo Piero Pepo Meme Chino L0 Ing. José Castillo Velásquez, #HablemosDeTesting
  • 12. Métricas de QA en DevOps
  • 13. Métricas de QA en DevOps Ing. José Castillo Velásquez, #HablemosDeTesting
  • 15. Conclusiones •QA tiene que asegurarse de que todos sus casos de prueba son automatizados y lograr cerca del 100% de cobertura de código. •QA necesita asegurarse de que sus entornos estén estandarizados y el despliegue en sus cajas de control de calidad esté automatizado. •Todas sus tareas de pre-prueba, clean, tareas de post-prueba, etc. son automatizadas y alineadas con el ciclo de Integración Continua. •En un entorno DevOps, el papel de QA es alimentar el nuevo código de desarrollo al entorno de producción. •Tradicionalmente, el papel del control de calidad es detectar bugs. Pero en la era DevOps, la responsabilidad principal de QA es evitar que los errores ocurran en el primer lugar. Este enfoque ayuda a ganar velocidad al mercado y ayuda a reducir los ciclos de prueba. •La automatización de las pruebas es vital en el entorno DevOps. Ing. José Castillo Velásquez, #HablemosDeTesting
  • 16. Ing. José Castillo Velásquez, #HablemosDeTesting
  • 17. Ing. José Castillo Velásquez, #HablemosDeTesting