lunes, 10 de enero de 2011

Técnicas de prueba de software

CAJA NEGRA
En teoría de sistemas y física, se denomina caja negra a aquel elemento que es estudiado desde el punto de vista de las entradas que recibe y las salidas o respuestas que produce, sin tener en cuenta su funcionamiento interno. En otras palabras, de una caja negra nos interesará su forma de interactuar con el medio que le rodea (en ocasiones, otros elementos que también podrían ser cajas negras) entendiendo qué es lo que hace, pero sin dar importancia a cómo lo hace. Por tanto, de una caja negra deben estar muy bien definidas sus entradas y salidas, es decir, su interfaz; en cambio, no se precisa definir ni conocer los detalles internos de su funcionamiento.
A continuación se detalla el caso de prueba para el cálculo de métricas con Cocomo básico:
Caso de prueba 4
Cálculo de métricas de proyecto con Cocomo básico

Caja negra, entornos especializados y aplicaciones
Se probará el comportamiento del programa en el ingreso de diversos valores para los campos de texto correspondientes a los atributos del sistema.

RESULTADOS
Luego de encontrar los casos de prueba, se procede a ejecutar la aplicación para detectar los errores. Estos son los resultados obtenidos de la aplicación de cada uno de los casos de prueba.
Caso de prueba 1:
Se ejecuta el método con los datos de entrada especificados en el caso de prueba. Para este caso de prueba se está usando un valor para el factor de peso que está por debajo del límite establecido, por lo tanto no es válido. Luego de la ejecución del método el programa arroja siguiente resultado:
Punto de fusión= -1
El resultado obtenido después de la prueba es el resultado esperado, es decir, la prueba no tuvo éxito en detectar un error.
Caso de prueba 2:
Se ejecuta el método con los datos de entrada especificados en el caso de prueba. El valor usado para el factor de peso está dentro debajo de los límites, por lo tanto es válido. Luego de la ejecución del método el programa arroja siguiente resultado:
Punto de fusión = 129
El resultado obtenido es el esperado, la prueba no tuvo éxito en detectar un error.
Caso de prueba 3:
Se ejecuta el método con los datos de entrada especificados en el caso de prueba. El valor usado para el factor de peso que está por encima del límite, por lo tanto no es válido. Luego de la ejecución del método el programa arroja siguiente resultado:
Punto de fusión = -1
El resultado obtenido es el esperado, la prueba no tuvo éxito en detectar un error.
Caso de prueba 4:
Se ejecuta la aplicación con los datos de entrada especificados en el caso de prueba, los cuales se muestran en la imagen
 


Los resultados obtenidos luego de ejecutar la prueba son:
Punto de fusión: 431.6 Líneas de código: 13.811200000000000 Esfuerzo: 38 Tiempo de desarrollo: 10
Los cuales corresponden con los resultados esperados que se han especificado en el caso de prueba, por lo tanto ha fracasado en la búsqueda de errores.
Caso de prueba 5:
Esta prueba tiene como objetivo comprobar que el programa acepte sólo datos válidos en los campos de texto correspondientes a los atributos del sistema. Luego de la ejecución de la prueba estos son los resultados obtenidos:



La prueba ha tenido éxito, puesto que ha encontrado errores. El programa permite la entrada de números negativos, números con números decimales, números mesclados con símbolos o caracteres especiales
DEPURACIÓN
Luego de ejecutar un caso prueba exitoso se procede después con la etapa de depuración, esta consiste en encontrar la ubicación del error dentro del programa y corregirlo.
Tras encontrar y corregir el error, se ejecuta nuevamente la prueba y se obtienen los siguientes resultados:


La aplicación de la segunda prueba no tiene éxito, es decir el proceso de depuración ha permitido encontrar y corregir los errores encontrados.


CAJA BLANCA
En programación, se denomina cajas blancas a un tipo de pruebas de software que se realiza sobre las funciones internas de un módulo. Así como las pruebas de caja negra ejercitan los requisitos funcionales desde el exterior del módulo, las de caja blanca están dirigidas a las funciones internas. Entre las técnicas usadas se encuentran; la cobertura de caminos (pruebas que hagan que se recorran todos los posibles caminos de ejecución), pruebas sobre las expresiones lógico-aritméticas, pruebas de camino de datos (definición-uso de variables), comprobación de bucles (se verifican los bucles para 0,1 y n iteraciones, y luego para las iteraciones máximas, máximas menos uno y más uno.

 

Mediante el gráfico podemos observar las vías de ejecución del programa.
- 1,2,3,4
- 1,2,3,5,6
- 1,2,3,5,7,8,9
El número de caminos también se puede calcular a través de la complejidad ciclomática:
V(G) = A + N – 2
Donde A es el número de aristas en el grafo y N es el número de nodos
Para cada camino básico encontrado en el grafo de flujo se establece un caso de prueba:

Primer caso: Los atributos están por debajo del límite: factorPeso < 0
Segundo caso: Los atributos están por debajo del límite: factorPeso < 0
Tercer caso: Los atributos están por debajo del límite: factorPeso < 0
A continuación se detalla el primer caso de prueba, los casos 2 y 3 son similares:



INTEGRACIÓN INCREMENTAL.
Cuando nuevas funciones son ingresadas al sistema se hace la prueba basándose en la funcionalidad, la dependencia con otros módulos y la integración con el programa completo. ESTA PRUEBA NO ES APLICABLE PORQUE EL PROGRAMA NO REQUIERE DE NUEVOS MODULOS.

PRUEBA DE INTEGRACIÓN
Se basa en las pruebas de conexiones y comunicaciones entre diferentes módulos. Es esencial en sistemas de cliente_servidor o red. LA PRUEBA NO ES APLICABLE YA QUE EL PROGRAMA EN SI ES UNA APLCACION DE ESCRITORIO Y NO UTILIZA REDES.


PRUEBA DE FIN A FIN
Es similar a la prueba de sistema pero esta involucra la interacción con otro hardware, bases de datos y redes. ESTA PRUEBA NO SE PUEDE APLICAR YA QUE NO SE UTILIZA BASES DE DATOS EN EL PROCESO DE ESTIMACION ATRAVEZ DEL MODELO COCOMO, NI TAMPOCO HARDWARE EXTERNO ADICIONAL.


PRUEBA DE SANIDAD
Determina si la nueva versión de un software está bien realizada y si necesita un nuevo esfuerzo en la prueba de software. Por ejemplo la nueva versión de un programa cumple con casi todos los requisitos pero destruye la base de datos al leerla, por lo tanto se dice que este software no está en una condición sana.

domingo, 9 de enero de 2011

LATEX

Es un sistema de composición de textos, orientado especialmente a la creación de libros, documentos científicos y técnicos que contengan fórmulas matemáticas.
LaTeX está formado por un gran conjunto de macros de TeX, escrito por Leslie Lamport en 1984, con la intención de facilitar el uso del lenguaje de composición tipográfica , creado por Donald Knuth.
Es muy utilizado para la composición de artículos académicos, tesis y libros técnicos, dado que la calidad tipográfica de los documentos realizados con LaTeX es comparable a la de una editorial científica de primera línea.
LaTeX es software libre bajo licencia LPPL.

Ventajas.

* Existencia de una gran cantidad de paquetes estándares pensados para dotar a los textos de toda la funcionalidad que se precise. Hay paquetes para incluir gráficos, textos de lenguaje de programación, formulas físicas y químicas, diagramas matemáticos etc.
* Tex es totalmente portable, por lo tanto el sistema Latex es portable
* Estructuras complejas como pie de pagina, referencia, tablas de contenido y bibliografia son fácilmente generadas.

Desventajas.

* Para correr el sistema LaTeX se necesita muchos recursos del computador (memoria, espacio en disco, tiempo de procesamiento), pero esto ya no es mucho problema con procesadores de palabras que hacen uso del procesador todo el tiempo (LaTeX solamente usa la CPU cuando está procesando un documento) y gastan exigen más y más de espacio en disco.
* La creación de patrones propios es un poco más complicada, y toma un poco más de tiempo el diseñar uno.
* Conocimientos previos de computación.

Ejemplos de LATEX.
codigo latex_: $*latex * \displaystyle\int_0^1{\cfrac{1}{x^2}}dx*$
\displaystyle\int_0^1{\cfrac{1}{x^2}}dx
codigo latex_: $*latex * a^{i+1} *$
a^{i+1}
codigo latex_: $*latex * i\hbar\frac{\partial}{\partial t}\left|\Psi(t)\right>=H\left|\Psi(t)\right&gt*;$
i\hbar\frac{\partial}{\partial t}\left|\Psi(t)\right>=H\left|\Psi(t)\right>
codigo latex_: $*latex* \sqrt{x+1} *$
\sqrt{x+1}
codigo latex_:$*latex * f(x) = \frac1{\sigma\sqrt{2\pi}}\int_{-\infty}^x e^{-\frac{(t-\mu)^2}{2\sigma^2}}dt * $
f(x) = \frac1{\sigma\sqrt{2\pi}}\int_{-\infty}^x e^{-\frac{(t-\mu)^2}{2\sigma^2}}dt
codigo latex_:$*latex* \LaTeX&bg=ffcccc&fg=cc00ff&s=4*$
\LaTeX
Se ingresa el codigo latex_: sin los asteriscos y te saldra lo q aparece debajo del codigo latex_: y si una formula esta mal escrita saldra i\hbar\frac{\partial}{\partial t}\left|\Psi(t)\right>=H\left|\Psi(t)\right>
Latex en WordPress.

Instalación en WordPress.

1. Obviamente, descargamos el plugin Latex
2. Ahora sube el archivo wp-latex.php a la ruta /wp-content/plugins/ de tu servidor, es la misma ruta que se usa para subir cualquier plugin.
3. Entras al panel de administración de tu blog, elige Plugins y luego activa WP-Latex

Listo, ya puedes usar LaTeX en WordPress, tanto en tus post como en los comentarios del blog.

Ejemplo.

Para obtener el logo de LaTeX escribimos \LaTeX

* \LaTeX

Para obtener una potencia escribimos a^{i+1}

* a^{i+1}

Fuente:

Uso del servidor web Apache crece durante el 2010

Uso del servidor web Apache crece durante el 2010
Hace unas semanas comentábamos que el número total de dominios registrados en el mundo superaban los 200 millones, según VeriSign. Según un reciente estudio de Netcraft, al terminar el 2010 Internet tiene un total de 255 millones de sitios web y de estos, 152 millones están alojados en Apache.

Como podemos apreciar en el siguiente gráfico, Apache ha tenido un gran año...

Crecimiento Web en el 2010


Antes de detallar como le ha ido a cada servidor web, estos son algunos números de cómo la web ha cambiado durante el año que acaba de terminar, cortesía de Netcraft.
Al finalizar el 2010, Internet tiene un total de 255 millones de sitios web
Comparado con el 2009, hubo un incremento del 9%, esto es 21.4 millones de sitios web nuevos.

Crecimiento de Servidores Web en el 2010

Y ahora veamos como ha cambiado el uso de servidores web en el 2010:
  1. Apache paso de alojar 109 millones de sitios web en el 2009, a mas o menos 152 millones al finalizar el 2010. Alrededor de 43 millones de nuevos sitios web se  alojaron en Apache, durante el año pasado.
  2. Microsoft IIS paso de alojar 49 millones de sitios web en el 2009, a mas o menos 57 millones al finalizar el 2010. Alrededor de 8 millones de nuevos sitios web fueron alojados en el servidor de MS IIS, durante el año pasado.
  3. Nginx no muestra el mismo crecimiento explosivo que tuvo el 2009, pasando de 16.2 a 16.9 millones de sitios web en el 2010.
  4. Google Web Server paso de 14.1 a 14.9 millones de sitios web en el 2010.
  5. Lighttpd paso de 840 mil a 1.3 millones de sitios web.
Con este gráfico podemos ilustrar mejor lo dicho.
Servidores Web 2010
Podemos apreciar el gran crecimiento que ha tenido Apache. El número de sitios alojados en Apache han crecido en alrededor del 40% en sólo un año.
Apache es probablemente uno de los mayores éxitos open source, un producto que desde sus orígenes ha sido el servidor web preferido por millones y millones de webmasters. Conforme hemos visto en este artículo, a menos de que algo drástico suceda, Apache seguirá siendo el rey por buen tiempo.
Vía | pingdom

sábado, 8 de enero de 2011

SUBVERSION




Concepto Subversion.
Subversion es un sistema de control de versiones open source. Mediante Subversion, puede registrar la historia de archivos de código fuente y documentos. Gestiona archivos y directorios a través del tiempo. Se coloca un árbol de archivos en un repositorio central. El repositorio es como un servidor de archivos ordinario, excepto en que recuerda todos los cambios que se realizan sobre los archivos y los directorios que contiene.

Como funciona
Una copia de trabajo de Subversión es un árbol de directorios corriente de su sistema de archivos local, conteniendo una colección de archivos. Usted puede editar estos archivos del modo que prefiera y si se trata de archivos de código fuente, podrá compilar su programa a partir de ellos de la manera habitual. Su copia de trabajo es su área de trabajo privada: Subversión nunca incorporará los cambios de otra gente o pondrá a disposición de otros sus cambios hasta que usted le indique explícitamente que lo haga.
Tras hacer algunos cambios a los archivos en su copia de trabajo y verificar que funcionan correctamente, Subversión le proporciona comandos para “publicar” sus cambios al resto de personas que trabajan con usted en su proyecto (escribiendo en el repositorio). Si las demás personas publican sus propios cambios, Subversión le proporciona comandos para mezclar estos cambios en su directorio de trabajo (leyendo del repositorio).
Una copia de trabajo también contiene algunos archivos extra, creados y mantenidos por Subversión para ayudarle a ejecutar estos comandos. En particular, cada directorio de su copia de trabajo contiene un subdirectorio llamado .svn, también conocido como el directorio administrativo de la copia de trabajo. Los archivos en cada directorio administrativo ayudan a Subversión a reconocer qué archivos contienen cambios no publicados y qué archivos están desactualizados con respecto al trabajo hecho por los demás.
Un repositorio típico de Subversión contiene a menudo los archivos (o el código fuente) de varios proyectos; normalmente, cada proyecto es un subdirectorio en el árbol del sistema de archivos del repositorio. En esta disposición, la copia de trabajo de un usuario se corresponde habitualmente con un subárbol particular del repositorio.
Por ejemplo, suponga que usted tiene un repositorio que contiene dos proyectos de software, paint y calc. Cada proyecto reside en su propio subdirectorio dentro del directorio raíz.
Para conseguir una copia de trabajo, debe ejecutar primero un checkout de algún subárbol del repositorio. (crea una copia privada del proyecto).
 Por ejemplo, si usted hace un checkout de /calc, obtendrá una copia de trabajo como ésta:
$ svn checkout http://svn.example.com/repos/calc
A calc
A calc/Makefile
A calc/integer.c
A calc/button.c
$ ls -A calc
Makefileinteger.cbutton.c .svn/

La lista de letras A indica que Subversión está añadiendo una serie de elementos a su copia de trabajo. Usted ahora tiene una copia personal del directorio /calc del repositorio, con una entrada adicional—.svn—que contiene la información extra que Subversión necesita, tal y como se mencionó anteriormente.

Ventajas
§  Se sigue la historia de los archivos y directorios a través de copias y renombrados.
§  Las modificaciones (incluyendo cambios a varios archivos) son atómicas.
§  La creación de ramas y etiquetas es una operación más eficiente. Tiene costo de complejidad constante (O(1)) y no lineal (O(n)) como en CVS.
§  Se envían sólo las diferencias en ambas direcciones (en CVS siempre se envían al servidor archivos completos).
§  Puede ser servido mediante Apache, sobre WebDAV/DeltaV. Esto permite que clientes WebDAV utilicen Subversion de forma transparente.
§  Maneja eficientemente archivos binarios (a diferencia de CVS que los trata internamente como si fueran de texto).
§  Permite selectivamente el bloqueo de archivos. Se usa en archivos binarios que, al no poder fusionarse fácilmente, conviene que no sean editados por más de una persona a la vez.
§  Cuando se usa integrado a Apache permite utilizar todas las opciones que este servidor provee a la hora de autentificar archivos (SQLLDAPPAM, etc.).
§   
Desventajas.
§  El manejo de cambio de nombres de archivos no es completo. Lo maneja como la suma de una operación de copia y una de borrado.
§  No resuelve el problema de aplicar repetidamente parches entre ramas, no facilita llevar la cuenta de qué cambios se han realizado. Esto se resuelve siendo cuidadoso con los mensajes de commit.

Como instalar Subversión.
Instalar Subversión en LINUX
Para realizar la instalación seguimos los siguientes pasos:
Paso 1 – Instalar un servidor LAMPP
sudo apt-get apache2 php5-mysql libapache2-mod-php5 mysql-server
Paso 2 – Instalar Subversion
sudo apt-get install subversion libapache2-svn
Paso 3 – Crear un repositorio
Create the subversion repository in /svn
sudo svnadmin create /svn
Paso 4 – Configurar el módulo webdav
Editar el archivo de configuración del módulo webdav del apache. Utilize su editor favorito, en este caso yo utilizo nano.
sudo nano /etc/apache2/mods-enabled/dav_svn.conf
El archivo debería quedar como sigue:
DAV svn
SVNPath /svn
AuthType Basic
AuthName “Subversion Repository”
AuthUserFile /etc/apache2/dav_svn.passwd
Grabe el archivo.
Paso 5 – Crear un usuario en SVN
Para crear un usuario en el reposotorio utilize el siguiente comando:
sudo htpasswd -cm /etc/apache2/dav_svn.passwd
Ejemplo:
sudo htpasswd -cm /etc/apache2/dav_svn.passwd geek
New password:
Re-type new password:
Adding password for user geek
Paso 6 – Reiniciar el Apache
Reinicie el apache que se encuentra corriendo con el siguiente comand:
sudo /etc/init.d/apache2 restart
Ahora puede apuntar con el browser a http://www.server/svn, debería ver que el depósito está habilitado para el acceso de lectura anónima, pero se comprometen que el acceso exige un nombre de usuario.
Instalar Subversión en WINDOWS.
Para realizar la instalación seguimos los siguientes pasos:
1. Descargar subversion 1.4.4 y descomprimirlo
2. Copiar los archivos mod_authz_svn.so y mod_dav_svn.so , que se encuentra en svn-win32-1.4.4/bin, en APACHE_INSTALL_DIR/modules
3. Copiar los archivos intl3_svn.dll y libdb44.dll, que se encuentra en svn-win32-1.4.4/bin, en APACHE_INSTALL_DIR/bin
4. Añadir las siguientes líneas (en la sección donde está la carga de librerías) al archivo APACHE_INSTALL_DIR/conf/httpd.conf para cargar las correspondientes librerias:
1. 
LoadModule dav_svn_module modules/mod_dav_svn.so
2. LoadModule authz_svn_module modules/mod_authz_svn.so
3. LoadModule dav_module modules/mod_dav.so
5. LoadModule dav_fs_module modules/mod_dav_fs.so
6. 
Añadir la siguiente línea (al final) al archivo APACHE_INSTALL_DIR/conf/httpd.conf para cargar la configuración de subversion:
1. Include “APACHE_INSTALL_DIR/conf/extra/httpd-subversion.conf”
7. Creamos el archivo APACHE_INSTALL_DIR/conf/extra/httpd-subversion.conf con la siguiente configuración (es sólo un ejemplo):
1. 
DAV svn
SVNParentPath “C:/tools/wamp/tmp/svn”
AuthzSVNAccessFile “C:/tools/wamp/Apache2/conf/access-policy/svn-groups.conf”
AuthType Basic
AuthName “Subversion repository”
Require valid-user
AuthUserFile “C:/tools/wamp/Apache2/conf/access-policy/svn-users.conf”
2. Cuidado con las rutas eso es sólo un ejemplo. Básicamente se indica donde van a       estar    nuestros repositorios de subversion, el archivo con los grupos y usuario de subversion
8. Ahora tenemos que crear los archivos svn-groups.conf y svn-users.conf. Para el primero de ellos tenemos:
1. [groups]
test-group: recena
[test:/]
@test-group:rw
1. Definición de grupos y a continuación, nombre del repositorio (que tendremos que crearlo) y permisos del grupo sobre el raiz del repositorio.
2. Para crear un usuario, hacemos uso de la utilidad htpasswd que nos proporciona Apache.
Para crear el repositorio hacemos uso de la utilidad svnadmin que proporciona subversión.

Crear un repositorio
Subversion es un sistema de control de versiones que permite tener un control sobre las modificaciones que ha sufrido un archivo fuente en el desarrollo de un proyecto de software, haciendo posible la comparacion entre las diferentes versiones, identificar los cambios que se han producido, obtener la fecha de cada cambio e incluso el usuario que ha realizado dichas modificaciones. SVN como se conoce comumente a Subversion es una herramienta ideal para administrar desarrollo realizados por multiples programadores, asi como tambien llevar un estricto control sobre las versiones y modificaciones que ha tenido un software en su tiempo de vida, por tal motivo a continuacion describiremos como instalar un servidor de subversion en Ubuntu 8.10 :
Instalar Paquetes:
·         Abrir una consola
·         Instalar los paquetes necesarios
sudo apt-get install subversion
·         Crear directorio para alojar los proyectos
sudo mkdir /home/svn
Crear Proyecto :
·         Cambiar al directorio de proyectos
cd /home/svn
·         Crear directorio con el nombre del proyecto
sudo mkdir project
·         Cambiar el dueño del directorio para que el servidor web pueda escribir los datos
sudo chown -R www-data:www-data /home/svn
·         Crear la estructura del proyecto en subversion
sudo svnadmin create /home/svn/Project

Crear usuarios y dar permisos
Para crear el primer usuario, ejecute(cambie <usuario> por el nombre de usuario a crear) :sudo htpasswd -c /etc/subversion/passwd <usuario>A continuacion suministre la clave asignada al usuario Para crear el segundo utilice el mismocomando pero sin la opcion -csudo htpasswd /etc/subversion/passwd <usuario>
Autenticación selectiva
Ahora editaremos el fichero de autorización, pudiendo definir grupos (en la sección [groups]) yluego definiendo rutas del repositorio con un listado de los permisos de los usuarios y/o grupos adichas secciones:# vim /home/svn/conf/authzEl contenido mímino sería algo similar a:[groups]admins = root[/]@admins = rwEn este fichero, se supone que tenemos que haber creado en el paso anterior un usuario root, de modo que dicho usuario root es añadido a un grupo llamado admins, luego se define la sección [/],es decir la raíz del repositorio, a la cual damos accesos de lectura y escritorio sólo a dicho grupo y anadie más.El fichero antes de que lo edites tiene mucha documentación al respecto de cómo configurarlo, esmuy recomendable que lo leas con calma para evaluar las diferentes opciones que te puede dar sucorrecto uso.
Configurar permisos de ficheros
Dado que todas las operaciones las hemos hecho por comodidad como usuario root antes determinar tendremos que asignar los permisos de la carpeta /home/svn al usuario que realmente tieneque usarlos, que en este caso es Apache2 y por ende www-data:chown -R www-data:www-data /home/svnFinalmente reiniciamos Apache2 y listo:/etc/init.d/apache2 restart
Comando principales.

-          Crear un repositorio nuevo:
svnadmin create nombre_repositorio
-          Añadir un árbol de directorios al repositorio
svn import path_al_directorio nombre_repositorio
-          Obtener una copia de trabajo
svn checkout file:///nombre_repositorio/dir directorio_de_trabajo
-          Obtener una copia sin control de versiones
svn export file:///nombre_repositorio/dir directorio_destino
-          Hacer una copia de seguridad de todo el repositorio
svnadmin dump nombre_repositorio > ficheroBackup
-          Restaurar una copia de seguridad en un nuevo repositorio
svnadmin create nombre_nuevo_repositorio
svnadmin load nombre_nuevo_repositorio < ficheroBackup
-          Ver el estado actual de la copia de trabajo
svn status
-          Añadir nuevos ficheros o directorios
svn add nombre_fichero
-          Eliminar ficheros
svn del nombre_fichero –forcé
-          Actualizar la copia de trabajo con los últimos cambios en el repositorio
svn update
-          Actualizar el repositorio con los cambios de tu copia de trabajo
svn commit -m “Mensaje para etiquetar los cambios”

 FUENTE: