Next generation unit testing | Builds deterministas


Details
Agenda:
-
18:30h: Abrimos puertas, no llegues tarde
-
19:00h: C++ Madrid, conferencias, ofertas de trabajo,...
-
19:20h - 19:40h: (Carlos Zoido) Introducción a los builds deterministas
En los últimos años ha surgido un interés un proceso de build determinista, es decir, llegar al mismo binario
compilando el mismo código fuente en el mismo entorno de compilación.
Esto, que en apariencia es algo esperado, no ocurre de forma natural y
resulta de importancia crucial en entornos de seguridad critica y en
aquellos en los que se pretende tener una trazabilidad completa de los
binarios generados. En esta charla explicaremos qué tipo de factores
son los que influyen en el determinismo a la hora de generar binarios
en C/C++ y qué soluciones se pueden poner a estos.
- 19:40h - 20:20h: (Manu Sánchez) Next-generation unit testing using static reflection
Los tests unitarios son una práctica ampliamente aceptada en la industria del desarrollo de software que se ha demostrado que ayuda a reducir bugs y acelerar el ciclo de desarrollo y los pases a producción.
A pesar de ello el lenguaje C++ debido a ciertas limitaciones no dispone de un framework de tests unitarios suficientemente expresivo y conciso para mantener a los desarrolladores preocupados únicamente por los tests y no por el propio framework. Las soluciones actuales suelen requerir algunos artificios como macros o modificaciones en el código de producción simplemente para poder ejecutar estos tests y registrarlos.
En esta charla se introduce una prueba de concepto para desarrollar un framework de tests unitarios inspirado en el paquete `unittest` de Python. Esta librería evita los problemas descritos anteriormente utilizando reflexión estática para acceder al código y las funciones que deben ser probadas. La implementación actual se construye sobre `tinyrefl` (librería de reflexión estática basada en `libclang`), pero la misma solución sería posible con una implementación estándar que fuera parte del lenguaje C++ como la propuesta por la Reflection Technical Specification.
- 20:30h: networking (comida y bebida gracias a Montarelo Consulting).
Sobre los ponentes:
Carlos Zoido.- Ingeniero Industrial en Automática. He trabajado desarrollando proyectos en C/C++ relacionados sobre todo con visión por computador y programación gráfica. Mi tesis fue un software escrito en C++ para la calibración automática de sistemas multi-proyector usando librerías como OpenCV, OpenGL o CGAL. Actualmente trabajo en JFrog como desarrollador de Conan.io.
Manu Sánchez.- Empezó a jugar con C++ moderno durante su primer año de universidad y pronto desarrollo interés por la metaprogramación para convertirse en un "experto" de C++. En septiembre de 2014 se unió a la startup BiiCode como consultor de C++, ayudando a empaquetar librerías complejas como Boost. Desde septiembre de 2015, Manuel es desarrollador en By, una compañía especializada en sistemas de control de acceso. En enero de 2016 pasó a formar parte del comité español ISO del lenguaje C++.

Next generation unit testing | Builds deterministas