☕ Um Café no Bellacosa Mainframe
Gostou do conteúdo? Ajude a manter o café quente, o COBOL compilando e o mainframe acordado. 😄
☕ Pague um café ao Bellacosa

Translate

Mostrar mensagens com a etiqueta ZUnit. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta ZUnit. Mostrar todas as mensagens

quarta-feira, 29 de julho de 2026

O Portal Stargate do IBM Z : Descobre que Git, DevOps e CI/CD Não São Tecnologias Alienígenas.

 

Bellacosa Mainframe e o portal stargata para adentrar no novo mundo do desenvolvimento mainframe

☕ Um Café no Bellacosa Mainframe

O Portal Stargate do IBM Z

Quando um Programador COBOL Descobre que Git, DevOps e CI/CD Não São Tecnologias Alienígenas... São os Endereços para Viajar Entre Galáxias de Software

"Há milhares de anos, os Antigos construíram uma rede capaz de conectar mundos instantaneamente. No século XXI, engenheiros criaram outra rede capaz de conectar milhares de aplicações corporativas espalhadas pelo planeta. Seu nome não é Stargate... é Pipeline DevOps."



Prólogo — O Chevron Número Sete

O relógio marcava 03:27 da madrugada.

No Centro de Processamento de Dados, apenas o z16 permanecia acordado.

Milhões de transações cruzavam seus canais FICON.

Cartões eram autorizados.

PIX eram liquidados.

Voos eram confirmados.

Hospitais consultavam prontuários.

Bolsa de valores processava ordens.

E, em algum lugar daquele universo invisível, um jovem programador COBOL fazia sua primeira alteração em um COPYBOOK.

Ele acreditava que bastava alterar o código.

Mas o veterano apenas sorriu.

— Você ainda acha que um programa vive sozinho...

Naquele instante, uma enorme estrutura metálica começou a girar.

Não era um Stargate.

Era uma Pipeline.

Os chevrons começaram a travar.

Git...

DBB...

GitLab...

Jenkins...

ZUnit...

Deployment...

Produção.

O portal foi ativado.

E a verdadeira aventura começou.



Episódio 1 — O IBM Z é um Planeta

Em Stargate SG-1, cada planeta possui sua própria civilização.

No mundo IBM Z acontece exatamente o mesmo.

Cada ambiente é praticamente um planeta independente.

Desenvolvimento

↓

Integração

↓

Homologação

↓

Pré-Produção

↓

Produção

Cada um possui:

  • regras

  • segurança

  • bases de dados

  • usuários

  • aplicações

  • auditoria

  • monitoramento

Mover software entre esses mundos nunca foi simples.

Durante décadas isso era feito manualmente.

Hoje quem controla os portais é o DevOps.



Episódio 2 — O DHD Chama-se Git

Em Stargate existe um equipamento chamado DHD (Dial Home Device).

Ele controla o portal.

Sem ele, ninguém viaja.

No desenvolvimento moderno existe um equivalente.

Seu nome é Git.

Muitos iniciantes pensam que Git serve apenas para "guardar arquivos".

Isso seria como dizer que o DHD serve apenas para acender luzes.

Git controla praticamente toda a história da aplicação.

Ele registra:

  • quem alterou

  • quando alterou

  • por que alterou

  • quem aprovou

  • qual versão entrou em produção

  • qual versão voltou (rollback)

Cada commit representa um novo endereço gravado na memória do portal.


Curiosidade Bellacosa ☕

Em projetos antigos, a "verdade absoluta" era um PDS ou um Endevor.

Hoje, em arquiteturas modernas, a verdade oficial normalmente reside no repositório Git. Os datasets do z/OS continuam essenciais para compilação e execução, mas o histórico e a colaboração passam a ser organizados pelo controle de versão.


Episódio 3 — A Linguagem dos Antigos

Existe um problema que todo iniciante descobre cedo ou tarde.

Mainframe fala EBCDIC.

O restante do planeta fala ASCII ou UTF-8.

Imagine Daniel Jackson tentando traduzir uma inscrição dos Antigos.

Se errar um símbolo...

Toda a tradução muda.

O mesmo acontece durante uma migração para Git.

Sem conversão correta podemos encontrar situações como:

Antes

AÇÃO

Depois

AÇÃO

Parece pequeno.

Na prática pode causar:

  • conflitos de merge

  • comentários ilegíveis

  • documentação perdida

  • comparações falsas

  • arquivos inutilizados

Por isso existe toda uma estratégia de conversão de code pages.

É um dos assuntos mais importantes do curso.


Episódio 4 — O SGC Chama-se GitLab

No universo Stargate existe o Stargate Command.

É dali que todas as missões são coordenadas.

No DevOps existe um equivalente.

GitLab.

Ele não é apenas um servidor Git.

Ele funciona como uma base operacional.

Ali encontramos:

  • Issues

  • Merge Requests

  • Pipelines

  • Releases

  • Segurança

  • Artefatos

  • Auditoria

Quando um desenvolvedor envia um commit...

É como uma equipe SG retornando de uma missão.

Tudo será analisado.


Episódio 5 — O Iris é a Pipeline

No Stargate existe um Iris.

Ele impede que qualquer coisa atravesse o portal sem autorização.

No DevOps existe um Iris muito parecido.

A Pipeline.

Ela verifica automaticamente:

✔ O código compila?

✔ Os testes passaram?

✔ Existe vulnerabilidade?

✔ O padrão foi respeitado?

✔ Há aprovação?

Se alguma resposta for negativa...

O portal permanece fechado.

Nenhum software chega à produção.


Episódio 6 — Os Asgard Chamam-se DBB

Os Asgard eram extremamente inteligentes.

Criavam tecnologia capaz de resolver problemas gigantescos.

O DBB (Dependency Based Build) faz algo semelhante.

Imagine um banco com:

  • 18.000 programas COBOL

  • 6.000 COPYBOOKS

  • centenas de mapas BMS

  • milhares de JCLs

Você altera apenas um COPYBOOK.

A pergunta é inevitável.

Quem precisa ser recompilado?

Todos?

Claro que não.

O DBB investiga as dependências.

Ele descobre:

Programa A

↓

COPY X

↓

Programa B

↓

Programa C

↓

Programa D

Somente quem realmente depende daquela alteração será recompilado.

Isso economiza:

  • CPU

  • MIPS

  • tempo

  • dinheiro


Easter Egg ☕

Assim como os Asgard dominavam conhecimento acumulado durante milênios, o DBB concentra décadas de experiência em engenharia de build para IBM Z. O verdadeiro "superpoder" não é compilar mais rápido, mas evitar compilar o que não mudou.


Episódio 7 — Thor Apresenta o zAppBuild

O DBB precisa de alguém dizendo como construir a aplicação.

Esse papel pertence ao zAppBuild.

Ele funciona como um roteiro.

Compile

↓

Link

↓

Bind Db2

↓

Package

↓

Deploy

Sem improviso.

Sem dezenas de JCL diferentes.

Tudo padronizado.


Episódio 8 — O Antigo Conhecimento Perdido

Imagine encontrar um programa COBOL criado em 1987.

Ninguém sabe:

  • quem chama

  • quem utiliza

  • quais tabelas acessa

  • quais COPYBOOKS dependem dele

É exatamente aí que entra o ADDI.

Application Discovery and Delivery Intelligence.

Ele funciona como Daniel Jackson.

Escava.

Relaciona.

Traduz.

Reconstrói.

Mostra mapas gigantescos das dependências.

Você finalmente entende uma aplicação criada há quarenta anos.


Episódio 9 — A Equipe SG-1 Chama-se Jenkins

Em Stargate cada missão possui uma equipe.

No DevOps quem coordena diversas missões pode ser o Jenkins.

Ele recebe a ordem.

Executa.

Compila.

Chama scripts.

Executa testes.

Publica resultados.

Tudo automaticamente.

Em muitos ambientes ele trabalha lado a lado com GitLab, Azure DevOps ou outras plataformas de automação.



Episódio 10 — Outros Mundos: Azure e Wazi

O IBM Z já não vive isolado.

Hoje conversa naturalmente com:

  • Azure

  • OpenShift

  • Kubernetes

  • GitHub

  • GitLab

  • APIs REST

  • microsserviços

O Wazi as a Service demonstra exatamente isso.

Você pode desenvolver aplicações IBM Z utilizando ferramentas modernas hospedadas em nuvem.

É como atravessar o Stargate para outro planeta...

Sem abandonar seu idioma.


Episódio 11 — O Campo de Treinamento Tok'ra

Uma civilização não evolui sem treinamento.

Durante muito tempo acreditava-se que COBOL não fazia testes unitários.

Isso mudou.

Com o ZUnit podemos automatizar testes de programas COBOL.

Imagine uma alteração aparentemente simples.

Antes:

Alterar

↓

Compilar

↓

Mandar para homologação

Hoje:

Commit

↓

Build

↓

ZUnit

↓

Resultado

↓

Deploy

Se algum teste falhar...

A missão é cancelada.


Dica do Coronel O'Neill

"Confiar apenas porque compilou é como atravessar um Stargate sem verificar o planeta de destino."

Teste sempre.


Episódio 12 — O Conselho dos Antigos

Chega o momento do Deployment.

Aqui muitos iniciantes imaginam que basta copiar datasets.

Não.

Deployment moderno envolve:

  • empacotamento

  • aprovação

  • auditoria

  • versionamento

  • rollback

  • rastreabilidade

Cada release recebe identidade própria.

Nada entra em produção sem deixar um rastro.


Episódio 13 — As Coordenadas Galácticas (Branches)

Em Stargate cada planeta possui um endereço formado por chevrons.

No Git acontece algo parecido.

Cada branch representa um caminho de desenvolvimento.

main

├── develop

├── release

├── feature

└── hotfix

Cada uma possui finalidade específica.

Misturar tudo seria como discar símbolos aleatórios no Stargate.

Você provavelmente chegaria ao planeta errado.


Episódio 14 — A Cidade Perdida dos Antigos

Muitas empresas possuem aplicações criadas nos anos 1970.

Décadas de evolução.

Milhões de linhas COBOL.

Esses sistemas lembram Atlantis.

Imensos.

Poderosos.

Pouco compreendidos.

Ferramentas como o ADDI ajudam a revelar sua arquitetura, permitindo que equipes modernas façam mudanças com muito mais segurança.


Episódio 15 — O Oráculo da Performance

No fim da jornada surge outro personagem importante.

O APA (Application Performance Analyzer).

Compilar não basta.

Executar também não.

É preciso executar bem.

O APA mostra:

  • consumo de CPU

  • hotspots

  • chamadas excessivas

  • gargalos

  • desperdícios

É como um sensor Asgard analisando cada detalhe de uma nave antes da decolagem.



A Grande Missão DevOps

Quando unimos todas as tecnologias do curso, obtemos uma cadeia contínua de entrega de software:

Programador COBOL
        │
        ▼
 VS Code / IDz
        │
        ▼
      Git
        │
        ▼
 Merge Request
        │
        ▼
 GitLab / Jenkins
        │
        ▼
 DBB + zAppBuild
        │
        ▼
     Build
        │
        ▼
     ZUnit
        │
        ▼
      ADDI
        │
        ▼
  Empacotamento
        │
        ▼
 Deploy Automatizado
        │
        ▼
   CICS • Batch • Db2 • IMS
        │
        ▼
 APA • Monitoramento

Observe como praticamente tudo ocorre de maneira automática. O desenvolvedor continua sendo indispensável, mas passa a dedicar mais tempo ao desenho da solução e menos às tarefas repetitivas.


Passo a Passo para o Iniciante

Se você está começando agora no mundo IBM Z, esta é uma sequência de estudos que faz muito sentido:

  1. Aprenda bem COBOL, JCL, TSO/ISPF e os fundamentos do z/OS.

  2. Entenda VSAM, Db2, CICS e como uma aplicação corporativa é estruturada.

  3. Estude Git profundamente: commits, branches, merge, rebase e revisão de código.

  4. Aprenda conceitos de CI/CD antes de decorar ferramentas específicas.

  5. Conheça DBB e zAppBuild para compreender como builds modernos funcionam.

  6. Estude ZUnit e incorpore testes automatizados desde cedo.

  7. Explore o ADDI para entender impacto de mudanças em aplicações legadas.

  8. Aprenda uma plataforma de orquestração, como GitLab ou Jenkins.

  9. Entenda estratégias de deployment, rollback e versionamento.

  10. Finalmente, aprofunde-se em performance, observabilidade e engenharia de plataformas.

Essa sequência faz com que cada etapa tenha um propósito claro e evita a sensação de aprender tecnologias desconectadas.


Curiosidades que Pouca Gente Conhece

  • O maior desafio de uma pipeline IBM Z normalmente não é compilar COBOL, mas entender corretamente as dependências entre milhares de componentes.

  • Muitos bancos executam centenas ou milhares de pipelines diariamente sem que clientes percebam que há mudanças em produção.

  • Um único COPYBOOK compartilhado pode impactar centenas de programas diferentes.

  • Ferramentas de descoberta de aplicações, como o ADDI, ajudam equipes que nunca participaram do desenvolvimento original a compreender sistemas com décadas de evolução.

  • O movimento Open Mainframe Project acelerou a integração entre tecnologias abertas e o ecossistema IBM Z, aproximando práticas modernas de engenharia de software do ambiente corporativo tradicional.


Conclusão — O Oitavo Chevron

No último episódio de muitas temporadas de Stargate, descobrimos que o verdadeiro objetivo nunca foi apenas atravessar portais.

Era compreender uma rede inteira de civilizações.

O mesmo acontece com o IBM Z.

O programador iniciante costuma acreditar que aprender COBOL é suficiente.

Depois percebe que existe Db2.

Em seguida descobre CICS.

Depois VSAM.

Mais tarde encontra Git.

Pipeline.

DBB.

GitLab.

Jenkins.

ZUnit.

ADDI.

Deployment.

Performance.

Observabilidade.

Cada tecnologia parece um novo planeta.

Mas, pouco a pouco, surge uma revelação: todas fazem parte de uma única galáxia.

O verdadeiro arquiteto não conhece apenas uma linguagem de programação. Ele entende como cada componente conversa com os demais, como uma alteração percorre toda a cadeia de entrega e como manter sistemas que processam bilhões de transações com segurança e previsibilidade.

No fim, o maior portal nunca foi o Stargate.

Foi a mudança de mentalidade.

Quando você deixa de enxergar um simples programa COBOL e passa a visualizar todo o ecossistema que o cerca, o oitavo chevron finalmente trava... e uma nova galáxia de oportunidades se abre diante de você.

Easter Egg Bellacosa: se um dia você ouvir um veterano dizer "o programa compilou, mas a pipeline não deixou passar", lembre-se do Iris do Stargate. O código pode estar pronto para atravessar o portal, mas somente aplicações que sobreviverem a todas as verificações chegam ao destino final: a produção do IBM Z.

quinta-feira, 11 de junho de 2026

☕💣🚀 PADAWAN, TESTAR COBOL NÃO É DESCONFIAR DO PROGRAMA. É DESCONFIAR DE SI MESMO!

Bellacosa Mainframe e tecnicas e ferramentas de teste automatizado em ibm mainframe

☕💣🚀 PADAWAN, TESTAR COBOL NÃO É DESCONFIAR DO PROGRAMA. É DESCONFIAR DE SI MESMO!

A Arte Esquecida dos Testes no IBM Mainframe

Existe uma crença antiga nos corredores dos CPDs:

"Se compilou sem erro e rodou em produção, então está certo."

Foi exatamente esse tipo de pensamento que produziu alguns dos maiores incidentes da história da computação corporativa.

No mundo Mainframe, um erro não afeta apenas um usuário.

Pode afetar:

  • milhões de contas bancárias

  • faturamento de operadoras

  • pagamento de aposentadorias

  • processamento de cartões

  • sistemas governamentais

Por isso, testar COBOL nunca foi opcional.

Sempre foi sobrevivência.

O curioso é que durante décadas o programador COBOL executava testes praticamente de forma artesanal:

  1. Criava um arquivo de teste

  2. Submetia um JOB

  3. Esperava terminar

  4. Analisava SYSOUT

  5. Corrigia

  6. Repetia

Hoje o cenário mudou radicalmente.

Temos frameworks modernos, automação, DevOps, CI/CD e até testes unitários para COBOL.

Sim.

Você leu corretamente.

Testes unitários para COBOL.


Como Pensar em Testes COBOL

Antes das ferramentas, precisamos entender os níveis de teste.

1. Teste Unitário

Valida apenas uma rotina.

Exemplo:

Programa calcula juros.

Entrada:

VALOR = 1000
TAXA  = 10

Saída esperada:

1100

Nada de arquivos.

Nada de DB2.

Nada de CICS.

Somente lógica.


2. Teste de Integração

Valida interação entre componentes.

Exemplo:

COBOL
 ↓
DB2
 ↓
MQ
 ↓
Outro Sistema

Aqui os problemas aparecem.

A lógica funciona.

A integração não.


3. Teste de Sistema

Avalia o fluxo completo.

Exemplo:

Tela CICS
 ↓
COBOL
 ↓
DB2
 ↓
IMS
 ↓
MQ

Tudo junto.

Como acontece na produção.


4. Teste de Regressão

O mais importante.

Você altera uma linha.

Precisa garantir que não destruiu outras 500 funcionalidades.

É aqui que a automação brilha.


Ferramenta 1 — IBM ZUnit

A joia da coroa da IBM.

ZUnit é o framework oficial de testes unitários para COBOL.

Foi criado para trazer ao Mainframe conceitos comuns em Java e .NET.

Zunit - https://eljefemidnightlunch.blogspot.com/2021/05/padawan-o-zunit-e-o-momento-em-que-o.html 

Vantagens

✔ Teste automatizado

✔ Integrado ao IDz

✔ Repetível

✔ Excelente para DevOps

✔ Integração com pipelines


Desvantagens

✘ Curva de aprendizado

✘ Dependência do ecossistema IBM

✘ Nem sempre simples para programas antigos


Exemplo Prático com ZUnit

Suponha o programa:

IDENTIFICATION DIVISION.
PROGRAM-ID. CALCJURO.

COMPUTE VALOR-FINAL =
        VALOR + (VALOR * TAXA / 100).

Passo 1

Abrir IDz.


Passo 2

Criar projeto ZUnit.

File
  New
    ZUnit Test Case

Passo 3

Selecionar programa COBOL.

CALCJURO

Passo 4

Definir entrada.

VALOR = 1000
TAXA  = 10

Passo 5

Definir saída esperada.

1100

Passo 6

Executar.

Run As
   ZUnit Test

Resultado:

PASS

ou

FAIL

Ferramenta 2 — IBM COBOL Check: Encontrando Defeitos Antes da Execução

Antes de executar qualquer teste, existe uma etapa ainda mais inteligente.

A análise estática.

É aqui que entra o IBM COBOL Check.

IBM Cobol Check - https://eljefemidnightlunch.blogspot.com/2026/06/ibm-cobol-check-ferramenta-que-trouxe.html

O Que É?

O COBOL Check examina o código-fonte procurando defeitos potenciais sem executar uma única instrução.

Ele atua como um inspetor de qualidade automatizado.

Enquanto o ZUnit pergunta:

"O programa funciona?"

O COBOL Check pergunta:

"Existe algo suspeito neste código?"


Problemas Detectados

Variáveis Não Inicializadas

01 WS-TOTAL PIC 9(05).

ADD 100 TO WS-TOTAL.

O campo recebeu valor antes?

Talvez não.


Índices Fora da Faixa

MOVE 150 TO WS-INDICE.

MOVE 'ABC' TO WS-DADO(WS-INDICE).

Tabela com apenas 100 ocorrências.

Possível S0C4.


Código Morto

STOP RUN.

DISPLAY 'NUNCA EXECUTA'

Trecho inalcançável.


Condições Impossíveis

IF VALOR > 100
AND VALOR < 50

Nunca será verdadeiro.


Possíveis S0C7

MOVE 'ABCDE' TO CAMPO-NUMERICO.

ADD 1 TO CAMPO-NUMERICO.

Compila.

Mas pode explodir em produção.


Vantagens do COBOL Check

✔ Não precisa executar o programa

✔ Automatizável

✔ Excelente para DevOps

✔ Descobre defeitos cedo

✔ Padronização corporativa


Desvantagens

✘ Não substitui testes

✘ Pode gerar falsos positivos

✘ Requer parametrização adequada


Ferramenta 3 — IBM Debug Tool

Muita gente acha que Debug Tool serve apenas para depuração.

Errado.

Ele também é excelente para validação de comportamento.

Vantagens

✔ Sem alterar código

✔ Breakpoints

✔ Análise em tempo real

✔ Visualização de variáveis


Desvantagens

✘ Não substitui testes automatizados

✘ Processo mais manual


Exemplo

Interceptar:

COMPUTE TOTAL = A + B

Durante execução:

AT LINE 125
DISPLAY TOTAL

Verificando se:

10 + 15 = 25

Ferramenta 4 — File-AID

Uma das ferramentas mais usadas para testes.

Principalmente em ambientes bancários.

O que faz?

Criação de massa de testes.

Manipulação de arquivos.

Comparação de resultados.


Exemplo

Criar arquivo VSAM contendo:

CLIENTE 001
CLIENTE 002
CLIENTE 003

Executar programa.

Comparar resultado.


Vantagens

✔ Rápido

✔ Simples

✔ Excelente para testes batch


Desvantagens

✘ Não executa lógica unitária

✘ Foco em dados


Ferramenta 5 — Xpediter

O lendário depurador da Compuware/BMC.

Praticamente um microscópio para COBOL.

Permite

  • Breakpoints

  • Alteração dinâmica

  • Rastreamento

  • Simulação


Vantagens

✔ Muito poderoso

✔ Excelente para programas complexos

✔ Integração com CICS


Desvantagens

✘ Licenciamento

✘ Excesso de recursos para iniciantes


Ferramenta 6 — Abend-AID

Não é exatamente uma ferramenta de testes.

Mas salva vidas.

Quando ocorre:

S0C7

ou

S0C4

Ela mostra:

  • linha exata

  • variável envolvida

  • conteúdo dos campos


Vantagens

✔ Diagnóstico rápido

✔ Redução de MTTR

✔ Histórico de falhas


Desvantagens

✘ Atua após o erro

✘ Não evita defeitos


Técnica Clássica: Golden File

Uma das técnicas mais usadas em Mainframe.

Executa-se um programa conhecido.

Resultado esperado:

ARQ-OK

Depois da alteração:

ARQ-NOVO

Comparação:

SUPERC

ou

File-AID Compare

Se forem idênticos:

TESTE APROVADO

Técnica Moderna: Mocking

Muito usada com ZUnit.

Imagine:

SELECT CLIENTE
       ASSIGN TO VSAMCLI.

Em vez de acessar VSAM real:

VSAM MOCK

Resultado:

  • teste rápido

  • sem riscos

  • repetível


Técnica de Cobertura

Pergunta simples:

Quanto do programa foi realmente executado?

Muitos acreditam:

Teste passou

Logo:

Programa está correto

Não necessariamente.

Você pode ter testado apenas 20% dos caminhos.

Ferramentas modernas ajudam a medir cobertura.


Curiosidades Históricas

COBOL já tinha testes antes da moda

Décadas antes de JUnit existir:

Programadores Mainframe já criavam:

ARQTEST1
ARQTEST2
ARQTEST3

Executando cenários controlados.

Na prática, eram testes unitários artesanais.


O custo do erro

Um defeito descoberto:

  • Durante codificação → custo 1x

  • Durante homologação → custo 10x

  • Em produção → custo 100x

Essa regra continua válida.


Grandes bancos executam milhões de testes

Em ambientes modernos de DevOps Mainframe, pipelines podem disparar milhares de testes automáticos a cada alteração de código COBOL.

O objetivo é simples:

Quebrar no laboratório para não quebrar na produção.


Dicas do Bellacosa

☕ Dica 1

Nunca teste apenas o cenário feliz.

Teste:

  • zeros

  • negativos

  • máximos

  • mínimos

  • espaços

  • nulos


☕ Dica 2

Todo S0C7 que chega em produção é um teste que faltou.


☕ Dica 3

Crie bibliotecas permanentes de massa de testes.

Economiza centenas de horas.


☕ Dica 4

Automatize tudo o que puder.

O programador esquece.

O script não.


☕ Dica 5

Sempre mantenha testes de regressão após correções.

O defeito corrigido hoje costuma reaparecer daqui seis meses.


Exemplo de Pipeline DevOps Mainframe

Git
 ↓
Commit
 ↓
Build COBOL
 ↓
ZUnit
 ↓
Análise de Qualidade
 ↓
Deploy Homologação
 ↓
Testes Integração
 ↓
Produção

Cada etapa reduz riscos.

Cada teste reduz surpresas.


Resumo Executivo

Testar COBOL em ambiente IBM Mainframe deixou de ser uma atividade manual e passou a ser parte fundamental da engenharia moderna de software. Ferramentas como IBM ZUnit, Debug Tool, File-AID, Xpediter e Abend-AID permitem validar lógica, criar massas de teste, depurar falhas e automatizar regressões. O segredo não está apenas na ferramenta, mas na disciplina de criar cenários abrangentes, automatizar execuções e manter uma suíte de testes confiável. No fim das contas, o verdadeiro profissional Mainframe não é aquele que nunca gera defeitos. É aquele que constrói mecanismos para encontrá-los antes que o cliente encontre primeiro.

☕💣🚀 PADAWAN, O TESTE NÃO EXISTE PARA PROVAR QUE SEU COBOL ESTÁ CERTO. ELE EXISTE PARA PROVAR QUANTAS MANEIRAS ELE AINDA TEM DE DAR ERRADO ANTES DA PRODUÇÃO DESCOBRIR!


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. ☕💣🚀


Vagner Renato Bellacosa, IBM Champion e especialista em IBM Mainframe
IBM Z17 SYSTEM ONLINE
Sobre o autor

Vagner Renato Bellacosa

IBM Champion 2026 • Especialista em IBM Mainframe

Vagner Renato Bellacosa trabalha com IBM Mainframe desde 1988 , é IBM Champion e especialista em COBOL, CICS, Db2, z/OS e IBM Z. Compartilha experiências profissionais, conhecimento técnico, história da computação e práticas do universo mainframe para aproximar novas gerações das tecnologias que sustentam empresas, bancos e governos ao redor do mundo.

IBM Champion IBM Z COBOL CICS Db2 z/OS Mainframe desde 1988
GitHub LinkedIn
Inicializando conteúdo...