Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Implementação de interfaces testáveis e boas pr...

Implementação de interfaces testáveis e boas práticas de testes de aceitação

Uma overview sobre a prática de atdd e a cultura de testes automatizados, com ênfase na semântica do Selenium e do Phantom.js

Isabella Silveira

July 18, 2015
Tweet

More Decks by Isabella Silveira

Other Decks in Programming

Transcript

  1. E B O A S P R Á T I

    C A S D E T E S T E S D E A C E I T A Ç Ã O IMPLEMENTAÇÃO DE INTERFACES TESTÁVEIS
  2. ABOUT ME Isabella Silveira • Granduanda em Ciência da Computação

    na UFRJ • Desenvolvedora Web • Faz parte da equipe de desenvolvimento do SIGA/UFRJ • Desenvolvedora do SISMINA • https://github.com/bella-silveira
  3. POR QUE USAR TESTES AUTOMATIZADOS? • Permite que bugs sejam

    encontrados rapidamente • Aumenta o nível de confiabilidade da aplicação • Fácil implementação • Custo menor e maior eficiência com relação a testes manuais • Fácil visualização do status geral do sistema
  4. MAS QUE HISTÓRIA É ESSA DE TESTE DE ACEITAÇÃO? •

    Testes na interface da aplicação, alto nível • Simula a experiência de navegação do usuário • Testa a integração entre diferentes módulos do sistema • Instancia o DOM e envia um conjunto de instruções para a tela • Smoke Tests
  5. VANTAGENS • Roda em (quase) qualquer tipo de site •

    Consegue testar requisições ajax e javascript sem utilizar frameworks de testes assíncronos • O código é muito legível • Tipo de teste mais estável • Requer menos modificações e refactors • Possível encontrar até erros de hardware (memória e recursos)
  6. NÃO EXISTE ALMOÇO GRÁTIS • Não é tão rápido quanto

    outros tipos de teste • Vulnerável a componentes da tela, pouca estabilidade de execução • Custo moderado de manutenção • Poucos asserts podem levar a falsos resultados de sucesso
  7. ATDD: UMA NOVA ABORDAGEM • Desenvolvimento guiado por testes de

    aceitação • Exemplos de utilização são usados como base para o desenvolvimento • Promove maior integração entre os desenvolvedores, os testers e os clientes • Criação de testes a partir do refinamento de user stories
  8. SELENIUM WEB DRIVER • API de automação de testes de

    aceitação e processos na vista • Roda em vários browsers • Testes podem ser escritos em diversas linguagens • Independente do código usado no sistema • Open source!
  9. E POR ONDE COMEÇAR? • Keep it simple! • Definir

    casos de teste consistentes • Testar todo o fluxo de utilização da história • Não esquecer dos casos de falha! • Testar a integração dos componentes de cada módulo
  10. IMPLEMENTANDO INTERFACES TESTÁVEIS • Use page objects • Use identificadores

    estáveis: ids e names • Evite a dependência de recursos externos • Vá direto ao ponto: teste somente o necessário dentro do seu escopo • Foque sempre no mindset do usuário
  11. FAÇA SEMPRE E SEM MODERAÇÃO • Utilize cenários de teste

    somente com as informações necessárias • Mantenha o banco limpo antes de cada teste • Tome cuidado com a dependência entre testes • Procure parelelizar os testes • Use sempre IDs e names descritivos e legíveis • Teste somente o necessário!