JUnit: uso de asserts en Netbeans 6.5.1

JUnit es una librería Java de código abierto que facilita la realización de pruebas de unidad aunque también se usa para correr pruebas de integración o funcionales. Básicamente facilita la construcción de tests y su ejecución conjunta.

JUnit tiene diversos paquetes: framework como paquete básico de marcos, runner para algunas clases abstractas y para la ejecución de pruebas, textui y swingui para interfaces de usuario y extensions para algunas contribuciones prácticas al marco. Antes de JUnit las pruebas de unidad se reducían a incluir un main en cada clase que permitiera probar su ejecución, poco cómodo y poco flexible.

Las pruebas que se pueden desarrollar sobre JUnit parten de un sencillo concepto: assert, un assert en una condición que debe cumplirse para considerar que nuestra clase probada funciona de la manera esperada.

NetBeans integra la librería JUnit de forma que es muy sencillo crear un test para una clase determinada. Además permite crear tests en el formato del JUnit v3.8.1, así como en la nueva versión v4.0 basada en anotaciones. Incluso es posible mezclar ambos tipos de tests.

Método Parámetros Significado
assertEquals

(double expected, double actual, double delta)

Indica si dos valores double son iguales dentro de un determinado delta

(float expected, float actual, float delta)

Indica si dos valores float son iguales dentro de un determinado delta

(Object[] expecteds, Object[] actuals)

Indica si dos arrays de objetos son iguales

(Object expected, Object actual)

Indica si dos objetos son iguales
assertFalse

(boolean condition)

Comprueba que la condición pasada es falsa
assertNotNull

(Object object)

Comprueba que un objeto NO es nulo
assertNotSame

(Object unexpected, Object actual)

Comprueba que dos objetos NO se están refiriendo al mismo objeto (comparación de identidad en vez de igualdad)
assertNull

(Object object)

Comprueba que un objeto es nulo
assertSame

(Object unexpected, Object actual)

Comprueba que dos objetos se están refiriendo al mismo objeto (comparación de identidad en vez de igualdad)
assertTrue

(boolean condition)

Comprueba que la condición pasada es cierta
Fail

()

Provoca que el test falle

Nota: todos los métodos tienen una segunda versión que acepta como primer parámetro un String en el que mandar.

JUnit incorpora las siguientes ventajas y modificaciones respecto a versiones anteriores:

  • Las clases que contienen los métodos que representan las pruebas ya no tienen que ser subclases de junit.framework.TestCase
  • Los métodos que representan las pruebas a realizar ya no tienen que tener el prefijo “test” en su nombre sino que se indican con la anotación @Test
  • Sustitución del método ‘setUp’ por la anotación o anotaciones @Before.
  • Sustitución del método ‘tearDown’ por la anotación o anotaciones @After.
  • Se pueden realizar pruebas en donde el tiempo de ejecución es crítico. De manera que una prueba falle si tarda más de X milisegundos en ser ejecutada.
  • Se pueden realizar pruebas en donde se debe controlar que una excepción es lanzada.
  • Se pueden desactivar pruebas, a través de la anotación @Ignore.

Utilizar JUnit en Netbeans 6.5.1

Para utilizar JUnit en Netbeans 6.5.1 no tenemos que instalar nada ya que lo trae integrado. Basta con hacer los siguientes pasos:

  1. Creamos nuestra clase genérica con los métodos y atributos.0
  2. Seleccionamos la clase a la que le vamos a realizar las pruebas. Le damos clic derecho –> Tools –>  Create JUnit Tests1
  3. Elegimos el nombre de para la clase y el paquete y lo demás lo dejamos como esta.
  4. 2
  5. Se creara una nueva clase que contiene los métodos de prueba (uno por cada método de la clase original. Solo basta con agregarle la prueba, en nuestro caso un assert.3
  6. Ya hecho implementado la prueba basta con ejecutarla, para ello nos vamos a la opción Run del menú y luego a Test Project.4
  7. Listo.  Se generan los resultados de la prueba la cual podemos verificar.5

julio 5, 2009. Etiquetas: , , , , . Analisis 2. 6 comentarios.

Struts 2 Framework MVC

Los frameworks pueden ser vistos como implementaciones de patrones de diseño que facilitan la reutilización de diseño y código.
Dado que MVC ha sido utilizado en muchas aplicaciones web, se han desarrollado un conjunto de frameworks que den soporte a áreas comunes en todas las aplicaciones MVC.

Apache Struts es una de estas frameworks

Creada por Craig McClanahan y donada a la Apache Software Foundation en el 2000 (pertenece a Apache Jakarta).

Provee librería de clases y TAG-LIBS que conforman el Controlador, la integración con el Modelo (o lógica de negocio) y facilitan la construcción de vistas.

El Modelo o lógica de negocio es la parte que nos corresponde desarrollar.

Struts 2 está basado en el patrón MVC (Modelo-Vista-Controlador), una arquitectura que busca reducir el acoplamiento dividiendo las responsabilidades en 3 capas claramente diferenciadas:

  • El modelo, que hace referencia a los datos que maneja la aplicación y las reglas de negocio que operan sobre ellos y que se traducen en Struts 2 en las acciones.
  • La vista, encargada de generar la interfaz con la que la aplicación interacciona con el usuario. En Struts 2 equivale a los resultados.
  • El controlador, que comunica la vista y el modelo respondiendo a eventos generados por el usuario en la vista, invocando cambios en el modelo, y devolviendo a la vista la información del modelo necesaria para que pueda generar la respuesta adecuada para el usuario. El controlador se implementa en Struts 2 mediante el filtro FilterDispatcher

Struts ofrece su propio componente controlador y proporciona integración con otras tecnologías para implementar el modelo, mediante tecnologías de acceso a datos como JDBC, y la vista, mediante JSP o XSLT. Además ofrece un sistema de tuberías que permite la comunicación entre el modelo que contiene los datos y las vistas que ofrecen estos datos a los usuarios y reciben sus órdenes.

Una aplicación Struts no es más que una Aplicación Web sobre el Framework de Struts.

Imagen1

Struts 2 es, como el nombre sugiere, la nueva versión del popular framework de desarrollo web en Java Apache Struts. Sin embargo, contrariamente a lo que cabría esperar, el código de ambos tiene poco que ver, dado que Struts 2 no se basa en el código de Struts 1.x, sino en el de otro framework de desarrollo web en Java llamado WebWork, un framework que el creador de Struts consideraba superior a Struts 1.x en varios aspectos.

Mejoras:

  • Facilitar el deploy de aplicaciones.
  • Diseño mejorado.
  • Nuevos tags incorporados
  • Mejora en la gestión de checkboxes.
  • Botones para cancelar flexibles.
  • Soporte para AJAX.
  • Integración sencilla para Spring.
  • Resultados especializados.
  • Formularios POJO (olvídate de los ActionForm).
  • Acciones POJO.
  • Añadir plugins fácilmente.
  • Integrar herramientas de profiling.
  • Reporte de errores más preciso.
  • Acciones fáciles de testear.
  • Valores por defecto para las configuraciones.
  • Controladores fáciles de customizar.
  • Integración de herramientas de debbuging.
  • Añadir nuevos tags fácilmente.

Ventajas

La utilización de esta metodología conlleva una serie de ventajas que nos ayudan a reducir el tiempo requerido para el desarrollo y facilitar el mantenimiento de la aplicación web:

  • Transporte automático de los datos introducidos en el cliente (JSP) hasta el controlador (Action) mediante formularios (ActionForm).
  • Transporte automático de los datos enviados por el controlador (Action) a la parte de presentación (JSP) mediante formularios (ActionForm).
  • Implementa la parte común a todas las aplicaciones en la parte de Controlador (ActionServlet); la parte particular de cada aplicación es fácilmente configurable (struts-config.xml).
  • La separación de los componentes en capas (MVC) simplifica notablemente el desarrollo y su mantenimiento.

junio 28, 2009. Etiquetas: , , , , . Analisis 2. Deja un comentario.

Enlace de un contenedor de servlets, Tomcat5.5, con servidor web, Apache, sobre Debian Lenny

Debemos tener instalado Apache2, Tomcat5.5 y Java JDK

Pasos para enlazar Apache con Tomcat:

1. Instalar mod-jk.

$ apt-get install libapache2-mod-jk

2. Editamos el archivo de configuración del mod-jk.

$ vim /etc/libapache2-mod-jk/workers.properties

Escribimos los siguiente:

workers.tomcat_home=/usr/share/tomcat5.5
workers.java_home=/usr/lib/jvm/jdk1.6.0_12  (su path de java jdk)
ps=/
worker.list=ajp13_worker
worker.ajp13_worker.port=8009
worker.ajp13_worker.host=localhost
worker.ajp13_worker.type=ajp13
worker.ajp13_worker.cachesize=10
worker.ajp13_worker.cache_timeout=600
worker.ajp13_worker.socket_timeout=300

3. Creamos y editamos la configuración del mod_jk para el uso de apache.

$ touch /etc/apache2/mod_jk.conf
$ vim /etc/apache2/mod_jk.conf

Añadimos las siguientes líneas:

JkWorkersFile /etc/libapache2-mod-jk/workers.properties
JkShmFile /var/log/apache2/mod_jk.shm
JkLogFile /var/log/apache2/mod_jk.log
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%S %Y] "

4. Añadimos la declaración del módulo.

$ vim /etc/apache2/mods-enabled/jk.load

Debajo del LoadModule ponemos:

Include /etc/apache2/mod_jk.conf

5. Añadimos un nuevo Virtual Host en Apache.

$ vim /etc/apache2/sites-enabled/000-default

Escribimos lo siguiente al final del archivo:

<VirtualHost *:8080>
ServerAdmin webmaster@localhost
JkMount /* ajp13_worker
<LocationMatch ".*WEB-INF.*">
deny from all
</LocationMatch>
</VirtualHost>

6. Añadimos el nuevo puerto a ser escuchado.

$ vim /etc/apache2/ports.conf

Debajo de NameVirtualHost *:80 ponemos:

NameVirtualHost *:8080

Y añadimos al final:

Listen 8080

7.- Reiniciamos Apache y Tomcat.

$ /etc/init.d/apache2 restart
$ /etc/init.d/tomcat5.5 restart

8.  Probamos.

En un explorador web colocamos la siguiente direccion:

http://localhost:8080/

snapshot1

Listo!!!

junio 18, 2009. Etiquetas: , , , , , , , . Analisis 2. 2 comentarios.

Comandos de Subversion, Investigación Hudson y Trac (Parte Teorica)

Comandos SVN

Desde el lado del cliente-programador, las cosas son más sencillas. A partir de que el programador se haya instalado el svn, hay cientos de comandos que puede utilizar para la interacción con el svn, entre ellos quisiera descatar algunos.

Comandos útiles

Conseguir el código:
svn checkout file:///ruta/hasta/repositorio/ProyectoA/trunk /directorio/de/trabajo/ProyectoA/

Detecta todos los cambios de fichero y árbol que el cliente ha hecho en su copia local:
svn status

Actualizar el código del proyecto:
svn update

Tras modificar y guardar los cambios, se envian al server:
svn commit --message 'comentario'

Añadir archivos al código:
svn add /archivo-N/ --force

Borrar archivos:
svn delete archivo

Rechazar los cambios en un archivo:
svn revert archivo

Volver a una versión anterior determinada:
svn update -r N

Donde N denota la revisión N que a su vez representa el estado del sistema de ficheros del repositorio tras el envío de cambios N-ésimo.
svn revert para eliminar todos sus cambios locales.

Ver un informe de los cambios producidor:
svn log

Fijar una versión, crear una rama, etiquetandola con un nombre sencillo:
Etiquetando la última versión:
svn copy file:///path/repositorio/trunk file:///path/repositorio/tags/0.01-prerelease -m "Version 0.01"

O bien especificando una revisión concreta:
svn copy -r 3 file:///path/repositorio/trunk file:///path/repositorio/tags/0.03-prerelease -m "Version 0.03"

Para hacer una copia limpia del código, y poderlo distribuir
svn export file:///path/repositorio/ProyectoA/trunk
tar -cvf proyectoA.tar trunk
gzip proyectoA.tar

Hacer copias de seguridad del repositorio:
svnadmin dump /paht/repositorio/ProyectoA | gzip -9 > dump_svn_proyectoA.gz

Si se incluye en el CRON, se harán las copias de seguridad cada tanto de una manera automática.

Comandos SvnAdmin

Crear Repositorio
svnadmin create /usr/local/svn/repos

Comando para hacer un backup
svnadmin dump /home/javoaxian/repositorioSVN | gzip -9 > respaldo_repositorio_2008-09-08.gz

Deltify
comprime el repoitorio almacenado solo las diferencias respecto a la version anterior

Dump
Vuclea el contenido del repositorio empleando un formato portable

Hotcopy
Crea una copia de un repositorio de forma segura aunque este siendo usado

List-dblogs
Muestra los archivos de historial de Berkeley DB asociados con el repositorio

List-unused-dblogs
Muestra los archivos de historial de berkeley DB asociados con el repositorio y que ya no son usados. Pueden borrarse sin problemas, aunque podrian almacenarse para recuperarse de una perdida de datos catastrofica.

Load
Carga una serie de revisiones en un repositorio a partir de un flujo de datos que emplee el mismo formato de volcado que el subcomando dump

Lstxns
muestra la lsita de transacciones que todavia no han sido enviadas

Recover
realiza una recuperacion en caso de error.

Rmtxns
elimina las transacciones limpiamente.

Setlog
sustituye el mensaje de historial de una revision en concreto por otro nuevo.

Verify
Compruebala integridad del repositorio.

Herramientas Para Integracion Continua

Existen diversos productos en el mercado para la Integracion Continua. La mayoria cuentan con una interfaz web que muestra el estado de los proyectos, ultimas corridas, e informes gráficos de diversos tipos.

Hudson

Esta herramienta de Integración Continua nos lleva un paso más allá de los resultados de nuestra solución de Ciclo de Vida, que es Maven. Es decir, ya no sólo se trata de paquetizar e integrar las distintas áreas de desarrollo de nuestro producto resolviendo las dependencias de código de los paquetes subdivididos, sino de que la integración sea efectiva, cumpla nuestros criterios de calidad y el tiempo empleado en la detección de errores y su resolución sea el menor posible. Hudson nos proporciona una solución sencilla para llevarlo a cabo.

Podemos comparar a Hudson con una de las herramientas CI más consolidadas actualmente, que es CruiseControl, comprobando que, además de ofrecer mayor amplitud de funcionalidad, sus características vienen determinadas por la instalación sencilla de plugins.

Resumiendo, parte de las ventajas de Hudson vienen determinadas por:

  • Fácil instalación y uso (un fichero WAR es toda la herramienta de instalación)
  • Plugins fácilmente extensibles
  • Soporte completo de Maven, lo que nos facilita enormemente la integración
  • Soporte para entornos “colaborativos” (múltiples equipos y grupos de proyectos)
  • Software Libre 100%
  • Sistema de alertas intuitivo para los desarrolladores
  • Muy pocos problemas “reportados” de esta herramienta

Maven

De forma más detallada a nuestra introducción anterior, Maven es una herramienta de gestión y comprensión de proyectos de desarrollo de software, normalmente en Java, que nos permite compilar, testar integridad y compilación, desplegar, documentar y gestionar las dependencias de código de forma sencilla y extendible.

Maven es una herramienta abierta y libre (pertenece al Proyecto Apache) claramente orientada al trabajo en equipo, siendo esta es una de las principales razones por las que la elegimos como herramienta ideal para metodologías agiles de programación y posterior Integración Continua con otras herramientas software.

La herramienta es compleja pero fácil de usar y muy rápida a la hora de compilar y desplegar proyectos. Entre las ventajas de usar Maven como herramienta de desarrollo en el trabajo en equipo, podemos destacar:

La dependencia entre proyectos no es problema
Un mismo proyecto se puede ejecutar en distintos entornos. Sólo hay que cambiar un archivo de configuración
La integración del trabajo de desarrolladores es transparente
Hay una maximización de la cohesión del código y una minimización del acoplamiento
Fácil reutilización del código

Para los desarrolladores familiarizados con herramientas similares, como Apache Ant, Maven ofrece las mismas funcionalidades, con la diferencia de gestionar las dependencias de proyectos de una forma mucho más sencilla y comprensible, optimizando notablemente el tiempo de desarrollo en trabajos multiproyecto.

En definitiva y en nuestro caso, Maven nos proporciona una solución modular orientada al trabajo en equipo que elimina problemas de herramientas anteriores, como es la compleja resolución de dependencias, a la vez que nos permite integrar el trabajo con otras herramientas de Integración Continua. Es importante destacar para nuestro caso que se dispone de un plugin para proyectos JRuby.

CruiseControl

CruiseControl es un framework para el proceso de Integracion Continua. Incluye, aunque no es limitado, plugins para notificaciones por Email, Ant, y se puede usar con varias herramientas de control de versiones. Provee una interfaz web para ver el detalle del actual y anteriores build’s.

Herramientas de Gestores de Fallos

Trac

http://trac.edgewall.com/

Trac es un poco más que un gestor de fallos: realmente es un sistema wiki y gestor de fallos integrado. Usa el enlace Wiki para conectar ejemplares, ficheros, grupos de cambios de control de versión, y simples páginas wiki. Es bastante simple de configurar, y se integra con Subversion

GNATS

http://www.gnu.org/software/gnats/

GNU GNATS es uno de los gestores de fallos de código abierto más antiguos, y se usa extensamente. Su mayor fortaleza reside en la diversidad de interfaces (no solamente puede ser usado a través de un navegador WEB, sino que también a través de correo electrónico o utilidades de línea de comandos), y el almacenamiento de los ejemplares en texto plano. El hecho de que los datos de todos los ejemplares se almacenen en ficheros de texto en el disco hace que sea más fácil escribir herramientas a medida para buscar y analizar sintácticamente los datos (por ejemplo, para generar informes estadísticos). GNATS también puede absorber correos electrónicos de muchas maneras, y añadirlos a los ejemplares apropiados basados en patrones dentro de las cabeceras del correo electrónico, lo que hace que el registro de las conversaciones del usuario/desarrollador sean muy fáciles.

Scarab

http://scarab.tigris.org/

Scarab está pensado para ser un gestor de fallos altamente parametizable y con todas las características, ofreciendo más o menos el conjunto total de las características ofrecidas por otros gestores de fallos: entradas de datos, consultas, informes, notificaciones a grupos interesados, acumulación colaborativa de comentarios, y gestión de dependencias.

Se parametriza a través de páginas web administrativas. Se puede tener múltiples “módulos” (proyectos) activos en una única instalación de Scarab. Dentro de un módulo dado, se puede crear nuevos tipos de ejemplares (defectos, mejoras, tareas, peticiones de apoyo, etc.), y añadir atributos arbitrarios, para afinar el gestor a los requisitos específicos de tu proyecto.

Tabla Compartiva

Herramienta

Proyecto Origen

Open Source

Free

Lenguaje de Aplicación

Numero de Desarrolladores Activos

Otras Dependencias

Subversion

Añade Nuevos Proyectos

Clona Proyectos

Autenticacion de Usuario

HUDSON

java.net

si

si

java

5 a 10

JRE

si

si

si

si

CRUISECONTROL

ThoughtWorks

no

Gratis para los pequeños equipos y proyectos de código abierto

java

5

JRE, SCM cliente

si

Falla

no

si

CUNTINUUM

ThoughtWorks

no existe

Edicion Gratuita Disponible

java

?

SCM cliente

si

si

no

si

c

Conclusion

Hudson es una herramienta libre y abierta relativamente nueva de Integración Continua muy utilizada y de gran éxito en el entorno de desarrollo del software.  Su arquitectura basada en plugins y su fácil instalación la hacen una herramienta potente y fácil de usar. El desarrollo de plugins es una característica importante al destacar su flexibilidad.

Trac permite enlazar información entre una base de datos de errores de software, un sistema de control de versiones y el contenido de un wiki. También sirve como interfaz web de un sistema de control de versiones como Subversion, Git, Mercurial, Bazaar o Darcs.

junio 14, 2009. Etiquetas: , , , , , . Analisis 2. 1 Comentario.

Instalación de Subversion + Trac + Hudson (Parte Practica)

Pasos para instalar subversion, trac y hudson en Debian Lenny

Instalando apache con webDAV

1. Instalar los paquetes Apache2, Subversion y libApache2-svn como usuario root.

$ su
$ apt-get install apache2 subversion libapache2-svn

2. Creamos una carpeta que sera nuestro repositorio

$ sudo mkdir /var/svn-repos

3. A continuación le indicamos a Subversion que es un repositorio:

$ svnadmin create /var/svn-repos/practica1

4.Creamos un grupo y le agregamos un usuario

$ groupadd subversion
$ addgroup usuario subversion

5. Ponemos permisos para que el servidor web pueda modificar el repositorio:

$ chown -R www-data.subversion /var/svn-repos
$ chmod -R 770 /var/svn/repos/*

Configurar apache con soporte de webDAV y enlazarlo con subversion

6. Modificamos el archivo siguiente:

$ vim /etc/apache2/mods-available/dav_svn.conf

7. Le agregamos las siguientes lineas al final:

<Location /svn_p1>

DAV svn
SVNPath /var/svn-repos/practica1
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user

</Location>

8.  Creamos el archivo de autenticación:

$ htpasswd -c /etc/subversion/passwd usuario

9. Reiniciamos apache

$ /etc/init.d/apache2 restart

10. Abrimos el explorador e insertamos la direccion:

http://localhost/svn_p1

11. Nos muestra lo siguiente

svn – Revision 0: /

Creamos un proyecto nuevo en el repositorio

12. Lo primero es, en un directorio temporal, crear el directorio del proyecto:

~$ cd tmp/
~/tmp$ mkdir hola_mundo

Creación de un repositorio con la estructura básica (trunk,branches,tags)

13. Se acostumbra tener tres directorios dentro de un proyecto: branches donde están las ramas del proyecto, tags las diferentes versiones y trunk donde está la versión actual del proyecto. Para ello realizamos lo siguiente:

~/tmp$ cd hola_mundo/
~/tmp/hola_mundo$ mkdir branches tags trunk

14. A continuación importamos todo eso al repositorio:

~/tmp/hola_mundo$ cd ..
~/tmp$ svn import hola_mundo http://localhost/svn_p1 -m "Creando la estructura del proyecto"

Ya podemos borrar el archivo temporal.

16. El siguiente paso es obtener una copia de trabajo de los archivos:

$ svn checkout http://localhos/svn_p1/trunk practica1

Fijese que obtuvimos trunk, (no es necesario por ahora los otros directorio). El practica1 del final es una indicación del directorio donde se va a grabar la copia de trabajo.

Creación de un proyecto java, hola mundo, y ubicarlo en el trunk del respositorio

17. A continuación vamos a adicionar dos nuevos archivos al proyecto: hola_mundo.java. Lo primero es crear el archivo:

$ cd practica1/
$ vim hola_mundo.c

con el siguiente contenido:

public class HolaMundo {
public static void main(String[] args) {
System.out.println("Hola Mundo");
}
}

18. Lo adicionamos al proyecto:

$ svn add hola_mundo.java

19. Finalmente enviamos todos los cambios al repositorio:

$ svn commit -m "Se adicionó el programa hola_mundo.java"

snapshot3snapshot2

Modificar el aspecto utilizando un css elaborado para darle buen
aspecto al front-end web de subversion

20. Descargamos ReposStyle.zip aqui

21. Lo descomprimos en la carpeta root de apache

$ cd /var/www
$ unzip carpeta_donde_se_descargo/repos-style-2.0.zip

22. Agregamos la siguiente linea despues de SVNPath /var/svn-repos/practica1

SVNIndexXSLT "/repos-web/view/repos.xsl"

23. Cambiamos los permisos a la carpeta:

$ chown -R www-data.subversion /var/www
$ chmod -R 755 /var/www

24. Reiniciamos apache

$ /etc/init.d/apache2 restart

25. Verificamos la pagina

http://localhost/svn_p1

snapshot4

Listo!!!!

Instalando Trac

1. Primero instalamos algunos paquetes para que funcione trac con subversion

$ apt-get install trac python-setuptools libapache2-mod-python

2. Editamos un archivo de apache para integrar python

$ vim /etc/apache2/sites-available/default

3. La seccion Directory /var/www/ debe quedar asi
[...]

Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
AddHandler mod_python .py
PythonHandler mod_python.publisher
PythonDebug On

[...]

4. Creamos la base de datos de trac

$ mkdir /srv/trac

5. Inicializamos el proyecto

$ trac-admin /srv/trac/practica1 initenv

6. Dejamos todas las opciones por default menos “Path to repository [/path/to/repos]” que seria:

Path to repository [/path/to/repos]> /srv/svn-repos/practica1

7. Le cambiamos propietario a la carpeta

$ chown -R www-data.www-data /srv/trac/proyecto

8. Es el momento de comprobar que trac y su unión con el repositorio de subversion funcionan correctamente, para ello lanzaremos el servidor incluido en trac:

$ tracd -p 8080 /srv/trac/proyecto

9. Abriendo la URL http://localhost:8080/ deberíamos ver disponible nuestro proyecto, “practica1“.

snapshot5

10. Comprobamos que la función de “Browse Source” funciona correctamente.

snapshot6snapshot7

Configurar trac para que soporte el proyecto creado en subversion

11. Bien, ahora editamos la configuración para que Apache pase las peticiones que vayan a /trac a nuestro conjunto de proyectos en /srv/trac.
Editando el fichero /etc/apache2/conf.d/trac.conf añadimos antes del cierre de lo siguiente:

$ vim /etc/apache2/conf.d/trac.conf


SetHandler mod_python
PythonInterpreter main_interpreter
PythonHandler trac.web.modpython_frontend
PythonOption PYTHON_EGG_CACHE /tmp/python_egg_cache
PythonOption TracEnvParentDir /srv/trac

12. Reinciamos Apache:

$ /etc/init.d/apache2 restart

13. Probamos la pagina

http://localhost/trac

snapshot6

Listo!!!

Instalando Hudson

1. Antes de poder instalar Hudson debemos instalar java y tomcat, lo hacemos de la siguiente manera:

$ apt-get install sun-java6-jdk
$ apt-get install tomcat5.5 tomcat5.5-admin tomcat5.5-webapps

2. Modificar el archivo para que tomcat deshabilitarle la seguridad ya que si no le agregamos esta linea nos muestra error

$ vim /etc/default/tomcat5.5

3. Agregar al final

TOMCAT5_SECURITY=no

4. Probamos si tomcat esta funcionando escribiendo en un browser: http://localhost:8180. Si todo anda bien deberemos crear un usuario administrador con un rol. Para eso editamos el archivo tomcat-users.xml y luego reiniciamos el servidor:

$ vim /var/lib/tomcat5.5/conf/tomcat-users.xml

<!--
<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>
-->
<role rolename="manager"/>
<role rolename="admin"/>
<user username="user" password="secreto" roles="manager"/>
<user username="hudson-admin" password="secreto" roles="admin"/>
</tomcat-users>

5. Abrimos el administrador de Tomcat, aquí nos pedira el usuario y contraseña que recien agregamos en tomcat-users.xml. Para esto escribimos la siguiente direccion en el browser: http://localhost:8180/manager/html. En la sección apropiada agregamos el archivo hudson.war para poder desplegarlo en el contenedor.

snapshot8

6. Creamos el directorio de trabajo de Hudson y le otorgamos permisos:

$ mkdir /home/hudson
chown -R tomcat55:nogroup /home/hudson/
chmod -R 755 /home/hudson/

7. En el archivo /etc/init.d/tomcat6 agregamos a la variable JAVA_OPTS la variable -DHUDSON_HOME con el valor del directorio de trabajo de hudson que definimos en el paso 6.

$ vim vim /etc/init.d/tomcat5.5

8. Debe quedar asi

JAVA_OPTS="$JAVA_OPTS -Djava.endorsed.dirs=$CATALINA_HOME/endorsed -Dcatalina.base=$CATALINA_BASE -Dcatalina.home=$CATALINA_HOME -Djava.io.tmpdir=$CATALINA_BASE/temp -DHUDSON_HOME=/home/hudson"

9. Reiniciamos Tomcat

$ /etc/init.d/tomcat5.5 restart

10. Bueno…ahora el ultimo paso es probar si hudson esta andando escribiendo en el browser la dirección: http://localhost:8180/hudson

snapshot9

Configurar hudson para que efectue al menos 3 construcciones exitosas a partir del repositorio web

11. Antes debemos enlazar nuestro repositorio con hudson. Para ello nos vamos a la opcion Manage Hudson –> Configure System

snapshot10

12. Tenemos que añadir el path del JDK

snapshot12

13. Tenemos que añadir el path de Ant

snapshot13

14. Guardamos con el boton Save

15. Ahora creamos un nuevo Job

snapshot11

16. Elegimos el nombre y elegimos la opcion “Build a free-style software project”y le damos Ok

snapshot14

17. Ahora hay que definir donde esta nuestro repositorio, en nuestro caso Subversion y colocamos la URL de nuetro Repositorio, click en Save.

snapshot15

Enlazar trac con la exploración de hudson mediange el plugin de
hudson y trac.

18. Para añadir el plugin hay que ir a la opcion Manage Hudson –> Manage Plugins y buscamos el plugin lo habilitamos y listo.

snapshot17

19. Ahora nos vamos al Job creado y nos vamos a la opcion Configure y ya esta habilitada la opcion Trac Website, escribimos la URL de trac y listo.

snapshot26

20. Para crear construcciones exitosas hay que darle la opcion Build Now y Listo

snapshot19snapshot21snapshot20

snapshot22

UID del disco

snapshot23snapshot24

junio 14, 2009. Analisis 2. 1 Comentario.

Webgoat

Es una completa aplicación web, desarrollada en J2EE, y diseñada específicamente con el objeto de que la misma sirva de plataforma de pruebas y enseñanza respecto de las vulnerabilidades que suelen ser encontradas en el mundo real. A través de diferentes lecciones, el usuario tiene la oportunidad de entender y explotar una vulnerabilidad real. A su vez, el sistema provee al usuario de una serie de pistas, permitiendo el autoaprendizaje.

septiembre 25, 2008. Uncategorized. Deja un comentario.

Languard

Es un programa para escanear la seguridad de las máquinas de nuestra red a distintos niveles (puertos, parches, contraseñas,…).

GFI LANguard Network Security Scanner analiza nuestra red mediante los métodos potenciales que un hacker podría utilizar para atacarla. Mediante el análisis del sistema operativo y de las aplicaciones que se están ejecutando sobre los equipos de red, GFI LANguard identifica todas los posibles brechas de seguridad. En otras palabras nos alerta de las debilidades antes de que un hacker pueda encontrarlas, permitiendo que la nos ocupememos de estos casos antes de que un hacker pueda aprovecharlos.

GFI LANguard N.S.S. analiza toda la red, IP por IP, y proporciona información como el nivel de service pack del equipo, parches de seguridad ausentes, puntos de acceso inalámbrico, dispositivos USB, recursos compartidos abiertos, puertos abiertos, servicios/aplicaciones activos en el equipo, entradas clave del registro, contraseñas débiles, usuarios y grupos, y más. Los resultados del análisis pueden ser fácilmente analizados utilizando filtros e informes, habilitando para asegurar proactivamente la red – por ejemplo, cerrando puertos innecesarios, cerrando recursos compartidos, instalando service packs y hotfixes, etc.

GFI LANguard es además una completa solución de administración de actualizaciones de seguridad. Una vez haya escaneado la red y determinado los parches y service packs ausentes en el sistema operativo y en las aplicaciones podemos utilizar GFI LANguard para implantar estos service packs y parches en toda la red. Además podemos implantar software a medida en toda la red.

septiembre 25, 2008. Uncategorized. Deja un comentario.

Acunetix

Acunetix Web Vulnerability Scanner es un programa de utilidad de software que detecta automáticamente los ataques cibernéticos que comúnmente son ejecutads en carritos de compra, formularios, páginas de acceso, contenidos dinámicos y etc, donde firewalls, SSL, la seguridad de la red en los servidores son imposibles de evitar e inútiles contra el hackeo de las aplicaciones Web.Acunetix verifica las aplicaciones web de inyección SQL, XSS, ataques de inyección de CRLF, ataques de ejecución de código, ataques a directorios, los ataques de inclusión de archivo, ataques de autenticación. A demas, Acunetix también cuenta con la detección de vulnerabilidades de Google hacking, ataques extendidos con el editor de HTTP y sniffer, reglas basadas en pruebas de variable, Javascript y aplicación de análisis de seguridad AJAX.

SQL Injection

AJAX

septiembre 25, 2008. Uncategorized. Deja un comentario.

Protocolos del modelo TCP/IP

EL modelo TCP/IP esta compuesto por cuatro capas o niveles, cada nivel se encarga de determinados aspectos de la comunicación y a su vez brinda un servicio especifico a la capa superior. Estas capas son:

  • Acceso a Red
  • Internet
  • Transporte
  • Aplicación

Capa de Acceso de Red: Esta es la capa que maneja todos los aspectos que un paquete IP requiere para efectuar un enlace físico real con los medios de la red. Esta capa incluye los detalles de la tecnología LAN y WAN y todos los detalles de las capas física y de enlace de datos del modelo OSI.

Protocolos:

v Ethernet

v Token Ring

v PPP

v HDLC

v Frame Relay

v RDSI

v ATM

v IEEE 802.11

v FDDI

Capa de Internet: Esta capa tiene como proposito seleccionar la mejor ruta para enviar paquetes por la red. El protocolo principal que funciona en esta capa es el Protocolo de Internet (IP). La determinación de la mejor ruta y la conmutación de los paquetes ocurre en esta capa.

Protocolos:

v IP

v ARP

v RARP

v ICMP

Capa de Trasnporte: La capa de transporte proporciona servicios de transporte desde el host origen hacia el host destino. En esta capa se forma una conexión lógica entre los puntos finales de la red, el host transmisor y el host receptor.

Protocolos:

v TCP

v UDP

Capa de AplicacíonLa capa de aplicación del modelo TCP/IP maneja protocolos de alto nivel, aspectos de representación, codificación y control de diálogo. El modelo TCP/IP combina todos los aspectos relacionados con las aplicaciones en una sola capa y asegura que estos datos estén correctamente empaquetados antes de que pasen a la capa siguiente. TCP/IP incluye no sólo las especificaciones de Internet y de la capa de transporte, tales como IP y TCP, sino también las especificaciones para aplicaciones comunes. TCP/IP tiene protocolos que soportan la transferencia de archivos, e-mail, y conexión remota.

Protocolos:

v FTP

v TFTP

v NFS

v SMTP

v TELNET

v SNMP

v DNS

agosto 14, 2008. Etiquetas: . seminario. 1 Comentario.

Conferencia Seguridad en Internet

Malware: Es la abreviatura de Malicious Software, engloba a todo tipo de programa o código de computadora cuya función es dañar un sistema o causar un mal funcionamiento.

Como todo programa, el código malicioso tiene un ciclo de vida que se describe a continuación:

  • Creación: En esta etapa el desarrollador del código lo programa para que cumpla una función específica.
  • Propagación: En esta etapa el código mailicioso se reproduce a si mismo en una forma que pueda dar lugar a la infección.
  • Somnolencia: Una vez infectado el sistema, el código entra en una etapa de “coma” en el que espera un evento específico que va a disparar la acción que debe cumplir. Este evento puede ser una fecha, la existencia de un archivo específico, la ejecución de una acción por parte del usuario, etc.
  • Disparo: Una vez la acción requerida se da en el sistema, el código malicioso se activa ejecutando la acción para la cual fue creado
  • Re-Propagación: En algunos casos el ciclo de vida del código malicioso termina con la ejecución de una acción específica, pero en la mayoría de los casos el código malicioso reinicia el ciclo con una nueva propagación.

Clasificacion

  • Gusanos: Son programas desarrollados para reproducirse por algún medio de comunicación como el correo electrónico o redes P2P. El objetivo de los mismos es llegar a la mayor cantidad de usuarios posible y lograr distribuir otros tipos de códigos maliciosos. Otro objetivo muy común de los gusanos es realizar ataques de DDoS contra sitios webs específicos.

  • Troyano: Un troyano es un pequeño programa generalmente alojado dentro de otra aplicación normal. Su objetivo es pasar inadvertido al usuario e instalarse en el sistema cuando este ejecuta el archivo huésped. Luego de instalarse, pueden realizar las más diversas tareas, ocultas al usuario.

  • Backdoors: Estos programas son diseñados para abrir una puerta trasera en nuestro sistema de modo tal de permitir al creador de esta aplicación tener acceso al sistema y hacer lo que desee con él. El objetivo es lograr una gran cantidad de computadoras infectadas para disponer de ellos libremente hasta el punto de formas redes como se describen a continuación.

  • Adware: El adware es un software que despliega publicidad de distintos productos o servicios. Estas aplicaciones incluyen código adicional que muestra la publicidad en ventanas emergentes, o a través de una barra que aparece en la pantalla simulando ofrecer distintos servicios útiles para el usuario.

  • Spyware: El spyware o software espía es una aplicación que recopila información sobre una persona u organización sin su conocimiento ni consentimiento. Normalmente, este software envía información a sus servidores, en función a los hábitos de navegación del usuario. También, recogen datos acerca de las webs que se navegan y la información que se solicita en esos sitios, así como direcciones IP y URLs que se visitan.

  • Dialer: Tratan de establecer conexión telefónica con un número de tarificación especial.

  • Joke: gasta una broma informática al usuario.

  • Hoax: son mensajes de correo electrónico con advertencias sobre falsos virus.

  • Spam: es el envío indiscriminado de mensajes de correo no solicitados, generalmente publicitarios.
  • Phishing: Son paginas que simulan ser otras para poder obtener informacion importante como contraseñas u otro tipo de informacion importante.

Conferencia impartida por:
Ing. Jorge Alejandro Mieres
Analista de Seguridad de ESET, desarrolladora del antivirus NOD32.

agosto 14, 2008. Etiquetas: . seminario. 1 Comentario.

Página siguiente »

Seguir

Get every new post delivered to your Inbox.