Por onde começar a automatizar?

Pessoal, trabalho em um empresa que possui uma plataforma web e mobile (Android e iOS). Sou a única tester e mais uma estagiária.
Atualmente realizo testes manuais e tenho alguns testes de API (usando FrisbyJS).
Tentei usar Selenium para a Web, porém os testes frequentemente quebravam sem realmente ter um bug, então descontinuei o uso pois tomava tempo demais para pouco ganho.

Mas hoje, queria um caminho para realmente automatizar com qualidade, com uma estratégia que seja confiável, que não quebre hora sim, hora não. Li um pouco sobre flaky tests, não conhecia o conceito, mas não consegui definir o que usar, qual ferramenta, linguagem, etc.
Não sei realmente se devo testar interface.
O que vocês sugerem?

Bom dia @Thamiris,
Antes de tudo, conseguiu descobrir a causa dos seus testes não estarem sendo determinísticos?

Tem que entender o pq seus testes estarem falhando no passado
Talvez a aplicação não seja “test-friendly” ( id’s mudando e afins )…

outra coisa é… onde está a regra de negócio do seu sistema? tipo… está espalhada pela interface / backend? ou a interface é só um input de dados global?

Como vcs só são 2 pessoas, abraçar o mundo é uma péssima ideia.

Conversa com o time / usuário para entender os pontos críticos que podem ser automatizados.

@paulo-gonçalves sempre ocorriam erros de não encontrar um ou outro elemento na tela, mesmo usando waits etc.

@leonardo-galani realmente não era muito test-friendly não, interface mudava constantemente, poucos elementos possuíam id (usava mais xpath).
O problema que tenho sido cobrada pra fazer todos os tipos de testes existentes no mundo. Isso tem me deixado cada vez mais insegura e confusa.
Não sei por onde começar. Temos mais de 250 testes documentados no testlink, mas eu queria automatizar. Sinto que já passei da hora de fazer isso.

Não sei determinar se a regra de negócio está somente no backend ou não, mas como é uma plataforma de IOT, o que é exibido na interface é essencial para os usuários finais

@Thamiris, passei por essa situação quando automatizava com o Selenium Webdriver. Você pode utilizar espera implícita, que é basicamente aguardar certo período de tempo até que o elemento fique presente na tela. Caso não encontre o elemento nesse período o teste irá falhar. É bom pra evitar o uso do Sleep.
http://stefanteixeira.com.br/2014/04/29/entendendo-os-tipos-de-esperas-no-selenium-webdriver/

No meu projeto, uso Protractor, certa vez ocorreu falhas por Flaky, a solução foi só criar uma função que rodasse a barra de scroll até o elemento. Caso a sua aplicação seja em Angular, recomendo o uso do Protractor.

@paulo-gonçalves eu comecei a usar o protractor msm, mas acabei não continuando. Talvez seja melhor retomar.
Eu ja conhecia esse artigo, usei muito ele, mas não foi a solução para os meus problemas

Bom… o que vc pode fazer é abrir um gist com pedaço de codigo que da problema junto com o trecho de codigo com elemento que vc está tentando acessar … dai te ajudamos a resolver esses problemas pontuais.

Sobre ser cobrada de fazer todos os testes, tem que “bater a perna” e dizer que vc não tem 10 braços para automatizar e testar manualmente ao mesmo tempo… tem que priorizar… se tudo é importante … nada é importante.

Uma boa é entender qual a tecnologia web está sendo abordada para pensar em qual ferramenta utilizar para automação. Webdriver pode ser bom, mas questões assíncronas são bem chatas de lidar. (mas não impossíveis…)
O que poderia começar a exercitar é ver quais pontos mais chatos andam falhando…Se é somente identificação dos elementos…se em algum fluxo específico…
Sobre as regras de negócio, não vale perguntar?
O que vale agora é entender a tecnologia que está sendo usada, analisar algumas ferramentas que possam te atender…Fazer uma POC e iniciar pelos teus testes de “mais valor”…

@ramses-saccol-de-almeida vou tentar levantar essas informações mesmo, sei que tem Angular em algumas partes, e java, não sei se tem outras.
Os testes falhavam somente quando rodava via Jenkins, no eclipse todos funcionavam sem quebrar.

@leonardo-galani um exemplo de como eram meus códigos do selenium
https://gist.github.com/anonymous/9e0e843b17e8c789e8e6f92d5a848e5f

@thamiris said in Por onde começar a automatizar?:

@ramses-saccol-de-almeida vou tentar levantar essas informações mesmo, sei que tem Angular em algumas partes, e java, não sei se tem outras.
Os testes falhavam somente quando rodava via Jenkins, no eclipse todos funcionavam sem quebrar.

ó, isso é uma informação valiosa, seria mesmo problemas de id? talvez algo relacionado a espera? Algum navegador “IE” da vida incomodando? hehehe. Talvez a ferramenta usada esteja correta, o problema pode ser na modelagem do código…
Levantar informações sobre as tecnologias usadas vai te ajudar a definir de vez a ferramenta, e talvez tu possa se aprofundar mais nela para ver sobre modelagem dos teus testes…
Boa sorte…

@ramses-saccol-de-almeida eis um exemplo do código
https://gist.github.com/anonymous/9e0e843b17e8c789e8e6f92d5a848e5f

nem sei se é assim, pq sempre fiz tudo sozinha, não tenho uma guia.

Seu gist ta indisponível :/

@thamiris said in Por onde começar a automatizar?:

@leonardo-galani https://gist.github.com/anonymous/6d2e9ee2545c311dd95df841cc4616cb

Thread.sleep(3000l)
Isso daqui sempre vai dar dor de cabeça com webdriver… Por mais que funcione na tua máquina.
Mas dá analisa quais tecnologias empregradas no projeto, tenta ver ferramentas que tem um suporte para isso e faz uma POC…
E nem te esquenta, código a um primeiro momento sempre é ruim.
Quando tu começar a ganhar experiencia, vai notar isso e começar a refatorar mais e entender alguns pontos…Agora realmente vai ser nebuloso e faz parte do processo de aprendizagem…
Relaxa, respira e começa pelo que já foi dito aqui…
Boa sorte e dúvidas, estamos por ai… :+1:

@ramses-saccol-de-almeida mas esse sleep poderia ser substituído pelo que? Me recordo de ter usado ele pra contornar algum problema.

Já faz um ano que parei de mexer com essa parte, ai preciso relembrar

Em vez de Thread.sleep, tem que usar um wait explícito da mesma forma que vc utilizou em outras partes do código. Manipular elementos diretamente por JavaScript também não é legal, é suscetível a erros. Além disso, não se usa try/catch nem if/else em testes.

O try/catch não faz sentido porque caso qualquer linha do código lance exceção, o teste irá falhar. Já o if/else não faz sentido porque se vc tem situações diferentes, vc deve tratar cada uma em test cases diferentes, o teste não pode dar um resultado X uma hora e um resultado Y em outra ocasião.

Minha recomendação é ler o livro Clean Code, que vai te dar uma base boa em qualidade de código (isso inclui código de testes), e em paralelo ir melhorando esses pontos de falha no seu código. Caso aconteça de vc empacar na manipulação de algum elemento em específico, cria uma thread nova mostrando o trecho de código e o HTML e aí te ajudamos :smile:

Log in to reply

Looks like your connection to Agile Testers was lost, please wait while we try to reconnect.