TESTING AS CODE
V 1.0.
Por:
Dic. de 2024
Testing as Code.
Contents
RESUMEN.......................................................................................................................................3
DEVOPS y DEVTESTOPS.................................................................................................................3
AUTOMATIZACIÓN DE PRUEBAS...................................................................................................4
PRUEBAS BASADAS EN RIESGOS...................................................................................................5
TESTING AS CODE DE SEQUAL.......................................................................................................6
SDET, SBOT© & TESTING AS CODE................................................................................................8
PROXIMOS PASOS.........................................................................................................................9
AGRADECIMIENTOS Y CONTACTO.................................................................................................9
SOBRE LOS AUTORES.....................................................................................................................9
SOBRE SEQUAL............................................................................................................................10
sequal.co sbot.co
Testing as Code.
Testing as Code.
Por Miguel Buitrago y Juan Carlos Marín.
SEQUAL S.A.S.
Copyright SEQUAL S.A.S., 2024.
Todo el contenido de este artículo es autoría de SEQUAL S.A.S. Se permite la copia parcial o total
citando la fuente.
¡Señores testers, vamos a integrar! ¿Dónde está su código?, preguntó el pipeline cuando llegó el
momento. En silencio, el build se desplegó en segundos, ante la mirada atónita de las pruebas
manuales.
RESUMEN.
Desde sus inicios, la Ingeniería de software se ha definido en términos de productividad,
velocidad y calidad. Hoy, más de 70 años después de su origen, su desarrollo sigue girando en
torno a estos conceptos. Por ejemplo, DevOps tiene como propósito aumentar la eficiencia de una
organización para entregar software. Y, DevTestOps, es una mejora a DevOps, que incorpora el
Testing continuo, en el proceso de desarrollo, para lograr una mayor calidad en el software.
Obviamente, el Testing continuo requiere esfuerzo y por lo tanto consume tiempo. Es decir,
la rigurosidad e intensidad subyacentes en el Testing continuo, e integrado en un ciclo DevOps,
podría disminuir la velocidad del proceso de desarrollo. Y una disminución en la velocidad del
proceso, podría hacer más lenta la entrega del producto afectando su Time to Market. Para evitar
este inconveniente, ganar calidad en el software a costa de la velocidad del proceso, se debe
encontrar un método que logre mejorar su calidad, sin disminuir la velocidad; o al menos, que el
impacto no afecte los planes de la organización.
SEQUAL desarrolló un método de trabajo y lo denominó “Testing as Code”, que logra
integrar el Testing continuo, para mejorar la calidad del software, sin afectar la velocidad en la
entrega de la solución; de hecho, las implementaciones prácticas del método demuestran que
mejora tanto la calidad del software, como la velocidad en las entregas. La versión 1.0 de Testing
as Code de SEQUAL ya está en fase operativa y se ha implementado con éxito en varias empresas
de diferentes sectores económicos.
Testing as Code logra mejorar la calidad sin afectar la velocidad, usando tres pilares.
1. Automatizar las pruebas con herramientas Low-Code.
2. Integrar las pruebas al ciclo DevOps, mediante pipelines.
3. Priorizar las pruebas, a partir de los riesgos del producto, ISO/IEC 25010.
Este documento explica el método Testing as Code de SEQUAL, producto del trabajo colaborativo
entre SEQUAL y sus clientes.
sequal.co sbot.co
Testing as Code.
DEVOPS y DEVTESTOPS.
El ciclo DevOps es un conjunto de prácticas y herramientas que entiende la ingeniería de
software como un continuum para disminuir los silos que se presentan entre desarrollo y
operación, a la vez que mejora la productividad del equipo, la velocidad en la entrega y la calidad
en el software. Un ciclo DevOps es iterativo e incremental, centrado en la arquitectura y
conducido por los requisitos.
DevOps implica una colaboración más estrecha y la responsabilidad compartida entre todo
el equipo (disminuir o derribar silos), a través de la integración continua (CI, Continuous
integration) durante el desarrollo (CD, Continuous Delivery/Deployment) durante la entrega y la
operación del producto.
DevOps también implica cambiar el paradigma de prueba manuales por automatizadas. Las
pruebas manuales implican más actividad humana, son más propensas a errores y requieren más
tiempo. Las pruebas en DevOps deben ser automatizadas para permitir la entrega continua y más
rápida de software. Obviamente, requiere un cambio en el perfil del probador tradicional.
La representación gráfica de DevOps, en
forma de bucle, simboliza la necesidad de
colaboración constante y mejora iterativa
mediante lecciones aprendidas, a lo largo de
todo el ciclo de vida. Por ejemplo, un
aprendizaje es el surgimiento de DevTestOps,
que le da énfasis a la calidad preventiva del
software, continua y permanentemente, como
se aprecia en la gráfica.
DevTestOps refuerza la necesidad de un
cambio de perfil en el probador de software. Figura 1. Ciclo
DevTestOps.
AUTOMATIZACIÓN DE PRUEBAS.
DevTestOps establece una necesidad que acelera la tendencia cada vez más extendida en el
ámbito del desarrollo de software de automatizar las pruebas, para aprovechar los beneficios de la
gestión y reúso del código, disminuir los costos del proceso y mejorar la velocidad de entrega del
producto. Hay que insistir, DevTestOps también acelera la necesidad de migrar de probadores
manuales a probadores con capacidad para automatizar. Y esto, implica una curva de aprendizaje,
tiempo y costos.
Con el surgimiento de DevOps, la pirámide de pruebas, introducida por Mike Cohn en 2009,
queda encapsulada dentro del ciclo; unitarias e integración en la fase “code” y de componentes,
integración, de interfase gráfica y de aceptación, en la fase “test”. Aunque clásica, la pirámide sirve
para entender que las pruebas de capa media y alta son lentas, costosas y representan una
oportunidad excepcional para capturar valor de la automatización. Maximizar la automatización
de estas pruebas, disminuye el costo total del desarrollo, mejora aún más la velocidad del proceso
y permite la integración del código en un pipeline.
sequal.co sbot.co
Testing as Code.
Para automatizar pruebas, es común usar lenguajes de programación, Frameworks o
herramientas, como Phyton, Java, C#, Selenium, etc. (“código”); sin embargo, la cantidad de
conocimiento que requiere un Tester sobre estos lenguajes, Frameworks o herramientas es muy
alto, para lograr que las automatizaciones sean efectivas, costo-eficientes y mantenibles. Esta
especialización contribuye a elevar el costo de las pruebas automatizadas.
Una alternativa para la automatización de pruebas, son las herramientas del tipo “Low-
Code/No-Code”, que, además de permitir que Testers con un perfil técnico un poco menos
especializado, construyan automatizaciones con efectividad y a menor costo, mejoran la velocidad
de su trabajo, si se compara con “código puro”. La disminución en la exigencia del perfil se logra
porque estas herramientas encapsulan, a través de software, parte del conocimiento necesario
para automatizar. A manera de ejemplo, un software contable logra encapsular, mediante código,
parte del conocimiento necesario para realizar asientos contables y mejorar la velocidad del
trabajo de los contadores.
De manera similar al ejemplo del software contable, las herramientas de automatización de
pruebas del tipo “Low-Code/No-Code”, encapsulan mediante código parte del conocimiento que
necesita un Tester para diseñar y ejecutar pruebas automatizadas, con atributos de rapidez,
efectividad, costo-eficiencia, reuso y mantenibilidad.
En el mercado existen varias herramientas “Low-Code/No-Code”, que en comparación con
las automatizaciones basadas en “código”, logran ahorros superiores al 30% en el tiempo
necesario para automatizar. Y muy superiores al 50% si se comparan con las pruebas manuales.
Una de ellas es SBOT©, con la cual se pueden automatizar diferentes tipos de pruebas.
En la pirámide de pruebas de Cohn, es
posible usar las herramientas de automatización
de pruebas del tipo “Low-Code/No-Code” en todas
las capas o niveles.
Por ser más lentas y costosas, existe un gran
potencial de capturar valor y lograr ahorros
importantes en tiempo y dinero, si se automatizan
las pruebas de capa media y superior de dicha
pirámide.
SEQUAL utiliza SBOT© para automatizar las
pruebas de componentes, integración, UI, y
aceptación. La gráfica muestra el punto en el ciclo
Figura 2. Pirámide de Cohn, en un ciclo DevOps. DevOps, donde se ejecutan dichas pruebas.
Las herramientas “Low-Code/No-Code” son una alternativa para resolver el problema de la
migración de probadores manuales a aprobadores con capacidad de automatización; si bien el
paso no es inmediato, al menos disminuye un poco la curva de aprendizaje y los costos asociados.
PRUEBAS BASADAS EN RIESGOS.
El estándar ISO 31000, considera los riesgos como elementos generadores de valor.
sequal.co sbot.co
Testing as Code.
El estándar IEEE 1012 de Verificación y Validación de sistemas, software y hardware,
establece que las pruebas de software estáticas y dinámicas son una técnica para hacer
Verificación y Validación. Otros ejemplos de técnicas, dentro del mismo estándar, son las
Revisiones e inspecciones y la Simulación y análisis de riesgo.
Y la norma ISO/IEC 25010, proporciona una guía para evaluar la calidad de un software a
partir de sus propiedades sistémicas, las cuales agrupa en nueve características, Funcionalidad,
Desempeño, Compatibilidad, Interacción, Fiabilidad, Seguridad, Mantenibilidad, Flexibilidad y
Protección.
Las propiedades sistémicas descritas en ISO/IEC 25010, junto al contexto del negocio, son
claves para definir los requisitos funcionales, la arquitectura de la solución y también, por
supuesto, fundamentales para identificar y priorizar los riesgos del producto software. Visto así, la
norma ISO/IEC 25010 se convierte en una herramienta poderosa para dirigir el esfuerzo y el
presupuesto de la gestión de los riesgos durante el desarrollo.
Ahora, las pruebas de software, estáticas y dinámicas, estándar IEEE 1012, son un
mecanismo para mitigar los riesgos durante el proceso de desarrollo del software; es decir, los
riesgos identificados a partir de los atributos del sistema, ISO/IEC 25010, son drivers para planear,
priorizar, diseñar y ejecutar los casos de prueba manuales o automatizados. A cada riesgo se
asocia una probabilidad de ocurrencia y nivel de impacto en el proyecto y en el producto; con esta
información, se construye una matriz de riesgos para priorizar su tratamiento y gestionar las
pruebas.
En conclusión, a partir de los atributos sistémicos, ISO/IEC 25010, es posible construir una
estrategia de pruebas, IEEE 1012, basada en riesgos, ISO 31000, que optimice la calidad del
producto, su velocidad de entrega y el presupuesto del proyecto.
Retomando la necesidad de un cambio de perfil en los probadores, de manuales a
automatizadores, las pruebas basadas en riesgos hacen necesario que la curva de aprendizaje
incluya el entendimiento de los atributos sistémicos, contenidos en ISO/IEC 25010, Funcionalidad,
Desempeño, Compatibilidad, Interacción, Fiabilidad, Seguridad, Mantenibilidad, Flexibilidad y
Protección, puesto que ellos juegan un papel fundamental al momento de definir y diseñar los
casos de prueba.
TESTING AS CODE DE SEQUAL.
En el ciclo DevOps, la sección DEV, agrupa las actividades de integración continua y es
donde se concentran las actividades de prueba continua; es decir, estrategia shift left. En esta
sección también se concentra el trabajo de la primera versión de Testing as Code de SEQUAL.
Testing as Code de SEQUAL, es un método que logra aumentar la confiabilidad del software,
sin deteriorar su velocidad de entrega o el time to market de la solución. Además, se convierte en
una excelente hoja de ruta, para que un probador manual haga el transito a un automatizador de
pruebas.
Para mejorar la confiabilidad del software, Testing as Code hace uso del concepto “calidad
preventiva” basada en riesgos, de manera continua a través de todo el ciclo DevTestOps, con
sequal.co sbot.co
Testing as Code.
pruebas estáticas y dinámicas. Es decir, Testing continuo y proactivo, no solo del software, sino de
los productos de trabajo de alta prioridad o impacto, de la matriz de riesgos.
Testing as Code evita deteriorar la velocidad de entrega o el time to market de la solución,
con el uso de SBOT©. SBOT© es una herramienta “Low-Code” que facilita y acelera el proceso de
automatización de las pruebas y se integra con pipelines para ejecutarlas de manera desatendida,
desacoplando la intervención humana y disminuyendo aún más el tiempo necesario para su
ejecución.
Mediante las acciones anteriores, Testing as Code logra aumentar el esfuerzo, rigurosidad,
intensidad y tiempo dedicado a las pruebas, mientras reduce el tiempo necesario para la
automatización y ejecución de estas. Por consiguiente, el tiempo necesario para ampliar la
cobertura, variedad y calidad de las pruebas estáticas y dinámicas, que se traduce en una mayor
calidad en el software, proviene del ahorro logrado con la automatización “Low-Code”, que
acelera el proceso, permite el reuso de código en regresiones, mejora la relación entre pruebas
manuales v.s. automatizadas y desacopla las personas del proceso, a través de pipelines.
En resumen, Testing as Code aumenta la eficiencia de todo el proceso de desarrollo al
integrar análisis de riesgos, Testing estático y dinámico continuo, alta automatización y el
desacople de las personas -pipeline driven-, para entregar un software de mejor calidad, sin
afectar su tiempo de entrega; de hecho, lo mejora.
Los siguientes son los tres elementos claves de Testing as Code de SEQUAL.
1. Testing altamente automatizado, con herramientas Low-Code, que disminuye la intervención
humana en los procesos y se traduce en un aumento en la velocidad de los resultados, una
reducción de errores, menores costos y una mayor capacidad para implementar cambios
evolutivos y mejoras.
2. Testing as Code se incrusta en el proceso de desarrollo a través de pipelines, lo cual garantiza
que se ejecute de manera permanente, continua y sin depender de personas.
3. El tercer elemento clave de Testing as Code de SEQUAL, es el diseño y priorización de los
casos de prueba (estáticos y dinámicos), con base en los riesgos, asociados a los atributos de
sistema (ISO/IEC 25010).
La siguiente figura muestra donde se incluye los elementos de Testing as Code, en un ciclo
DevOps.
sequal.co sbot.co
Testing as Code.
Figura 3. Testing as Code, de SEQUAL, ver 1.0 en un clico DevOps
Testing as Code de SEQUAL, se puede sintetizar de la siguiente manera.
Testing as Code = Low Code Automation + Testing continuo en Pipeline + Calidad basada en
riesgos.
Testing as Code tiene un impacto positivo en los KPI usados para decidir el nivel de
automatización de las pruebas de un proyecto: ROI, Cobertura, Calidad, Costos y Time to Market.
SDET, SBOT© & TESTING AS CODE.
El Software Development Engineer in Test, SDET, es un rol crucial en la ingeniería de
software que combina el desarrollo de software con las pruebas, para garantizar la calidad de los
productos de software. Los SDET deben tener conocimientos sólidos tanto en metodologías de
pruebas, como en lenguajes de programación, Fframeworks y herramientas de automatización,
para múltiples plataformas: web, mobile, escritorio, apis, colas, bases de datos y sistemas telnet
legacy (cobol y rpg), entre otros.
Las sólidas competencias técnicas que debe tener un SDTE, aumentan la tensiones y
desafíos financieros que enfrentan las empresas al momento de considerar o presupuestar las
pruebas automatizadas.
Para disminuir un poco la exigencia técnica, y por lo tanto el tiempo y la inversión
económica que tienen que hacer los Testers y los SDTE, para adquirir y actualizar conocimientos
especializados, SEQUAL desarrolló SBOT©, una herramienta Low-Code, robusta, fácil de aprender y
usar que encapsula parte del conocimiento requerido para automatizar y por lo tanto, acelera el
tránsito del Tester manual hacia a la automatización. SBOT © permite, dentro de la misma
herramienta, automatizar las pruebas de múltiples plataformas: web, api, mobile, colas, bd y
sistemas legacy (cobol y rpg), lo que evita crear interfases entre diferentes herramientas y
simplifica enormemente las pruebas End to End multiambiente. Además, se integra a un pipeline,
lo que permite aumentar el nivel de automatización de las pruebas.
Con Testing as Code y SBOT ©, las empresas y los proyectos cuentan ahora con una
interesante alternativa para optimizar los indicadores claves de la automatización; reducir el
presupuesto y capturar el valor prometido de mayor calidad en el software, sin afectar la velocidad
en el proceso de entrega; es decir, un aumento significativo del ROI.
Además, Testing as Code de SEQUAL y SBOT ©, les permite a los probadores manuales
adquirir nuevas habilidades y competencias para convertirse en un automatizador de pruebas y
permanecer en el mercado laboral, sin la gran exigencia, en tiempo y dinero, que implica el
aprendizaje de una amplia gama de lenguajes de programación, Fframeworks y herramientas de
automatización, para múltiples plataformas
Los profesionales de calidad de SEQUAL, antes probadores manuales, ahora aplican en los
proyectos de aseguramiento de calidad asignados, el método Testing as Code incluyendo a SBOT ©
como herramienta de automatización; en todos ellos, se evidencia el cumplimiento satisfactorio
sequal.co sbot.co
Testing as Code.
de los propósitos del método, un impacto positivo en los proyectos y un concepto favorable del
cliente hacia el trabajo de SEQUAL, sus profesionales y la metodología empleada. Aunque fue
necesaria una curva de aprendizaje del método y SBOT ©, esta fue significativamente menor que si
el enfoque hubiese sido el tradicional; es decir, aprender los lenguajes de programación,
Frameworks y herramientas de automatización comúnmente usados.
PROXIMOS PASOS.
El trabajo futuro sobre Testing as Code es amplio. Una línea para su evolución es la
integración con métricas de rendimiento como las métricas DORA, las cuales permiten evaluar la
eficiencia y efectividad de los equipos en la entrega de software. Con Testing as Code se podría
automatizar la generación de algunos datos, como el porcentaje de pruebas exitosas o el tiempo
requerido para validar cambios en los pipelines, que proporcionaría información valiosa para
identificar áreas de mejora continua.
Otra línea de estudio puede ser la integración con herramientas de observabilidad,
diseñadas para analizar en tiempo real el comportamiento del software en producción. Se podría
complementar la capacidad de estas herramientas para capturar datos detallados, con el enfoque
estructurado de Testing as Code para priorizar las pruebas según los riesgos asociados a los
atributos sistémicos, definidos en la norma ISO/IEC 25010; de esta forma, sería posible mejorar la
interpretación de las métricas DORA, para establecer acciones más informadas y rápidas, que
contribuyan a la calidad preventiva.
Testing as Code tiene elementos importantes que mejoran el proceso de pruebas y la
calidad del software. Combinar SBOT©, con métricas de desempeño y técnicas de observabilidad
podría ser un paso adicional para aumentar la eficiencia del proceso de desarrollo, mediante un
aumento de la calidad, sin afectar el tiempo de entrega de la solución.
AGRADECIMIENTOS Y CONTACTO.
SEQUAL agradece especialmente a Diana Taborda, Juan Daza y Esteban Diez, por su
motivación, apoyo y colaboración constantes en el desarrollo de Testing as Code y SBOT ©.
SEQUAL también hace un reconocimiento especial a sus Profesionales de Calidad, quienes,
con su esfuerzo, dedicación, constancia y resiliencia, dedicaron parte de su tiempo a estudiar,
comprender y aplicar Testing as Code y SBOT ©. Sin su compromiso, este trabajo no hubiera sido
posible.
Si quiere conocer más sobre Testing as Code, SBOT ©, pruebas automatizadas, servicios de
Testing o cómo pasar de Tester manual a automatizador de pruebas y no fallar en el intento, por
favor póngase en contacto con sequal.co, sbot.co o los autores del artículo.
SOBRE LOS AUTORES.
Miguel Buitrago.
Miguel y su esposa son padres orgullosos de dos queridas hijas, que reconocen y valoran el aporte
fundamental de sus enseñanzas y ejemplos en sus vidas, para ser hoy dos talentosas
profesionales.
sequal.co sbot.co
Testing as Code.
Miguel es un empresario, ingeniero de sistemas, especialista en calidad y alta gerencia, Chief
Vision Officer de SEQUAL y NUMADA.
Es un ejecutivo empeñado en diseñar soluciones efectivas, fundamentadas y prácticas. Ha sido
asesor, consultor y formador en ingeniería de calidad y pruebas de software, en empresas y
Universidades.
Su espíritu creativo, emprendedor y resiliente, le han ayudado a contar con una red de contactos
profesionales y de colaboración interinstitucionales, para el trabajo conjunto.
Sueña, con hacer un aporte valioso para la industria de software de su país.
Juan Carlos Marín.
Juan Carlos es un empresario, líder de la oficina de operaciones de SEQUAL, profesor universitario,
lector, escritor y narrador de cuentos. Ingeniero de sistemas, estudiante continuo de esta
disciplina y otras relacionadas.
Desde hace 20 años en SEQUAL, se ha dedicado a entregar servicios de consultoría, formación y
desarrollo de proyectos de aseguramiento de la calidad y pruebas de software, en diferentes roles
y para variados contextos empresariales. Le hace feliz ayudar a las personas a mejorar sus
condiciones de vida en el mundo a través del valor que les generan las soluciones informáticas y
contribuir con el desarrollo personal y profesional de las personas con las que se relaciona.
Su propósito superior es la libertad.
[email protected] [email protected]
SOBRE SEQUAL.
Somos una empresa que asegura la calidad del software, sin descuidar sus plazos de entrega
(Time to Market) y la relación costo-beneficio para nuestros clientes.
SEQUAL innova en la calidad del software al desarrollar y usar, en su trabajo diario, un
método, Testing as Code y una herramienta, SBOT©, para cumplir con su misión. Testing as Code,
es un Framework integral que combina en un mismo proceso, Calidad Preventiva Basada en
Riesgos, Alta Automatización “Low Code” con SBOT© y Testing Continuo integrado a Pipelines. Con
este enfoque, se logran optimizar los tiempos del proceso de pruebas y aumentar su cobertura,
para entregar un software más robusto y confiable, que cumple con los objetivos del cliente sin
comprometer los plazos de entrega.
Somos conscientes que el software es una herramienta esencial en la vida de las personas;
cuando funciona bien, simplifica tareas, facilita la interacción y en general mejora el trabajo y la
experiencia diaria; por el contrario, cuando funciona mal, genera incomodidad, frustración e
sequal.co sbot.co
Testing as Code.
incluso graves inconvenientes. Por eso, en SEQUAL, nos motiva y satisface hacer que el software
funcione correctamente. Para nosotros, la calidad no es solo un objetivo, es nuestra razón de ser.
SEQUAL,
Testing as Code.
sequal.co sbot.co