/automation-practice

Script com chrome driver para navegar pelo site, logar, e caso não haja usuário com as credenciais usadas, criar um, preenchendo todas as informações de cadastro.

Primary LanguageJupyter Notebook

Instruções:

-------------------------------------------------------------------------------------

• Tenha instalado em sua máquina Python (versão mais atualizada disponível), jupyter notebook e Google Chrome

• Clone este repositório

• Verifique sua versão do chrome instalada ao clicar na sequência ilustrada ao seguir:

• Baixe o ChromeDriver na versão correspondente ao seu navegador através do link https://chromedriver.chromium.org/downloads

• Coloque o arquivo do ChromeDriver baixado agora no lugar do que está localizado na pasta do repositório (o script e o chromedriver.exe atualizado devem estar sempre na mesma pasta, como na imagem):

• Clique no caminho do repositório, onde está indicado com um ponto vermelho, à frente da seta:

• Digite cmd, e dê enter

• O terminal abrirá, digite jupyter notebook e dê enter:

• Isto abrirá o jupyter notebook no seu navegador default. Selecione o arquivo automationpractice.ipynb

• Para rodar o script, execute todas as células superiores até chegar na célula das importações e a chamada da função principal, execute ela, e o script deve começar a rodar abrindo o chrome, enquanto os logs aparecem no output do jupyter notebook:

• Para executar os testes unitários, execute todas as celulas anteriores, EXCETO a de Execução do script, como chamada, execute a célula abaixo de 'Testes Unitários', como indicado a seguir:

 

• Caso deseje inserir dados para que o script crie uma nova conta no site, coloque as informações desejadas no dicionário que está no início do main():

 

LEMBRE-SE QUE:  

ao trocar o dicionário do main() na primeira vez, o script criará uma conta pra você com aquelas informações, mas se você rodá-lo novamente, quando ele tentar logar, verificará que houve sucesso no login e indicará que você pode prosseguir às compras sem necessidade de CRIAR nova conta, pois as credenciais utilizadas já estão cadastradas e a senha está correta.

 

Considerações:

-------------------------------------------------------------------------------------

 

Devido à opção de criação do script manualmente (sem frameworks), não deu tempo de fazer a parte da compra. Foquei então, nos testes unitários dos cenários que são possíveis simular com os retornos das funções contempladas no script. Escolhi este tipo de teste unitário pois ele permite que cenários bastante alterados seram criados para cada lap de teste, possibilitando passar diferentes tipos de parâmetros para as chamadas das funções, o que facilita para prever o comportamento do script:

- se um usuário estivesse inputando as informações que são passadas para as funções e métodos através de um arquivo ou formulário;

- se o site estiver fora do ar ou algum botão/mensagem de retorno tiver mudado de nome ou de identificação no elemento web, dentre outras situações que devem ter retornos informativos para facilitar o trabalho de quem estiver dando manutenção/debuggando o código;

- entre outras situações específicas;

Isto torna possível manter a qualidade e a continuidade do suporte nas plataformas envolvidas. Além do rápido diagnóstico de eventuais problemas, com a flexibilidade de fazer pequenas alterações para readaptar os testes antes de rodar cenários após uma mudança de código. 

 

 

Bugs:

-------------------------------------------------------------------------------------

O único bug que foi possível identificar neste período de tempo foi o fato de que a tentativa de login com senha errada nem sempre é retornada com 'Invalid password' pelo site. Às vezes o site retorna somente Authentication Failed. Como este cenário é atribuído ao fato de que não há conta criada com aquelas credenciais, o robô prossegue para criação de nova conta desnecessariamente, pois ao chegar na função que efetiva o registro da conta, uma mensagem dizendo que este e-mail já está sendo usado por outra credencial aparece, portanto a criação de uma nova conta não dá certo, já que um novo e-mail teria que ser usado para tal.

Seria necessário debuggar mais vezes para identificar se tem algum padrão entre o cenário onde o site retorna uma mensagem realmente informativa com o erro de login (ex: invalid password) vs quando retorna uma mensagem generalizada de falha de autenticação, que induz algoritmo ao erro, visto que outra decisão está setada para este caso.