Skip to content
This repository has been archived by the owner on Sep 10, 2024. It is now read-only.

Este projeto desempenha um papel vital ao preservar a integridade de dois sistemas por meio de testes rigorosos via Web e API. Ao empregar Python como linguagem principal e Selenium e Zeep como ferramentas-chave, a automação simula interações simples e complexas realizadas por usuários em operações cotidianas.

License

Notifications You must be signed in to change notification settings

LucasGoncSilva/projeto_automacao

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Logo Projeto Automação
Projeto Automação

GitHub License

Este projeto desempenha um papel vital ao preservar a integridade de dois sistemas por meio de testes rigorosos via Web e API. Ao empregar Python como linguagem principal e Selenium e Zeep como ferramentas-chave, a automação simula interações simples e complexas realizadas por usuários em operações cotidianas.

A escolha do Python garante uma codificação eficiente e flexível, enquanto o Selenium, ao emular um navegador, reproduz fielmente o comportamento do usuário e Zeep cria toda a interface SOAP para validar o comportamento da API dos sistemas.

Isso permite a detecção precoce de falhas, aprimorando a experiência do usuário final e assegurando a estabilidade do sistema. Esse processo de teste meticuloso é essencial para identificar possíveis problemas e garantir que os padrões de funcionamento sejam mantidos, proporcionando assim um ambiente digital mais confiável e eficaz.

OBS: a arquitetura aqui presente, bem como o relatório de exemplo são estruturas reais, mas que por motivos de sigilo comercial tiveram seus dados alterados, de modo que seja perfeitamente possível entender o que foi feito sem comprometer as informações reais validadas.

O projeto real possui mais de 80 arquivos de testes divididos entre as modalidades "Web" e "API", com quase 1M de linhas escrita em Python, tasks assíncronas asyncio e execução paralela para dar conta da estrutura robusta do projeto; aqui está apenas a estrutura mínima para fácil compreensão da arquitetura utilizada.

Stack

Python logo

Selenium logo Zeep logo

HTML logo CSS logo JavaScript logo

Docker logo

Arquitetura

Construído com a estrutura em classes do Unittest - biblioteca padrão do Python para testes - e executado com Pytest de forma paralela - quando há intenção de validar os ambientes - o Projeto Automação uniu o melhor dos dois mundos: a organização da POO do Unittest com a performance de execução do Pytest.

Cada __init__.py inicializa uma nova classe-base para os sub-diretórios abaixo dela, possibilitando que cada módulo tenha acesso às ferramentas necessárias conforme determinado pelo princípio S.O.L.I.D (mais especificamente O - Open/Closed Principle: objetos ou entidades devem estar abertos para extensão, mas fechados para modificação - e I - Interface Segregation Principle: uma classe não deve ser forçada a implementar interfaces e métodos que não utilizará).

O __init__.py na raíz do diretório de testes é o maior e, possivelmente, mais complexo, pois nele é implementada a maior parte das funcionalidades e lógicas, funções gerais e a classe-mor BaseTestCase(unittest.TestCase), de onde todos os testes derivam, como demonstrado a seguir:

Diagrama Estrutural de Classes do Projeto Automação

Diagrama Estrutural de Classes do Projeto Automação

Com a estrutura demonstrada acima, deve-se imaginar que a cada nível que a estrutura se aprofunda, mais específicas são as classes, comportamento decorrente de suas implementações onde comportamentos comuns entre mais classes são definidos em classes mais ao centro, enquanto elementos mais específicos se definem em classes mais periféricas.

Através das implementações de métricas presentes na classe BaseTestCase nos métodos setUpClass e tearDownClass - ambos decorados com @classmethod - e própria execução dos testes registra as métricas definidas, sendo elas name, type, path, methods_count, duration, readable e manual_exec, conforme indicado abaixo:

Métrica Tipo Descrição
name str Nome da classe dentro do programa
ExemploTestCase -> ExemploTestCase(...)
type Literal["Web", "API"] Tipo de teste realizado, Web ou API
"API"
path str Caminho do dir raíz até o teste
test.test_api.abc.ExemploTestCase
methods_count int Quantidade de cenários dentro do caso de teste
12
duration float Tempo de execução da classe, em segundos
21.076
readable str Nome "human-readable" da classe
"Caso de Exemplo"
manual_exec int Tempo de execução manual da classe, em segundos
720

Acesse o Relatório de Execução - Testes Automatizados para ver em detalhes o resultado obtido a partir das métricas observadas e quais tipos de informações são encontradas lá.

Licença

This project is under MPLv2 - Mozilla Public License Version 2.0. Permissions of this weak copyleft license are conditioned on making available source code of licensed files and modifications of those files under the same license (or in certain cases, one of the GNU licenses). Copyright and license notices must be preserved. Contributors provide an express grant of patent rights. However, a larger work using the licensed work may be distributed under different terms and without source code for files added in the larger work.

About

Este projeto desempenha um papel vital ao preservar a integridade de dois sistemas por meio de testes rigorosos via Web e API. Ao empregar Python como linguagem principal e Selenium e Zeep como ferramentas-chave, a automação simula interações simples e complexas realizadas por usuários em operações cotidianas.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published