\section{testfarm}
\label{sec:testfarm}

{\it testfarm} \cite{testfarm} es una aplicación cliente-servidor que permite automatizar las tareas de construcción y testeo del software y monitorizar su estado.
Según el estado se indicaría si los tests pasan satisfactoriamente, si falla algún test o si no compila algún programa.
A partir de esta herramienta cubrimos el requisito de ejecución {\it on-line} de los tests ya que, cada vez que el usuario realiza una actualización en el sistema de control, {\it testfarm} lanzará un script escrito en shell con los comandos necesarios para realizar el testeo de eficiencia.

{\it testfarm} presenta varias razones por las cuales se ha decidido usar esta herramienta y no otras similares como {\it Mozila Tinderbox} \cite{tinderBox}, {\it Flamebox} \cite{flameBox} o {\it BuildBot} \cite{buildBot}.
Primeramente, {\it testfarm} a penas tiene dependencias de otras herramientas.
Únicamente requiere tener instalado {\it Python} y, opcionalmente, requiere {\it mod Python} \ref{sec:apache} y {\it ploticus} \ref{sec:ploticus}, tres herramientas igualmente necesarias en este proyecto, con lo que se evita tener que instalar otras herramientas como {\it bonsai}, necesaria para el funcionamiento de  {\it Buildbot}, la cual suele dar bastantes problemas durante la instalación.
La segunda diferencia es que los scripts que deben escribir los usuarios, los cuales serán lanzados por {\it testfarm}, están basados en los comandos shell, lo que facilita la estructuración de tareas a ejecutar.

Como nos muestra la imagen \ref{fig:testfarm}, {\it testfarm} puede controlar simultáneamente a varios clientes y cada uno de ellos puede estar ejecutándose en un sistema operativo diferente. En el caso de la imagen adjunta, un cliente corre bajo {\it Windows}, dos bajo sistema operativo {\it Linux} ({\it Fedora} y {\it Ubuntu}) y un cuarto en un sistema operativo de {\it Apple} ({\it Osx Tiger})

\begin{figure}[!ht] 
	\centering
	\fbox{\pdfimage width 6in {Imagenes/testfarm.png}}
	\caption{Interfaz gráfica de testfarm} 
	\label{fig:testfarm}
\end{figure} 


