<?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>Blog do Andre Fonseca &#187; teste</title>
	<atom:link href="http://metronus.com/blog/tag/teste/feed/" rel="self" type="application/rss+xml" />
	<link>http://metronus.com/blog</link>
	<description>blog sobre tecnologia, automação e idéias em geral</description>
	<lastBuildDate>Thu, 15 Jul 2010 21:51:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Pyccuracy &#8211; Uma boa ferramenta de teste. Coloque-a na sua maleta</title>
		<link>http://metronus.com/blog/2010/03/12/pyccuracy-uma-boa-ferramenta-de-teste-coloque-a-na-sua-maleta/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://metronus.com/blog/2010/03/12/pyccuracy-uma-boa-ferramenta-de-teste-coloque-a-na-sua-maleta/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 23:37:43 +0000</pubDate>
		<dc:creator>Andre</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[codigo]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[pyccuracy]]></category>
		<category><![CDATA[teste]]></category>

		<guid isPermaLink="false">http://metronus.com/blog/?p=362</guid>
		<description><![CDATA[Ultimamente, no meu emprego atual, tenho a oportunidade de usar um excelente framework de testes de aceitação brasileiríssimo que é o pycurracy . Ele é uma ferramenta feita em python que permite que você escreva suas histórias de aceitação em linguagem natural. Isso significa dizer, que você pode escreve o seu teste em português. Não preciso [...]]]></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%2Fmetronus.com%2Fblog%2F2010%2F03%2F12%2Fpyccuracy-uma-boa-ferramenta-de-teste-coloque-a-na-sua-maleta%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fmetronus.com%2Fblog%2F2010%2F03%2F12%2Fpyccuracy-uma-boa-ferramenta-de-teste-coloque-a-na-sua-maleta%2F&amp;source=aoqfonseca&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Ultimamente, no meu emprego atual, tenho a oportunidade de usar um excelente framework de testes de aceitação brasileiríssimo que é o <a href="http://www.pyccuracy.org/index.html">pycurrac</a>y . Ele é uma ferramenta feita em python que permite que você escreva suas histórias de aceitação em linguagem natural. Isso significa dizer, que você pode escreve o seu teste em português.</p>
<p>Não preciso dizer o quanto isso traz de vantagem. Só para citar, uma das mais imediatas, pelo menos para mim, é a questão da documentação.  Quem já está na estrada um tempo, sabe como é uma verdadeira luta manter documentações atualizadas do produto.  Tudo sempre começa bem, mas com o passar do tempo, sempre surgem outras tarefas mais urgentes e os &#8220;casos de uso&#8221;  ou histórias acabam ficando não condizentes com a realidade da aplicação.  Para muitos, isso pode soar como preciosismo porém imagine um contexto de um projeto open source&#8230; sem uma documentação bem feita, colaborar pode ficar bem difícil.</p>
<p>Um outro aspecto também é que desenvolvedores &#8220;não são muito amigos&#8221; de escrever documentos. Esta aí uma tarefa que vejo poucos colegas fazerem com prazer. Se puderem evitar, a grande maioria em minha humilde opinião,  evitarão fazê-lo.</p>
<p>Ferramentas como o <a href="http://www.pyccuracy.org/index.html">pyccuracy</a>, vem unir o &#8220;útil ao agradável&#8221;: vem possibilitar escrever testes, programando, e como resultado indireto obter uma excelente fonte para consultas.  Por permitir escrever os cenários  em linguagem natural (inglês e português) acabamos por ter um documento descrevendo o funcionamento esperado&#8230; as nossas histórias.</p>
<p>O pyccurace é todo feito em python usando o <a href="http://seleniumhq.org/projects/">Selenium</a> .  Para maiores detalhes recomendo uma visita a página do projeto.</p>
<p>A única coisa que tenho a dizer sobre ele é que bem que poderia ter uma implementação que usasse o WebDriver ao invés do Selenium RC. Acredito que ficaria bem mais rápido. Mas, até agora só temos versões estáveis do WebDriver para Java. A versão python está bem timida ainda.</p>
]]></content:encoded>
			<wfw:commentRss>http://metronus.com/blog/2010/03/12/pyccuracy-uma-boa-ferramenta-de-teste-coloque-a-na-sua-maleta/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>usando o webdriver para fazer testes de aceitação</title>
		<link>http://metronus.com/blog/2010/01/27/usando-o-webdriver-para-fazer-testes-de-aceitacao/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://metronus.com/blog/2010/01/27/usando-o-webdriver-para-fazer-testes-de-aceitacao/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 19:12:31 +0000</pubDate>
		<dc:creator>Andre</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[agil]]></category>
		<category><![CDATA[atualidades]]></category>
		<category><![CDATA[selenium]]></category>
		<category><![CDATA[teste]]></category>
		<category><![CDATA[webdriver]]></category>

		<guid isPermaLink="false">http://metronus.com/blog/?p=350</guid>
		<description><![CDATA[A pouco tempo consegui um brecha com ajuda da minha colega Arlene para implantarmos no projeto que estou trabalhando teste automatizados.  Com a carta de alforria em mãos partimos para pesquisar no mercado qual seria a melhor que se encaixaria em nosso contexto de aplicação.  Para que entenda,  trabalhamos com desenvolvimento de portal usando a ferramenta Lumis [...]]]></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%2Fmetronus.com%2Fblog%2F2010%2F01%2F27%2Fusando-o-webdriver-para-fazer-testes-de-aceitacao%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fmetronus.com%2Fblog%2F2010%2F01%2F27%2Fusando-o-webdriver-para-fazer-testes-de-aceitacao%2F&amp;source=aoqfonseca&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>A pouco tempo consegui um brecha com ajuda da minha colega Arlene para implantarmos no projeto que estou trabalhando teste automatizados.  Com a carta de alforria em mãos partimos para pesquisar no mercado qual seria a melhor que se encaixaria em nosso contexto de aplicação.  Para que entenda,  trabalhamos com desenvolvimento de portal usando a ferramenta <a href="http://www.lumis.com.br">Lumis </a>(eu trabalho na Lumis!!!).  Portais são aplicações bastante difíceis de serem testadas de forma automática; devido a questão do conteúdo dinâmico e pouco previsível não existe muita margem para que busque por padrões.</p>
<p>Com estas limitações em mãos, acabamos nos deparando com a api <a href="webdriver.googlecode.com/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">WebDriver</a> . A um tempo atrás eu já tinha mexido um pouco com o <a href="seleniumhq.org/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">selenium </a>e adorei. Com isso, tentei achar algo que se assemelhasse a ele mas que me facilitasse a vida em relação a portais ( não tem muito como usar ids dos elementos no html, url não fixas, etc) . O webdriver, ao contrário do selenium, não é um javascript que executa dentro de uma página simulando a navegação&#8230; o webdriver é realmente um &#8220;envelope&#8221; em cima do seu navegador.  No caso do Firefox ele é uma extensão, no caso do Internet Explorer (blargh) ele usa as chamadas de control que ele proporciona, e por ai vai. Com isso, os teste ficam mais próximos da realidade de uso do usuário, e a api para escrever  os cenários mais simples.  Veja o trecho:</p>
<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">WebDriver driver = new FirefoxDriver();<br />
driver.get(&quot;http://localhost:8080/&quot;);<br />
HomePage homePage = new HomePage(webDriver);<br />
String valor = homePage.searchFirstItemforMoreRead();</div></td></tr></tbody></table></div>
<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">import java.util.List;<br />
<br />
import org.openqa.selenium.By;<br />
import org.openqa.selenium.WebDriver;<br />
import org.openqa.selenium.WebElement;<br />
<br />
public class HomePage &nbsp;extends Page {<br />
private static final String PAGE_TITLE = &quot;teste&quot;;<br />
<br />
public HomePage(WebDriver driver){<br />
super(driver,PAGE_TITLE);<br />
}<br />
<br />
public AdminPage navegateToAdministration(){<br />
webDriver.navigate().to(this.composeUrl(&quot;admin&quot;));<br />
return new AdminPage(webDriver);<br />
}<br />
<br />
public String searchOneTextOfDestaque3(){<br />
return this.webDriver.findElement(By.xpath(&quot;//div[@class='destaques3']/h5/a&quot;)).getText();<br />
}<br />
<br />
public String searchFirstItemforMoreRead(){<br />
return this.webDriver.findElement(By.xpath(&quot;//div[@class='aba_conteudo ativo']/ol[@class='mais_lidas']/li[@class='item1']/a/span&quot;)).getText();<br />
}<br />
<br />
public List searchDestaque3Texts(){<br />
return this.webDriver.findElements(By.xpath(&quot;//div[@class='destaques3']/h5/a&quot;));<br />
}<br />
<br />
}</div></td></tr></tbody></table></div>
<p>Pelo exemplo acima fica fácil de ver o quão fácil é criar um teste em webdriver.  Recomendo experimentar</p>
]]></content:encoded>
			<wfw:commentRss>http://metronus.com/blog/2010/01/27/usando-o-webdriver-para-fazer-testes-de-aceitacao/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Mais um pouco sobre testes automatizados</title>
		<link>http://metronus.com/blog/2010/01/27/mais-um-pouco-sobre-testes-automatizados/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://metronus.com/blog/2010/01/27/mais-um-pouco-sobre-testes-automatizados/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 18:59:56 +0000</pubDate>
		<dc:creator>Andre</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[atualidades]]></category>
		<category><![CDATA[automação]]></category>
		<category><![CDATA[bdd]]></category>
		<category><![CDATA[teste]]></category>

		<guid isPermaLink="false">http://metronus.com/blog/?p=348</guid>
		<description><![CDATA[Se você é um leitor assíduo do meu blog, já deve ter percebido o quanto gosto de testes automatizados. Não só gosto como acredito neles e no retorno que eles proporcionam. Sempre que tenho a oportunidade procuro &#8220;vender esse peixe&#8221;. O interessante é que com isso acabei escutando alguns exageros que chegam a ser engraçados. [...]]]></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%2Fmetronus.com%2Fblog%2F2010%2F01%2F27%2Fmais-um-pouco-sobre-testes-automatizados%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fmetronus.com%2Fblog%2F2010%2F01%2F27%2Fmais-um-pouco-sobre-testes-automatizados%2F&amp;source=aoqfonseca&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Se você é um leitor assíduo do meu blog, já deve ter percebido o quanto gosto de testes automatizados. Não só gosto como acredito neles e no retorno que eles proporcionam. Sempre que tenho a oportunidade procuro &#8220;vender esse peixe&#8221;. O interessante é que com isso acabei escutando alguns exageros que chegam a ser engraçados.  Um exemplo foi após uma conversa em que até rolou uma  sessão de codificação em par com a pessoa, no final, ela soltou a seguinte pérola :&#8221;<em>Agora então não preciso mais do pessoal de teste</em>&#8220;.  Opa! Devagar com o andor que o santo é de barro, meu amigo.</p>
<p>Antes que concorde com isso,  deixa eu mostra meu ponto de vista.  Teste automatizados ajudam muito e realmente tornam a vida do desenvolvedor e do cliente melhores.  Torna a vida do desenvolvedor mais fácil quando permite que ele faça seus testes rapidamente e detecte um erro o mais cedo o possível.  Para o cliente significa que a automação mais testes podem ser executados num tempo menor e com isso mais qualidade com menor custo.  Mas e a história do cara de teste, onde entra? Calma.  Para automatizar os testes devemos fazer algumas considerações e escolhas.  Para facilitar o que quero ilustrar, imagine um portal. Portais são aplicações webs muito interessantes, pois a cada acesso o seu comportamento pode mudar e isso não é necessariamente um erro.  Por isso, testes automatizados, em ambientes como estes são bem complicados de serem feitos e levam a gente a fazer algumas &#8220;adaptações&#8221;. Com isso,  os teste acabam validando parte das coisas e logo, ainda temos a necessidade de uma pessoa testando.  Entretanto, agora, essa pessoa não precisa estar testando tudo e qualquer coisa. Ele pode focar um pouco mais, realizando apenas verificações pontuais.</p>
<p>Outra frase que sempre escuto é a questão do recurso e gastos.  Geralmente quando converso com os gerentes sobre testes &#8211; principalmente os ditos PMI &#8211; eles quase que instantaneamente dizem que isto é inviável e trabalhoso. Bom, primeiro devemos definir o contexto:  se imaginarmos os famosos &#8220;<em>cowboys</em>&#8220;, rapaziada que desenvolve a culhão e não teste se o objeto que eles estão pegando é nulo, realmente testes automatizados são trabalhosos, pois não fazem nenhum.  Para aqueles que pretendem o mínimo de qualidade, dá para dizer que, realmente, NO INÍCIO,  testes automatizados demandam mais tempos, mais se olharmos ao longo da linha tempo esse custo se dilui e tende a zero. Isso porque, após todos os casos criados, o trabalho será de executá-los e mantê-los atualizados.  Fora que, imagine o custo de pessoas, máquinas, tempo,  para que a cada alteração que um desenvolvedor fizesse na aplicação, toda ela fosse retestada.</p>
<p>Enfim,  caso ainda não acredite em mim quando digo que ferramentas de testes são legais e estão aí para nos ajudar,  experimente e tire suas próprias conclusões. Duvido, sendo você empresário, gerente pmi, coordenador, desenvolvedor, cliente, etc no final não ficará pelo menos tentado a usar algum no seu próximo projeto.</p>
]]></content:encoded>
			<wfw:commentRss>http://metronus.com/blog/2010/01/27/mais-um-pouco-sobre-testes-automatizados/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>O bom, o feio e o mal em desenvolvimento &#8211; parte 1 &#8211; testes automatizados</title>
		<link>http://metronus.com/blog/2010/01/11/o-bom-o-feio-e-o-mal-em-desenvolvimento-parte-1-testes-automatizados/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://metronus.com/blog/2010/01/11/o-bom-o-feio-e-o-mal-em-desenvolvimento-parte-1-testes-automatizados/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 15:05:48 +0000</pubDate>
		<dc:creator>Andre</dc:creator>
				<category><![CDATA[Informática]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[atualidades]]></category>
		<category><![CDATA[automatizar]]></category>
		<category><![CDATA[bdd]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[teste]]></category>

		<guid isPermaLink="false">http://metronus.com/blog/?p=318</guid>
		<description><![CDATA[Conversando com um colega do trabalho, discutíamos sobre a questão dos testes automatizados. Confesso, que nessa altura dos acontecimentos de TI, esse assunto estaria mais que esgotado, porém para minha surpresa, existe gente que ainda insiste dizer que é &#8220;perda de tempo&#8221; e outros termos menos lisonjeiros. Esse colega me contou de um projeto onde [...]]]></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%2Fmetronus.com%2Fblog%2F2010%2F01%2F11%2Fo-bom-o-feio-e-o-mal-em-desenvolvimento-parte-1-testes-automatizados%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fmetronus.com%2Fblog%2F2010%2F01%2F11%2Fo-bom-o-feio-e-o-mal-em-desenvolvimento-parte-1-testes-automatizados%2F&amp;source=aoqfonseca&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<div id="_mcePaste"><img class="alignleft" title="bom, feio e mal" src="http://i.s8.com.br/images/dvds/cover/img4/1027174_4.jpg" alt="" width="300" height="300" />Conversando com um colega do trabalho, discutíamos sobre a questão dos testes automatizados. Confesso, que nessa altura dos acontecimentos de TI, esse assunto estaria mais que esgotado, porém para minha surpresa, existe gente que ainda insiste dizer que é &#8220;perda de tempo&#8221; e outros termos menos lisonjeiros.</div>
<div></div>
<div id="_mcePaste">Esse colega me contou de um projeto onde existiam diversos problemas e que o cliente estava bastante insastifeito, entre outras coisas, com a qualidade das entregas. Isso porque, segundo o próprio cliente, várias vezes as alterações feitas ocasionavame na quebra de funcionamento em outras partes que aparentemente não tinham relação com a mudança pedida.</div>
<div id="_mcePaste">Quem um dia já trabalho com portais, por exemplo, sabe a encrenca que isso é: páginas, conteúdo dinâmico, caches primários e secundários, gestão de conteúdo instâncias de serviços, etc. Com isso, o entrelaçamento das coisas  é enorme e qualquer alteração implica, considerando situação ideal, no teste de todo o portal. Testar o portal inteiro significa, para uma pessoa, horas e até dias de trabalho (se considerarmos portais de notícias como o G1 e o R7). Agora imagina testar todo o portal a cada commit que for feito&#8230; impossível né! não quando automatizamos nossos testes ao invés de delegar isso para uma pessoa.</div>
<div></div>
<div id="_mcePaste">Antes que comecem o apedrejamento em praça pública de minha pessoa, não estou dizendo para demitir toda a sua equipe de testes (os famosos homologadores). Estou dizendo que as coisas podem ser feitas com um pouco mais de inteligência e maior valor agregado para o cliente.</div>
<div id="_mcePaste">Voltando a história do meu amigo, devido a questões de negócio, optaram por não &#8220;gastar&#8221; tempo em criar testes automatizados e o cliente se prontificou em testar tudo que era feito através de sua equipe interna de testadores profissionais. Nem preciso dizer que esta é a raiz da insatisfação do cliente com o quesito qualidade do projeto. Fazendo uso de um ditado popular : &#8220;Cão com muito dono ou nenhum, morre de fome de sede&#8221; .</div>
<div id="_mcePaste"></div>
<div>Nessa história, quem tomava a decisão estava com uma visão antiga e com prazo de validade vencido sobre a questão de testes. Eles realmente acreditaram ( e acreditam &#8211; daqui a pouco chego lá) que investir em automatizar testes é custo e não investimento.  Esqueceram de considerar a qualidade&#8230; pensaram somente que precisavam colocar no ar o mais rápido o possível o sistema e os &#8220;fins justificariam os meios empregados&#8221;. Eles já estão pagando o preço pela péssima escolha, mas como todo &#8220;cego opcional&#8221; eles, pasmem vocês, não querem que &#8220;percamos&#8221; tempo em fazer esses bobeiras e culpam os desenvolvedores de todos os erros chamando-nos de incompetentes.</div>
<div></div>
<div id="_mcePaste">A minha resposta para este conhecido foi simples: mude de emprego. Faltou alguém de visão no projeto para entender que teste nunca é demais. Testes automatizados são um ganho e não perda de tempo. Vejam que nem estou falando em TDD, estou apenas considerando os testes !!!!</div>
<div></div>
<div id="_mcePaste">Quando &#8220;cercamos&#8221; nossas as aplicações testes, no mínimo estamos tentando protejar a consistencia da aplicação, evitando que mudanças quebrem-na. Claro que esse testes poderiam ser feitos por uma pessoa, mas imagine o custo (dinheiro mesmo !!!! tempo!!!) para que isso fosse feito num tempo hábil e com um retorno rápido para o desenvolvedor&#8230; Teste automatizados garantem isso. Sua aplicação pode ser testado o tempo todo e com isso, mesmo pequenas alterações levam a testar o todo verificando se a integridade não foi quebrada.</div>
<div></div>
<div id="_mcePaste">Isso, apesar de no começo representar mais trabalho, no final, gera um valor agregado imenso pois as coisas são entregues quando realmente estão prontas e com uma qualidade minima. Caso ainda queiram passar pela equipe de homologação, essa ficará livre para testar os requisitos e não se campo numérico aceita string.</div>
<div></div>
<div id="_mcePaste">Na literatura corrente, e por isso não foi me extender mais, existem diversos livros, artigos, blogs, textos, twitter, etc mostrando e provando porque devemos usar testes automatizados. Porém, me assusta o fato de ainda existirem gerentes, diretores e donos de empresa que consideram isso perda de tempo. Para estes a previsão é sombria. O mercado está aquecido por isso qualquer &#8220;bundão&#8221; consegue vender algo. Haverá um momento de retração e nova expansão e aí, somente quem estiver pronto, ágil e preparado sobreviverá&#8230; e não acredito que esses caras que eu citei estarão preparados.</div>
<div></div>
<div id="_mcePaste">Bem isso, até a próxima.</div>
]]></content:encoded>
			<wfw:commentRss>http://metronus.com/blog/2010/01/11/o-bom-o-feio-e-o-mal-em-desenvolvimento-parte-1-testes-automatizados/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Documentar é preciso e faz bem</title>
		<link>http://metronus.com/blog/2009/09/26/documentar-e-preciso-e-faz-bem/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://metronus.com/blog/2009/09/26/documentar-e-preciso-e-faz-bem/#comments</comments>
		<pubDate>Sat, 26 Sep 2009 14:02:07 +0000</pubDate>
		<dc:creator>Andre</dc:creator>
				<category><![CDATA[Informática]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[agil]]></category>
		<category><![CDATA[codigo]]></category>
		<category><![CDATA[bdd]]></category>
		<category><![CDATA[documentação]]></category>
		<category><![CDATA[teste]]></category>
		<category><![CDATA[uml]]></category>

		<guid isPermaLink="false">http://metronus.com/blog/?p=212</guid>
		<description><![CDATA[Esses dias li um e-mail numa lista de discussão que participo onde a pessoa perguntava como ela deveria fazer para documentar um projeto que ele desenvolveu sozinho. Ainda segundo ele, a ideia é de permitir que num futuro próximo um novo desenvolvedor possa trabalhar no sistema sem traumas e com uma curva de aprendizado rápida. [...]]]></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%2Fmetronus.com%2Fblog%2F2009%2F09%2F26%2Fdocumentar-e-preciso-e-faz-bem%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fmetronus.com%2Fblog%2F2009%2F09%2F26%2Fdocumentar-e-preciso-e-faz-bem%2F&amp;source=aoqfonseca&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Esses dias li um e-mail numa lista de discussão que participo onde a pessoa perguntava como ela deveria fazer para documentar um projeto que ele desenvolveu sozinho. Ainda segundo ele, a ideia é de permitir que num futuro próximo um novo desenvolvedor possa trabalhar no sistema sem traumas e com uma curva de aprendizado rápida.</p>
<p><a href="http://borboletasaoluar.blogspot.com/2008/05/idade-mdia-os-monges-e-o-progresso_31.html"><img class="alignright" style="margin-top: 12px; margin-bottom: 12px; margin-left: 11px; margin-right: 11px;" title="Imagem de monges escribas da epoca medieval" src="http://i10.photobucket.com/albums/a134/andyluna/Medieval/livros03.jpg" alt="" width="255" height="335" /></a></p>
<p>Antes de tentar responder a pergunta, acredito seja necessário entender a diferença entre análise e documentação.  Muitas pessoas que trabalham com  criação de softwares, acabam confundindo documentar com analisar.  Essa dúvida é normal pois muitas &#8220;ferramentas&#8221; e &#8220;métodos&#8221; também se apresentam como opção de documentação, ou o contrário : coisas que deveriam ser usadas para documentar são usadas para fazer análise ( e até acabam com uma má fama sem terem culpa disso &#8211; puro mal uso). Um exemplo disso, no meu ponto de vista, é o uml : Muitos usam a UML com o propósito de analisar e modelar. Ela até foi criada com esse intuito pois, quando foi concebida  era bastante custoso codificar e alterar o código feito (lembre-se dos cartões perfurados, cobols da vida, etc) mas hoje isso já não é válido (com linguagens modernas, codificar é rápido e alterá-lo mais ainda). Voltando, UML, <strong>no meu ponto de vista</strong>, é muito mais documentativa do que modelagem.  Seus diagramas tem um ótimo apelo de representar graficamente um sistema e como diz um ditado: &#8220;Uma imagem vale por mil palavras&#8221;.</p>
<p><a href="http://www.luli.com.br/2009/03/31/a-retomada-do-humano/"><img class="alignleft" src="http://www.etsy.com/storque/media/articles/2009/03/3699-toiletpaperHEad.jpg" alt="" width="203" height="193" /></a>Um outro mito a ser desfeito, insisto, no meu ponto de vista, é de que documentar não agrega valor. Por mais que ninguém diga isso, por mais que ninguém escreva isso, por mais que ninguém assuma isso, muitos de nós considera o ato de documentar como uma atividade secundária, e com isso, delegamos para que outros façam ou, em piores casos, nem o fazemos. A questão que ninguém escreve um sistema para si e, na maioria dos casos, não fazemos isso sozinhos.  Outro ponto é que, possivelmente, não ficaremos para o resto de nossa vidas com aquele projeto, passaremos para outros desafios e aquele sistema deverá ser cuidado por outro pessoa que não necessariamente participou da equipe que o desenvolveu. Tal fato, implica em ter que forma esse pessoa de forma que ela possa dar continuidade ao aplicativo sem comprometer a qualidade dele (estou assumindo que seja aqueles projetos onde temos testes automatizados, linguagens bem expressivas, etc). Logo, tendo todo esse contexto em mente, fica fácil mostrar que documentar, no mínimo, é evitar dores de cabeça futuras.</p>
<h2><a href="http://sejadivina.files.wordpress.com"><img class="alignnone" src="http://sejadivina.files.wordpress.com/2008/06/duvida.jpg" alt="" width="98" height="53" /></a>Mas, enfim, como documentar?</h2>
<p>A pergunta poderia ser redigida da seguinte forma para ter mais sentido para nós : Como podemos documentar sem que isso seja uma atividade secundária e agregue mais valor ao sistema? .  A maioria das linguagens modernas oferecem recursos, bastante interessantes, que podem responder essas perguntas. Em Java, nós temos o recurso básico do JavaDoc (comentários em formato especiais que são colocados no código fonte. Depois, através de ferramenta exportamos para um html), em .NET (csharp) temos algo parecido, e por ai segue. Embora isso já seja algo que ajude, considero insuficiente como documentação pois, quem irá ler não terá uma visão do funcionamento ou do comportamento do sistema.</p>
<p>Nesse contexto de comportamento e funcionamento que entram a ajuda primordial dos teste automatizados. Um efeito secundário dos testes automatizados (tanto os teste unitários quando os testes de comportamento) é de, se bem escritos e de grande abrangência,  eles acabam sendo uma boa fonte de consulta para o entendimento da aplicação.  Existe, inclusive, frameworks de teste de comportamento (Behavior Tests) que permitem que se escrevam de forma literal facilitando ainda mais o seu uso como documentação, como por exemplo o Cucumber (Ruby), <a href="http://www.pyccuracy.org/">Pyccuracy</a> ( espero ter escrito certo &#8211; Python), etc.</p>
<p><img class="alignright" style="margin: 12px;" src="http://apologo.blogs.sapo.pt/arquivo/201%20-%20o%20diario%20original%20de%20Nina%20blog.jpg" alt="" width="183" height="161" />Por fim, eu pessoalmente, acredito que um bom diário de bordo também ajuda bastante. Um diário de bordo, consiste, em algo parecido com um blog ( pode até ser um blog), em que vou escrevendo o dia a dia do desenvolvimento tentando retratar as decisões não técnicas e situações vencidas pela equipe de forma que a pessoa que irá trabalhar com o sistema no futuro tenha também uma visão do por que de certas escolhas, do sentimento da equipe naquele momento, etc.</p>
]]></content:encoded>
			<wfw:commentRss>http://metronus.com/blog/2009/09/26/documentar-e-preciso-e-faz-bem/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
