Entradas

Mostrando las entradas de febrero, 2020

Temporal Databases: Auditoría de tablas con SQL Server (1)

Imagen
Desde hace un tiempo he estado mirando con cariño la funcionalidad de manejo de tiempo en tablas de las base de datos. Uno de los escenarios mas fácil de implementar es el de Auditoría de tablas. Suponiendo que tenemos una KB con una aplicación que usa SQL Server 2016 o superior, y tiene una tabla Productos PRODUCTOS *ProductoID  ProductoNombre  ProductoFamila  UsuarioQueModifico  y quiero tener una auditoria de como cambia dicha tabla a lo largo del tiempo. Una forma fácil de lograr esto, es pasar la tabla a una tabla temporal de SQL Server  . Lo que se puede hacer es ejecutar: Lo que hice fue un procedure AgregarTemporalidad que recibe un parámetro &TableName y ejecuta: &Sentence = format("ALTER TABLE %1 ADD %1_ValidFrom datetime2 GENERATED ALWAYS AS ROW START HIDDEN constraint %1_DF_ValidFrom DEFAULT DATEADD(second, -1, SYSUTCDATETIME()), %1_ValidTo datetime2 GENERATED ALWAYS AS ROW END   HIDDEN constraint %1_DF_ValidTo DEFAULT '9999.12.31 23:

TDD y GeneXus

Imagen
TDD (Test Driven Development) es un proceso de desarrollo que se basa en repetir pasos muy cortitos y sencillos, traduciendo los nuevos requerimientos en casos de pruebas y luego modificar el código de la aplicación para que cumpla con esos casos de pruebas (y por lo tanto con los nuevos requerimientos).  Luego que tenemos el código que pasa todas las pruebas, se realiza el refactoring para evitar codigo repetido u optimizar lo que sea necesario, pero manteniendo todas los casos de prueba.  El ciclo de ejecutar todas las pruebas de la KB, debería ser rapido para poder ser productivo, pues esto hay que hacer muchisimas veces en el dia. Con GeneXus 16 se incorpora el objetos Unit Test y una forma fácil de poder ejecutar todos las pruebas de una KB, con lo cual se habilita el desarrollo basado en Test.   Ventajas El usar pequeños pasos en el desarrollo, lleva a que es mas  fácil detectar los errores introducidos en la programación que con otros procesos de desarrollo.