PROBAT — engine de testes do tlppCore
O PROBAT é o conjunto de ferramentas nativas do tlppCore para criação e execução de testes em programas TLPP ou AdvPL — testes unitários, funcionais e integrados, com cobertura de código, histórico de execuções, suporte a TDD e integração com esteiras de CI/CD.
O nome vem do latim e remete a prova / teste. A ferramenta nasceu em 2017 como motor de testes unitários do próprio tlppCore e evoluiu para um motor de testes completo — REST, testes integrados, GUI nativa e automação DevOps — até ser promovida a produto expedido no tlpp.rpo.
Os exemplos desta seção vivem em totvs/tlpp-probat-samples.
- Expedido no pacote oficial do tlppCore (
tlpp.rpo) a partir do AppServer Harpia 20.3.1.x - Funciona somente a partir do binário 7.00.170117A (Lobo-Guará)
- Para testar fontes AdvPL, o teste deve obrigatoriamente ser escrito em TLPP
- Não possui recursos para testes de interface (telas)
O que o PROBAT oferece
| Recurso | O que resolve |
|---|---|
| Testes unitários, funcionais e integrados | Valida se o software cumpre as funcionalidades projetadas |
| Cobertura de código | Mostra se o plano de testes de fato percorre todo o código |
| Histórico em banco | Resultados persistidos em SQLite (ou DBAccess) para consulta e comparação |
| TDD | Permite desenvolver guiado por testes (Test-driven development) |
| Automação | Esteira de testes disparada por scripts, com captura de eventos externos |
| Export de resultados | XML no formato JUnit — consumível por Jenkins, GitLab CI, GitHub Actions etc. |
| Interface gráfica | GUI nativa via tlpp.probat.gui() para executar e consultar históricos |
Verificando a instalação
Antes de começar, confirme se o PROBAT está disponível no seu ambiente:
function sampleIsProbat()
local jModule
if ( tlpp.module( 'PROBAT', @jModule ) )
conout( 'Ferramenta: ' + jModule['module'] )
conout( 'Instalado?: ' + if( jModule['linked'], 'sim', 'nao' ) )
conout( 'Versão....: ' + jModule['version'] )
else
conout( ' >> Ferramenta não instalada <<' )
endif
return Nil
Estrutura do repositório de exemplos
| Pasta | Conteúdo |
|---|---|
ini/ | INIs do AppServer com a seção [PROBAT] configurada — ver Configuração |
run/ | Scripts de automação e o main.prw — ver Automação |
src/ | Fontes "de produção" que serão testados (no seu projeto, é o código oficial) |
test/ | Implementações dos testes com a sintaxe do PROBAT, organizadas por tema |
Trilha sugerida
Uma ordem só — do setup à esteira. O menu lateral espelha essa sequência.
| Etapa | O que você aprende | Comece em |
|---|---|---|
| 1 — Configuração | Diretórios, seção [PROBAT] no INI, config por código | Configuração |
| 2 — Annotations | @TestFixture, @Test, setups e teardowns | Annotations |
| 3 — Função e classe | As duas formas de escrever testes | Função e classe |
| 4 — Asserts | Catálogo de verificações | Asserts |
| 5 — Controle | Skip, Error Log, suites, thread e prioridade | Pulando testes |
| 6 — Cobertura | Percentual, export e validação | Cobertura |
| 7 — Execução | Discovery, run(), export JUnit e histórico | Execução e resultados |
| 8 — Cenários | API REST, banco de dados e TDD | API REST |
| 9 — Automação | Scripts, eventos externos e CI/CD | Automação |
Próximo passo: Configuração · Exemplos no GitHub
Referências oficiais
- Documentação técnica no TDN: tdn.totvs.com/display/tec/PROBAT
- Vídeo Iniciando no PROBAT no canal da TOTVS
- Sugestões e melhorias: issues do repositório