Translate

domingo, 2 de maio de 2021

☕💣🚀 PADAWAN, O ZUNIT É O MOMENTO EM QUE O MAINFRAME APRENDEU A DESCONFIAR DOS PROGRAMADORES!

 

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

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