terça-feira, 29 de setembro de 2009

Desenvolvimento Orientado a Testes (TDD)



Test-Driven Development (TDD) ou Desenvolvimento Orientado a Testes é uma maneira diferente de escrever software. A diferença entre esta abordagem e a que você provavelmente está acostumado é que com TDD você vai evoluindo seu código aos poucos, conforme vai explorando o problema com o uso de testes automatizados escritos antes da solução sequer existir.
Algumas vantagens desta abordagem são:

  • Incentiva a simplicidade: como a solução vai surgindo pouco a pouco, a tendência é que não se perca tempo com aquilo que não tem certeza que será usado em seguida. Expressões como “You Ain’t Gonna Need It (YAGNI)” e “Keep It Simple, Stupid (KISS)” são recorrentes quando se está programando orientado a testes.
  • Aumenta a confiança no código: o sistema funciona de uma determinada maneira porque existem testes que foram utilizados durante sua criação e validam o que foi criado. E se ainda assim algum erro surgir, um novo teste é criado para reproduzí-lo e garantir que depois de solucionado ele não irá se repetir.
  • Ajuda como documentação: os testes quando bem definidos são mais simples de ler que o código e, embora nem sempre sirvam como uma especificação para o usuário final, eles são uma fonte eficiente para entender o que o software faz. Além disso, esta documentação sempre estará atualizada com a aplicação.
  • Facilita refactorings: quanto mais testes existem no sistema, maior é a segurança para fazer refactorings. Um erro causado por algum refactoring dificilmente vai passar desapercebido quando um ou mais testes falharem após a mudança.
Em TDD, um teste é um pedaço de software. A diferença entre teste e o código que está sendo produzido é que os testes têm 2 funções principais:
  • De especificação, ou seja, definir uma regra que seu software deve obedecer
  • De validação, ou seja, verificar que a regra é obedecida pelo software
Geralmente os testes são criados com algum framework do tipo xUnit (jUnit, nUnit Test::Unit etc) , mas também podem ser feitos num nível de funcionalidades (através de softwares como o FitNesse e Selenium) . Estas ferramentas servem basicamente para organizar os testes e facilitar na criação das verificações.
O processo de criação de programação orientado a testes é simples:
  1. Escreva um teste que falhe. Pense no que o código deve fazer, descreva o contexto e defina quais são as verificações que precisam ser feitas. Não há um limite no número de testes, então quanto menos coisa cada teste descrever/verificar, melhor. No início também não é preciso se preocupar se a classe/método ainda não existe. Pense primeiro no teste e só depois que este estiver pronto crie o esqueleto de código necessário para que ele compile e falhe ao rodar.
  2. Faça o teste passar. Agora chegou o ponto crucial: escreva o mínimo de código para que o teste passe. Controle o instinto natural do programador de tentar prever tudo que o código vai fazer e apenas faça o teste passar. Mesmo que tenha certeza que o código deve fazer mais coisas, fazer os testes passarem deve ser a única preocupação agora.
  3. Refatore. Uma vez que o teste passou, verifique o que no código pode ser melhorado. Geralmente para um teste passar é preciso inserir duplicação através de constantes (técnica conhecida como Fake It). Agora é a hora de melhorar o código e remover as duplicações, lembrando que os testes devem continuar passando.
Estes 3 passos são repetidos até que não se consiga pensar em novos testes, o que indica que a funcionalidade está pronta.

terça-feira, 15 de setembro de 2009

Bandidos Digitais


Seguradora alerta que criminosos caçam vítimas pelo Facebook e Twitter
SYDNEY, 28 de agosto (Reuters) – Usuários do Facebook entusiasmados com a chegada do feriado ou com um aparelho de alta tecnologia recém comprado podem não apenas estar contando aos amigos, mas também a potenciais assaltantes, alerta uma seguradora.


Um pesquisa com 2.092 usuários de mídia social realizada pela empresa britânica Legal & General descobriu que quase quatro a cada 10 pessoas que utilizam sites de rede social, ou 38 por cento, publicam detalhes de planos para o feriado, e 33 por cento informações sobre um final de semana fora de casa.


“Juntamente com a descoberta de que uma proporção alarmante de usuários está preparada para ser contato de pessoas que na verdade não conhecem, isso apresenta um sério risco à segurança da casa e dos pertences do indivíduo”, afirma a seguradora.


Em um relatório entitulado “O Criminoso Digital”, a Legal & General informa que as pessoas usam sites de mídia social para se conectar com outras que são essencialmente desconhecidas, o que pode fornecer informação vital para potenciais ladrões.


Para testar quão rapidamente as pessoas aceitam “amigos” online, a pesquisa, conduzida pela Opinion Matters, envolveu o envio de 100 solicitações a estranhos selecionados por acaso.


Dentre o total, uma proporção de 13 por cento aceitou o convite no Facebook e 92 por cento no Twitter, sem qualquer checagem.


Mas além destes novos “amigos”, o levantamento descobriu que quase dois terços, ou 64 por cento, daqueles com idade entre 16 e 24 anos compartilham seus planos para o feriado, com os usuários mais jovens mais suscetíveis a fornecer dados sobre os planos de viagem.


Segundo a pesquisa, os homens são bem relaxados sobre dar informações online, com 13 por cento incluindo o número do celular no perfil, contra 7 por cento das mulheres. Nove por cento deles também divulgou o endereço, enquanto apenas quatro por cento das mulheres o fizeram.


“Essa reação pode resultar em um completo estranho obtendo detalhes sobre interesses, localização e movimentos da pessoa dentro e fora de casa”, sustenta a Legal & General.
Fonte: Tecnologia Uol

sexta-feira, 11 de setembro de 2009

Hash Tag, Re-Twitting, Direct Messages


Com a febre do Twitter alguns termos acabaram ganhando popularidade e apesar de existir uma infinidade de materiais a esse respeito, muitas pessoas ainda desconhecem alguns destes termos. Pensando nisso, aki vão algumas definições sobre o Twitter e seus termos técnicos: 


Twitter - guia básico 


o Twitter é um sistema de mensagens participante do conceito “Web 2.0″. É definido como um microblog. Ele é um site que contém o seu status atual, desde que você atualize-o com pequenas mensagens, e então seus amigos seguem você e você também pode segui-los, é como um messenger off line. É útil para acompanhar desenvolvedores, professores, jornalistas e principalmente amigos. 
 .
Funcionamento

O Twitter funciona assim, você tem um perfil lá, como no Orkut, no Facebook, só que bem mais simples e objetivo, aí então você busca perfis que deseja “seguir”, isto é, quando encontra um perfil que deseja acompanhar você clicar em follow (seguir em Inglês) e pronto! Você receberá todas as atualizações deste perfil que você está seguindo na sua página (home).

Se por acaso este perfil que você seguiu for seu amigo e passar a te seguir também, aí então vocês poderam trocar Direct Messages (Mensagens Diretas), que são mensagens enviadas secretamente para o perfil que você escolher, tornando o Twitter uma espécie de chat e messenger offline. Para enviar Direct Messages use a letra D seguida do nome do usuário sem o @, exemplo:  D shdo Esta mensagem é particular!
 
Usuários, perguntas e respostas

No Twitter todos os usuários possuem os nomes de usuários (UserNames). Dica: coloque um nome de usuário (UserName) curto, pois como as mensagens no Twitter só aceitam 140 caracteres é uma boa economia de caracteres um nome de usuário curtinho.
Os nomes de usuários são usados para direcionar a mensagem que você envia para quem você quer perguntar ou responder, por exemplo:  @shdo O que acha do Twitter?

Repassando mensagens (Re-Twitting)

Se você gosta de uma mensagem que alguém mandou e você quer replicá-la no seu perfil para que seus amigos também a vejam você então usa as siglas RT (Re-Twitting), por exemplo:  RT @shdo O que acha do Twitter?
 
Hash Tags (palavras-chave)

Hash Tags são palavras chave precedidas do caracter sustenido “#”, então quando você quer direcionar sua mensagem para um determinado assunto você usa a palavra precedida de um # (sustenido), lembre-se que tags devem ser sempre em minúsculas e sempre uma única palavra e como não pode conter espaços, se houver você junta as palavras, por exemplo: A Campus Party ocorre de 25 a 31 de janeiro de 2010 #cparty  #campusparty #campuspartybrasil.

As tags são muito uteis quando você deseja que algum responsável por determinado assunto ou mesmo quem acompanha tal tag se dê conta do que foi dito, por exemplo: #linux #gnu Novo Fedora acaba de sair!

Existem tags que já são famosas também como #fail, para indicar falha ou erro em alguma coisa, por exemplo: Meu celular não está funcionando #fail

Outra bem popular é #partiu, para dizer que foi embora, saiu para algum lugar: indo para São Paulo #partiu

E #rimuito para dizer que encontrou ou leu alguma coisa engraçada em um link ou texto, exemplo:  Quem não tem banda larga, caça com modem. #rimuito

Eventos também usam as tags para deixar os participantes por dentro do que está acontecendo por exemplo, se você acompanhar a tag #fisl10, irá acompanhar as notícias sobre o Fórum Internacional de Software Livre, se acompanhar a tag #cparty, verá notícias sobre a Campus Party.

Para acompanhar uma tag basta buscá-lo no espaço de busca do Twitter.


Sugerindo usuários para serem seguidos

Para sugerir um usuário que você está seguindo para outros usuários use a tag #followfriday, por exemplo, para sugerir que os usuários @shdo e o @shdoblog sejam seguidos envie:  #followfriday @shdo @shdoblog


é isso ai pessoal ... até o próximo post.