<?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>Softqanetwork.com &#187; Test Cases</title>
	<atom:link href="http://www.softqanetwork.com/category/general/test-cases/feed" rel="self" type="application/rss+xml" />
	<link>http://www.softqanetwork.com</link>
	<description></description>
	<lastBuildDate>Tue, 07 Feb 2012 23:01:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>La problemática de clasificar &#8220;test cases&#8221; en pruebas concatenadas</title>
		<link>http://www.softqanetwork.com/la-problematica-de-clasificar-test-cases-en-pruebas-concatenadas</link>
		<comments>http://www.softqanetwork.com/la-problematica-de-clasificar-test-cases-en-pruebas-concatenadas#comments</comments>
		<pubDate>Wed, 07 May 2008 08:22:17 +0000</pubDate>
		<dc:creator>Juan Carlos Peláez</dc:creator>
				<category><![CDATA[Test Cases]]></category>
		<category><![CDATA[Add new tag]]></category>

		<guid isPermaLink="false">http://softqanetwork.com/?p=162</guid>
		<description><![CDATA[Nos encontramos con una aplicación donde las pruebas son una cadena consecutiva de pasos. como toda cadena, todo eslabón debe estar intacto, de lo contrario se pierde la naturaleza como tal de la cadena. Probar cada paso representa una carga de trabajo considerable en horas/hombre. Entonces, surge la idea de distribuir el trabajo entre varios [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.softqanetwork.com%2Fla-problematica-de-clasificar-test-cases-en-pruebas-concatenadas"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.softqanetwork.com%2Fla-problematica-de-clasificar-test-cases-en-pruebas-concatenadas&amp;source=softqanetwork&amp;style=normal&amp;hashtags=Add+new+tag&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><img class="alignleft alignnone size-medium wp-image-163" style="margin: 10px; float: left;" title="documento" src="http://softqanetwork.com/wp-content/uploads/2008/05/documento.gif" alt="" width="106" height="69" />Nos encontramos con una aplicación donde las pruebas son una cadena consecutiva de pasos. como toda cadena, todo eslabón debe estar intacto, de lo contrario se pierde la naturaleza como tal de la cadena.<br />
<o:p></o:p><br />
Probar cada paso representa una carga de trabajo considerable en horas/hombre. Entonces, surge la idea de distribuir el trabajo entre varios de los testers. Pero el problema no se resuelve, ya que &#8220;apriori&#8221; el tester B debe esperar (o duplicar trabajo) a que el tester A termine sus pruebas (entiéndase que A probará el eslabón de la cadena inmediatamente anterior al eslabón que B probará). Sólo un dato más: Hay que hacer un montaje (creación de datos de pruebas en las BBDD) previo al inicio de las pruebas.</p>
<p><span id="more-162"></span></p>
<p>Se me ocurren las siguientes opciones:</p>
<ol>
<li>Distribuir la tarea del montaje en la BBDD abarcando todas las casuísticas posibles</li>
<li>Tester A puede comenzar sus pruebas del primer eslabón, entrando a consultar y distinguir pormenores</li>
<li>Tester A debe dar el OK de un pre-testing de A finalizado y correcto (generación rápida y sin problemas en la estabilidad del eslabón primero)</li>
<li>Tester B comienza las pruebas del siguiente eslabón considerando que el o los eslabones anteriores son para él como una &#8220;black box&#8221;.</li>
<li>Tester B debe identificar posibles problemas cuya causa sean de montaje o de output de los procesos ejecutados en la caja negra.</li>
<li>Tester A debe identificar posibles complicaciones y nuevas consideraciones de pruebas a transmitir al tester B.</li>
<li>Tester X debe considerar toda la cadena como &#8220;black box&#8221;, con lo cual, lo que le importa es una entrada (montaje) y una salida (pantallas/reportes/documentos/etc.)</li>
</ol>
<p><o:p></o:p><br />
Alguna sugerencia o corrección?</p>
<p>Saludos,<br />
Juan Carlos Peláez</p>
]]></content:encoded>
			<wfw:commentRss>http://www.softqanetwork.com/la-problematica-de-clasificar-test-cases-en-pruebas-concatenadas/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Test Cases</title>
		<link>http://www.softqanetwork.com/test-cases</link>
		<comments>http://www.softqanetwork.com/test-cases#comments</comments>
		<pubDate>Thu, 19 Oct 2006 19:34:31 +0000</pubDate>
		<dc:creator>Javierpello</dc:creator>
				<category><![CDATA[Test Cases]]></category>

		<guid isPermaLink="false">http://softqanetwork.com/?p=25</guid>
		<description><![CDATA[Los casos de prueba (Tets Cases) se han utilizado tradicionalmente para probar cualquier sistema software o de cualquier otra cosa. El caso de prueba se puede transformar en una lista de comprobación, unas pautas paso a paso, fáciles de entender, que muestran la información mostrada por el sistema, o lo que se conoce como un [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.softqanetwork.com%2Ftest-cases"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.softqanetwork.com%2Ftest-cases&amp;source=softqanetwork&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><font face="Arial" size="2"><span style="color: #000000" id="b76">Los casos de prueba (Tets Cases) se han utilizado tradicionalmente para probar cualquier sistema software o de cualquier otra cosa. El caso de prueba se puede transformar en una lista de comprobación, unas pautas paso a paso, fáciles de entender, que muestran la información mostrada por el sistema, o lo que se conoce como un escenario de la caja negra (Black Box Testing). En todo caso, un caso de prueba es una representación pura de lo que debe y no debe hacer el sistema.</span></font></p>
<p><span id="more-25"></span></p>
<p><font face="Arial" size="2">Lo ideal es que nuestros casos de prueba, o test cases, estén basados en los requisitos especificados por el cliente o la persona que realiza la aplicación. Estos requisitos o especificaciones son escritos en un documento que se le suele conocer como <strong>Documento de Requisitos Funcionales</strong> o de <strong>Especificaciones Funcionales</strong>. Este documento especifica de una forma clara y concisa cómo el usuario quisiera que fuera el sistema o cómo él percibe que debería de ser. Las reglas de negocio se pueden también documentar como parte de este documento.</font></p>
<p><font face="Arial" size="2">Mucha gente puede discutir que sería más fácil probar directamente desde el documento de especificaciones en vez de crear un documento aparte de caso de prueba, puesto que la base de un caso de la prueba son las especificación funcionales o requisitos. Pero esto puede conllevar muchos riesgos, que a la larga hacen que el trabajo sea más laborioso y se dupliquen los esfuerzos del equipo de QA.</font></p>
<p><font face="Arial" size="2">Las especificaciones funcionales son la base de los casos de prueba (Test Cases) conjuntamente con los Diagramas de Flujo (Use cases), las reglas de negocio y algunas otras condiciones especiales.</font></p>
<p><font face="Arial" size="2">¿Como podemos entonces definir formalmente un caso de prueba? <strong>Un Caso de prueba es un conjunto específico de datos de entrada y de procedimientos asociados, desarrollados para probar un caso determinado (secuencia/camino particular, verificación de un requisito, etc)</strong>.</font></p>
<p><font face="Arial" size="2">Los casos de prueba deben ser documentados y archivados. Existen en el mercado gran multitud de herramientas que permiten gestionar un entorno de pruebas, asociando Requisitos con Use Case y Test Cases. Herramientas tales como el <strong>SilkPlan</strong> o el <strong>Test Director</strong> están disponibles en el mercado. Este tipo de herramientas son bastante caras, un forma más barata de controlar tus casos de prueba es usar el <strong>Visual Source Safe</strong> de Microsoft que es más asequible aunque no es realmente una herramienta pensada para gestionar un entorno de pruebas sino más bien es un controlador de versiones, pero nos puede servir, así como <strong>SubVersion</strong>, incluso mejor en algunos aspectos que SourceSafe, y además OpenSource.</font></p>
<p><font face="Arial" size="2">Pero, ¿cómo debemos escribir nuestros casos de prueba? Hay diferentes maneras de escribirlos y todas pueden ser perfectamente válidas pero debemos de tener en cuenta que un caso de prueba se deben siempre definir los pasos a seguir, definir el resultado esperado, comprobar si no hace lo que debe o hace lo que no debe (casos positivos y negativos) y tanto entras inválidas como entradas válidas. De esto modo reduciremos la probabilidad de la existencia de nuevos errores en una sección de la aplicación.<br />
</font><script type="text/javascript">llamadas[llamadas.length]= new Array("b82",127,127,127,255,255,255,6,6,6);</script><font face="Arial" size="2"><span style="color: #7f7f7f" id="b82"><br />
</span></font><script type="text/javascript">llamadas[llamadas.length]= new Array("b83",255,128,0,255,255,255,0,6,12);</script><font face="Arial" size="4"><span style="color: #ff8000" id="b83"><strong><br />
Diseño de casos de prueba</strong></span></font><script type="text/javascript">llamadas[llamadas.length]= new Array("b84",127,127,127,255,255,255,6,6,6);</script><font face="Arial" size="2"><span style="color: #7f7f7f" id="b84"><u><br />
</u></span></font><script type="text/javascript">llamadas[llamadas.length]= new Array("b77",0,0,0,255,255,255,12,12,12);</script><font face="Arial" size="2"><span style="color: #000000" id="b77">Cualquier producto de ingeniería puede probarse de dos formas:<br />
•	Conociendo la función específica para la que fue diseñado (pruebas de funcionalidad) (<strong>Pruebas de caja negra</strong>)<br />
•	Conociendo el funcionamiento del producto (pruebas de la operación interna a bajo nivel) (<strong>Pruebas de caja blanca</strong>)</span></font></p>
<p><font face="Arial" size="2">En software, las pruebas de caja negra son las que se llevan a cabo sobre la interfaz del software, examinando aspectos del modelo fundamental del sistema (funcionalidad operativa, aceptación de entradas, resultados, etc), mientras que las pruebas de caja blanca se basan en el estudio minucioso de detalles procedurales. A primera vista, una prueba de caja blanca nos llevaría a un programa 100% correcto, un software sin fallos,  pero nos encontramos con el problema de las pruebas completas (o exhaustivas). No podemos generar casos de prueba para todos los caminos lógicos (secuencias de ejecución).</font></p>
<p><font face="Arial" size="2">¿Qué solución tenemos? ¿Utilizarlo sólo para generar los casos de prueba más significativos (caminos o estructuras de datos más importantes)?. Dependiendo del tipo de software a probar, hay diferentes técnicas de hacer white box testing, la más comunes son mediante el uso de herramientas o scripts.</font></p>
<p><script type="text/javascript">llamadas[llamadas.length]= new Array("b85",127,127,127,255,255,255,6,6,6);</script><font face="Arial" size="2"><span style="color: #7f7f7f" id="b85"><br />
</span></font><script type="text/javascript">llamadas[llamadas.length]= new Array("b86",255,128,0,255,255,255,0,6,12);</script><font face="Arial" size="4"><span style="color: #ff8000" id="b86"><strong>Pruebas de Caja Blanca</strong></span></font><script type="text/javascript">llamadas[llamadas.length]= new Array("b87",127,127,127,255,255,255,6,6,6);</script><font face="Arial" size="2"><span style="color: #7f7f7f" id="b87"><u><br />
</u></span></font><script type="text/javascript">llamadas[llamadas.length]= new Array("b78",0,0,0,255,255,255,12,12,12);</script><font face="Arial" size="2"><span style="color: #000000" id="b78">¿Por qué utilizar pruebas de caja blanca? Los errores lógicos y las suposiciones incorrectas son inversamente proporcionales a la probabilidad de que se ejecute un camino del programa. A menudo creemos que un camino lógico tiene pocas posibilidades de ejecutarse cuando, de hecho, se puede ejecutar de forma regular. Los errores tipográficos son aleatorios. Una de las técnicas que describiremos en próximos artículos es el Testeo Estructural, selección adecuada de caminos, definiendo “Camino” como la secuencia de sentencias encadenadas desde la sentencia inicial del programa hasta su sentencia final.</span></font></p>
<p><font face="Arial" size="2">Puede parecer ilógico, pero tenemos que tener siempre en cuenta que no se pueden probar todos los caminos. Es por ello que debemos de usar un criterios de selección ó lo que alguna gente le gusta llamar un criterio de cobertura. Algunos tipos de cobertura:</font></p>
<p><font face="Arial" size="2"><strong>Cobertura de sentencias</strong><br />
Escribir los casos suficientes para que cada sentencia en el programa se ejecute al menos una vez.</font></p>
<p><font face="Arial" size="2"><strong>Cobertura de decisión o de ramificación</strong><br />
Escribir casos suficientes para que cada decisión, por lo menos una vez, tenga un resultado verdadero y uno falso.</font></p>
<p><font face="Arial" size="2"><strong>Cobertura de condición</strong><br />
Escribir el suficiente número de casos para que cada condición de toda decisión tenga todos los resultados posibles.</font></p>
<p><font face="Arial" size="2">En próximos artículos entraremos más en detalle de cómo obtener casos de prueba de caja blanca (White Box Testing), como por ejemplo pruebas de condición, pruebas de bucles o pruebas de flujos de datos.<br />
</font><script type="text/javascript">llamadas[llamadas.length]= new Array("b88",127,127,127,255,255,255,6,6,6);</script><font face="Arial" size="2"><span style="color: #7f7f7f" id="b88"></span></font></p>
<p><script type="text/javascript">llamadas[llamadas.length]= new Array("b89",255,128,0,255,255,255,0,6,12);</script><font face="Arial" size="4"><span style="color: #ff8000" id="b89"><strong>Pruebas de Caja Negra</strong></span></font><script type="text/javascript">llamadas[llamadas.length]= new Array("b90",127,127,127,255,255,255,6,6,6);</script><font face="Arial" size="2"><span style="color: #7f7f7f" id="b90"><u><br />
</u></span></font><script type="text/javascript">llamadas[llamadas.length]= new Array("b79",0,0,0,255,255,255,12,12,12);</script><font face="Arial" size="2"><span style="color: #000000" id="b79">Como habíamos dicho al comienzo del artículo, las pruebas de caja negra verifican las funcionalidad, a alto nivel, de nuestra aplicación. Por tanto podemos comenzar a diseñar nuestras pruebas de caja negra en cuanto se especifiquen los requisitos de la aplicación.</span></font></p>
<p><font face="Arial" size="2">Cada vez que se recibe una nueva versión del programa (Deploy ó Release), comprobamos cuándo es suficientemente estable para la batería de pruebas. Estás pruebas son conocidas como pruebas de aceptación (Acceptance Test) ó pruebas de calificación (Qualification Test). En este punto podríamos introducir un nuevo concepto, la priorización de nuestras pruebas. Debemos de saber identificar en que áreas del programa se va a confiar. Si el programa parece débil en un área, se probará más duramente y se planificará un mayor tiempo.<br />
</font></p>
]]></content:encoded>
			<wfw:commentRss>http://www.softqanetwork.com/test-cases/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

