quinta-feira, 28 de fevereiro de 2013

Imagens de Windows x IE gratuitas (ótimo para testar sites no IE)

Você sabia que pode utilizar uma ferramenta gratuita da Microsoft para testar sua aplicação web em diferentes browsers e versões do Windows?

Existem uma pagina de downloas chamada Internet Explorer Application Compatibility VPC Image que lista uma seria de maquinas virtuais com a configuração de browser x sistema operacional, onde voce pode encontrar a seguinte combinação:
  • Windows XP + IE 6
  • Windows Vista + IE 7
  • Windows 7 + IE 8
  • Windows 7 + IE 9
Cada arquivo que você baixar (no formato .exe) irá pedir uma pasta para descompactação do arquivo .vhd (imagem do Virtual PC), onde basta você abrir o Virtual PC e selecionar o arquivo .vhd descompactado.
Mas atenção: leia o arquivo .txt contido na extração, pois o mesmo possui as senhas de acesso para a VM.

Com essas imagens você consegue criar um ecossistema de VMs com as principais versões do Internet Explorer que ainda são utilizadas em mercado.

Observação: para instalar o Virtual PC, caso você não tenha, e necessário ter um Windows original, pois o mesmo passa pelo processo de verificação do Windows ;-)

[1] Virtual PC: http://www.microsoft.com/windows/virtual-pc/
[2] Internet Explorer Application Compatibility VPC Image: http://www.microsoft.com/en-us/download/details.aspx?id=11575

segunda-feira, 25 de fevereiro de 2013

Como aprender sobre Selenium (de forma gratuita ou paga)

Olá pessoal!
Recebo quase todos os dias e-mails de profissionais da área perguntando como eles podem aprender sobre Selenium e onde podem encontrar materiais.

Este post se destina a isso: como aprender Selenium de uma forma "gratuita" ou não!
Quando eu falo Selenium, na verdade estou falando de WebDriver (apesar de existirem pessoas que querem aprender sobre o Selenium IDE e vou citar isso, o foco maior é em WebDriver)

Aprendendo Selenium de forma gratuita
Atualmente, até onde eu sei, não existe nenhum treinamento gratuito sobre Selenium.
O aprendizado gratuito pode se dar através de:
  • Leitura da documentação
  • Leitura e entendimento da API
  • Prática
  • Apresentações
  • Desafios Selenium

Leitura da documentação
Existem duas documentações padrão do Selenium:
  • Através do site http://seleniumhq.org: neste site você pode acessar a 'aba' Documentation e ler realmente a documentação. Há muita coisa boa lá e realmente te dá uma boa base inicial


O ideal é você ler todos os documentos contidos no Wiki, mas estes itens acima já irão lhe dar um overview sobre o WebDriver


Leitura e entendimento da API
Com o WebDriver é inevitável: temos que programar/desenvolver nossos testes utilizando alguma linguagem de programação!
Logo é um pré-requisito que você conheça, pelo menos, o básico da liguagem de programação de sua escolha e que também saiba como ler a API (documentação das ferramentas/plugins/frameoworks) implementados em uma determinada linguagem.

Podemos visualizar abaixo a lista das linguagens de programação formalmente suportadas com WebDriver e o link de cada API (documentação):

Prática!
Para aprendermos qualquer ferramenta não tem jeito: temos que praticar!
Logo a prática é um elemento fundamental do nosso aprendizado.
Você pode praticar em diversos sites web, mas aqui vai minha recomendação:
  • Começe a praticar em sites/aplicações simples
  • NUNCA tente praticar automatizando o login do Gmail, Yahoo! e outros...
  • Utilizar CMS ou lojas virtuais open source para praticar é uam boa. Você pode praticar num Joomla, Prestashop, por exemplo

Apresentações
Sempre é bom dar uma "Googleada" para encontrar apresentações ou links.
Eu recomendo dar uma olhada no SlideShare, site que contém uma gama de apresentações publicadas e diversas sobre Selenium.

Desafios Selenium
Foi uma iniciativa que eu criei em 2011 lançando um problema real, onde o mesmo deve ser automatizado com Selenium IDE.
Os desafios possuem a resolução explicada em vídeo, o que facilita o entendimento.
Por enquanto eu tenho somente 5 desafios e todos com respostas para o Selenium IDE, porém logo em breve voltarei a postar mais desafios em ambos os formatos: Selenium IDE e WebDriver!


Aprendendo Selenium de forma paga
Obviamente sempre temos alternativas pagas! Geralmente esta alternativa foca mais no que cada um precisa aprender e dependendo da forma que você escolher, um curso por exemplo, você conseguirá (ou não, pois depende de você) tirar um maior proveito e resolver problemas e dúvidas que você possa ter. O aprendizado pago pode ser:
  • Através de Cursos
  • Através de Livros

Atavés de Cursos
Existem dois treinamentos sobre WebDriver (um que cobre Selenium IDE que eu conheço), que serão listados abaixo:

Treinamento de Selenium (IDE, RC, WebDriver) do Elias Nogueira (eu)
Há algum tempo eu dou treinamento sobre Selenium.
Os treinamentos são no formato EAD síncrono, traduzindo, são treinamentos via videoconferência ao vivo. O aluno acessa um link onde vê a tela do instrutor e segue suas instruções.

Atualmente o curso é dividido em 4 módulos:
  • Selenium IDE Básico
  • Selenium IDE Avançado
  • WebDriver Básico
  • WebDriver Integrações
Todos os exercícios cobrem as principais dúvidas e interações que faremos na "vida real". Os exercicios resolvidos no Selenium IDE e WebDriver são disponibilizados, bem como uma apostila e certificado de participação.

Para saber mais sobre o treinamento acesse: http://sembugs.blogspot.com.br/p/curso-de-selenium.html


Treinamento de WebDriver (em inglês) do Alan Richardson (EvilTester)
Um cara chamado Alan Richardson, mais conhecido como EvilTester (seu blog) criou um treinamento sobre WebDriver no site Udemy.
O treinamento são video-aulas em inglês que mostram como trabalhar com o WebDriver em diversos pontos:
  • Navegação
  • Suporte dos testes com JUnit
  • Locators
  • Interações
  • RemoteWebdriver
  • CI

Link do treinamento: https://www.udemy.com/selenium-2-webdriver-basics-with-java/


Através de Livros

Existem livros muito bacanas sobre Selenium, mas infelizmente para alguns estes livros são em inglês (pra quem não consegue ler livros em inglês ainda fica o incentivo para aprender!)



Livro: Selenium Simplified

Este livro é do mesmo autor do curso do Udemy que eu coloquei acima: Alan Richardson. Este livro sobre a utilização do Selenium RC/WebDriver utilizando Java e JUnit.
É muito parecido com o próprio treinamento que o autor tem, mas os itens cobertos no livro possuem mais detalhes.

Link da página do livro: http://www.compendiumdev.co.uk/selenium/





Livro: Selenium Testing Tools Cookbook

Este livro mostra, além do básico de programação com WebDriver, problemas reais e como resolvê-los.
Também apresenta como fazer integrações de ferramentas de BDD e ATDD, como executar testes no Selenium Grid, como capturar evidências e como executar testes em browsers de dispositivos móveis (Android e iOS)

Link da página do livro: http://www.packtpub.com/recipes-to-master-selenium-2-testing-tools-cookbook/book



Livro: Selenium 2 Testing Tools

Este livro é de autoria de um dos commiters do Selenium: David Burns. Neste livro o autor aborda todos os conceitos  básicos do WebDriver unidos a alguns Design Patters para ajudar o leitor a desenvolver melhor usando o WebDriver.

Link da página do livro: http://www.packtpub.com/selenium-2-testing-tools-beginners-guide/book






Espero que este post seja de grande ajuda aqueles que desejam iniciar o aprendizado do Selenium.
Qualquer dúvida ou sugestões de links, cursos e livros deixem um comentário neste post :-)

Abraços!


terça-feira, 5 de fevereiro de 2013

TDD - Test Driven Development para Testadores


Olá pessoal!
No dia 02/02/2013 eu tive o prazer de falar sobre TDD - Teste Driven Development no Campus Party Brasil 2013.

Nesta palestra abordei um conteúdo mais prático, que pode ser visto nos slides e também um exemplo guiado que está disponível no GitHub:
https://github.com/eliasnogueira/tdd-exemplo

Mais abaixo vou escrever os pontos mais importantes da apresentação.
Fica a dica para você:
  1. Ler o post
  2. Ver a apresentação
  3. Ver o projeto no GitHub
  4. Tentar executar o projeto do GitHub em casa.

Mas porque o Elias, um tester, deu palestra sobre TDD (que é de dev)?
Cada vez mais, na minha visão, o testador se faz um profissional cada vez mas técnico e polivalente (palavra bonita), mas que em poucas palavras quer dizer que o tester não precisa programar todo o dia usando TDD, mas precisa saber o que é como como utilizar essa técnica.



TDD - Test Driven Development from Elias Nogueira







 Se software fossem carros... como poderíamos garantir que tudo funciona? Se pensarmos um pouco no processo de criação de um carro temos uma infinidade de peças que devem, além de ser criadas por si só, devem funcionar com outras peças, resultado ao final um carro totalmente utilizável.

Pense que você precisa "testar um carro"... e guarde esse pensamento com você por enquanto.





 Mas quem testa? O desenvolvedor? Pelo que conhecemos de Teste de Software não!

No modelo que conhecemos o testador que executa esta atividade certo? Ele deve garantir que o sistema funciona depois que um ou mais funcionalidades foram desenvolvidas.





No modelo tradicional de desenvolvimento de software (cascata, e sim, eu apresentei um modelo cascata ao invés do RUP porque grande parte ainda desenvolve assim) temos as conhecidas fases do desenvolvimento, mas teste é a penúltima fase. Logo testar torna-se um processo que, além de oneroso, é muito caro!

Logo como garantir uma melhor entrega para testes com uma maior qualidade?






Uma técnica conhecida (deveria ser bem mais conhecida) e muito negligenciada por diversos fatores é o TDD - Test Driven Development, ou Desenvolvimento Orientado a Teste.

Com ele o próprio desenvolvedor (e seria muito legal se adicionássemos: "com a ajuda do testador") cria testes de um jeito diferente de programar e garantir que o que ele está desenvolvendo terá uma melhor qualidade.





Agora é interessante dar uma olhada na sequencia de slides que explica como desenvolver um código para converter os símbolos do número romano em símbolos.

Depois vale muito a pena olhar o projeto no GitHub e tentar segui-lo em sua máquina local: https://github.com/eliasnogueira/tdd-exemplo





O processo de desenvolvimento de uma funcionalidade ou aplicativo utilizando TDD é bem simples: primeiro criamos um teste que não passa, depois testamos refatorá-lo para que ele passe sempre, obviamente, penando na melhor e mais simples implementação naquele momento.

Se você notar todos os passos do projeto descrito no GitHub são guiados através de TDD.





E, obviamente, existem muitos benefícios em adotar esta técnica, onde um dos maiores benefícios são a simplicidade, feedback rápido e segurança.

Conseguimos ter uma bateria de testes de unidade criados sem grande esforço e já cobrindo boa parte da funcionalidade.

Assim o novo código criado já nasce testado!






Utilizando TDD conseguimos facilmente mostrar o ganho em tempo, onde desde o inicio o código sai testado e pronto para ser alterado (refatorado) ou usado por outro método/classe.

Se compararmos com o modelo tradicional, teríamos apenas testes no final do desenvolvimento de todo o código.





E, apenas para alinhar, TDD não é teste! TDD é uma técnica de design de código que ajuda, e muito o testa da aplicação/funcionalidade.

Embora o termo "teste" seja utilizado ao usar TDD estamos dando muito mais atenção ao design da classe/funcionalidade do que realmente teste.



A palestra possui vários insights e o exemplo dos números romanos retirados do livro "TDD - Teste Driven Development: Teste e Design no Mundo Real" do autor Maurício Aniche, editora Casa do Código
http://www.casadocodigo.com.br/products/livro-tdd 

Abraços!