| Bellacosa Mainframe e o zunit testes unitarios em ibm mainframe |
☕💣🚀 PADAWAN, O ZUNIT É O MOMENTO EM QUE O MAINFRAME APRENDEU A DESCONFIAR DOS PROGRAMADORES!
Durante décadas, o desenvolvedor COBOL vivia numa realidade curiosa.
Ele alterava um programa de 30.000 linhas.
Compilava.
Executava.
Rezava.
Se nada explodisse em produção, considerava um sucesso.
Foi assim em milhares de empresas durante mais de 50 anos.
Então surgiu uma pergunta perigosa:
"E se o COBOL pudesse ser testado automaticamente antes de chegar à produção?"
Foi dessa necessidade que nasceu o IBM ZUnit.
Uma das tecnologias mais subestimadas do ecossistema z/OS moderno.
O QUE É O ZUNIT?
O IBM ZUnit é um framework de testes unitários para aplicações desenvolvidas no ambiente IBM Z.
Seu objetivo é simples:
testar programas COBOL
testar programas PL/I
validar regras de negócio
automatizar regressões
integrar testes ao DevOps
Antes do ZUnit:
Alteração
↓
Compilação
↓
Execução Manual
↓
Análise de Resultado
↓
Torcer para funcionar
Com ZUnit:
Alteração
↓
Compilação
↓
Execução Automática
↓
Validação Automática
↓
Relatório
↓
Deploy
É a filosofia do:
"Confiar é bom. Testar é melhor."
HISTÓRIA
Até meados dos anos 2000, o conceito de testes automatizados era dominado pelo mundo Java.
Existiam:
JUnit
NUnit
xUnit
Enquanto isso, no mainframe:
TESTE = EXECUTAR O JOB
A IBM percebeu que isso não era sustentável.
O crescimento de:
DevOps
Agile
CI/CD
exigia automação.
Então nasceu o projeto que mais tarde se tornaria:
IBM ZUnit Test Framework
integrado ao ambiente de desenvolvimento IBM.
DATA DE LANÇAMENTO
O ZUnit apareceu inicialmente integrado ao:
IBM Rational Developer for System z (RDz)
por volta de:
2014–2015
Posteriormente evoluiu para:
IBM Developer for z/OS (IDz)
onde continua sendo desenvolvido.
Atualmente faz parte do ecossistema:
IBM Developer for z/OS
IBM Dependency Based Build
IBM Wazi
IBM DevOps for Z
A GRANDE IDEIA
Imagine um programa COBOL:
CALCULA-DESCONTO.
Entrada:
VALOR = 1000
Saída esperada:
DESCONTO = 100
O ZUnit permite registrar:
Entrada
↓
Execução
↓
Saída Esperada
e repetir esse teste automaticamente milhares de vezes.
FILOSOFIA DO TESTE UNITÁRIO
Padawan...
O teste unitário não verifica o sistema inteiro.
Ele verifica uma unidade.
Normalmente:
Programa COBOL
ou
Subprograma COBOL
Exemplo:
CALCJUROS
Recebe:
VALOR
TAXA
PRAZO
Retorna:
JUROS
O ZUnit verifica apenas essa lógica.
COMO FUNCIONA
O framework captura:
INPUT
Parâmetros
Arquivos
Áreas de memória
PROCESSAMENTO
Executa o programa.
OUTPUT
Compara com resultado esperado.
ARQUITETURA
IDz
│
│
▼
Test Case
│
▼
Test Runner
│
▼
Programa COBOL
│
▼
Resultado
│
▼
Relatório
COMPONENTES PRINCIPAIS
Test Case
Define:
Dados de Entrada
Test Scenario
Conjunto de testes.
Exemplo:
Cliente VIP
Cliente Normal
Cliente Inadimplente
Test Runner
Executa automaticamente.
Assertions
Comparam resultados.
Exemplo:
Esperado = 100
Obtido = 100
PASSOU.
INSTALAÇÃO
Normalmente o ZUnit não é instalado isoladamente.
Ele vem integrado ao:
IBM Developer for z/OS
Componentes comuns:
z/OS
IDz
JES
ISPF
COBOL Compiler
ZUnit Runtime
PRÉ-REQUISITOS
Geralmente:
Enterprise COBOL
z/OS
IDz
USS configurado
JES ativo
Em ambientes corporativos:
LPAR DEV
LPAR QA
normalmente já possuem tudo configurado.
EXEMPLO PRÁTICO
Programa
IDENTIFICATION DIVISION.
PROGRAM-ID. SOMA.
WORKING-STORAGE SECTION.
01 NUM1 PIC 9(4).
01 NUM2 PIC 9(4).
01 RESULTADO PIC 9(5).
PROCEDURE DIVISION.
ADD NUM1 TO NUM2
GIVING RESULTADO.
GOBACK.
CRIANDO O TESTE
No IDz:
File
↓
New
↓
ZUnit Test Case
Selecionar:
Programa SOMA
Definir:
NUM1 = 10
NUM2 = 20
Resultado esperado:
30
EXECUÇÃO
Runner executa:
SOMA
Obtém:
30
Compara:
Esperado = 30
Obtido = 30
Resultado:
PASS
EXEMPLO DE FALHA
Esperado:
30
Obtido:
31
Relatório:
FAIL
com indicação do campo divergente.
TESTANDO CENTENAS DE CENÁRIOS
Padawan...
Aqui está o verdadeiro poder.
Você cria:
0 + 0
10 + 20
9999 + 1
5000 + 5000
Tudo executado automaticamente.
Em segundos.
TESTANDO PROGRAMAS CICS
O ZUnit consegue testar componentes que normalmente seriam executados sob CICS.
Exemplo:
EXEC CICS LINK
Através de stubs e ambientes controlados.
Isso reduz enormemente o tempo de validação.
TESTANDO DB2
Também é possível criar cenários envolvendo:
SELECT
INSERT
UPDATE
DELETE
utilizando ambientes isolados.
MOCKS E STUBS
Conceito muito usado no mundo distribuído.
Exemplo:
Programa chama:
CONSULTA-CLIENTE
Mas o programa real não existe no ambiente.
Criamos um:
Stub
que responde:
CLIENTE VÁLIDO
Assim o teste continua funcionando.
INTEGRAÇÃO COM DEVOPS
O ZUnit tornou-se peça importante do pipeline moderno.
Fluxo:
Git
↓
Build
↓
Compilação COBOL
↓
ZUnit
↓
Deploy
Se um teste falhar:
Deploy Bloqueado
BENEFÍCIOS REAIS
Menos regressões
Alterou um cálculo?
Execute 500 testes.
Mais confiança
Mudanças menores tornam-se seguras.
Documentação viva
Os testes mostram como o programa deveria funcionar.
Onboarding
Novo desenvolvedor entende rapidamente a lógica.
CURIOSIDADES
Curiosidade 1
Muitos sistemas COBOL possuem mais de:
20 milhões de linhas
Sem testes automatizados.
Curiosidade 2
Alguns bancos executam milhares de testes ZUnit por dia.
Antes mesmo do primeiro usuário acessar o sistema.
Curiosidade 3
Em muitos projetos, o maior esforço não é criar o teste.
É descobrir qual deveria ser o resultado correto.
Curiosidade 4
A adoção do ZUnit foi impulsionada pelo movimento:
Shift Left Testing
Testar mais cedo.
Corrigir mais barato.
DICAS DE MESTRE JEDI MAINFRAME
Não teste programas gigantes primeiro
Comece pelos módulos menores.
Teste regras de negócio
Prioridade:
Cálculos
Tarifas
Juros
Impostos
Limites
Automatize regressões
Todo defeito corrigido deve virar um teste.
Integre com Git
Cada commit deve executar testes.
Pense como um auditor
Pergunta:
"Como provo que este cálculo continua correto após a alteração?"
Se o ZUnit responde essa pergunta, você está usando a ferramenta corretamente.
O VERDADEIRO SIGNIFICADO DO ZUNIT
Padawan...
O ZUnit não foi criado para testar COBOL.
Ele foi criado para proteger conhecimento corporativo acumulado durante décadas.
Quando um banco possui um programa escrito em 1987, alterado por 200 pessoas diferentes ao longo de 40 anos, o risco não está na compilação.
O risco está em quebrar silenciosamente uma regra de negócio que movimenta milhões de reais por dia.
O ZUnit é a resposta moderna para um problema antigo:
"Como mudar um sistema legado sem destruir aquilo que o tornou valioso?"
E é justamente por isso que muitos arquitetos consideram o ZUnit uma das tecnologias mais importantes da modernização do IBM Z: não porque ele substitui o COBOL, mas porque permite evoluí-lo com segurança. ☕💣🚀
Sem comentários:
Enviar um comentário