Projeto de automação de testes para o sistema ERP desktop myCommerce, utilizando Robot Framework com SikuliLibrary para reconhecimento visual de imagens.
| Tecnologia | Descrição |
|---|---|
| Python 3.12+ | Linguagem de programação principal |
| Robot Framework | Framework de automação de testes |
| SikuliLibrary | Reconhecimento visual de imagens na tela |
| ImageHorizonLibrary | Interação via teclado e teclas especiais |
| DatabaseLibrary | Consultas e validações no banco de dados MySQL |
| FakerLibrary | Geração de dados aleatórios para testes |
| Java 8+ | Necessário para o SikuliLibrary funcionar |
Para executar os testes automatizados, é necessário:
- Visual Studio Code com extensão RobotCode (
d-biehl.robotcode) - Python 3.12 ou superior (instalado para todos os usuários e adicionado ao PATH)
- Java JDK 8 ou superior (com variável JAVA_HOME configurada no sistema)
- Acesso ao banco de dados MySQL do myCommerce
git clone <repositorio>
cd mycommerce-automacaoInstale o Python para Windows para todos os usuários e marque a opção "Add to PATH" durante a instalação.
Instale o JDK e configure a variável de ambiente JAVA_HOME no sistema:
- Variável:
JAVA_HOME - Valor:
C:\Program Files\Java\jdk-17(ou versão instalada)
pip install -r docs/requirements.txtDependências do projeto:
- robotframework
- robotframework-SikuliLibrary
- robotframework-imagehorizonlibrary
- robotframework-databaselibrary
- robotframework-faker
- mysql-connector-python
- pymysql
mycommerce-automacao/
├── .github/ # Configurações do GitHub Copilot
│ ├── skills/ # Skills especializadas
│ ├── knowledge/ # Base de conhecimento
│ ├── guides/ # Guias de desenvolvimento
│ ├── prompts/ # Workflows e prompts
│ └── instructions/ # Regras globais
├── Testes_BancoAleatorio/ # Principal diretório de testes
│ ├── images/ # Todas as imagens .png para Sikuli
│ ├── KeyWords/ # Keywords organizadas por módulo
│ │ ├── Comercial/ # Vendas, Condicional, OS, etc.
│ │ ├── Financeiro/ # Caixa, Contas a Pagar, etc.
│ │ ├── Emissão/ # Notas Fiscais, Carregamento
│ │ └── Login/ # Teste de login
│ ├── TestsCases/ # Test Cases espelhando KeyWords/
│ ├── utils/ # Keywords compartilhadas
│ │ ├── utils.robot # Funções reutilizáveis
│ │ ├── montadorDeCenarios.robot # Cenários compostos
│ │ ├── validacaoAviso.robot # Tratamento de popups
│ │ └── parametros_pre_condicoes.robot
│ └── libs/ # Bibliotecas Python
│ ├── validaParametros.py
│ ├── validaComissoes.py
│ ├── estoque.py
│ ├── leituraConfig.py
│ └── verificacoesExtras.py
├── Executar_Automacao.py # Script principal de execução
└── docs/ # Documentação
└── requirements.txt # Dependências Python
cd C:\Automacao\mycommerce-automacao\Testes_BancoAleatorio
robot -d .\results\ .\TestsCases\Comercial\Condicional\Teste_Condicional1.robotrobot -d .\results\ -i Teste01 .\TestsCases\Comercial\Condicional\Teste_Condicional1.robotrobot -d .\results\ -i Teste03 -i Teste04 .\TestsCases\Comercial\Condicional\Teste_Condicional1.robotcd C:\Automacao\mycommerce-automacao
python Executar_Automacao.pyIMPORTANTE: Clique na tela do myCommerce após iniciar a execução para garantir foco!
Basta descrever o que você quer em linguagem natural ao Copilot:
"Crie um teste para o módulo de Cadastro de Fornecedores.
O atalho para abrir é F9. Preciso testar: inclusão, edição e exclusão."
O Copilot automaticamente ativa a skill geracao-testcases e gera os arquivos automaticamente.
Determine qual funcionalidade do myCommerce será testada.
Testes_BancoAleatorio/
├── KeyWords/<Módulo>/<SubMódulo>/
└── TestsCases/<Módulo>/<SubMódulo>/
Use Win + Shift + S para capturar elementos da tela:
- Telas:
tela_NomeTela.png - Botões:
bt_NomeBotao.png - Inputs:
input_NomeInput.png - Labels:
lb_NomeLabel.png - Avisos:
aviso_NomeAviso.png
Salve em Testes_BancoAleatorio/images/
Localização: KeyWords/<Módulo>/<SubMódulo>/Key<Nome><N>.robot
Localização: TestsCases/<Módulo>/<SubMódulo>/Teste_<Nome><N>.robot
Keywords em KeyWords/<Módulo>/ e TestCases em TestsCases/<Módulo>/ com diretórios espelhados.
Keywords nomeadas com Dado/Quando/Então/E:
Dado que acesso a tela de comissões
Quando insiro o vendedor comissionado
E seleciono a comissão de produtos
Então baixo a comissão recebida
- Keywords:
Key<Nome>1.robot - Test Cases:
Teste_<Nome>1.robot
${TELA_}— Telas/janelas${AVISO_}— Avisos/alertas${BT_}— Botões${LB_}— Labels/rótulos${MODAL_}— Modais/popups${ROW_}— Linhas de grid
Todo arquivo .robot deve ter:
*** Settings ***
*** Variables ***
*** Keywords *** (ou *** Test Cases ***)
Variáveis DBHost, DBName, DBPass, DBPort, DBUser sempre presentes nos arquivos de Keywords.
${SLEEP_BAIXO} 0.7
${SLEEP_MEDIO} 1.5
${SLEEP_ALTO} 3
${TEMPO_TELA} 25Usar SikuliLibrary.Click quando há ambiguidade com outras libraries.
TestCases devem ter:
- Suite Setup: Start Sikuli → Ler imagens → Conectar BD → Preparar Ambiente
- Suite Teardown: Stop Remote Server
Todo test case deve ter [Tags] sequencial:
Teste 01 - Descrição
[Tags] Teste01
Teste 02 - Descrição
[Tags] Teste02| Atalho | Ação |
|---|---|
| F5 | Atualizar |
| F11 | Abre Condicionais |
| ALT+A | Adicionar |
| ALT+E | Editar |
| ALT+x | Excluir |
| ALT+F | Finalizar |
| ALT+G | Gravar / Gerar |
| ALT+S | Sim / Confirmar |
| ALT+D | Detalhes |
| ESC | Cancelar / Voltar |
| TAB | Próximo campo |
| ENTER | Confirmar |
.github/guides/guia-desenvolvimento-manual.md— Desenvolvimento manual passo a passo.github/guides/guia-desenvolvimento-com-ia.md— Desenvolvimento com assistência de IA
.github/knowledge/comissao/comissao-produto.md— Comissão por linha para produto.github/knowledge/comissao/comissao-servico.md— Comissão por linha para serviço.github/knowledge/comissao/comissao-prod-serv.md— Cenários combinados produto + serviço.github/knowledge/comissao/comissao-escalonada.md— Comissão escalonada.github/knowledge/comissao/comissao-tabpreco.md— Comissão por tabela de preço
.github/knowledge/frameworks/referencia-frameworks.md— Referência completa de Robot Framework, SikuliLibrary, DatabaseLibrary, etc.
O projeto possui 4 skills especializadas ativadas automaticamente pelo Copilot:
| Skill | Quando Usar |
|---|---|
| geracao-testcases | Criar novos testes, gerar templates, expandir cobertura |
| analise-codigo | Mapear keywords, inventariar módulos, relatório de cobertura |
| padroes-desenvolvimento | Entender arquitetura, padrões e convenções do projeto |
| documentacao-frameworks | Consultar API de frameworks, sintaxe, exemplos |
- Observar a falha: Identifique em qual keyword ocorreu o erro
- Verificar imagem: A imagem esperada estava correta na tela?
- Isolar o teste: Execute apenas o teste que falhou usando tags
- Testar manualmente: Reproduza o fluxo manualmente para confirmar
| Tipo de Falha | Solução |
|---|---|
| Imagem não encontrada | Re-capturar imagem na resolução correta (1920x1080) |
| Popup inesperado | Adicionar tratamento em validacaoAviso.robot |
| Query sem resultado | Verificar dados no banco |
| Timing | Aumentar Sleep antes da ação |
| Foco errado | Clicar na tela antes de executar ações |
O script Executar_Automacao.py automatiza a execução:
- Executa Login como primeiro teste obrigatório
- Itera sobre todos os
.robotemTestsCases/ - Se um teste falha: fecha o ERP, re-executa login, continua
- Gera relatórios em
Relatorios/<data>/Resultados Finais/
Este projeto faz parte da cultura de Quality Assurance da Visual Software. A automação de testes é fundamental para:
- Garantir qualidade: Cada release é validada automaticamente antes de ir para produção
- Reduzir erros manuais: Testes repetitivos são executados automaticamente
- Documentar comportamento: Os casos de teste servem como documentação viva do sistema
- Detectar regressões: Bugs conhecidos são evitados automaticamente
"Qualidade não é um ato, é um hábito." — Aristóteles
Projeto desenvolvido por Jaime Junior E mantido por Visual Software