Desenvolvendo aplicações orientadas a testes de aceitação: um caso prático

1.001 visualizações

Publicada em

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
1.001
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
15
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Desenvolvendo aplicações orientadas a testes de aceitação: um caso prático

  1. 1. Desenvolvendo aplicações orientadas a testes de aceitação: um caso prático Eloi Rocha Neto eloi.rocha@gmail.com www.smartiks.com
  2. 2. Agenda • O que queremos? • Por que é tão difícil? • Como resolvemos ou amenizamos esses problemas? • Um caso prático • Conclusões
  3. 3. O que queremos? • Produzir software de qualidade • Desenvolver software que atenda os requisitos do cliente • Garantir que o time de desenvolvimento está implementando o que foi especificado
  4. 4. Por que é tão difícil? • Problemas de comunicação entre: – cliente e analistas – analistas e o time de desenvolvimento • Especificação obscura
  5. 5. Como resolvemos ou amenizamos esses problemas? • Processo de desenvolvimento • Ferramenta EasyAccept • Vantagens
  6. 6. Processo de desenvolvimento • As user stories são escritas na forma testes de aceitação executáveis • Um teste de aceitação consiste de um script que é processado pela ferramenta EasyAccept • Os testes de aceitação são enviados para o time de desenvolvimento • Uma user story só é finalizada quando seus testes estão passando
  7. 7. EasyAccept Analistas juntamente com os clientes Façade Script 1 (teste de aceitação) Programa Script 2 (teste de aceitação)
  8. 8. EasyAccept • Scripts acessam métodos da Façade • Asserções podem ser realizadas com os seguintes comandos: – expect – expectError – equalFiles id = criarUsuario nome=zeca aniversario=12/12/1979 expect zeca getNome usuario=${id} expect 12/12/1979 getAniversario usuario=${id} expectError “Usuário não existe!” getNome usuario=blahblah expectError “Data inválida!” criarUsuario nome=ze aniversario=12/a
  9. 9. EasyAccept public class Facade { ... public String criarUsuario( String nome , String aniversario ) throws CadastroInvalidoException { return gerenciadorDeUsuarios.criarUsuario( nome , aniversario ); } public String getNome( String usuarioId ) throws UsuarioInexistenteException { return gerenciadorDeUsuarios.getNome( usuarioId ); } public String getAniversario( String usuarioId ) throws UsuarioInexistenteException { return gerenciadorDeUsuarios.getAniversario( usuarioId ); } ... }
  10. 10. Vantagens • Os testes de aceitação testam e dirigem o desenvolvimento • Análise executável • Análise sincronizada com o desenvolvimento • Fácil perceber quais user stories foram implementadas ou não
  11. 11. Vantagens • Meio de comunicação mais preciso • Redução do gap entre clientes e desenvolvedores • Evita explosão de funcionalidades não requisitadas pelos clientes • Permite o cliente fazer parte do time de desenvolvimento
  12. 12. Um caso prático • Dois sistemas em desenvolvimento – SisRTM (em operação) – SmartAction • Desenvolvedores: alunos de graduação do 5°/6° período • Práticas utilizadas – O desenvolvedor sempre conversa com o escritor do teste antes de iniciar a implementação
  13. 13. Um caso prático • Resultados – Poucos bugs encontrados • Apenas três na lógica (em quatro meses de operação) • Demais na interface gráfica – Quando um bug é encontrado: • Comunicado ao escritor do teste • Um teste é escrito imediatamente para isolar o bug (TDD)
  14. 14. Big Chart (SisRTM)
  15. 15. BigChart (Smart Action)
  16. 16. Conclusões Só atingimos qualidade devido aos nossos testes!
  17. 17. Obrigado pela atenção! www.smartiks.com

×