O forum atual do agile testers está sendo depreciado, ou seja, não é possível criar ou responder a threads no momento. Por favor utilize o novo fórum https://github.com/AgileTesters/forum/issues

Testes de GUI morreram! Tens o que é preciso para garantir a qualidade?

Topic created · 9 Posts · 324 Visualizações
  • Boa noite pessoal!

    Durante minhas leituras recentes passei a pensar sobre algumas coisas, fiquei com elas na cabeça e resolvi escrever sobre o assunto, fiquem a vontade para comentar, compartilhar, curtir, só não vale xingar o amiguinho :heart_suit:.

    https://medium.com/@marcelo_soares/are-gui-tests-dead-dddc8908f072

  • Muito top. Compartilho da mesma visão. Parabéns e obrigado por compartilhar!

  • Muito bom, também acho que testes de GUI dificilmente acabrão. Ainda mais em aplicações que necessitam de uma confiança extrema. Mas aí entra outra questão, se já estão sendo feitos testes automatizados em tela, os demais seriam realmente necessários? Afinal, na camada mais externa, tudo está integrado. Não seria um retrabalho desnecessário? Seriam encontrados defeitos com grande impacto em testes de camadas menores, que não foram encontrados na GUI?

  • @Douglas-Silva
    Fala Douglas, tudo certo? Se voce testar todos os cenarios da sua aplicacao pela interface, ate faz sentido.

    Mas ai é que ta, você nao quer testar “tudo” pela interface, testes de GUI sao famosos por serem frágeis, quebram mais facilmente e requerem um alto esforço de manutençao, bem como demoram muuuuito mais do que outros tipos de testes para serem executados, o que mata a sua necessidade de um feedback rapido sobre suas aplicacoes.

    Ao meu ver, voce testa “tudo” de forma isolada, todas as partes do front-end e do back-end, pra garantir que cada um esta funcionando, como os testes aqui sao mais rapidos voce consegue executar muito mais cenarios. Ja com o teste de GUI voce faz la o seu “caminho feliz” e algumas variacoes, cenarios que sao mais utilizados pelos usuarios na “vida real”, que vao garantir que esta tudo rodando como esperado, nao há necessidade de retestar tudo que ja foi testado em niveis mais baixos.

    É a famosa piramide de testes automatizados. Obrigado pelo feedback!

  • @Douglas-Silva, testes nas camadas mais baixa da aplicação, tais como testes de APIs e testes de unidade são muito mais rápidos que testes de GUI, além de serem mais fáceis de depurar quando falham, visto que testam pedaços menores da aplicação. Testar tudo na camada de GUI é um anti-padrão conhecido como o cone ou sorvete dos testes (https://watirmelon.blog/testing-pyramids/).

    A lição que tirei deste conteúdo é que, se conseguirmos testar as partes de uma aplicação de forma isolada, mas também os “contratos” entre as partes, sem todas as integrações, podemos chegar a uma ótima cobertura de testes, e alta confiança, sem a necessidade de termos que lidar com todos os problemas que vem junto com os testes end-to-end.

  • @Walmyr , sim, os testes de camada mais baixa são mais fáceis de manter, mais rápidos de serem construídos e menos quebradiços. Porém, o que eu questiono é: existe alguma comprovação de que é mais vantajoso escolher outros níveis de teste que não sejam de GUI?

    Por exemplo, se eu realizo um teste de GUI automatizado para um cadastro qualquer, sendo que por trás desse cadastro existem camadas de front, BFF, microserviços REST, SOAP e banco de dados. O único teste que terei de dar manutenção é o de próprio cadastro realizado pela tela do sistema, onde todas essas camadas já estão sendo integradas.
    Por outro lado, se eu for realizar o mesmo teste utilizando uma abordagem de isolamento de camadas bottom-up, terei que realizar testes apenas no SOAP simulando as chamadas das camadas superiores, apenas nos microserviços (dependendo do sistema podem ser várias camadas) simulando as chamadas das camadas superiores e as respostas das inferiores, apenas no BFF da mesma forma do anterior. Além disso, o ideal seria realizar testes integrados também, onde se simula apenas as camadas superiores.

    Ou seja, até que ponto valeria a pena fazer isso? Mesmo que uma quantidade muito maior de testes seja necessária, vale a pena? Mesmo que não necessariamente a comunicação do BFF com a própria interface da aplicação esteja sendo validada, vale a pena?
    Essa é uma dúvida real, da qual ainda não encontrei uma resposta definitiva. A princípio, penso que testes automatizados de GUI são bastante validos em algumas situações e em outras nem tanto.

  • @Douglas-Silva, com certeza cada tipo de teste tem suas vantagens. Imagine, por exemplo, que a lógica de tal cadastro no backend é complexa, e para torná-la mais simples seja necessária uma refatoração. Neste momento, testes de unidade de backend mostram seu valor. A propósito, o que você quer dizer com BFF?

  • @Douglas-Silva, não conhecia. Obrigado por compartilhar. Excelente o artigo!