<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>PSDM Consulting</title>
	<atom:link href="http://psdm.co/feed/" rel="self" type="application/rss+xml" />
	<link>http://psdm.co</link>
	<description>Pruebas SW y Desarrollos Móviles</description>
	<lastBuildDate>Fri, 18 May 2012 11:33:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Nueva versión MBW: localización de paradas de bus cercanas y nombre personalizado a favoritos</title>
		<link>http://psdm.co/2012/05/nueva-version-mbw-localizacion-de-paradas-de-bus-cercanas-y-nombre-personalizado-a-favoritos/</link>
		<comments>http://psdm.co/2012/05/nueva-version-mbw-localizacion-de-paradas-de-bus-cercanas-y-nombre-personalizado-a-favoritos/#comments</comments>
		<pubDate>Fri, 18 May 2012 11:30:02 +0000</pubDate>
		<dc:creator>heavymetaldroid</dc:creator>
				<category><![CDATA[Madrid Bus Widget]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[madrid bus]]></category>
		<category><![CDATA[madrid bus widget]]></category>
		<category><![CDATA[market android]]></category>
		<category><![CDATA[nueva versión]]></category>

		<guid isPermaLink="false">http://psdm.co/?p=107</guid>
		<description><![CDATA[Acabamos de publicar la nueva versión de la app para Android Madrid Bus Widget. Los principales cambios son: Nueva pestaña en la pantalla principal que permite localizar las paradas cercanas, utilizando el dispositivo GPS del teléfono. Esta pestaña se puede deshabilitar en las preferencias de la aplicación. También se puede configurar la distancia máxima a [...]]]></description>
			<content:encoded><![CDATA[<p>Acabamos de publicar la nueva versión de la app para Android <a href="https://play.google.com/store/apps/details?id=com.ilikeblues.abm.widget&amp;feature=search_result#?t=W251bGwsMSwyLDEsImNvbS5pbGlrZWJsdWVzLmFibS53aWRnZXQiXQ.." target="_blank">Madrid Bus Widget</a>.</p>
<p>Los principales cambios son:</p>
<ul>
<li>Nueva pestaña en la pantalla principal que permite localizar las paradas cercanas, utilizando el dispositivo GPS del teléfono. Esta pestaña se puede deshabilitar en las preferencias de la aplicación. También se puede configurar la distancia máxima a la que buscar paradas (el rango puede variar de 100 a 600 metros).</li>
<li>Ahora se puede modificar el nombre de una parada favorita, en el momento de crearla.</li>
<li>Incluye tres temas, que aplican en conjunto a la app y a los widgets.</li>
</ul>

<a href='http://psdm.co/2012/05/nueva-version-mbw-localizacion-de-paradas-de-bus-cercanas-y-nombre-personalizado-a-favoritos/screenshot_2012-05-16-11-13-39/' title='Screenshot_2012-05-16-11-13-39'><img width="150" height="150" src="http://psdm.co/wp-content/uploads/2012/05/Screenshot_2012-05-16-11-13-39-150x150.png" class="attachment-thumbnail" alt="Screenshot_2012-05-16-11-13-39" title="Screenshot_2012-05-16-11-13-39" /></a>
<a href='http://psdm.co/2012/05/nueva-version-mbw-localizacion-de-paradas-de-bus-cercanas-y-nombre-personalizado-a-favoritos/screenshot_2012-05-16-11-48-16/' title='Screenshot_2012-05-16-11-48-16'><img width="150" height="150" src="http://psdm.co/wp-content/uploads/2012/05/Screenshot_2012-05-16-11-48-16-150x150.png" class="attachment-thumbnail" alt="Screenshot_2012-05-16-11-48-16" title="Screenshot_2012-05-16-11-48-16" /></a>
<a href='http://psdm.co/2012/05/nueva-version-mbw-localizacion-de-paradas-de-bus-cercanas-y-nombre-personalizado-a-favoritos/screenshot_2012-05-16-11-48-28/' title='Screenshot_2012-05-16-11-48-28'><img width="150" height="150" src="http://psdm.co/wp-content/uploads/2012/05/Screenshot_2012-05-16-11-48-28-150x150.png" class="attachment-thumbnail" alt="Screenshot_2012-05-16-11-48-28" title="Screenshot_2012-05-16-11-48-28" /></a>
<a href='http://psdm.co/2012/05/nueva-version-mbw-localizacion-de-paradas-de-bus-cercanas-y-nombre-personalizado-a-favoritos/screenshot_2012-05-16-11-50-04/' title='Screenshot_2012-05-16-11-50-04'><img width="150" height="150" src="http://psdm.co/wp-content/uploads/2012/05/Screenshot_2012-05-16-11-50-04-150x150.png" class="attachment-thumbnail" alt="Screenshot_2012-05-16-11-50-04" title="Screenshot_2012-05-16-11-50-04" /></a>

]]></content:encoded>
			<wfw:commentRss>http://psdm.co/2012/05/nueva-version-mbw-localizacion-de-paradas-de-bus-cercanas-y-nombre-personalizado-a-favoritos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Publicada nueva versión Madrid Bus Widget</title>
		<link>http://psdm.co/2012/02/publicada-nueva-version-madrid-bus-widget/</link>
		<comments>http://psdm.co/2012/02/publicada-nueva-version-madrid-bus-widget/#comments</comments>
		<pubDate>Wed, 15 Feb 2012 07:56:26 +0000</pubDate>
		<dc:creator>heavymetaldroid</dc:creator>
				<category><![CDATA[Madrid Bus Widget]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[aplicación bus madrid]]></category>
		<category><![CDATA[aplicación emt]]></category>
		<category><![CDATA[madrid bus widget]]></category>

		<guid isPermaLink="false">http://psdm.co/?p=86</guid>
		<description><![CDATA[Publicada la nueva versión de Madrid Bus Widget, la app para Android que te permite obtener de una manera rápida y sencilla los tiempos de espera de autobuses en tus paradas habituales. Esta versión incluye algunos cambios visuales que simplifican el uso de la app, pero los mayores esfuerzos han estado enfocados a la corrección [...]]]></description>
			<content:encoded><![CDATA[<p>Publicada la nueva versión de Madrid Bus Widget, la app para Android que te permite obtener de una manera rápida y sencilla los tiempos de espera de autobuses en tus paradas habituales.</p>
<p><span id="more-86"></span>Esta versión incluye algunos cambios visuales que simplifican el uso de la app, pero los mayores esfuerzos han estado enfocados a la corrección de problemas relacionados con los widgets y las notificaciones recibidas desde el launcher de aplicaciones.</p>
<p>Esta versión es considerablemente más estable, y supone un buen punto de partida para que las versiones futuras incluyan más funcionalidad:</p>
<ul>
<li>localización de paradas cercanas por GPS,</li>
<li>cáclulo de rutas en bus,</li>
<li>etc.</li>
</ul>
<div></div>

<a href='http://psdm.co/2012/02/publicada-nueva-version-madrid-bus-widget/screenshot_2012-02-14-10-30-51/' title='Madrid Bus Widgets'><img width="150" height="150" src="http://psdm.co/wp-content/uploads/2012/02/Screenshot_2012-02-14-10-30-51-150x150.png" class="attachment-thumbnail" alt="Madrid Bus Widgets" title="Madrid Bus Widgets" /></a>
<a href='http://psdm.co/2012/02/publicada-nueva-version-madrid-bus-widget/screenshot_2012-02-14-10-30-05/' title='Screenshot_2012-02-14-10-30-05'><img width="150" height="150" src="http://psdm.co/wp-content/uploads/2012/02/Screenshot_2012-02-14-10-30-05-150x150.png" class="attachment-thumbnail" alt="Screenshot_2012-02-14-10-30-05" title="Screenshot_2012-02-14-10-30-05" /></a>
<a href='http://psdm.co/2012/02/publicada-nueva-version-madrid-bus-widget/screenshot_2012-02-14-10-30-15/' title='Screenshot_2012-02-14-10-30-15'><img width="150" height="150" src="http://psdm.co/wp-content/uploads/2012/02/Screenshot_2012-02-14-10-30-15-150x150.png" class="attachment-thumbnail" alt="Screenshot_2012-02-14-10-30-15" title="Screenshot_2012-02-14-10-30-15" /></a>
<a href='http://psdm.co/2012/02/publicada-nueva-version-madrid-bus-widget/screenshot_2012-02-14-10-30-29/' title='Screenshot_2012-02-14-10-30-29'><img width="150" height="150" src="http://psdm.co/wp-content/uploads/2012/02/Screenshot_2012-02-14-10-30-29-150x150.png" class="attachment-thumbnail" alt="Screenshot_2012-02-14-10-30-29" title="Screenshot_2012-02-14-10-30-29" /></a>

]]></content:encoded>
			<wfw:commentRss>http://psdm.co/2012/02/publicada-nueva-version-madrid-bus-widget/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Diferencias entre pruebas unitarias y de integración</title>
		<link>http://psdm.co/2012/01/diferencias-entre-pruebas-unitarias-y-de-integracion/</link>
		<comments>http://psdm.co/2012/01/diferencias-entre-pruebas-unitarias-y-de-integracion/#comments</comments>
		<pubDate>Fri, 20 Jan 2012 08:20:37 +0000</pubDate>
		<dc:creator>heavymetaldroid</dc:creator>
				<category><![CDATA[Testing]]></category>
		<category><![CDATA[integración]]></category>
		<category><![CDATA[integration test]]></category>
		<category><![CDATA[pruebas]]></category>
		<category><![CDATA[unit test]]></category>
		<category><![CDATA[unitarias]]></category>

		<guid isPermaLink="false">http://psdm.co/?p=78</guid>
		<description><![CDATA[No todo el mundo tiene muy clara la diferencia entre pruebas unitarias y de integración. Y la terminología en los frameworks de desarrollo, como pueden ser Eclipse o .NET, no ayuda en este sentido, pues suelen denominar como &#8220;Unit Test&#8221; a todo tipo de pruebas, unitarias, de integración, de aceptación&#8230; y además utilizan las mismas [...]]]></description>
			<content:encoded><![CDATA[<p>No todo el mundo tiene muy clara la diferencia entre pruebas unitarias y de integración. Y la terminología en los frameworks de desarrollo, como pueden ser Eclipse o .NET, no ayuda en este sentido, pues suelen denominar como &#8220;Unit Test&#8221; a todo tipo de pruebas, unitarias, de integración, de aceptación&#8230; y además utilizan las mismas plantillas de código en todos los casos.</p>
<p>Al final, como dice <a href="http://stevesmithblog.com/about/">Steve Smith</a> en el artículo de la vía, los desarrolladores acabamos llamando &#8220;prueba unitaria&#8221; a una entidad de mayor envergadura.</p>
<p>Entonces, ¿cómo se defien una prueba unitaria?<br />
<span id="more-78"></span></p>
<blockquote><p><strong>Prueba unitaria</strong>: prueba un único método de una clase. El alcance es muy reducido y está perfectamente acotado. Cualquier dependencia del módulo bajo prueba debe ser sustituida por un <a href="http://en.wikipedia.org/wiki/Mock_object">mock</a>, o un stub.</p></blockquote>
<p>En <a href="http://stackoverflow.com/">Stackoverflow</a> hay un <a href="http://stackoverflow.com/questions/520064/what-is-unit-test-integration-test-smoke-test-regression-test/520116#520116">thread</a> en el que aparecen esta y otras definiciones, como la de prueba de integración:</p>
<blockquote><p><strong>Prueba de integración</strong>: prueba la interacción entre dos o más elementos, que pueden ser clases, módulos, paquetes, subsistemas, etc&#8230; incluso la interacción del sistema con el entorno de producción.</p></blockquote>
<p>Para Steve Smith, un test unitario es aquél que prueba un &#8220;único camino dentro de un método concreto&#8221;. Y esto es muy importante: es un test que NO tiene absolutamente ninguna dependencia externa. Cualquier dependencia debe ser sustituida por un mock, stub, driver&#8230; lo que sea necesario.</p>
<p>Cualquier dependencia (con otras partes de código, con el entorno, etc.) convierte tu test en una prueba de integración.</p>
<p><strong>Necesidad de las pruebas unitarias. Construcción de los mocks</strong></p>
<p>La definición es muy clara, pero ¿en qué casos es necesario ejecutar pruebas estrictamente unitarias?</p>
<p>Mi opinión es que sólo deberían hacerse para métodos críticos desde el punto de vista de la funcionalidad del sistema.</p>
<p>La razón es el coste. Supongamos que vamos a probar un método con dos parámetros enteros, con valores válidos en un rango determinado, complejidad ciclomática 2 y dependencia con otro módulo que devuelve un valor entero (con rango válido) y puede lanzar una excepción. A priori, cabe pensar que para alcanzar un 100% de cobertura de decisión,  y probar valores válidos, inválidos y límites, se necesitan del orden de 10-20 pruebas, además de la implementación de 3-4 mocks.</p>
<p>Ya sé que la aproximación es muy rudimentaria (por no decir chapucera), pero es evidente que el número de pruebas unitarias para alcanzar una cobertura aceptable de TODO el código sería un orden de magnitud superior al número de métodos implementados, y a esto hay que añadir la implementación de stubs y drivers. Es fundamental, pues, identificar los métodos/clases/subsistemas que requieren este tipo de pruebas.</p>
<p><strong>Aproximación</strong></p>
<p>Como sugería <a href="http://psdm.co/2012/01/errores-comunes-en-las-pruebas-de-software/">en otra entrada</a>, algunas de estar pruebas unitarias pueden ser sustituidas por pruebas de integración si consideramos que el método del que depende nuestro método bajo prueba no es más que &#8220;mock muy elaborado&#8221;. La condición previa es que este &#8220;mock&#8221; haya sido probado previamente. En otro caso, no podemos asegurar que el resultado de la prueba sea correcto.</p>
<p>Cierto que las pruebas de integración son más lentas que las unitarias en ejecución, pero son igualmente automatizables (en raras ocasiones el desarrollo de un módulo va por delante del desarrollo de sus dependencias), y, puesto que los diseños detallados (al menos en nuestro país) brillan por su ausencia, dan una mejor idea del estado global de completitud del proyecto, pues aportan imformación, aunque se parcial, de la funcionalidad desarrollado hasta el momento.</p>
<p>Además, las pruebas de integración presentan una ventaja: las entradas y resultados obtenidos debe tener, al menos, consistencia lógica desde el punto de vista funcional, mientras que las unitarias suelen ser mucho más abstractas.</p>
<p><strong>Conclusión</strong></p>
<p>Ejecutar las pruebas unitarias mínimas necesarias para asegurar una robustez acorde a la criticidad de las aplicaciones desarrolladas. Para todo lo demás, de integración y funcionales.</p>
<p>Vía | <a href="http://stevesmithblog.com/blog/unit-test-or-integration-test-and-why-you-should-care/">Unit Test or Integration Test and Why You Should Care</a></p>
]]></content:encoded>
			<wfw:commentRss>http://psdm.co/2012/01/diferencias-entre-pruebas-unitarias-y-de-integracion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Errores comunes en las pruebas de software</title>
		<link>http://psdm.co/2012/01/errores-comunes-en-las-pruebas-de-software/</link>
		<comments>http://psdm.co/2012/01/errores-comunes-en-las-pruebas-de-software/#comments</comments>
		<pubDate>Wed, 18 Jan 2012 14:56:25 +0000</pubDate>
		<dc:creator>heavymetaldroid</dc:creator>
				<category><![CDATA[Testing]]></category>
		<category><![CDATA[errores]]></category>
		<category><![CDATA[errores comunes]]></category>
		<category><![CDATA[pruebas]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[sw]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://psdm.co/?p=33</guid>
		<description><![CDATA[Los desarrolladores son cada vez más conscientes de la importancia del testing en el SW. Sin embargo, la mayoría de proyectos siguen teniendo deficiencias en este aspecto. Veamos algunos de los errores más comunes y una aproximación a enfoques más adecuados, desde el punto de vista del testing. Pruebas Unitarias Raras veces se escriben pruebas [...]]]></description>
			<content:encoded><![CDATA[<p>Los desarrolladores son cada vez más conscientes de la importancia del testing en el SW. Sin embargo, la mayoría de proyectos siguen teniendo deficiencias en este aspecto. Veamos algunos de los errores más comunes y una aproximación a enfoques más adecuados, desde el punto de vista del testing.</p>
<p><strong><span id="more-33"></span>Pruebas Unitarias</strong></p>
<p>Raras veces se escriben pruebas unitarias, por el coste de desarrollo y mantenimiento, y, cuando se hace, el enfoque suele ser incorrecto. Habitualmente se escribe pruebas en que se pasan unos argumentos y se comprueba si el resultado es correcto.</p>
<p>Este tipo de pruebas normalmente cubre los casos positivos, quizás también algunos de los negativos, desde un punto de vista lógico. Pero, ¿qué ocurre con las &#8220;excepciones&#8221;?</p>
<p>Es importante tratar los valores límite. Si los argumentos son objetos, probar, por ejemplo, que el comportamiento es correcto cuando pasamos un puntero nulo.</p>
<p>Una buena idea sería pedir a un desarrollador que haga las pruebas unitarias de un módulo desarrollado por otro, dándole a conocer sólo los interfaces. Con esto:</p>
<ul>
<li>las pruebas no están sesgadas por conocimientos de &#8220;caja blanca&#8221;;</li>
<li>detectamos si la especificación de un interfaz no es auto-explicativa (lo cual crearía problemas de mantenimiento).</li>
</ul>
<p><strong>Mocks: stubs, drivers, simuladores&#8230;</strong></p>
<p>Problema: testing de módulos de &#8220;alto nivel&#8221;, cuando los de bajo nivel no han sido probados.</p>
<p>Desarrollar simuladores &#8220;ad hoc&#8221; no suele ser buena idea, porque están fuertemente acoplados, son poco mantenibles. Existen frameworks que ayudan a independizar los stubs utilizados del código.</p>
<p>En mi experiencia profesional, la mejor solución es utilizar los módulos originales, siempre que éstos estén implementados. Por supuesto, se tienen que haber probado siguiendo la jerarquía de dependencias. En otro caso, no se puede asegurar que los errores se deban a los módulos bajo prueba.</p>
<p><strong>Tests de Integración</strong></p>
<p>Si se sigue mi consejo del párrafo anterior, los tests de integración estarán prácticamente cubiertos, siempre que el enfoque se haya hecho a la funcionalidad por módulos, y no por unidad de compilación.</p>
<p>Estos tests son muy importantes porque deben asegurar que cada paquete, como caja cerrada, funciona correctamente. Como ejemplo podemos tomar una aplicación que accede a DB mediante Hibernate. Las pruebas de integración asegurarían que el paquete correspondiente ejecutan las operaciones CRUD correctamente, <em>from end to end</em>. Pero nada más.</p>
<p>Para este tipo de pruebas sería conveniente una especificación en formato &#8220;tablas de datos de entrada&#8221;, que permita una ejecución independiente de la implementación, o al menos permita una adaptación rápida, a través de, por ejemplo, una herramienta que actúe como puente. [El autor del artículo original cita la lectura de una hoja Excel, utilizando la clase XlsDataSet de DbUnit. Esto es sólo un ejemplo.]</p>
<p><strong>Tests Funcionales</strong></p>
<p>Evidentemente, la automatización de los tests funcionales es costosa. Pero el coste de mantenimiento y ejecución, si no se automatizan, es mucho mayor.</p>
<p>Existen montones de frameworks que pueden ayudarnos a automatizar las pruebas, herramientas que permiten incluso grabar una secuencia de eventos de usuario para repetirlos posteriormente.</p>
<p>En este punto, es importante estructurar y ordenar bien la ejecución, crear, no solo tests, sino test suites, favoreciendo la reutilización. Como ejemplo, el test &#8220;apertura de sesión&#8221; puede ser reutilizado en todas las operaciones (modificación de datos personales, compra de algún artículo, etc.) que tenga como requisito previo que el usuario esté logado.</p>
<p>Además, deben probarse los flujos lógicos de ejecución, no solo las operaciones individuales que pueden efectuarse. Los interesados tienen mucho que decir en este punto. Es un error muy común que el desarrollador siga unos pasos de ejecución diferentes a los que un usuario considera lógicos.</p>
<p><strong>Diseño orientado al comportamiento <a href="http://en.wikipedia.org/wiki/Behavior_Driven_Development">BDD</a></strong></p>
<p>A menudo los tests tienen una orientación excesivamente técnica. Si se han identificado correctamente los interesados y la especificación funcional es bastante completa, puede hacerse una buena aproximación al diseño final a través de la descripción del comportamiento que debe tener el sistema frente a las acciones del usuario. De aquí resulta sencillo inferir las pruebas, y, a partir de estas, pasar a un diseño técnico y una implementación dirigida por los tests: <a href="http://en.wikipedia.org/wiki/Test-driven_development">TDD</a>.</p>
<p>Vía | <a href="http://glenndejaeger.wordpress.com/2012/01/12/7-mistakes-in-software-testing/">about:software development</a></p>
]]></content:encoded>
			<wfw:commentRss>http://psdm.co/2012/01/errores-comunes-en-las-pruebas-de-software/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

