2008-11-28 6 views
5

Estoy a punto de hacer algunos cambios en un módulo Apache C existente para corregir algunos posibles fallos de seguridad y malas prácticas generales. Sin embargo, la funcionalidad del código debe permanecer sin cambios (excepto en los casos en que se soluciona un error). Las pruebas estándar de regresión parecen estar en orden. Me gustaría saber si alguien sabe de una buena manera de ejecutar algunas pruebas de unidades de regresión desde el código. Estoy pensando en algo similar al uso de C-Unit pero con todos los enlaces a Apache APR y las estructuras de estado me preguntaba si hay una buena manera de probar esto. ¿Hay marcos preconstruidos que se puedan usar con la unidad C, por ejemplo?¿Existe un marco para ejecutar pruebas unitarias en módulos Apache C?

Gracias

Peter

Respuesta

7

He estado pensando de responder a esto durante un tiempo, pero pensé que alguien podría llegar a una mejor respuesta, porque la mía es bastante insatisfactoria: no, no estoy consciente de cualquier marco de prueba de la unidad.

Creo que su mejor opción es intentar y refactorizar su módulo C de modo que sus dependencias en la base de código httpd estén contenidas en una capa de cola muy delgada. No me preocuparía demasiado acerca de las dependencias en la APR, que pueden vincularse fácilmente con el código de prueba de la unidad. Son cosas como usar el registro de solicitud que debe intentar abstraerse un poco.

Iré tan lejos y sugeriré que tal refactorización es una buena idea si se sospecha que el código contiene fallas de seguridad y malas prácticas. Por lo general, es un trabajo bastante grande.

Lo que también podría considerar es ejecutar pruebas de integración en lugar de pruebas unitarias (idealmente ambas), es decir, presentar un conjunto de solicitudes y respuestas esperadas del servidor y ejecutar un programa para comparar las respuestas reales con las esperadas.

Por lo tanto, no es la respuesta que ha estado buscando, y probablemente haya pensado algo en esta línea usted mismo. Pero al menos puedo decirte por experiencia que si el módulo no puede ser reemplazado por algo nuevo por razones comerciales, entonces la refacturación para la capacidad de prueba probablemente dará sus frutos a largo plazo.

1

Pasé algún tiempo mirando las interwebs por ti, ya que era una pregunta que yo también tenía curiosidad. me encontré con un artículo de wiki que indica que

http://cutest.sourceforge.net/

se utilizó para la prueba c Apache Portable Runtime. podría valer la pena verificarlo.

Cuestiones relacionadas