Uno... Dos... Prueba

Conoce cómo probar en F# con Expecto y pruebas de propiedades (PBT). Analizamos Hedgehog vs FsCheck con shrinking integrado, generadores y ejemplos en FunPark.

13 sept 2025 • 5 min de lectura • Equip Q2BSTUDIO

Inteligencia-Artificial-

En nuestra anterior entrega modelamos el dominio de FunPark, una pequeña aplicación de gestión de parques temáticos, y ahora toca hablar de pruebas. En el ecosistema F sharp existen varias opciones para testing, desde NUnit y xUnit hasta librerías orientadas a F sharp como FsUnit. Yo opté por Expecto, uno de los frameworks de pruebas más apreciados por la comunidad F sharp. Expecto no es solo una librería de aserciones, es un framework completo con organizador de pruebas, runner y su propia biblioteca de aserciones, y además cuenta con buena documentación y ejemplos prácticos.

Expecto es un framework basado en pruebas por ejemplo. Esto significa que ejecutamos funciones con entradas concretas y verificamos que el resultado coincida con lo esperado. Ese enfoque es familiar para la mayoría, pero existe otra dimensión de pruebas que profundiza más: las pruebas basadas en propiedades o property based testing PBT. En lugar de probar casos concretos, definimos invariantes que deben cumplirse para cualquier entrada válida y dejamos que el framework genere muchas entradas aleatorias para verificar esas propiedades.

En F sharp hay dos librerías consolidadas para PBT. FsCheck es el heredero directo de QuickCheck y es veterano, sólido y muy usado. Por otro lado Hedgehog es una alternativa más moderna que destaca por incluir shrinking integrado. Para un proyecto de aprendizaje decidí experimentar con Hedgehog. La razón principal fue su shrinking integral que simplifica mucho la tarea cuando aparece un contraejemplo que viola la propiedad.

Para entender el valor del shrinking imaginemos una función defectuosa que espera cadenas que contengan el carácter a. Si un PBT devuelve como contraejemplo una cadena larga y sin sentido como tIg87%^K??FHkj?f la información puede ser poco útil. El shrinking es el proceso que reduce progresivamente ese contraejemplo hasta una forma mínima y fácilmente interpretable, por ejemplo la cadena vacía o una cadena corta que revele la causa real del error. Hedgehog realiza este proceso incluso sobre tipos personalizados si sus componentes son tipos primitivos o tienen estrategias de shrinking bien definidas.

Un ejemplo clásico es definir un tipo MyVersion con tres enteros mayor menor parche y una función que supuestamente invierte el orden de los campos. FsCheck sin una estrategia de shrinking para tipos personalizados puede devolver un ejemplo complejo y sin reducir al valor mínimo. Hedgehog en cambio reduce el contraejemplo hasta MyVersion 0 0 1 lo que facilita entender la falla. Esa capacidad se conoce como shrinking integral y evita tener que escribir shrinkers manuales para tipos compuestos en muchos casos.

Dicho esto ambos ecosistemas permiten definir generadores y shrinkers personalizados cuando la lógica de negocio lo requiere. En mis pruebas con FunPark utilicé Hedgehog pero combiné generadores personalizados construidos sobre la librería Bogus para producir nombres plausibles para Patron y Ride. Bogus es excelente para crear datos realistas pero no incorpora shrinking por diseño, por eso envolví llamadas a Bogus dentro de generadores de Hedgehog que preservan la capacidad de reducir los contraejemplos. También añadí un shrinker específico para nombres que respeta reglas de negocio y mantuve pequeños detalles como evitar etiquetas duplicadas mediante reflexión en F sharp.

¿Merece la pena usar una librería con shrinking integral The respuesta depende del contexto del proyecto. FsCheck ofrece muchas utilidades avanzadas como logging integral y control fino de distribuciones de entrada y sigue siendo una opción madura. Hedgehog aporta una ergonomía en la reducción de contraejemplos que acelera mucho la depuración de errores en tipos complejos. En proyectos reales hay que ponderar cobertura de documentación facilidad de uso e integración continua y escoger lo que mejor encaje con el equipo.

En Q2BSTUDIO nos apasiona aplicar buenas prácticas de desarrollo y testing al construir aplicaciones a medida y software a medida. Ofrecemos servicios integrales que abarcan desarrollo de aplicaciones robustas pruebas automatizadas integración continua y despliegue en la nube. Si necesitas crear soluciones personalizadas con garantía de calidad podemos ayudarte a diseñar estrategias de pruebas unitarias de integración y property based testing que reduzcan riesgos y aceleren el tiempo de entrega. Conoce más sobre nuestro enfoque de desarrollo en desarrollo de aplicaciones y software a medida.

Además Q2BSTUDIO es especialista en inteligencia artificial ia para empresas y agentes IA, servicios cloud aws y azure y ciberseguridad. Esto nos permite ofrecer soluciones completas donde la calidad del software va de la mano con la seguridad y la escalabilidad en la nube. Integramos capacidades de servicios inteligencia de negocio y power bi para convertir datos en decisiones y entregamos proyectos que incluyen desde modelos de machine learning hasta pipelines seguros y monitorizados. Si tu proyecto requiere una estrategia de inteligencia artificial a medida visita nuestra página sobre inteligencia artificial para conocer cómo podemos colaborar soluciones de inteligencia artificial.

En resumen testing framework como Expecto y herramientas de PBT como FsCheck y Hedgehog son aliados poderosos para garantizar calidad en proyectos funcionales y no funcionales. El shrinking integral facilita identificar fallos reales y los generadores personalizados permiten ajustar las pruebas a reglas de negocio concretas. En Q2BSTUDIO combinamos estas técnicas con buenas prácticas de desarrollo DevOps y ciberseguridad para construir aplicaciones a medida seguras y escalables. Si quieres optimizar la calidad de tus aplicaciones a medida o explorar cómo la ia para empresas puede transformar tu negocio contacta con nosotros para una consultoría técnica enfocada en resultados.

Esperamos que estos conceptos te ayuden a decidir qué herramientas usar y cómo incorporarlas en tu ciclo de desarrollo. Ponemos a tu disposición nuestra experiencia en software a medida inteligencia artificial ciberseguridad servicios cloud aws y azure y servicios inteligencia de negocio para que tu próximo proyecto sea exitoso y mantenible.

UNA PAUSA?

Juga una estona abans de marxar

ELS NOSTRES SERVEIS

Com et podem ajudar

Intel·ligència artificial

Agents d'IA, chatbots i assistents intel·ligents que automatitzen tasques i atenen els teus clients 24/7 per millorar l'eficiència del teu negoci.

Més info

Desenvolupament de programari

Aplicacions web, mòbils i d'escriptori, intranets, e-commerce, SaaS i plataformes de gestió dissenyades per a les necessitats concretes de la teva empresa.

Més info

Serveis cloud

Migració, infraestructura, hosting gestionat, alta disponibilitat i seguretat en Microsoft Azure i Amazon Web Services perquè el teu negoci escali sense límits.

Més info

Ciberseguretat i pentesting

Auditories de seguretat, test d'intrusió (pentesting) i protecció d'aplicacions, dades i infraestructura on-premise i cloud, amb hacking ètic i compliment normatiu.

Més info

Business Intelligence

Quadres de comandament i anàlisi de dades amb Power BI: integrem les teves fonts, dissenyem dashboards i KPIs i convertim les teves dades en decisions.

Més info

Automatització de processos

Automatitzem tasques repetitives i connectem les teves aplicacions amb n8n, Power Automate, Make i RPA, eliminant treball manual i augmentant la productivitat.

Més info

Formació per a empreses

Formem els teus equips en tecnologia amb criteri: desenvolupament web, bases de dades, Git, bones pràctiques i seguretat, automatització amb n8n, intel·ligència artificial per a empreses i creació de solucions d'IA amb Azure AI Foundry.

Més info

Auditoria de codi

Auditem el codi que creguis tu, el teu equip o una IA: et diem què està bé i què millorar, el securitzem i el deixem llest per a producció, web o app.

Més info

Generació d'imatges amb IA

Creem per tu les imatges que necessita el teu negoci amb intel·ligència artificial: producte, xarxes, publicitat, il·lustració i avatars. Tu ens dius què vols i t'ho lliurem llest per fer servir.

Més info

Generació de vídeos amb IA

Creem per tu vídeos amb intel·ligència artificial: promocionals, per a xarxes, presentadors virtuals, doblatge i animacions. Ens comptes la idea i t'ho lliurem muntat i llest per publicar.

Més info

Avatars conversacionals amb IA

Creem avatars conversacionals amb IA —humans digitals amb cara i veu— que atenen els teus clients i equips amb el coneixement de la teva empresa, a la teva web, monitors interactius, WhatsApp o Teams.

Més info

Màrqueting Online i IA

Google Ads, Meta Ads, LinkedIn Ads i posicionament en motors d'IA (GEO/AEO): captem clients i fem que la teva marca aparegui on et busquen, també a ChatGPT, Gemini i Perplexity.

Més info

Tens un projecte en ment?

Explica'ns la teva visió i la convertim en una solució de programari. Sigui quin sigui l'abast, fem realitat la teva idea.

Live Chat