La verificación, prueba y mantenimiento de los programas es esencial para minimizar los riesgos por el uso de tecnología. Es conveniente realizar la verificación y prueba antes de utilizar el sistema para un evento electoral "en vivo" (tanto en si mismo como de manera conjunta con el equipo y las comunicaciones). Después de una prueba exitosa, se requiere darle a los programas el debido mantenimiento para garantizar su buen funcionamiento cuando se les requiera.
El nivel de importancia de la tecnología impactará el grado de rigor aplicado a los programas de verificación, prueba y mantenimiento de los programas. Para los sistemas que se usen para desempeñar funciones electorales cruciales, como una votación electrónica, el grado de rigor requerido será mayor.
Si bien ésta y las dos secciones que la acompañan separan el equipo, los programas y las comunicaciones en tres apartados, su operación es con frecuencia interdependiente, y los procedimientos de verificación, prueba y mantenimiento que se indican pueden llevarse a cabo con los tres componentes en su conjunto.
Verificación de los programas
Para un sistema de gran importancia, como uno de votación electrónica, es conveniente que una autoridad independiente lleve a cabo las pruebas de verificación. Para sistemas de menor importancia, la verificación puede realizarse internamente.
Las pruebas de verificación de los programas (también conocidas como pruebas de calidad) pueden comprender lo siguiente:
- Probar los programas para asegurar que reúnen los estándares exigidos y ejecutan las tareas esperadas, incluyendo auditorías de código (ver infra).
- Asegurar que la documentación del sistema es la adecuada y esté completa.
- Verificar que el sistema es capaz de funcionar bajo las condiciones normales esperadas y potenciales condiciones adversas.
- Garantizar que se cuenta con medidas de seguridad y que estas se ajustan a los estándares establecidos.
- Asegurar que se cuenta con las debidas medidas de control de calidad.
Puede ser necesario realizar auditorías a los códigos de los programas, particularmente cuando estos se utilicen para sistemas cruciales. Generalmente estas auditorías son más efectivas cuando las llevan a cabo expertos independientes de los autores del código. Una auditoría de programas puede incluir medidas como las siguientes:
- Verificar que el código es lógicamente correcto.
- Asegurar que el código tiene un diseño modular (es decir, está conformado por módulos que pueden ser probados y evaluados por separado).
- Revisar que no existan códigos "ocultos " que puedan ejecutar funciones no autorizadas.
- Verificar que todos los códigos sean directos y relativamente fáciles de entender.
- Asegurar que el código está diseñado para ser probado fácilmente -es decir, que permite probar los flujos de información dentro y entre los módulos.
- Verificar que el código incluya mecanismos correctores de errores que permitan su detección inmediata y prevenir pérdidas de información.
- Asegurar que el código cuenta con mecanismos de seguridad para impedir accesos no autorizados.
- Constatar que el sistema es utilizable sin necesidad de procedimientos complejos u obscuros.
- Asegurar que los programas pueden ser instalados fácilmente.
- Verificar que se les puede dar fácil mantenimiento a los programas y que, una vez instalados, pueden identificarse y corregirse errores o defectos con facilidad.
- Revisar si los programas pueden ser modificados fácilmente para agregarles nuevas características.
Prueba de los programas
Una vez que los programas han sido verificados, requieren ser rigurosamente probados para asegurar que cada componente opere como es debido y que el sistema funcione exactamente de acuerdo con los requerimientos locales específicos.
Entre las medidas de prueba se pueden considerar las siguientes:
- Desarrollar un conjunto de criterios para la prueba.
- Aplicar pruebas funcionales para determinar si se han satisfecho los criterios de prueba.
- Aplicar evaluaciones de calidad para determinar si se han satisfecho los criterios de prueba.
- Conducir pruebas en condiciones de "laboratorio" y en una variedad de condiciones "reales"
- Conducir pruebas durante un periodo prolongado, para cerciorarse que los sistemas pueden funcionar de manera consistente.
- Conducir "pruebas de carga", simulando tanto como sea posible una variedad de condiciones reales utilizando o excediendo los volúmenes de información que se pueden esperar en una situación concreta.
- Verificar que lo que entra es lo que sale, introduciendo información conocida y verificando que el resultado sea consecuente con ella.
Mantenimiento de los programas
Después de que los programas han sido verificados, probados e implantados, se les debe seguir dando mantenimiento. Las rutinas de mantenimiento variarán de acuerdo con el tipo y complejidad de la tecnología. Los fabricantes o proveedores suelen indicar en muchos productos el programa o calendario de mantenimiento requerido. El mantenimiento también puede ser realizado por el fabricante o el proveedor como parte del acuerdo de compra.
A los sistemas se les debe dar mantenimiento para asegurar que continúen operando en el nivel mostrado durante la etapa de prueba. Si los sistemas se deterioran, existe el riesgo de que no se desempeñen conforme a los estándares requeridos.
Puede ser necesario instalar sistemas de monitoreo o prueba para asegurar que las necesidades de mantenimiento sean identificadas y satisfechas cuando resulte necesario. Cuando los sistemas son de uso prolongado, se puede establecer un mecanismo para recibir retroalimentación de los usuarios como otra forma de determinar las necesidades de mantenimiento y modificación.
Cuando se realicen modificaciones a los programas como resultado de ejercicios de mantenimiento o actualización, puede ser necesario promover rondas adicionales de verificación y prueba del sistema para asegurarse que siguen cumpliendo las normas exigidas.
Referencia: Performance and Test Standards for Punchcard, Marksense, and Direct Recording Electronic Voting Systems, [United States] Federal Election Commission, US Government Printing Office, Washington DC, January 1990