<?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"
	>

<channel>
	<title>anselmo alves</title>
	<atom:link href="http://www.anselmoalves.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.anselmoalves.com</link>
	<description>Deliver yesterday, code today, think tomorrow.</description>
	<pubDate>Tue, 15 Dec 2009 19:32:09 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Testes de aceitação automáticos para Flash com T-Plan Robot (VNCRobot)</title>
		<link>http://www.anselmoalves.com/2009/10/28/t-plan-robot/</link>
		<comments>http://www.anselmoalves.com/2009/10/28/t-plan-robot/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 04:22:03 +0000</pubDate>
		<dc:creator>Anselmo Alves</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Firefox]]></category>

		<category><![CDATA[Flash]]></category>

		<category><![CDATA[Flash Vídeo]]></category>

		<category><![CDATA[Globo Vídeos]]></category>

		<category><![CDATA[Globo.com]]></category>

		<category><![CDATA[Java]]></category>

		<category><![CDATA[Open source]]></category>

		<category><![CDATA[Testes]]></category>

		<category><![CDATA[Testes de aceitação]]></category>

		<category><![CDATA[Vídeo]]></category>

		<guid isPermaLink="false">http://www.anselmoalves.com/?p=13</guid>
		<description><![CDATA[Finalmente, conseguiremos resolver um problema que há quase 2 anos assombra alguns desenvolvedores da globo.com, incluindo eu mesmo. Encontramos uma ferramenta de testes de aceitação automático flexível, open source, gratuita, black box e bem documentada, para testar SWF.
O T-Plan Robot é um VNC client, e pode se conectar a um computador remoto através da rede, [...]]]></description>
			<content:encoded><![CDATA[<p>Finalmente, conseguiremos resolver um problema que há quase 2 anos assombra alguns desenvolvedores da <a href="http://globo.com/" target="_blank">globo.com</a>, incluindo eu mesmo. Encontramos uma ferramenta de <a href="http://gc.blog.br/2007/09/26/voce-automatiza-seus-testes-de-aceitacao/">testes de aceitação automático</a> flexível, open source, gratuita, black box e bem documentada, para testar <a href="http://en.wikipedia.org/wiki/SWF">SWF</a>.</p>
<p>O <!-- InstanceBeginEditable name="Page text" --><a href="http://www.t-plan.com/tplan_robot.html">T-Plan Robot</a> é um <a href="http://www.realvnc.com/">VNC client</a>, e pode se conectar a um computador remoto através da rede, controlando os inputs de mouse e teclado programaticamente, e implementa testes baseados em imagens, o que o torna flexível o suficiente para testar não apenas <a href="http://en.wikipedia.org/wiki/SWF">SWFs</a>, mas qualquer outro tipo de aplicação com interface gráfica.</p>
<p>A ferramenta grava scripts, a partir da navegação do usuário pela interface no sistema operacional (bem parecido com que o <a href="http://seleniumhq.org/">Selenium</a> faz, por exemplo, <a href="http://www.anselmoalves.com/2008/05/07/selenium-ide-xpather-firebug/">usando um plugin Firefox</a>), em seu script próprio ou em Java, como o que eu fiz abaixo: </p>
<pre name="code" class="java">

/**
 * Generated on Tue Oct 27 21:39:52 BRST 2009
 * T-Plan Robot v2.0.Beta (Build No. 2.0.Beta-20091014.1)
 * Default Java Converter version 2.0.0
 */
package teste;

import com.tplan.robot.ApplicationSupport;
import com.tplan.robot.AutomatedRunnable;
import com.tplan.robot.scripting.
	DefaultJavaTestScript;
import com.tplan.robot.scripting.JavaTestScript;
import java.awt.Point;
import java.io.File;
import java.io.IOException;

public class MyTest extends DefaultJavaTestScript
	implements JavaTestScript {

	public void test() {
		try {
			// Mouse move to=x:43,y:30 wait=200
			mouseMove(new Point(43, 30), &quot;200&quot;);
			// Mouse click to=x:43,y:30 wait=1100
			mouseClick(new Point(43, 30), &quot;1100&quot;);
			// Compareto &quot;tela.bmp&quot;
			compareTo(new File[] {
					new File(&quot;tela.bmp&quot;) });
			// Mouse click to=x:190,y:116
			mouseClick(new Point(190, 116));
		} catch (IOException ex) {
			ex.printStackTrace();
		}

	}

	public static void main(String args[]) {
		MyTest test = new MyTest();
		ApplicationSupport robot =
			new ApplicationSupport();
		AutomatedRunnable t = robot.
			createAutomatedRunnable(test, &quot;javatest&quot;,
				new String[] { &quot;&#8211;connect&quot;,
					&quot;10.2.66.72:5902&quot;, &quot;&#8211;password&quot;,
						&quot;globocom&quot; }, System.out,
						false);
		new Thread(t).start();
	}
}
</pre>
<p>Com isso, é possível integrá-lo à sua suite de testes automatizados!</p>
<p>Ainda levaremos um certo tempo para estudar a extensa documentação e aprender a tirar o máximo do T-Plan Robot. A partir de agora, iniciaremos o esforço de rodar testes do <a href="http://video.globo.com/">nosso player</a> em vários sistemas operacionais virtualizados, com várias versões de <a href="http://get.adobe.com/flashplayer/">Flash Player</a>. Isso sem dúvida resultará em um aumento substancial da quantidade de entregas relacionadas ao player, já que eliminará o enorme tempo gasto atualmente com testes manuais e nos dará confiança.</p>
<p>Agradeço em nome de todos nós especialmente ao <a href="http://www.vimeo.com/zed9h">Carlo &#8220;zED&#8221; Caputo</a> por ter perseguido junto conosco a solução desse problema e ter sugerido experimentarmos essa ferramenta para implementação dos testes no <a href="http://video.globo.com/">nosso player de vídeo Flash</a>, e também ao <a href="http://programandosemcafeina.blogspot.com/">Tiago Motta</a>, por ter sido bem insistente em me passar os testes preliminares do<!-- InstanceBeginEditable name="Page text" --> T-Plan Robot, que eu finalmente pude terminar hoje. O próprio zED, em 2007, em apenas um dia, implementou uma ferramenta com o mesmo propósito e princípio. Infelizmente, apesar da excelente iniciativa, não recebeu apoio para amadurecê-la e interrompeu o projeto. Na época, ele já conhecia o<!-- InstanceBeginEditable name="Page text" --> T-Plan Robot, mas ainda não atendia a nossa necessidade.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.anselmoalves.com/2009/10/28/t-plan-robot/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Módulo Nginx para seek em vídeos H.264</title>
		<link>http://www.anselmoalves.com/2009/04/24/modulo-nginx-seek-videos-h264/</link>
		<comments>http://www.anselmoalves.com/2009/04/24/modulo-nginx-seek-videos-h264/#comments</comments>
		<pubDate>Fri, 24 Apr 2009 05:49:01 +0000</pubDate>
		<dc:creator>Anselmo Alves</dc:creator>
		
		<category><![CDATA[Apache]]></category>

		<category><![CDATA[Globo Vídeos]]></category>

		<category><![CDATA[Globo.com]]></category>

		<category><![CDATA[H.264]]></category>

		<category><![CDATA[Lighttpd]]></category>

		<category><![CDATA[Nginx]]></category>

		<category><![CDATA[Open source]]></category>

		<category><![CDATA[Server]]></category>

		<category><![CDATA[Vídeo]]></category>

		<category><![CDATA[Seek]]></category>

		<category><![CDATA[Vídeos]]></category>

		<guid isPermaLink="false">http://www.anselmoalves.com/?p=11</guid>
		<description><![CDATA[ O José Peleteiro comentou comigo hoje a respeito de um módulo de seek de vídeo H.264 progressive download para o Nginx (pronuncia-se &#8216;engine X&#8217;). Fiz um teste deste módulo, o mod_mp4_streaming_lite, com vídeos transcodificados com o profile usado atualmente na plataforma de vídeos da globo.com. O teste foi feito com a versão pública do [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://www.anselmoalves.com/nginx-logo.png' alt='nginx logo' width=280 class='alignright' /> O <a href="http://www.peleteiro.net/">José Peleteiro</a> comentou comigo hoje a respeito de um módulo de seek de vídeo <a href="http://en.wikipedia.org/wiki/H.264">H.264</a> progressive download para o <a href="http://nginx.net/">Nginx</a> (pronuncia-se &#8216;engine X&#8217;). Fiz um teste deste módulo, o <a href="http://wiki.nginx.org/NginxMP4StreamingLite">mod_mp4_streaming_lite</a>, com vídeos transcodificados com o profile usado atualmente na plataforma de vídeos da <a href="http://www.globo.com">globo.com</a>. O teste foi feito com a <a href="http://wiki.nginx.org/NginxMP4StreamingLite">versão pública do módulo</a> - <a href="http://wiki.nginx.org/NginxMP4StreamingLite">distribuída com a licença GNU</a> - compilado com a versão <a href="http://www.nginx.eu/download/sources/nginx-0.7.21.tar.gz">0.7.21</a> do <a href="http://nginx.net/">Nginx</a>, bem como com a <a href="http://h264.code-shop.com/trac/wiki/Mod-H264-Streaming-Introduction-Version2">versão 2</a>, esta compilada com a versão mais recente do Nginx, a <a href="http://sysoev.ru/nginx/nginx-0.7.52.tar.gz">0.7.52</a>. A versão 2, além de ser oferecida para outros servers, como o Apache, Lighttpd e inacreditavelmente IIS, é capaz de trabalhar com uma variedade maior de arquivos de vídeo mp4. Para ir a um dado momento do vídeo, basta passar o parâmetro &#8217;start&#8217; na URI com o instante desejado em segundos:</p>
<p><code>wget "http://h264.code-shop.com:8080/trailer2.mp4"</code><br />
<code>wget "http://h264.code-shop.com:8080/trailer2.mp4?start=45.5"</code></p>
<p>O seek funcionou com ambas as versões do módulo para os vídeos da <a href="http://www.globo.com">globo.com</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.anselmoalves.com/2009/04/24/modulo-nginx-seek-videos-h264/feed/</wfw:commentRss>
<enclosure url="http://h264.code-shop.com:8080/trailer2.mp4" length="43678263" type="video/mp4" />
<enclosure url="http://h264.code-shop.com:8080/trailer2.mp4?start=45.5" length="29371895" type="video/mp4" />
		</item>
		<item>
		<title>Instalando Haskell (GHC 6.10) no Slackware 12.1</title>
		<link>http://www.anselmoalves.com/2009/02/11/haskell-ghc-slackware/</link>
		<comments>http://www.anselmoalves.com/2009/02/11/haskell-ghc-slackware/#comments</comments>
		<pubDate>Wed, 11 Feb 2009 21:48:32 +0000</pubDate>
		<dc:creator>Anselmo Alves</dc:creator>
		
		<category><![CDATA[GNU Linux]]></category>

		<category><![CDATA[Haskell]]></category>

		<category><![CDATA[Linguagens de programação]]></category>

		<category><![CDATA[Open source]]></category>

		<category><![CDATA[Slackware]]></category>

		<guid isPermaLink="false">http://www.anselmoalves.com/?p=9</guid>
		<description><![CDATA[Após instalar o GHC 6.10 tive o seguinte problema ao tentar rodar tanto o compilador Haskell ghc quanto o ambiente interativo ghci:
/opt/ghc/ghc: error while loading shared libraries: libedit.so.0: cannot open shared object file: No such file or directory
Essa library não é instalada por padrão no Slackware. Então, resolvi esse problema baixando-a e procedendo da seguinte [...]]]></description>
			<content:encoded><![CDATA[<p>Após instalar o <a href="http://www.haskell.org/ghc/" target="_blank">GHC 6.10</a> tive o seguinte problema ao tentar rodar tanto o compilador <a href="http://www.haskell.org/" target="_blank">Haskell</a> ghc quanto o ambiente interativo ghci:</p>
<blockquote><p>/opt/ghc/ghc: error while loading shared libraries: libedit.so.0: cannot open shared object file: No such file or directory</p></blockquote>
<p>Essa <a href="http://sourceforge.net/projects/libedit/" target="_blank">library</a> não é instalada por padrão no Slackware. Então, resolvi esse problema <a href="http://sourceforge.net/projects/libedit/" target="_blank">baixando-a</a> e procedendo da seguinte maneira:</p>
<p><code>$ ./configure --prefix=/usr; make; make install</code></p>
<p>Se tudo der certo, temos então o arquivo <strong>libedit.so</strong> no diretório /usr/lib. Mas o ghc procura pela library pelo nome <strong>libedit.so.0</strong>. Então, crie um link simbólico para o arquivo e tente rodar o ghc novamente.</p>
<p><code>$ ln -s /usr/lib/libedit.so /usr/lib/libedit.so.0</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.anselmoalves.com/2009/02/11/haskell-ghc-slackware/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Sun Tech Days 2008 in Sampa</title>
		<link>http://www.anselmoalves.com/2008/09/28/sun-tech-days-2008-in-sampa/</link>
		<comments>http://www.anselmoalves.com/2008/09/28/sun-tech-days-2008-in-sampa/#comments</comments>
		<pubDate>Sun, 28 Sep 2008 16:51:12 +0000</pubDate>
		<dc:creator>Anselmo Alves</dc:creator>
		
		<category><![CDATA[Eventos]]></category>

		<category><![CDATA[Java]]></category>

		<category><![CDATA[Linguagens de programação]]></category>

		<category><![CDATA[Sun]]></category>

		<guid isPermaLink="false">http://www.anselmoalves.com/?p=8</guid>
		<description><![CDATA[Nos dias 29 e 30 de setembro de 2008 terei a oportunidade de estar no Sun Tech Days 2008 em São Paulo, junto com o pessoal da globo.com. Acredito que será uma ótima oportunidade de rever alguns amigos de lá e de conhecer novos colegas além de, é claro, aprender coisas novas durante o evento.
]]></description>
			<content:encoded><![CDATA[<p>Nos dias 29 e 30 de setembro de 2008 terei a oportunidade de estar no <a href="http://www.suntechdays.com.br/std/" target="_blank">Sun Tech Days 2008 em São Paulo</a>, junto com o pessoal da <a href="http://www.globo.com" target="_blank">globo.com</a>. Acredito que será uma ótima oportunidade de rever alguns amigos de lá e de conhecer novos colegas além de, é claro, aprender coisas novas durante o evento.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.anselmoalves.com/2008/09/28/sun-tech-days-2008-in-sampa/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Globo Vídeos para iPhone/iPod touch</title>
		<link>http://www.anselmoalves.com/2008/09/26/globo-videos-para-iphone-ipod-touch/</link>
		<comments>http://www.anselmoalves.com/2008/09/26/globo-videos-para-iphone-ipod-touch/#comments</comments>
		<pubDate>Fri, 26 Sep 2008 03:32:58 +0000</pubDate>
		<dc:creator>Anselmo Alves</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Browser]]></category>

		<category><![CDATA[Flash Vídeo]]></category>

		<category><![CDATA[Globo Vídeos]]></category>

		<category><![CDATA[Globo.com]]></category>

		<category><![CDATA[H.264]]></category>

		<category><![CDATA[Linguagens de programação]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Safari]]></category>

		<category><![CDATA[Scrum]]></category>

		<category><![CDATA[Vídeo]]></category>

		<category><![CDATA[iPhone/iPod]]></category>

		<guid isPermaLink="false">http://www.anselmoalves.com/?p=7</guid>
		<description><![CDATA[É com orgulho que anuncio, no dia do lançamento do iPhone no Brasil, o lançamento da versão iPhone/iPod touch do Globo Vídeos.
A infraestrutura e o site estavam prontos desde maio e o seu desenvolvimento se deu em aproximadamente 1 mês pela nossa equipe agile de Tecnologia WebMedia. Além de oferecer vídeos no formato H.264 para [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" style="float: right;" src="http://anselmoalves.com/globovideosiphone.gif" alt="Globo Vídeos iPhone" width="200" />É com orgulho que anuncio, no dia do lançamento do iPhone no Brasil, o lançamento da <a href="http://m.video.globo.com" target="_blank">versão iPhone/iPod touch do Globo Vídeos</a>.</p>
<p>A infraestrutura e o site estavam prontos desde maio e o seu desenvolvimento se deu em aproximadamente 1 mês pela nossa equipe agile de Tecnologia WebMedia. Além de oferecer vídeos no formato H.264 para o QuickTime, o site apresenta uma interface otimizada para o Safari Mobile, aproveitando vários recursos legais desses dispositivos.</p>
<p>Além disso, possibilitamos que iPhones/iPods toquem vídeos nas versões clássicas dos sites que possuem o nosso player embed, incluindo o <a href="http://video.globo.com" target="_blank">Globo Vídeos</a>. Como o Safari Mobile não suporta Flash, quando acessado a partir de um desses dispositivos, o nosso player agora é exibido em uma versão não-Flash, servindo formato de vídeo H.264 em vez do flv normalmente oferecido.</p>
<p><img style="vertical-align: bottom;" src="http://anselmoalves.com/globovideos.png" alt="Globo Vídeos" width="480" height="300" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.anselmoalves.com/2008/09/26/globo-videos-para-iphone-ipod-touch/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Mudando as regras do jogo</title>
		<link>http://www.anselmoalves.com/2008/08/04/mudando-as-regras-do-jogo/</link>
		<comments>http://www.anselmoalves.com/2008/08/04/mudando-as-regras-do-jogo/#comments</comments>
		<pubDate>Mon, 04 Aug 2008 14:56:29 +0000</pubDate>
		<dc:creator>Anselmo Alves</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Scrum]]></category>

		<guid isPermaLink="false">http://www.anselmoalves.com/?p=5</guid>
		<description><![CDATA[Quantos daily meetings deve haver por sprint? Este trecho retirado do livro Agile Project Management with Scrum sugere que deve haver um daily meeting por dia de sprint.
The Team members have two administrative responsibilities during the Sprint: they are to attend the Daily Scrum meeting, and they are to keep the Sprint Backlog up-to-date and [...]]]></description>
			<content:encoded><![CDATA[<p>Quantos daily meetings deve haver por sprint? Este trecho retirado do livro <a href="http://www.amazon.com/Agile-Project-Management-Microsoft-Professional/dp/073561993X/ref=pd_bbs_sr_1?ie=UTF8&#038;s=books&#038;qid=1217948458&#038;sr=1-1">Agile Project Management with Scrum</a> sugere que deve haver um daily meeting por dia de sprint.</p>
<blockquote><p>The Team members have two administrative responsibilities during the Sprint: they are to attend the Daily Scrum meeting, and they are to keep the Sprint Backlog up-to-date and available in a public folder on a public server, visible to all.</p></blockquote>
<p>Além do mais, o diagrama abaixo indica que deve haver daily meeting apenas em dias de sprint:<br />
<img src="http://www.anselmoalves.com/ciclo.png" alt="scrum" /><br />
O que acontece é que no último dia do sprint podem ainda existir estórias não finalizadas. Para que todas elas sejam colocadas no status done, alguns times costumam fazer um daily meeting extra no dia seguinte ao fim do sprint.</p>
<p>O ideal no Scrum é não iniciar uma estória enquanto outra ainda está em andamento - fazer item por item. Por outro lado, cada membro do time tem sua especialidade e pode escolher que tarefa irá fazer. Talvez um determinado membro queira assumir uma tarefa de uma outra estória que não a que está sendo trabalhada no momento, pulando tarefas da estória atual e quebrando assim essa regra. Qual é a coisa certa a fazer neste caso?</p>
<p>O que essas duas questões têm em comum? Ambas exploram as características empíricas e adaptivas do Scrum. Mas até que ponto as regras podem ser mudadas?</p>
<blockquote><p>If someone wants to change the rules, use the Sprint retrospective meeting as a forum for discussion. Rule changes should originate from the Team, not management. Rule changes should be entertained if and only if the ScrumMaster is convinced that the Team and everyone involved understands how Scrum works in enough depth that they will be skillful and mindful in changing the rules. No rules can be changed until the ScrumMaster has determined that this state has been reached.</p></blockquote>
<p>Eu acredito muito no que diz este trecho desse mesmo livro. Ele sugere que as regras podem ser livremente mudadas, desde que o desejo parta do <strong>time</strong> e que o <strong>time</strong> já entenda bem o processo. Isso serve para garantir, entre outras coisas, que mudanças nas regras não engessem o processo. Além disso, ao meu ver, quando o time já tem no sangue os princípios ágeis, dificilmente uma mudança representará um retrocesso. Somente quando o time atinge esse grau de maturidade, adaptações às regras podem e devem ser feitas.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.anselmoalves.com/2008/08/04/mudando-as-regras-do-jogo/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Aplicações web nativas - por que não?</title>
		<link>http://www.anselmoalves.com/2008/06/06/aplicacoes-web-nativas/</link>
		<comments>http://www.anselmoalves.com/2008/06/06/aplicacoes-web-nativas/#comments</comments>
		<pubDate>Fri, 06 Jun 2008 22:33:43 +0000</pubDate>
		<dc:creator>Anselmo Alves</dc:creator>
		
		<category><![CDATA[C++]]></category>

		<category><![CDATA[Linguagens de programação]]></category>

		<guid isPermaLink="false">http://www.anselmoalves.com/?p=3</guid>
		<description><![CDATA[Recentes discussões sobre desempenho e escalabilidade de sistemas me levaram a seguinte questão: por que não se fala em frameworks e sistemas web server-side compilados diretamente para assembly nativo? 
Este é um fenômeno curioso para mim, já que aplicações interpretadas (e até as compiladas para uma virtual machine), são menos performáticas. Quero que fique claro [...]]]></description>
			<content:encoded><![CDATA[<p>Recentes discussões sobre desempenho e escalabilidade de sistemas me levaram a seguinte questão: por que não se fala em frameworks e sistemas web server-side compilados diretamente para assembly nativo? </p>
<p>Este é um fenômeno curioso para mim, já que aplicações interpretadas (e até as compiladas para uma virtual machine), são menos performáticas. Quero que fique claro que não acredito que o uso de aplicações compiladas seja a solução para problemas de performance. Estas questões precisam ser primariamente endereçadas a <a href="http://blog.fragmental.com.br/2007/05/16/performance-x-pessoas-compensando-perdas-com-infra-estrutura/">melhorias arquiteturais e infraestruturais</a> desenhadas para cada aplicação particular. Apenas questiono o fato de nós desenvolvedores, na grande maioria dos casos, não considerarmos essa hipótese ao desenvolver uma aplicação web, ou mesmo como meio de otimizar sistemas específicos cuja performance é crítica. </p>
<p>Por exemplo, ainda que soluções Java tenham desempenho excelente em muitos casos, seria muito interessante e perfeitamente justificável, do meu ponto de vista, o desenvolvimento de um framework para C++ que suportasse um esquema semelhante à tecnologia Servlet do Java - sem as limitações de performance de programas CGI - entre outras soluções web consagradas, além de bibliotecas que facilitassem o desenvolvimento de aplicações C++ para web.</p>
<p> É claro que não podemos negar que existem vantagens interessantes oferecidas pelas linguagens interpretadas neste campo. Mas, honestamente, não entendo porque o simples ganho de performance oferecido por aplicações nativas ainda não resultou no surgimento de pelo menos um framework desse gênero consolidado e de uma comunidade de desenvolvedores que, assim como eu, são aficionados por desempenho. <img src='http://www.anselmoalves.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.anselmoalves.com/2008/06/06/aplicacoes-web-nativas/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Selenium IDE &#038;&#038; ( XPather &#124;&#124; Firebug )</title>
		<link>http://www.anselmoalves.com/2008/05/07/selenium-ide-xpather-firebug/</link>
		<comments>http://www.anselmoalves.com/2008/05/07/selenium-ide-xpather-firebug/#comments</comments>
		<pubDate>Wed, 07 May 2008 19:14:00 +0000</pubDate>
		<dc:creator>Anselmo Alves</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Browser]]></category>

		<category><![CDATA[C++]]></category>

		<category><![CDATA[Firefox]]></category>

		<category><![CDATA[Globo Vídeos]]></category>

		<category><![CDATA[Globo.com]]></category>

		<category><![CDATA[Testes]]></category>

		<category><![CDATA[Selenium]]></category>

		<category><![CDATA[Testes de aceitação]]></category>

		<guid isPermaLink="false">http://www.anselmoalves.com/?p=1</guid>
		<description><![CDATA[Neste post inaugural, vamos demonstrar uma maneira de facilitar o trabalho de implementar testes de aceitação automatizados usando a extension Firefox Selenium IDE. Para ilustrar, tente fazer com o Selenium algum tipo de ação ou asserção sobre algum dos links da parte inferior do site www.google.com, por exemplo. Basicamente, há duas opções neste caso: ou [...]]]></description>
			<content:encoded><![CDATA[<p>Neste post inaugural, vamos demonstrar uma maneira de facilitar o trabalho de implementar <a href="http://gc.blog.br/2007/09/26/voce-automatiza-seus-testes-de-aceitacao/" target="_blank">testes de aceitação automatizados</a> usando a extension Firefox <a href="http://selenium.openqa.org/" target="_blank">Selenium IDE</a>. Para ilustrar, tente fazer com o Selenium algum tipo de ação ou asserção sobre algum dos links da parte inferior do site <a href="http://www.google.com" target="_blank">www.google.com</a>, por exemplo. Basicamente, há duas opções neste caso: ou clicar no link (com o botão direito ou esquerdo do mouse) para registrar uma ação/asserção, o que faz com que o Selenium automaticamente escreva um trecho de script, ou você pode escrever o script na mão. A primeira opção tem uma desvantagem: o Selenium poderá gravar como identificador do link o texto do link. Se o texto deste link mudar freqüentemente no site, você não vai querer identificá-lo desta maneira. A segunda opção sempre permite que você faça essa identificação pelo posicionamento desse elemento na árvore DOM do documento, por XPath.</p>
<p>No screencast abaixo, vamos demonstrar como o uso de duas outras extensions Firefox, o <a href="https://addons.mozilla.org/en-US/firefox/addon/1192" target="_blank">XPather</a> e o <a href="https://addons.mozilla.org/en-US/firefox/addon/1843" target="_blank">Firebug</a>, ajudam a descobrir rapidamente os XPaths dos elementos ao escrever os scripts.</p>
<p>Obs.: É necessário acrescentar uma barra (/) no início do XPath gerado para que o Selenium entenda.</p>
<p>P.S.: o Firebug é indispensável para uma infinidade de outras coisas. Portanto, se você gostar do XPather, mantenha as duas extensions instaladas. <img src='http://www.anselmoalves.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<div class="flvPlayer">				<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="448" height="356"><param name="movie" value="https://media.dreamhost.com/mediaplayer.swf?file=http://www.anselmoalves.com/blog.flv&amp;autoStart=false;" /><param name="quality" value="high" /><param name="wmode" value="transparent" /><embed src="https://media.dreamhost.com/mediaplayer.swf?file=http://www.anselmoalves.com/blog.flv&amp;autoStart=false;" quality="high" wmode="transparent" width="448" height="356" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /><br />
				</object></div>
]]></content:encoded>
			<wfw:commentRss>http://www.anselmoalves.com/2008/05/07/selenium-ide-xpather-firebug/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
