NOVACOMP

Auditoría Técnica de Librerías

Documento Confidencial

Estado de Librerías y Dependencias

Informe ejecutivo detallado sobre el estado de obsolescencia, riesgos de seguridad y ruta de remediación para los componentes críticos del ecosistema .NET.

Índice de Contenido

1. Equipo de Ingeniería 2. Entity Framework (General) Caso: Time.Web.API Caso: BNMovilEmpresarial 3. Frontend Legacy (JQuery) Caso: time-web-api-raiz Caso: Transf. Web API (Obsoleto) 4. Neodynamic WebControl Caso: Limpieza Barcode (Luis) 5. Newtonsoft.Json Caso: BNCR.Time.WebApi Caso: BNCR.InternetBankingWeb Caso: Banca Electrónica (Nuevo) Caso: SINPE TR Caso: Limpieza IB WCF (Rubén) Caso: Análisis Seguridad (Retención) Caso: IB Móvil (Newtonsoft)
6. Microsoft OWIN Caso: BN Movil Empresarial (OWIN) 7. Common Service Locator (CSL) Caso: BN-Valores (Update) Caso: Convenios PAR (Update) Caso: Transferencias DAL (Revert) Caso: Firmador WCF (Update) Caso: Cuentas WCF (Modernización) Caso: Bitácora WCF (Eliminación) Caso: Empresarial Web (Eliminación) Caso: Internet Banking (Update) Caso: BN-Servicios (Limpieza y Tests) Caso: Sinpe Movil (Análisis) Caso: BN-Vital (Complejidad CSL) Caso: Comercios WCF (Análisis) 8. QA & Testing (NUnit) Caso: Upgrade WCF Tests Caso: Implementación NUnit IB Web Caso: Migración IB WCF (Legacy) Caso: Transferencias WCF (Dual) Caso: BN-Valores (Dual) Caso: Migración BN-Custodio Caso: BN-Servicios (MSTest a NUnit) Caso: Migración Puntos Solidarios Caso: Upgrade Firmador Tests Caso: Banca Electrónica Caso: Cuentas WCF Caso: Tarjetas WCF Caso: Seguridad WCF Caso: BN-Páguese (NUnit) Caso: Sinpe Móvil (Diagnóstico) Caso: BN-Vital (NUnit) Caso: Transf. Web API (NUnit) Caso: IB Móvil Empresarial (NUnit) 9. Gestión de Documentos Caso: Remoción iTextSharp Caso: Migración QuestPDF 10. Protocolos de Datos (OData) 11. Investigaciones Técnicas 12. Mejoras a Implementar 13. Métricas de Ejecución 14. Siguientes Proyectos a Analizar

Equipo de Ingeniería y Análisis

LC

Ing. Luis Manuel Corea Cabrera

Líder de Análisis Técnico

RH

Ing. Rubén Hernández Céspedes

JM

Ing. Joshua Stif Murillo Rodríguez

AD

Ing. Arnold Delgado Trejos

AU

Ing. Aldo Maynor Ulate Shedden

Entity Framework (General)

Análisis y Opciones

  • Estado Actual Fragmentación de versiones (5.0.0 y 6.1.3). Sistemas legacy sobre .NET Framework.
  • Opción 1: Migración a .NET Core Alto esfuerzo, riesgo elevado a corto plazo.
  • Opción 2: Upgrade a EF 6.5 Compatible con .NET Framework 4.6.2+. Cambios mínimos.

Recomendación y Acción

  • Recomendación Técnica Optar por Opción 2 (EF 6.5) para estandarizar sin detener operación.
  • Roadmap Planificar modernización a .NET 8 + EF Core post-estabilización.

Caso de Estudio: Proyecto Time Web API - Limpieza y Dependencia EF

21 Oct 2025 - Responsable: Ing. Luis Manuel Corea C.

Proyecto Time Web API - Limpieza de Configuración y Dependencia de EF

Limpieza y Diagnóstico

  • Acción Eliminación de bloques legacy en web.config: <membership>, <roleManager>, <profile>.
  • Validación Ausencia confirmada de AccountController o lógica de autenticación antigua.

Análisis de Dependencia

  • Problema EntityFramework 5.0.0 instalado pero no usado directamente en código.
  • Causa Dependencia dura de Microsoft.AspNet.Providers.Core v1.2.0.

Conclusión

  • Decisión Mantener EF 5.0.0 en modo pasivo para evitar excepciones en runtime.
  • Estado Limpieza exitosa de configuración visual.

Caso de Estudio: BNMovilEmpresarial

Auditoría de Actualización EF y Barcode (22 Sep 2025) - Responsable: Ing. Luis Manuel Corea

BNMovil Empresarial - EF y Barcode - Overview

Objetivo

  • Propósito Planificar actualización de EF y BarcodeProfessional.

Hallazgos

  • Resultado No se encontró referencia activa en rama R-Inc. Fueron eliminadas previamente.

Conclusión

  • Resolución Plan descartado por no ser aplicable.

Frontend Legacy (JQuery)

Diagnóstico de Riesgo

  • Dispersión Versiones desde 1.4.2 hasta 3.7.1.
  • Riesgo Vulnerabilidades XSS conocidas en versiones antiguas.

Plan de Saneamiento

  • Upgrade Migración a jQuery 3.7.1.
  • Política Prohibir uso en nuevos desarrollos.

Caso de Estudio: time-web-api-raiz (Investigación JQuery)

Responsable: Ing. Aldo Maynor Ulate S.

Informe Actualización Jquery y JQuery.UI.Combined en BN Móvil - Overview

Estrategia 1: Actualización

  • Upgrade jQuery a 3.7.1, UI a 1.14.1.

Estrategia 2: Eliminación

  • Eliminación total de jQuery, KnockoutJS y validaciones legacy.

Validación QA

  • Ambas estrategias viables y validadas con Unit Testing.

Caso de Estudio: Auditoría JQuery (Transferencias Web API)

Declaración de Obsolescencia (Sprint 26.02) - Responsable: Ing. Aldo Maynor Ulate Shedden

jQuery y jQuery.UI - Informe de Actualización - Overview

Objetivo y Hallazgo

  • Objetivo Mitigar vulnerabilidad en librería JQuery obsoleta.
  • Hallazgo Librería mal configurada y no funcional en ambiente DEV.

Acción Inmediata

  • Update Se actualizó a v3.7.1 para sanear alertas de seguridad en el repositorio.
  • Estado El proyecto compila pero su funcionalidad es nula.

Resolución Final

  • Obsolescencia El servicio fue reemplazado por Transferencias WCF.
  • Decisión Marcar repositorio como obsoleto y proceder a su eliminación.

Neodynamic WebControl

Obsolescencia

  • Tecnología Web Forms obsoleta (+11 años) sin soporte.

Estrategia

  • Reemplazo obligatorio. Evaluar costo de licencia o refactorización.

Caso de Estudio: Eliminación Neodynamic (Barcode)

Limpieza de Referencias sin Uso - Responsable: Ing. Luis Manuel Corea

IB Sitio - Eliminación BarcodeProfessional - Overview

Diagnóstico

  • Hallazgo Referencia a Neodynamic.WebControls.BarcodeProfessional detectada en solución pero sin uso en código fuente.

Ejecución de Limpieza

  • Eliminación Se removieron referencias de web.config, .csproj y carpetas packages/.
  • Física Borrado de DLLs en directorios bin/ y obj/.

Resultado

  • Compilación Exitosa (Clean + Rebuild).
  • Impacto Reducción de dependencias innecesarias y peso del proyecto.

Newtonsoft.Json

Conflicto de Dependencias

  • Coexistencia con System.Text.Json genera riesgo de "Dll Hell".

Estrategia

  • Estandarizar a 13.0.3 en legacy. Usar nativo en nuevos.

Caso de Estudio: BNCR.Time.WebApi (Actualización)

Responsable: Ing. Rubén Hernández Céspedes

Newtonsoft - Overview

BNCR.Time.WebApi

  • Hallazgo Versión 4.5.11 detectada. Uso activo en HelpPageSampleGenerator.cs.
  • Acción Actualización directa a 13.0.3.

BNCR.Time.WebApi.Test

  • Hallazgo Versión 4.5.11 detectada por dependencias internas.
  • Acción Actualización a 13.0.3 para paridad.

Validación

  • ✅ Limpieza correcta. ✅ Compilación exitosa. ✅ Tests aprobados.

Caso de Estudio: Limpieza y Análisis Newtonsoft (Internet Banking Web)

Depuración de Usings y Validación de Dependencias (24 Ene 2026) - Responsable: Ing. Rubén Hernández Céspedes

INFORME DE LIBRERÍA EN SITIO - Overview

Limpieza Selectiva

  • Acción Eliminación de using Newtonsoft.Json; sin uso en 6 archivos clave como InactivarSubcuenta.cs y PagoReciboTPage.cs.

Dependencia Obligatoria

  • Retención El paquete NuGet NO se eliminó.
  • Motivo Requerido por BNCR.GeneradorPDF, BNCR.RedisNudata.BL y SignalR.

Estado Final

  • Versión Se mantiene estable en 13.0.3.
  • Código Limpio de referencias innecesarias, manteniendo la infraestructura operativa.

Caso de Estudio: Banca Electrónica (Actualización Newtonsoft)

Upgrade de v10.0.2 a v13.0.3 - Responsable: Ing. Rubén Hernández Céspedes

Newtonsoft.Json - Overview

Hallazgos

  • Proyectos BancaElectronica.API y Servicios.BL.
  • Versión Origen 10.0.2 (Desactualizada).
  • Uso Clase Utilidades.cs para serialización JSON.

Actualización

  • Acción Upgrade vía NuGet a la versión 13.0.3.
  • Código Validación de métodos JsonConvert.SerializeObject.

Validación

  • Pruebas Ejecución exitosa de tests antes y después del cambio.
  • Compilación Correcta, sin conflictos de dependencias.

Caso de Estudio: BNCR.SINPETR.BL (Validación)

Verificación de Versión y Uso (12 Dic 2025) - Responsable: Ing. Rubén Hernández Céspedes

Newtonsoft - Overview

Estado Actual

  • Versión 13.0.3 (Ya actualizada).
  • Estado Cumple con el estándar de seguridad. No requiere cambios.

Uso Detectado

  • Archivos ConectorHttpClient.cs, TransferenciaRegionalBL.cs, TransferenciasPEXBL.cs, Utiles.cs.

Validación

  • QA El código hace uso correcto de la librería para serialización/deserialización.
  • Acción Se marca como revisado y aprobado.

Caso de Estudio: Limpieza Newtonsoft (Internet Banking WCF)

Eliminación de Referencias sin Uso (30 Dic 2025) - Responsable: Ing. Rubén Hernández Céspedes

Newtonsoft - Overview

Diagnóstico

  • Situación Newtonsoft.Json 13.0.1 instalado en 6 proyectos (WCF, Test, Seguridad, DAL, BL, Entidades) pero sin referencias en código.

Acción Correctiva

  • Desinstalación Se removió el paquete de todos los proyectos afectados para reducir dependencias innecesarias.

Validación QA

  • Consistencia Pruebas unitarias ejecutadas antes y después: 50 pasadas, 100 fallidas (errores preexistentes no relacionados).
  • WCF Client Carga correcta del servicio.

Caso de Estudio: Análisis de Dependencias (Proyectos Seguridad)

Validación de Referencias Indirectas (12 Ene 2026) - Responsable: Ing. Rubén Hernández Céspedes

Newtonsoft - Overview

Alcance del Análisis

  • Proyectos BNCR.Seguridad.BL, .Entidades, .WCF.
  • Estado Newtonsoft.Json 13.0.3 instalado.

Dependencias Críticas

  • Hallazgo Aunque el código directo no lo use, existen dependencias de terceros:
    • BNCR.NuDataSecurity
    • BNCR.Servicios.Trace
    • Microsoft.AspNet.SignalR.Client

Decisión Técnica

  • Retención NO ELIMINAR. La librería es requerida por los paquetes de seguridad y monitoreo.
  • Versión Se mantiene en 13.0.3 por compatibilidad.

Caso de Estudio: Actualización Newtonsoft (IB Móvil)

Upgrade de v11.0.2 a v13.0.3 y Limpieza (24 Sep 2025) - Responsable: Ing. Rubén Hernández Céspedes

Newtonsoft.Json - Overview

Diagnóstico

  • Alcance BNCR.IBMovil, .API y .Test.
  • Hallazgo La API utilizaba la versión desactualizada 11.0.2 con uso directo en PrevalidarCuentasExteriorApi.cs.
  • Deuda Técnica Referencias using sin uso real en el modelo PrevalidarCuentasExtreriorModels.cs.

Ejecución Técnica

  • Actualización Upgrade a la versión 13.0.3 vía NuGet en la API.
  • Limpieza Se eliminó la referencia sin uso para evitar ruido en el código.
  • Dependencias Se verificó que otras librerías como BNCR.RedisNudata.BL requieren esta versión activa.

Validación QA

  • Serialización Correcta ejecución de JsonConvert.SerializeObject tras la actualización.
  • Estabilidad Configuración de bindingRedirect verificada en app.config. Tests ejecutados con éxito.

Microsoft OWIN

Seguridad y Auth

  • Versiones inconsistentes. Riesgo en manejo de sesiones.

Estandarización

  • Unificar a 4.2.2 y validar flujos de Login.

Caso de Estudio: Actualización OWIN (BN Móvil Empresarial)

Modernización de Seguridad y ADFS (v4.0.0 → v4.2.2) - Responsable: Ing. Joshua Stif Murillo Rodríguez

Microsoft.Owin - Overview

Alcance del Cambio

  • Librerías Microsoft.Owin.* (Host, Security, Cookies, WsFederation).
  • Impacto Actualización de v4.0.0 a v4.2.2.
  • Objetivo Beneficiarse de parches de seguridad y estabilidad en el middleware de autenticación.

Áreas Críticas

  • Federación Proceso de autenticación federada mediante ADFS (Active Directory).
  • Sesiones Generación/validación de tokens, claims, y cookies de sesión.

Pruebas Ejecutadas

  • Login/Logout Validación de login ADFS con usuarios reales y redirección en logout.
  • Seguridad Restricción de páginas protegidas, rechazo de credenciales inválidas y expiración de sesión.

Common Service Locator (CSL)

Bloqueo Legacy

  • Unity 2.x depende de CSL 1.0. Eliminarla rompe runtime.

Decisión Técnica

  • NO ELIMINAR CSL en proyectos con Unity 2.x.

Caso de Estudio: Actualización CSL 2.0.7 (BN-Valores)

Modernización Controlada DAL (18 Nov 2025) - Responsable: Ing. Luis Manuel Corea Cabrera

BN Valores - CommonServiceLocator.NET - Overview

Contexto y Alcance

  • Hallazgo CSL v1.0.0 obsoleta en capa DAL. Riesgo de conflicto con Oracle Managed Data Access.
  • Alcance BNCR.BNValores.DAL. Otros proyectos (BL, WCF) no afectados.

Ejecución

  • Update NuGet a v2.0.7 (Última estable).
  • Limpieza Recompilación total y validación de packages.config.

Estado de Pruebas

  • Unit Tests Fallidos por falta de credenciales de BD (No relacionado a librería).
  • Compilación Exitosa.

Caso de Estudio: Actualización CSL (Convenios PAR)

Actualización DAL v1.0.0 a v2.0.7 (02 Dic 2025) - Responsable: Ing. Luis Manuel Corea Cabrera

CommonServiceLocator - Overview

Contexto

  • Situación CSL 1.0.0 en DAL. Riesgo de conflictos con .NET 4.8 y Oracle Managed Data Access.
  • Alcance Exclusivo en capa de Datos (DAL). WCF/BL intactos.

Ejecución

  • Update NuGet a v2.0.7 (Última estable).
  • Limpieza Eliminación de referencias viejas y limpieza de bin.

Resultado y Bloqueo

  • Compilación Exitosa sin errores de dependencias.
  • Tests Fallidos por falta de credenciales de BD (Ajeno a la actualización).

Caso: BNCR.Transferencias.DAL (Reversión)

Responsable: Ing. Rubén Hernández Céspedes

CommonServiceLocator.NET - Overview

Contexto

  • Diagnóstico CSL 1.0.0. Dependencias indirectas de Unity 2.1.

Incidente

  • Actualización a 2.0.7 causó bloqueo en Runtime.

Rollback

  • Reversión a v1.0.0 para garantizar estabilidad operativa.

Caso de Estudio: Actualización CSL en BNCR.Firmador

Mantenimiento de Dependencias Indirectas - Responsable: Ing. Joshua Stif Murillo Rodríguez

CommonServiceLocator - Overview

Contexto

  • Situación El proyecto no usa CSL directamente, pero lo requiere por dependencias de terceros.
  • Versión Origen 1.0.0 (Obsoleta).

Ejecución

  • Acción Actualización del paquete NuGet a la versión 2.0.6.
  • Alcance Modificación exclusiva de packages.config y .csproj.

Resultado

  • Estado Actualización exitosa. Estabilidad y compatibilidad aseguradas.
  • QA Compilación y ejecución de servicios WCF validadas.

Caso de Estudio: Modernización Cuentas WCF (.NET 4.8)

Actualización Unity/CSL y Limpieza - Responsable: Ing. Arnold Delgado Trejos

CommonServiceLocator - Overview

Objetivo

  • Proyecto BNCR.Cuentas.WCF / DAL.
  • Meta Migrar a .NET Framework 4.8 y actualizar dependencias críticas.

Ejecución

  • CSL Update de 2.0.1 a 2.0.7.
  • Unity Update a v5.11.10 y eliminación de Unity.Interception (obsoleto).

Resultados

  • Estabilidad Compilación exitosa de toda la solución (DAL, BL, WCF, Entidades).
  • Funcional Validación correcta de métodos de acceso a datos.

Caso de Estudio: Eliminación CSL en WCF Bitácora

Limpieza de Librerías Obsoletas (17 Dic 2025) - Responsable: Ing. Aldo Maynor Ulate Shedden

Eliminar CommonServiceLocator.NET - Overview

Contexto y Objetivo

  • Proyecto BNCR.BitacoraIb.WCF.
  • Acción Eliminación de la tríada legacy: CommonServiceLocator, Unity, Unity.Interception.
  • Trazabilidad Servicio consumido por Banca Electrónica, Seguridad y OAuth.

Ejecución Técnica

  • Limpieza Remoción física de DLLs y paquetes NuGet.
  • QA Ejecución de Unit Tests (4 pruebas) en BNCR.BitacoraIB.TEST.

Validación Funcional

  • Inserción BD Confirmada. El método AlmacenarBitacoraIB registra datos correctamente.
  • Hallazgo Tests unitarios fallan parcialmente por falta de SPs, pero la funcionalidad core está intacta.

Caso de Estudio: Eliminación CSL en BNCR.Empresarial.Web

Desacoplamiento y Modernización (11 Feb 2026) - Responsable: Ing. Rubén Hernández Céspedes

CommonServiceLocator.NET - Overview

Estrategia de Desacoplamiento

  • Hallazgo CSL 1.0.0 en uso. Dependencia indirecta de Enterprise Library 5.0.
  • Solución Actualización de EntLib a 6.0.1304 para romper dependencia con CSL/Unity.

Ejecución de Limpieza

  • Eliminación Se removieron completamente CommonServiceLocator, Unity y Unity.Interception.
  • Limpieza Proyecto compilado sin errores tras la remoción.

Pruebas de Integración

  • Funcionalidad Validación exitosa de pantallas clave: Saldos, Vencimientos y Operaciones.
  • Veredicto El sistema es estable y está listo para despliegue.

Caso de Estudio: Migración EntLib 6.x (Internet Banking)

Eliminación de CommonServiceLocator (30 Dic 2025) - Responsable: Ing. Arnold Delgado Trejos

CommonServiceLocator - Overview

Alcance

  • Solución BNCR.InternetBanking (6 proyectos).
  • Objetivo Actualizar EntLib a 6.0.1304 y eliminar CSL.

Ejecución

  • Update NuGet Packages actualizados a v6.x.
  • Limpieza Eliminación total de referencias a ServiceLocator.

Validación

  • Compilación 0 Errores. Warnings controlados.
  • Técnica DLLs de CSL ausentes en bin. Runtime estable.

Caso de Estudio: Actualización EntLib/CSL (BN-Servicios)

Eliminación de Vulnerabilidad y Recuperación de Tests (13 Ene 2026) - Responsable: Ing. Aldo Maynor Ulate Shedden

Eliminar CommonServiceLocator - Overview

Contexto

  • Problema Unit Tests rotos (solo 4 funcionando). Vulnerabilidad en CSL.
  • Objetivo Actualizar EntLib, remover dependencias obsoletas y reparar tests.

Ejecución

  • Update EntLib a 6.0.1304.
  • Limpieza Remoción de CommonServiceLocator, Unity y Unity.Interception.
  • Config Ajuste de App.config para paridad con producción.

Resultados

  • QA Tests activos aumentaron de 4 a 52 (65% cobertura).
  • Pendiente Errores restantes por conexión Oracle y falta de SPs en ambiente QA.

Caso de Estudio: Análisis CSL (Sinpe Móvil WCF)

Validación de Dependencias Cruzadas - Responsable: Ing. Joshua Stif Murillo Rodríguez

CommonServiceLocator - Overview

Stack Tecnológico

  • Base .NET 4.7.2 + WCF.
  • Legacy Enterprise Library 5.0.505 + Unity 2.1.505.
  • Target CommonServiceLocator 1.0.0.

Bloqueo de Arquitectura

  • Riesgo Actualizar CSL a 2.x rompe compatibilidad binaria con Unity 2.x y EntLib 5.
  • Impacto Fallo catastrófico en runtime (Logging, Exception Handling).

Resolución Técnica

  • Decisión NO ACTUALIZAR. Mantener v1.0.0 para garantizar continuidad operativa.
  • Futuro Requiere proyecto de migración total de arquitectura.

Caso de Estudio: Actualización Compleja BN-Vital (EntLib/Mapper)

Resolución de Dependencias Cruzadas (28 Ene 2026) - Responsable: Ing. Aldo Maynor Ulate Shedden

CommonServiceLocator.Net - Overview

Hallazgos Críticos

  • Gestión Incorrecta DLLs commiteadas en carpeta packages sin referencia en packages.config, impidiendo update automático.
  • Cascada BNCR.Mapper dependía fuertemente de EntLib v5, rompiéndose al actualizar a v6.

Solución Técnica

  • Update Actualización manual de EntLib a 6.0.1304.
  • Mapper Migración a BNCR.Mapper v2 para compatibilidad.
  • Config Configuración de variable de entorno TNS_ADMIN para cliente Oracle.

Validación y Riesgo

  • QA 49 Tests unitarios exitosos (WCF + BL).
  • Alerta Bases de datos DEV/QA/PROD residen en el mismo servidor. Conexiones Oracle obsoletas.

Caso de Estudio: Análisis CSL (Comercios WCF)

Validación de Dependencias Cruzadas - Responsable: Ing. Joshua Stif Murillo Rodríguez

CommonServiceLocator - Overview

Stack Tecnológico

  • Base .NET 4.7.2 + WCF.
  • Legacy Enterprise Library 5.0.505 + Unity 2.1.505.
  • Target CommonServiceLocator 1.0.0.

Bloqueo de Arquitectura

  • Riesgo Actualizar CSL a 2.x rompe compatibilidad binaria con Unity 2.x y EntLib 5.
  • Impacto Fallo catastrófico en runtime (Logging, Exception Handling).

Resolución Técnica

  • Decisión NO ACTUALIZAR. Mantener v1.0.0 para garantizar continuidad operativa.
  • Futuro Requiere proyecto de migración total de arquitectura.

QA & Testing (NUnit)

Caso de Estudio: Migración MSTest a NUnit (BN-CUSTODIO)

Modernización de Framework de Pruebas (23 Dic 2025) - Responsable: Ing. Luis Manuel Corea

NUnit.NET - Overview

Contexto y Auditoría

  • Hallazgo Inicial Auditoría vía script PowerShell detectó uso de MSTest en código fuente.
  • Diagnóstico Dependencia lógica (using/atributos) sin DLLs físicas bloqueantes.
  • Motivación Migrar a NUnit 4.4.0 para aprovechar aserciones expresivas y CI/CD.

Ejecución Técnica

  • Refactor Eliminación de using Microsoft.VisualStudio....
  • Atributos Reemplazo: [TestClass] -> [TestFixture], [TestMethod] -> [Test].
  • Aserciones Cambio: Assert.NotNull -> Assert.That(..., Is.Not.Null).
  • Dependencia Se agregó referencia a BNCR.Servicios.Trace requerida por BL.

Resultado Técnico

[TestFixture] public class BNCustodioTest { [Test] public void ConsultarSaldos_OK() { var res = BNCustodioBL.Consultar(...); Assert.That(res, Is.Not.Null); } }
  • Conclusión Migración exitosa. Código más limpio y mantenible.

Caso: Actualización NUnit WCF

Responsable: Ing. Arnold Delgado Trejos

NUnit - Overview

Resumen

  • Update 2.6.3 -> 4.4.0 en BNCR.Time.WebApi.Tests.

Validación

  • Tests de humo (TimeTest) ejecutados exitosamente.

Estrategia

  • Mantener NUnit3TestAdapter actualizado. Evaluar unificación.

Caso de Estudio: Implementación NUnit (Internet Banking Web)

Arquitectura Espejo y Base de Pruebas - Responsable: Ing. Arnold Delgado Trejos

Implementación de NUNIT Sobre Sitios IB - Overview

Estructura

  • Diseño Multicapa con estructura espejo (`Ada`, `Alias`, etc.) para pruebas unitarias puras.
  • Base Class Library .NET Framework 4.8.

Implementación

  • Stack NUnit 3.13.3 + NUnit3TestAdapter 4.5.0 + Microsoft.NET.Test.Sdk 17.9.0.
  • Core Clase `TestBase.cs` para configuración común y mocks.

Validación

  • Resultado Proyecto operativo y ejecutable desde Visual Studio.
  • Caso Validación de lógica de negocio del módulo `Ada` aislada de la UI.

Caso de Estudio: Migración MSTest a NUnit (InternetBanking WCF)

Proyecto: BNCR.InternetBanking.Test - Responsable: Ing. Joshua Stif Murillo Rodríguez

NUnit - Overview

Limpieza de Referencias

  • Eliminado Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll.
  • Motivo Bloqueaba depuración y priorizaba runner antiguo.

Implementación

  • Paquetes NUnit 3.13.3, NUnit3TestAdapter 4.5.0, Test.Sdk 17.9.0.
  • Refactor Migración de clases: Ahorro_Test, BnFondos_Test, Limites_Test, etc.
  • Cambios [TestClass] a [TestFixture].

Impacto

  • Beneficio Alineamiento con estándares CI/CD y eliminación de dependencias obsoletas.
  • Validación Ejecución exitosa en VS 2019 y .NET 4.8.

Caso de Estudio: Transferencias WCF (Estrategia Dual NUnit)

Sprints 25.22 - HU 829197 - Responsable: Ing. Aldo Maynor Ulate Shedden

NUnit - Overview

Estrategia por IDE

  • VS 2019 Rama V19 con NUnit 3.14.0 + Adapter 3.17.0.
  • VS 2022 Rama V22 con NUnit 4.4.0 + ClassicAssert.

Hallazgos de Ambiente

  • Deprecación System.Data.OracleClient.
  • Base de Datos Faltan SPs y errores de acceso denegado.

Resultado

  • Implementación Unit Testing configurado (63 pruebas totales).
  • Estandarización Cambio de atributos [TestMethod] a [Test].

Caso de Estudio: BN-Valores WCF (Estrategia Dual NUnit)

Sprints 25.22 - HU 834582 - Responsable: Ing. Aldo Maynor Ulate Shedden

NUnit - Overview

Estrategia por IDE

  • VS 2019 Rama V19 con NUnit 3.14.0.
  • VS 2022 Rama V22 con NUnit 4.0.0.
  • Objetivo Mantener compatibilidad hasta migración total de IDEs.

Bloqueo de Ejecución

  • Estado 20 Pruebas Totales / 20 Fallidas.
  • Causa Falta de string de conexión a Base de Datos en el entorno de pruebas.

Implementación

  • Configuración Proyectos configurados y compilando.
  • Atributos Migración exitosa de MSTest a NUnit en el código fuente.

Caso de Estudio: Migración BN-Servicios a NUnit

Refactorización y Eliminación de Try-Catch (13 Ene 2026) - Responsable: Ing. Luis Manuel Corea

NUnit.NET - Overview

Diagnóstico Inicial

  • Dependencia Uso de MSTest limitando modernización.
  • Anti-patrón Bloques try-catch silenciaban errores reales y forzaban Assert.Fail sin StackTrace.

Ejecución Técnica

  • Migración MSTest → NUnit 4.4.0.
  • Refactor Eliminación masiva de try-catch en 11 clases (Pagos, Transferencias, etc.).
  • Aserciones Modelo de Restricciones: Assert.That(res, Is.Not.Null).

Valor Entregado

  • Observabilidad Errores muestran la línea exacta en el BL, no un mensaje genérico.
  • Modernización Stack compatible con .NET 4.6.2+ y CI/CD.

Caso de Estudio: Migración Puntos Solidarios a NUnit

Refactorización y Fail Fast (05 Feb 2026) - Responsable: Ing. Luis Manuel Corea

NUnit.NET - Overview

Deuda Técnica

  • Anti-Patrón Bloques try-catch ocultaban el stack trace real.
  • Legacy Dependencia de MSTest limitando CI/CD.

Refactorización

  • Migración MSTest → NUnit 4.4.0 (Constraint Model).
  • Limpieza Eliminación de try-catch para permitir "Fail Fast".
  • Dependencia Inclusión explícita de BNCR.Servicios.Trace.

Resultado

  • Diagnóstico Exposición inmediata de la causa raíz de errores.
  • Cobertura Migración exitosa de PuntosSolidariosTest.cs.

Caso de Estudio: Actualización NUnit en BNCR.Firmador

Actualización a versión 4.4.0 (21 Oct 2025) - Responsable: Ing. Arnold Delgado Trejos

NUnit - Overview

Resumen de Upgrade

  • Alcance Actualización del proyecto de pruebas BNCR.Firmador.Tests.
  • Salto de Versión Actualización exitosa de NUnit 2.6.3 a NUnit 4.4.0.
  • Estado Coexistencia con MSTest sin conflictos.

Procedimiento y Validación

  • Inyección Actualización vía NuGet. Inclusión de NUnit3TestAdapter.
  • Validación Pruebas de humo con clase referencia BCCRFirmadorTest.
  • Método Clave ValidarElServicio (Verificación de disponibilidad).

Conclusión

  • Resultado Compilación y ejecución de tests exitosa.
  • Mitigación Se mantiene compatibilidad con atributos MSTest existentes mientras se habilita NUnit 4 para nuevos tests.

Caso de Estudio: Migración MSTest a NUnit (Banca Electrónica)

Proyecto: BNCR.BancaElectronicaServicios.Test - Responsable: Ing. Joshua Stif Murillo Rodríguez

NUnit - Overview

Objetivo del Cambio

  • Modernización Migración del framework nativo MSTest hacia NUnit para mejorar compatibilidad y estandarización.
  • Alcance 15 clases de prueba afectadas (Cuentas, Pagos, Seguridad, Transferencias, etc.).

Ejecución Técnica

  • Paquetes Instalados
    • NUnit 3.13.3
    • NUnit3TestAdapter 4.5.0
    • Microsoft.NET.Test.Sdk 17.9.0
  • Refactorización Reemplazo masivo de atributos: [TestClass] -> [TestFixture], [TestMethod] -> [Test].

Validación Exitosa

  • Resultados Compilación exitosa y ejecución completa desde Test Explorer sin errores.
  • Beneficio Entorno preparado para CI/CD y reducción de dependencias obsoletas de VS.

Caso de Estudio: Migración MSTest a NUnit (Cuentas WCF)

Proyecto: BNCR.CuentasServicios.Test - Responsable: Ing. Joshua Stif Murillo Rodríguez

NUnit - Overview

Objetivo del Cambio

  • Meta Modernizar entorno de pruebas migrando de MSTest a NUnit.
  • Alcance Proyecto BNCR.CuentasServicios.Test, specifically clase CuentasTest.cs.

Ejecución Técnica

  • Paquetes Install NUnit 3.13.3, Adapter 4.5.0, Test.Sdk 17.9.0.
  • Refactor [TestClass] -> [TestFixture], [TestMethod] -> [Test].

Validación

  • Resultado Compilación exitosa y ejecución correcta en Test Explorer.
  • Impacto Sin afectación funcional al servicio WCF.

Caso de Estudio: Migración MSTest a NUnit (Tarjetas WCF)

Proyecto: BNCR.Tarjetas.Test - Responsable: Ing. Joshua Stif Murillo Rodríguez

NUnit - Overview

Contexto y Hallazgo

  • Objetivo Migrar de MSTest a NUnit en .NET 4.7.2.
  • Limitación Técnica El paquete Microsoft.NET.Test.Sdk no es compatible con packages.config.
  • Solución Se confirmó que solo con NUnit3TestAdapter es suficiente para la ejecución.

Ejecución Técnica

  • Paquetes NUnit 3.13.3 + Adapter 4.5.0.
  • Refactor [TestClass] -> [TestFixture], [TestMethod] -> [Test] en TarjetasTest.cs.
  • Limpieza Eliminación de referencias Microsoft.VisualStudio.TestTools.

Validación Exitosa

  • Resultado Compilación correcta y detección de pruebas en Test Explorer.
  • Impacto Cero afectación al servicio WCF productivo.

Caso de Estudio: Migración MSTest a NUnit (Seguridad WCF)

Proyecto: BNCR.Seguridad.Test - Responsable: Ing. Joshua Stif Murillo Rodríguez

NUnit - Overview

Contexto y Limpieza

  • Hallazgo Referencia a Microsoft.VisualStudio.QualityTools forzaba el uso del runner antiguo.
  • Acción Eliminación de la DLL conflictiva y desinstalación de MSTest.

Implementación

  • Paquetes NUnit 3.13.3, Adapter 4.5.0, Test.Sdk 17.9.0.
  • Refactor Migración de ClientesTest, DeshabilitarTokenTest, TransaccionesDTATes.

Impacto

  • Estandarización Alineación con CI/CD y eliminación de dependencias legacy de VS.
  • Validación Ejecución correcta de pruebas y depuración (breakpoints).

Caso de Estudio: Implementación NUnit (BN-Páguese)

Inyección de Dependencias y Validación (13 Ene 2026) - Responsable: Ing. Arnold Delgado Trejos

NUnit - Overview

Alcance

  • Proyecto BNCR.BNPagueseIB.Test (WCF).
  • Objetivo Modernizar framework de pruebas a NUnit 4.4.0.

Implementación

  • NuGet Instalación de NUnit 4.4.0.
  • Adapter Inclusión opcional de NUnit3TestAdapter para Test Explorer.

Validación

  • Smoke Test Ejecución exitosa de ClienteTest.ConsultaEstadoCliente_OK.
  • Estado Sin conflictos con attributes MSTest existentes.

Caso de Estudio: Migración y Diagnóstico (Sinpe Móvil)

Auditoría de Obsolescencia (27 Ene 2026) - Responsable: Ing. Rubén Hernández Céspedes

Nunit - Overview

Diagnóstico Inicial

  • Estado Tests inconclusos. Uso incorrecto de try-catch ocultando errores.
  • Código Ausencia total de aserciones (Asserts).

Acciones Correctivas

  • Migración MSTest -> NUnit 3.13.2.
  • Limpieza Eliminación de try-catch y estandarización a AAA.

Hallazgo Crítico

  • Resultado Tests fallan por conexión.
  • Conclusión WCF no desplegado en ningún ambiente. Proyecto presuntamente descontinuado.

Caso de Estudio: Implementación NUnit (BN-Vital)

Inyección de Dependencias y Validación (27 Ene 2026) - Responsable: Ing. Arnold Delgado Trejos

NUnit - Overview

Alcance

  • Proyecto BNCR.BNVital.Test (WCF).
  • Objetivo Modernizar framework de pruebas a NUnit 4.4.0.

Implementación

  • NuGet Instalación de NUnit 4.4.0.
  • Adapter Inclusión opcional de NUnit3TestAdapter para Test Explorer.

Validación

  • Smoke Test Ejecución exitosa de ClienteTest.ConsultaEstadoCliente_OK.
  • Estado Sin conflictos con atributos MSTest existentes.

Caso de Estudio: Implementación NUnit (Transferencias Web API)

Inyección de Dependencias y Validación (10 Feb 2026) - Responsable: Ing. Arnold Delgado Trejos

NUnit - Overview

Alcance

  • Proyecto BNCR.Transferencias.Test (WCF).
  • Objetivo Modernizar framework de pruebas a NUnit 4.4.0.

Implementación

  • NuGet Instalación de NUnit 4.4.0.
  • Adapter Inclusión de NUnit3TestAdapter para Test Explorer.

Hallazgos y Riesgos

  • Estado Pruebas exitosas (e.g. ConsultaEstadoCliente_OK).
  • Deuda Técnica Gran cantidad de métodos de prueba comentados en el código fuente.

Caso de Estudio: Actualización NUnit (IB Móvil Empresarial)

Inyección de Dependencias y Pruebas (23 Sep 2025) - Responsable: Ing. Arnold Delgado Trejos

NUnit - Overview

Alcance del Upgrade

  • Proyecto BNCR.IBMovil.Test.
  • Salto de Versión Actualización de NUnit v2.6.3 (.NET 4.0) a v4.4.0 (.NET 4.7.2).

Validación

  • Smoke Test Ejecución exitosa de BitacoraIBTest.EscribirBitacora_OK.
  • Estado Compilación y ejecución correctas desde Test Explorer sin incidencias.

Riesgos y Deuda Técnica

  • Hallazgo La mayoría de los métodos en la clase de prueba actual se encuentran comentados.
  • Recomendación Unificar el framework de pruebas y actualizar el Runner/Adapter para CI/CD.

Gestión de Documentos

Caso de Estudio: Remoción iTextSharp (BNCR.Firmador)

Limpieza de Dependencias (04 Nov 2025) - Responsable: Ing. Luis Manuel Corea C.

iTextSharp - Overview

Diagnóstico

  • Hallazgo La librería solo existía en proyectos de prueba (BNCR.Firmador.Test y Sellador.Test).
  • Estado Código comentado, sin uso activo en producción (BL/DAL).

Ejecución

  • Acción Eliminación de referencias en packages.config y archivos .csproj.
  • Limpieza Borrado de carpetas de paquetes y binarios.

Resultado

  • Compilación Exitosa (Clean/Rebuild).
  • Optimización Reducción del tamaño del despliegue y eliminación de deuda técnica.

Caso de Estudio: Migración iTextSharp a QuestPDF (Banca Electrónica)

Modernización de Motor de Reportes (18 Nov 2025) - Responsable: Ing. Arnold Delgado Trejos

ITextSharp - Overview

Objetivo y Alcance

  • Meta Eliminar dependencia obsoleta de iTextSharp y estandarizar con QuestPDF.
  • Proyectos BNCR.BancaElectronica.Servicios.BL y API.

Ejecución Técnica

  • Reescritura Método ObtenerPDF migrado a Fluent API de QuestPDF.
  • Limpieza Eliminación de referencias en 5 controladores API (Tarjetas, Cuentas, etc.).

Validación QA

  • Visual Comparación 1:1 de PDFs generados (mismos estilos y tablas).
  • Funcional Carga correcta en Web y Móvil.

Protocolos de Datos (OData)

Caso: Limpieza OData en time-web-api-raiz

Responsable: Ing. Joshua Stif Murillo Rodríguez

Microsoft.Data.OData - Overview

Análisis

  • Paquetes OData instalados sin referencias en código WCF.

Limpieza

  • Eliminación de referencias para reducir peso y riesgos.

QA

  • Compilación y funcionalidad WCF validadas.

Investigaciones Técnicas

Estrategia: CSL + EntLib 6.x y Alerta de Riesgo Legacy

Definición Arquitectónica e Investigación de Riesgos (16 Dic 2025) - Responsable: Ing. Luis Manuel Corea Cabrera

Investigación: Upgrade a EnterpriseLibrary 6.x - Overview

Problema y Bloqueo Legacy

  • Acoplamiento EntLib 5.0 depende fuertemente de Unity y CSL para instanciar objetos.
  • ⚠ Tríada del Bloqueo Unity 2.x exige CSL 1.0. Eliminarlo rompe el runtime irremediablemente.

Solución e Independencia

  • Independencia EntLib 6.0 gestiona su propia configuración, haciendo obsoleto el uso de CSL para la capa Data.
  • Viabilidad Migrar Unity a versiones recientes está descartado por su alto costo y riesgo funcional.

Procedimiento y Protocolo

  • Procedimiento Estándar 1. Limpieza de NuGet (CSL). 2. Update a EntLib 6.x. 3. Ajuste de Binding Redirects en web.config.
  • 🛑 Protocolo de Seguridad Si el proyecto utiliza Unity 2.x: STOP. No eliminar CSL bajo ninguna circunstancia.

Mejoras a Implementar

Calidad de Código y Seguridad

  • Métricas de Code Coverage Incrementar la cobertura de pruebas unitarias para reducir deuda técnica. Se pondrá foco en eliminar malas prácticas y código duplicado detectado.
  • Análisis Estático (SonarQube) Mejorar las métricas reportadas por SonarQube, resolviendo "Code Smells" y vulnerabilidades potenciales.
  • Gestión de Vulnerabilidades Búsqueda proactiva de vulnerabilidades en dependencias. Estrategia de actualización constante a versiones nuevas y eliminación definitiva de versiones obsoletas.

Estrategia de Modernización

  • Upgrade a .NET Core Estimación de esfuerzo para migrar los servicios WCF hacia .NET Core / .NET 6+, asegurando soporte a largo plazo (LTS).
  • Estandarización de IDE Oficializar el uso de Visual Studio 2022 para todo el equipo y retirar el soporte a VS2019, aprovechando las mejoras de rendimiento y herramientas de 64 bits.

Estandarización de Librerías Core

  • Upgrade BNCR.Helper Estimación para actualizar la librería base del banco. Se buscará estandarizar la serialización JSON migrando de Newtonsoft a System.Text.Json en capas medias y WCF para mejorar el rendimiento.
  • Corrección Error SOA.API Resolución de conflictos con Newtonsoft. Se recomienda migrar a la versión 1 de BNCR.Helper como solución definitiva (evitando parches temporales como actualizar atributos).
  • BNCR.Mapper Estandarizar el uso de la librería de mapeo, migrando todos los proyectos de la Versión 1 a la Versión 2.

Herramientas y Procesos

  • Colecciones de Postman Crear y mantener una colección de Postman en el repositorio Git de cada proyecto WCF. Esto facilitará las pruebas de integración y el onboarding de nuevos desarrolladores.
  • Estimaciones Actualización del Excel de control con nuevas estimaciones ajustadas a la realidad del proyecto tras los hallazgos recientes.

Métricas de Ejecución

Tareas por Sprint

Carga por Ingeniero

Top Tecnologías

Resumen

MétricaValorDetalle
Total Tareas45Casos de Estudio Documentados
Sprints1025.21 - 26.04
DominanteNUnit / CSL68% de los casos

Siguientes Proyectos a Analizar/Actualizar

Backlog de Tareas Pendientes

TP / Entorno Proyecto Librería a Actualizar
DEV_IB_WCF archivo-virtual-ib-wcf-raiz EnterpriseLibrary.Data V3
DEV_IB_WCF autenticacion-raiz EnterpriseLibrary.Data V3
DEV_IB_WCF bitacora-ib-wcf-raiz - Repos EnterpriseLibrary.Data V4
DEV_IB_WCF bn-custodio-wcf-raiz EnterpriseLibrary.Data V6
DEV_IB_WCF bn-fondos-wcf-raiz - Repos EnterpriseLibrary.Data V5
DEV_IB_WCF bn-paguese-ib-wcf EnterpriseLibrary.Data V3
DEV_IB_WCF bn-servicios-raiz - Repos EnterpriseLibrary.Data V6
DEV_IB_WCF bn-servicios-raiz - Repos EnterpriseLibrary.Common.dll V3
DEV_IB_WCF bn-valores-wcf-raiz - Repos EnterpriseLibrary.Data V5
DEV_IB_WCF bn-vital-wcf-raiz EnterpriseLibrary.Data V6
DEV_IB_WCF buc-wcf-raiz - Repos EnterpriseLibrary.Data V5
DEV_IB_WCF carga-archivo-xml-raiz - Repos EntityFramework V6
DEV_IB_WCF catalogos-wcf-raiz - Repos EnterpriseLibrary.Data V5
DEV_IB_WCF cheques-wcf-raiz - Repos EnterpriseLibrary.Data V3
DEV_IB_WCF conector-ad-wcf-raiz - Repos EnterpriseLibrary.Data V5
DEV_IB_WCF comercios-wcf-raiz - Repos EnterpriseLibrary.Data V5
DEV_IB_WCF comprobantes-wcf-raiz - Repos EnterpriseLibrary.Data V3
DEV_IB_WCF cuentas-movil-wcf-raiz - Repos EnterpriseLibrary.Data V3
DEV_IB_WCF cuentas-wcf-raiz - Repos EnterpriseLibrary.Data V5
DEV_IB_WCF entretenimiento-wcf-raiz - Repos EnterpriseLibrary.Data V4
DEV_IB_WCF firmador - Repos EnterpriseLibrary.Data V5
DEV_IB_WCF internet-banking-raiz - Repos EnterpriseLibrary.Data V5
DEV_IB_WCF inversiones-wcf-raiz EnterpriseLibrary.Data V5
DEV_IB_WCF listado-archivos-wcf-raiz - Repos EnterpriseLibrary.Data V3
DEV_IB_WCF m-administrador-ib-wcf-raiz EnterpriseLibrary.Data V5
DEV_IB_WCF menu-wcf-raiz - Repos EnterpriseLibrary.Data V5
DEV_IB_WCF monedero-ib-wcf-raiz - Repos EnterpriseLibrary.Data V3
DEV_IB_WCF pago-servicios-wcf-raiz - Repos Oracle.ManagedDataAccess
DEV_IB_WCF pagos-moviles-wcf-raiz EnterpriseLibrary.Data V3
DEV_IB_WCF puntos-solidarios-wcf-raiz EnterpriseLibrary.Data V5
DEV_IB_WCF seguridad-wcf-raiz - Repos EnterpriseLibrary.Data V5
DEV_IB_WCF siacc-wcf-raiz EnterpriseLibrary.Data V5
DEV_IB_WCF sinpe-dtm-wcf-raiz EnterpriseLibrary.Data V3
DEV_IB_WCF sinpe-movil-wcf EnterpriseLibrary.Data V5
DEV_IB_WCF sinpe-tr-wcf-raiz - Repos EnterpriseLibrary.Data V5
DEV_IB_WCF sinpe-wcf-raiz - Repos EnterpriseLibrary.Data V3
DEV_IB_WCF tarjetas-wcf-raiz EnterpriseLibrary.Data V5
DEV_IB_WCF pago-servicios-wcf-raiz - Repos EnterpriseLibrary.Data V6
Dev_ComponentesComunes notificaciones-net Newtonsoft.Json.4.0.8