terça-feira, 29 de outubro de 2013

TDC 2013- resumo da trilha de testes


Bem meu povo! O findi foi muito legal e de bastante aprendizado, já startamos na sexta-feira na trilha de testes, com bastante coisa nova e uma galera bem parceira.
A abertura do evento foi super instigante com os robôs do Vinicius Senger: uma pipoqueira e o androidzito com o arduino e o raspberry pie. O teste de bafômetro que o robozinho faz é muito legal, tudo feito com comandos de voz pelo celular do Vinicius, onde ele criou tarefas que faziam chamadas http para o robô através de comandos.
Depois entrando nas trilhas especificas, a de teste começou com um pessoal que veio de Manaus -e eles não vieram de canoa(brinks). O Andrew e o Igor vieram do instituto Nokia com a Palestra #thebugsonthetable. Eles falaram como é trabalhar com qualidade dentro do instituto, e fizeram uma dobradinha legal entre dev e teste.
Quem quiser conferir pode pegar lá no slideshare.
A próxima palestra foi a minha, que já postei anteriormente, sobre design patterns para automação com selenium.
Almoçamos (ou não, que foi meu caso), e depois tive uma grata surpresa! Uma ferramenta ultra, hiper, mega legal, e melhor: open source!
O Juraci da TW está desenvolvendo uma ferramenta que gera pageObjects automaticamente: O Swamp! Não é um sonho? Quem quiser conferir o vídeo da  apresentação clica aqui, e a apresentação clica aqui!
Depois tivemos mais duas LTs que ainda não consegui a apresentação, mas uma delas foi sobre um framework para automação de testes para mobile com o Frank, quem apresentou foi um pessoal da uMov.me, e na sequência o Marcelo Tocheto apresentou a integração do Selenium Grid com o JBehave.
Passando para a trilha standium, tivemos uma apresentação de toda a suíte da Microsoft para testes, desde a gestão de requisitos, até o bug tracking, e a automatização.
Depois tivemos mais uma sequencia de três light talks:
Automação? Mobile? Yes we Can com o Ramsés que nos apresentou uma série de ferramentas para fazer automação com mobiles.
Melhor estressar a aplicação do que ficar estressado  de um pessoal lá de SP que falaram um pouco de Jmetter, (quem quiser se aprofundar melhor tem um post meu sobre isso), e mais uma série de ferramentas que podem (e devem) ser usada para saber o quanto seu sistema suporta.
Métricas de qualidade de código com mais um pessoal da uMov.me, que mostraram um pouco sobre nosso amigo Sonar, e como ele pode auxiliar na melhoria de qualidade dos códigos que desenvolvemos. 
Lembrando que código sujo é tipo sujeira que se varre para baixo do tapete, a hora que alguém precisar mexer naquele tapete já viu né? Então fica a dica da ferramenta para que possamos ter métricas de qualidade de código.
Depois fomos de novo para a Stadium, onde um pessoal da TW falou da experiência que eles tiveram em um projeto em que usaram a pirâmide de teste invertida.
 
No mais foi isso! Um dia cheio de coisas legais, muita coisa talvez já tenha vista, mas o fato é que sempre é bom rever conceitos e sempre se aprende algo! Para mim valeu super a pena.
Assim que for conseguindo as outras apresentações vou postando aqui também.




segunda-feira, 28 de outubro de 2013

Design Patterns para Selenium

Olá pessoal!
Depois de um findi maravilhoso com o #TDC2013, venho postar aqui no Blog a minha palestra.
Na sequencia também estarei fazendo um post com as demais palestras, para quem não pode estar presente conferir o que acontecer nas trilhas de teste e também na de Agile.

terça-feira, 3 de setembro de 2013

Dicas Selenium WebDriver

Outro dia fiquei algumas horas batendo a cabeça e pesquisando no Google como resolver um problema nos meus testes: pegar um texto que estava em um elemento hidden.
Eu já havia feito isso outras vezes, só que com elementos do tipo input e um simples getText() resolvia, mas esse elemento, que era uma span, não havia jeito de pegar. Ele encontrava o elemento, porém o getText retornava vazio.
Encontrei no stackoverflow a solução para esse caso: usar o getAtribute. Com esse comando você pode ter acesso a qualquer atributo do dom do seu elemento. Então o que ficava assim:

Driver.findElement(By.xpath(//*span)).gerText();

E não retornava nada, ficará assim:

Driver.findElement(By.xpath(//*span)).getAtribute('innerHtml');

Assim você conseguira capturar o texto do elemento, e caso venha algum carácter não desejado podes usar replace na string para manipular. 
Fácil não?

sexta-feira, 30 de agosto de 2013

Noite de agilidade no IPA


Ontem à noite participei de um evento bem legal no IPA. Foram três lightning talks bem interessantes, uma delas em especial me chamou a atenção: o "Evento Dojo" que o pessoal da Ilegra organiza. Não se trata de um coding dojo como estamos acostumados a ver, é uma adaptação que tem tudo para dar certo. O pessoal se reúne bimestralmente para ter lightning talks e depois codificar algo em uma linguagem nova, depois rola games e churrasco. Gostei da idéia!!!!
A noite ainda contou com dois Dojos: um de Java e outro de Selenium conduzido pelo @diracijunior e por mim!!! Abaixo fotinhos do momento. A solução do desafio está no github e tu podes pega-lá no link abaixo. O evento foi uma parceria do GUMA e do GUTS.
EDIT: Para que quiser conferir segue o link dos fontes no GitHub: https://github.com/guts-rs/DOJO_GUTSRS_IPA

terça-feira, 21 de maio de 2013

Quem Mexeu no Meu Queijo

Quem já não leu ou ouviu  falara sobre esse livro?
Quem mexeu no meu queijo é um livro, que de forma lúdica, mostra o quanto muitas vezes é dificil se adaptar.
E quem né amigo?
Quem que nunca?
Na área de testes uma mudança começou a ocorrer a bastante tempo, mas só agora vem ganhando força: "o Agile Testing". Enquanto fábricas investem milhões em processos de testes, as empresas que adotam as metodologias ágeis buscam vias mais simples para o sucesso.
É sobre isso que irei falar no TDC em Floripa.
Veja uma prévia da apresentação abaixo.

terça-feira, 30 de abril de 2013

Prove seu sistema com o JMetter

Há alguns  posts atrás, eu havia comentado que faria um post sobre Jmetter para que a gente possa estar sobrecarregando nosso sistema.
"Muahaha"!!!!
Já que vamos estressar nosso software fique atento as seguintes situaçoes:
1) o ambiente que vamos utilizar é o mais próximo possível do real?
2) caso negativo existe a possibilidade de simularmos esse ambiente? (Quando falo em ambiente não me refiro somente a base e versão do seu software, mas sim a infraestrutura,  middleware).
3) Existe a possibilidade de executar esses testes em produção? Se sim combine com o negócio e as áreas envolvidas e teste em janelas que tem impacto.
Feito isso vamos aos testes.
O primeiro passo é fazermos download do Jmetter:
A sua instalação é muito simples, basta apenas descompactar o arquivo e usar o jar.
Ao abrir o jmetter vemos a separação de dois grupos:
- Plano de Teste
- Área de Trabalho

Basicamente essa divisão serve para uma melhor organização. A área de trabalho é como se fosse uma área de rascunho, de testes. Já o plano de teste é aquilo que você realmente vai executar quando der um play.
Um exemplo simples, é quando precisamos configurar um proxy para captura, usamos a área de trabalho. Quando temos os artefatos necessários os colocamos em um Grupo de Usuários no Plano de Teste.
Se você já sabe o que vai precisar testar, quais urls vai utilizar (com suas variáveis, seus métodos, exe: GET, POST), podemos direto utilizar a opção de plano de teste.
Caso ao contrario, você pode capturar essas informaçõee, estarei mostrando como fazer isso em um próximo Post.
Passo a passo para quem está começando:
Na opção Plano de Teste clique com o botão direito e vá em -> Adicionar-> Thread(Users)-> Grupo de Usuários.
Você pode colocar o nome desse grupo de usuários conforme a sua necessidade.
Nessa tela nós temos uma série de opções, parte delas estão relacionadas a ações se houver falha e outra parte as configurações dos usuários virtuais. Vamos nos concentrar mais na configuração dos usuários.
  • Número de Usuários Virtuais: Com quantos usuários vamos simular o teste;
  • Tempo de inicialização em segundos: Tempo total de inicialização dos usuários. Se você colocar 200 usuário e 1 segundo o jmetter vai inicializar todos ao mesmo tempo;
  • Contador de Iteração: Quantas iterações (pense como laços de repetição) irão serem necessárias a cada usuário para que o teste finalize.
Indico que para começarmos a brincadeira, que deixemos um usuário virtual e as outras opções o default.
O próximo passo é adicionarmos um gerenciador HTTP, que será o responsável pelo gerenciamento de sua conexão.
Nele é possivel configurar o User Agent que iremos simular no teste.
Para isso vá em Grupo de Trabalho clique com o botão direito e então vá em  Adicionar->Elemento de Configuração-> Gerenciador de cabeçalho http:

O user agent vai variar de acordo com o que você quer simular.
Esse geralmente é o que eu uso:

User-Agent Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/12.0
Para testes com mobiles é só mudar o user Agent:
 
User-Agent Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5
Feito isso vamos aos testes.
 Vamos adicionar nossos testadores, para isso clique com o botão direito sobre o Grupo de usuários e vá em Adicionar-> Testador> Requisição HTTP

Devem ser informados os seguintes dados:

  • Nome para a requisição (qualquer nome que identique bem a etapa do teste para você)
  • Nome do Servidor: aqui você coloca somente o dominio.
  • Caminho: O resto da URL.

Nesse ponto já podemos dar um play.
No momento que deres play, verás que o contador a direita irá ficar 1/1 e logo em seguida 0/1.
E se seu site estiver ok, nenhum alerta seá contado:

Vamos adicionar alguns ouvintes para vermos o que está sendo executado. Há várias opções de ouvintes, eu gosto de usar duas: View Results Three e Simple Data Writer
Para adicioná-los vamos clicar com o botão direito sobre o Grupo de usuários e ir em Adicionar->Ouvintes->View Results Three
Se dermos play novamente, podemos ver o retorno do teste:

Podemos escolher o que queremos que seja exibido, se somente erro, sucesso ou ambos. Também é possivel exibir não somente o texto de resposta mas fazer download dos resources e exibir o html

Podemos também gerar um relatório desses testes, com um Simple Data Writer.
Adicionar->Ouvintes->View Results Three


Nesse tipo de escritor, todos os resultados dos seus testes ficarão armazenados em um arquivo. Uma dica legal é usar parametros para sempre  gerar um novo arquivo. Para isso adicione parametros como data e hora no nome do arquivo: D:\JMETTER\TesteGuriatech_${__time(YMDHMS)}.xls

O basicão é isso.
O proximo passo é começarmos a brincar com os temporizadores e alguns parametros nos testadores. Isso fará com que o nosso teste fique mais real, visto que nossos usuários não irão entrar todos ao mesmo tempo e executar todos os links no mesmo momento.
Sem o temporizador é isso que o jmetter tenta fazer, colocar todos a rodar.

Enquanto isso podemos ir adicionando mais requisições HTTP, e aumentando o número de usuários virtuais.
Divirtam-se!
No próximo post sobre Jmetter vou falar um pouco desses temporizadores e dos parametros para as requisições http.

Ficou com dúvida?
Escreva nos comentários abaixo que respoderei!





sexta-feira, 26 de abril de 2013

Compra da China

Fiz a minha primeira compra de roupas da china!
Estava acostumada a encomendar algumas coisinhas (principalmente capinhas para o Iphone) do DealeXtreme, mas roupas e coisinhas fofas, ainda não tinha tido coragem. O meu escolhido da vez foi o SammyDress.
Fiz uma boa pesquisa antes, dando uma lida em reviews, inclusive de brasileiras, e a conclusão a que eu cheguei é: Não espere muito de um produto que você está pagando um valor baixissimo.
Não espere Qualidade!
E por falar em qualidade, me surpreendi com site de deles, funciona muito bem em desktops, igualmente com mobiles, e eles ainda tem um app bem bacana para iphone.

Como SQA posso avaliar o site deles como muito bom.
Bem intuitivo, e está certo que não fiquei fuçando muito, fiz operações básicas e não encontrei bugs pelo caminho, a não ser por alguns erros no app para Iphone, onde em várias categorias foi apresentado o erro "Erro1: Data transmission error, please try again", embora eu "try again" (hahahaha) várias vezes não funcionou, e as categorias estivam funcionais no site. Como porém era m categorias que eu imagino que sejam pouco usadas, ou eles não devem ter percebido, ou deve estar no backlog deles.
Agora como mulher consumista, amei de paixão o site! Se podesse comprava de tudo um pouco! Vou esperar essa primeira compra chegar para decidir a próxima compra. Gastei 36 reias já com o frete e comprei várias coisinhas. Quando elas chegarem digo  se aprovo ou não.
O que eu comprei:


http://www.sammydress.com/product246829.html

Tá eu sei é um ralador! Mas me deu vontade de comprar tá!
http://www.sammydress.com/product71136.html

http://www.sammydress.com/product306343.html

http://www.sammydress.com/product292235.html

http://www.sammydress.com/product284777.html