Pruebas de proceso de conciliación
Precondiciones
Todas las pruebas del proceso tienen las siguientes precondiciones:
variables Variables configuradas en AWS Systems Manager
Job de AWS Glue configurado con la última versión de código fuente
Se requiere acceso al Job de Glue que se encuentra en https://us-east-1.console.aws.amazon.com/gluestudio/home?region=us-east-1#/editor/job/spin-qa-mirror-strategy/runs
Pruebas de conciliación de autorizaciones
...
#
...
Prueba
...
Objetivo
...
Proceso
...
Resultado Esperado
...
1
...
Prueba de Lectura de Archivo de Autorizaciones
...
1.1 Prueba exitosa
...
Verificar que el sistema lee correctamente el archivo dfmlg0a1 y extrae los campos relevantes.
...
Ejecutar prepare_authorization_file con un archivo de prueba que contenga datos simulados.
...
La función debe devolver un DataFrame con los registros filtrados correctamente según los criterios especificados (fasActionFinal=A y recordType=A).
...
1.2 Prueba fallida
...
Verificar errores en caso que el archivo dfmlg0a1 no se encuentre
...
Ejecutar prepare_authorization_file cuando el archivo no se encuentra
...
La función retorna un DataFrame vacío
...
2
...
Prueba de Conexión a MongoDB
...
2.1 Prueba exitosa
...
Confirmar que el sistema se conecta correctamente a las bases de datos de MongoDB y lee/escribe datos.
...
Ejecutar funciones que requieran conexión a MongoDB, como sync_balances.
...
Conexión exitosa y lectura/escritura de datos sin errores.
...
2.2
Prueba fallida
...
No se logra establecer conexión con la base de datos
...
El sistema genera error de conexión con base de datos y lo reporta en Cloud Watch
...
3
...
Prueba de Filtrado y Transformación de Datos
...
3.1
Prueba exitosa
...
Asegurar que los datos son filtrados y transformados adecuadamente.
...
Usar un conjunto de datos de prueba y ejecutar la transformación mediante parse_authorization_file_line_udf. El archivo debe contener información valida para las columnas authorizationDate
, authorizationTime
, accountNumber
, recordType
, fasActionFinal
, authorizationCode
...
Los datos transformados deben coincidir con los criterios de filtrado y transformación definidos.
...
2.2
Prueba fallida
...
El archivo tiene formato incorrecto de columnas
...
las columnas authorizationDate
, authorizationTime
, accountNumber
, recordType
, fasActionFinal
, authorizationCode
No se pueden procesar correctamente
...
El sistema genera error y lo reporta en Cloud Watch
...
4
...
Prueba de Sincronización de Balances
...
4.1
Prueba exitosa
...
Verificar que la sincronización de balances se realiza correctamente.
...
Ejecutar sync_balances con un conjunto de números de cuenta de prueba.
...
Los balances en la base de datos deben reflejar los cambios especificados.
...
5
...
Prueba de Actualización de Datos en MongoDB
...
5.1
...
Comprobar que la actualización de datos en MongoDB se realiza correctamente.
...
Ejecutar sync_balances y luego verificar los datos en MongoDB.
...
Los datos en MongoDB deben actualizarse según lo esperado.
...
6
...
Prueba de Rendimiento y Tiempos de Ejecución
...
6.1
...
Evaluar el rendimiento y los tiempos de ejecución del proceso bajo carga normal.
...
Ejecutar el proceso completo bajo una carga de datos representativa.
...
Para las pruebas de conciliación de autorizaciones se requieren tres conjuntos de datos de distintos orígenes:
Archivo de autorizaciones:
Es el archivo suministrado por Fiserv ( dfmlg0a1). Es un archivo de texto con campos de ancho fijo. Se encuentra en un S3 ubicado en
s3://{ENV}.fiserv.spin/dfmlg0a1/DFMLG0A1_{AAAA}-{MM}-{DD}.TXT
donde {ENV} es el ambiente, {AAAA}, {MM} y {DD} corresponden a los datos de la fecha del día anterior.
Los campos que se extraen de el archivo son los siguientes:
Fecha autorización: Posición 2, Largo 8
Hora autorización: Posición 11, Largo 7
Número de cuenta: Posición 22, Largo 19
Tipo de registro: Posición 64, Largo 1. Para que el registro sea tomado en cuenta debe tener el valor A
FAS Action Final: Posición 97, Largo 1. Para que el registro sea tomado en cuenta debe tener el valor A
Código autorización: Posición 103, Largo 6
Base de datos de transacciones de Spin
Corresponde a la base de datos de MongoDB de Spin donde se almacenan las transacciones (fiservTransaction).
Los campos accedimos de la base de datos son los siguientes:
createdAt: Fecha de la transacción. Para que el registro sea tomado en cuenta debe estar en le rango de los últimos 15 días.
accountNumber: Código de cuenta.
authCode: Código de autorización de la transacción.
Base de datos de mirror de balances
Es la base de datos en MongoDB donde se almacena la información de Mirror de balances, para esta tabla se acceden los siguientes campos:
_id: Corresponde al código de cuenta de 19 dígitos.
forceSync: Bandera booleana a activar si se requiere sincronizar el saldo al próximo ingreso del usuario.
Matriz de pruebas
N° | Prueba | Objetivo | Archivo de Autorizaciones | Base de Datos Transacciones Spin | Base de Datos Mirror Balances | Resultado esperado | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Carga de Archivo | Verificar carga correcta de archivos de autorizaciones desde S3 | Archivo dummy.
| N/A | N/A | Proceso finalizado sin errores | ||||||||||||
2 | Parsing de Archivos | Asegurar parsing correcto de los datos del archivo | Archivo dummy.
| N/A | N/A | Proceso finalizado sin errores | ||||||||||||
3 | Filtrado de Registros | Comprobar filtro correcto de registros basado en criterios | Archivos con diferentes combinaciones de campos
| Verificar que no se encuentren registros con accountNumber “0000000000000000000“ | Verificar que no se encuentren registros con _id “0000000000000000000“ | Proceso finalizado sin errores | ||||||||||||
4 | Selección de registros con MongoDB de Spin | Verificar acceso y lectura desde MongoDB de Spin | Archivos con diferentes combinaciones de campos
| (Actualizar campo createdAt)
| Verificar que no se encuentren registros con _id “0000000000000000000“ | Proceso finalizado sin errores | ||||||||||||
5 | Sincronización de Balances | Asegurar sincronización de balances en MongoDB |
| (Actualizar campo createdAt)
|
| el campo forceSync del documento con _id= | ||||||||||||
6 | Archivo de autorizaciones no encontrado | Probar ejecución en caso que el archivo no haya sido generado en esa fecha | Archivo no localizado en ruta definida | N/A | N/A | Proceso finalizado sin errores | ||||||||||||
7 | Manejo de Errores | Probar manejo adecuado de errores | Archivo mal configurado | Conexión no válida a base de datos de Spin | Conexión no válida a base de datos de FFSS | El proceso genera error visualizado en CloudWatch | ||||||||||||
8 | Rendimiento | Evaluar rendimiento del script bajo carga | Archivo con volumen similar al de PROD. | Base de datos de tamaño similar a PROD | Base de datos de tamaño similar a PROD | El proceso se debe ejecutar en un tiempo aceptable de acuerdo al criterio acordado. |
Datos de prueba (Happy path)
dfmlg0a1
Para las autorizaciones se han realizado pruebas con el siguiente archivo:
View file | ||
---|---|---|
|
Este archivo tiene el campo fasActionFinal con diferentes valores, permitiendo filtrar las transacciones a filtrar.
...
fiservTransactions
Para la colección de fiservTransaccions se ejecutaron las pruebas con el siguiente conjunto de datos:
View file | ||
---|---|---|
|
Para su uso es necesario actualizar el campo createdAt ya que el proceso sólo toma los registros de los últimos 15 días
...
Balances
La colección usada para balances es la siguiente:
View file | ||
---|---|---|
|
Dado que el proceso selecciona las cuentas correspondientes a los registros que aparezcan en dfmlg0a1 y fiservTransactions, las cuentas a afectar son '9500503723955682686', '9500503436486273327', '9500505431082353258', '9500500351299302127' y '9500507458943397347'
De las anteriores, la única cuenta afectada es '9500505431082353258
', por ser la única registrada en colección de balances de prueba