Blog > Automação de Testes - Parte II - Selenium IDE - Principais Dificuldades

09/nov

Ao começar a utilizar o Selenium IDE, muitas dúvidas surgem e algumas dificuldades nos fazem destinar tempo excessivo para encontrar a solução. Este post trata das principais dificuldades encontradas pelos automatizadores ao começar a utilizar o Selenium IDE. Boa leitura.

Salve salve galera!

      Tô na área novamente. Hoje daremos continuidade a série sobre automação de testes funcionais. Caso vocês ainda não tenham lido o primeiro post da série, basta clicar no link abaixo.

Parte I - Introdução: Neste post eu escrevo sobre alguns pontos que devem ser levados em consideração antes de iniciarmos a automação de testes.

      Caso você nunca tenha visto a cara do Selenium IDE, sugiro a leitura desse post do grande Elias Nogueira, que destrincha o Selenium IDE sem dó nem piedade, facilitando muito a vida de quem quer aprender a utilizar o Selenium IDE. INTRODUÇÃO AO SELENIUM IDE

      Começando nosso papo, vale lembrar que automação de testes é o processo de criar formas automáticas (ou semi-automáticas) de executar testes em determinada aplicação. E como executamos testes (manuais em aplicações web)? Realizamos uma ou mais ações no sistema e verificamos se a reação do sistema está de acordo com o que era esperado. Dessa forma, devemos considerar que uma ferramenta de automação de testes deve ser capaz de realizar ações no sistema e de verificar reações do sistema.

      Você já se perguntou o que faz quando está executando manualmente um teste no sistema? Como é sua interação com o computador? Vejamos.

Suponhamos que eu precise informar usuário e senha inválidos, tentar fazer login e verificar se uma mensagem está sendo apresentada. Eu faço o seguinte:

Depois que eu acesso a página inicial da aplicação, começo a executar as ações.

  • Ação 1 - Informar usuário inválido:
  1. Localizo o campo "Usuário" com os olhos;
  2. Clico no campo "Usuário";
  3. Digito um usuário inválido;
  • Ação 2 - Informar senha inválida:
  1. Localizo o campo "Senha" com os olhos;
  2. Clico no campo "Senha";
  3. Digito uma senha inválida;
  • Ação 3 - Tentar realizar login;
  1. Localizo o botão "Realizar Login" com os olhos;
  2. Clico no botão "Realizar Login";
  • Verificação 1 - Validar mensagem apresentada;
  1. Localizo a mensagem apresentada com os olhos;
  2. Comparo a mensagem apresentada com a mensagem esperada;

No Selenium IDE, assim como em diversas outras ferramentas para automação de testes, o processo é semelhante.

  • Para realizar uma ação, primeiramente o elemento é identificado, ou seja, a ferramenta tenta localizar o campo na tela, de acordo com as informações que o automatizador definiu. Depois disso a ferramenta executa a ação que o automatizador solicitou, como por exemplo realizar o click no botão, ou então digitar um texto no campo.
  • Para realizar uma verificação, primeiramente o elemento é identificado, ou seja, a ferramenta tenta localizar o campo na tela, de acordo com as informações que o automatizador definiu. Depois disso a ferramenta extrai a informação e compara com a informação previamente definida. Caso o sistema deva apresentar a mensagem "Usuário cadastrado com sucesso." mas apresenta a mensagem "Cadastrou!" a ferramenta registra que a informação apresentada está incorreta.

E assim a vida segue =) e o mundo parece um mar de rosas até que... o Selenium IDE não identifica o botão que eu quero clicar, ou eu gravo meu script mas o Selenium IDE está fazendo algo errado quando eu tento executar. E eu não seu como resolver!!! E agora? Quem poderá nos defender?

Dificuldade I: A primeira dificuldade muito comum que percebo é que nós temos a falsa impressão de que já que o Selenium IDE cria os comandos para nós, não precisamos endender as formas de identificar os elementos. Mas o Selenium IDE as vezes identifica os elementos de uma forma que não é legal para nosso script e vai fazer com que o script pare de funcionar logo logo. Sendo assim desta maneira, não temos para onde fugir. Precisamos entender os prós e os contras de cada forma de reconhecimento e aprender a utilizá-las conforme a necessidade. Sugiro a vocês a leitura do seguinte link que trata do reconhecimento de objetos:

Reconhecimento de Objetos


Dificuldade II: Outra dificuldade muito comum é que nós gravamos o script mas não validamos se o Selenium IDE por acaso não colocou um comando a mais ou deixou de colocar outro comando no meu script. Eu executo o script, vejo que o Selenium não fez o que eu queria que ele fizesse, mas não vou no script conferir se os comandos estão todos lá. Nesse caso eu te aconselho a executar o script, linha a linha, verificando se o comando executado está coerente com o que o script deveria fazer de acordo com o caso de teste.

Dificuldade III: Temos ainda a dificuldade relacionada ao sincronismo. Em alguns casos, determinado campo não é encontrado que um teste é executado, mas quando a gente olha na tela o campo está lá. Mas não funciona! TILT! TILT! TILT! Em alguns momentos a aplicação apresenta um delay de milissegundos (e até segundos) entre a ação do usuário(clicar, por exemplo) e a reação do sistema(apresentar mensagem, por exemplo). Nessas situações devemos colocar um comando de espera entre os comandos de ação e os comandos de verificação. Estes comandos de espera sempre se iniciam por "waitFor".

Para entendermos esta dificuldade, façamos o seguinte:

Suponha que você precise automatizar (com o Selenium IDE, claro) o pseudo caso de teste abaixo.

  1. Acessar o sistema Quickloja; (Link: http://quickloja.qualister.info/ )
  2. Informar usuário inválido; (Usuário: zezin)
  3. Informar senha; (Senha: qualister)
  4. Solicitar login;
  5. Verificar se o sistema apresenta mensagem informando que os dados estão incorretos; (Mensagem: "Usuário ou senha incorretos")

Tente automatizar antes de olhar o script abaixo. Seu script ficaria assim?

Mas dessa forma não funciona. Por que? A página demora alguns milissegundos entre recarregar e apresentar a mensagem esperada, mas o Selenium IDE não espera, ele simplesmente verifica se a mensagem existe logo que a página é carregada. Se você der uma olhada na aba "Mensagens", vai ver que o texto "[error] Element css=div.alert.alert-error not found" é apresentado. O que isso significa? Significa que quando o Selenium IDE foi verificar se a mensagem estava sendo apresentada no campo DIV que possui o atributo class igual a ".alert .alert-error" ele nem encontrou o campo (e muito menos a mensagem). E agora? Basta dizer para o Selenium IDE esperar o campo ser apresentado antes de validar se o texto existe. E como fazemos isso? Assim:

Por enquanto é só. Continuaremos esta série escrevendo um pouco mais sobre Selenium IDE, mas caso você tenha alguma dúvida, sugestão ou queira apenas trocar idéia sobre temas relacionados a automação de testes sinta-se a vontade para me mandar e-mails. Meus dados de contato estão no início deste post, juntamente com o mini curriculo.

Espero que estejam curtindo.

POSTS RELACIONADOS

Webinar gratuito de Selenium IDE - Online

Aprenda tudo sobre o Selenium IDE neste Webinar

AGENDA

CURSOS RELACIONADOS