Automação de testes para Mainframe: Ambientes para prova de conceito

Preparando um ambiente de testes para a validação de ferramentas de automação de testes para mainframe

Sergio Rubio
6 min readJul 31, 2021
Servidor IBM 360. Fonte: Mainframe IT Debt Averages $11 Million, says Micro Focus (cfo.com)

Submeti recentemente a intenção de apresentar uma palestra sobre automação de testes para Mainframe, por uma experiência recente que tive de implementar esta abordagem nos processos de validação de programas desenvolvidos para Alta Plataforma. Porém, após a aprovação da submissão da palestra, já não mais trabalhava na empresa aonde desenvolvi os testes automatizados, e não tinha mais acesso a um ambiente de Mainframe para os testes.

Com isso, passei a observar as possibilidades para a execução de testes automatizados em um ambiente de testes de Alta Plataforma.

1a opção: Servidor 3270 instalado na máquina local.

O repositório do f3270, biblioteca Java no qual pretendo desenvolver a prova de conceito, possui em sua wiki uma série de instruções para a instalação de um “test system”, que trata-se de um emulador de Mainframe chamado Sim390, que roda em Windows e emula um subset da arquitetura ESA/390.

De acordo com a Wikipedia, a arquitetura ESA/390 é precursora da arquitetura Z, utilizada até hoje em empresas que mantém o sistemas legados em Mainframe. O fato mais interessante está na página inicial, que descreve:

It is very easy to install. It is possible to run it on a very small machine such as a Pentium 75 MHz with 16 MB memory (Windows 95).

Nota do autor: se não funcionar, sem problemas! Resgatei um CD de instalação q eu tinha aqui em casa… 👴

CD de instalação do Win95, uma das relíquias daqui de casa…

Juntamente com o Sim390, é necessária a instalação de um sistema operacional chamado MUSIC/SP, ou Multi-User System for Interactive Computing / System Product, que contém aplicativos como um editor para 3270, utilitários para TCP/IP (servidor Web, cliente e servidor FTP etc.).

Para rodar o Sim390 com o MUSIC/SP instalado, foi necessário seguir os seguintes passos:

  • Baixar o Sim390 neste link, e descompactar os arquivos para o diretório C:\sim390dm
  • Baixar o MUSIC/SP neste link, e descompactar os arquivos para o mesmo diretório C:\sim390dm
  • Alterar as seguintes linhas contidas no arquivo “musicxdm.cfg”:
* Retirar o comentário da linha abaixo:
autoipl 201 blankcmd
* Alterar a porta listada abaixo para a porta "23"
remote3270port 23
  • Acessar o Prompt de Comando, entrar no diretório C:\sim390dm e executar o comando “sim390_17 musicxdm.cfg”:
Execução do Sim390 via Prompt de Comando

Serão exibidas duas janelas. Um console do Sim390 e um painel de controle:

Console do Sim390
Painel de controle do Sim390

No painel de controle do Sim390 pode ser executado também um emulador de terminal, para testar o correto funcionamento do sistema operacional MUSIC/SP:

Opção para a execução de um terminal 3270
Tela inicial do MUSIC/SP, aberta no terminal 3270

Primeiros testes de acesso ao Sim390

O ambiente local configurado possibilitou a criação de um projeto para a validação de ferramenta de automação de testes para Mainframe. Neste artigo, farei a automação utilizando o JUnit5 como framework de teste e a biblioteca f3270 sendo o driver de automação para Mainframe. Criei um novo projeto Maven, incluindo as dependências ao JUnit5 e f3270 e copiando o s3270 na raiz do projeto. Após a configuração do projeto, criei uma classe simples de teste para testar o acesso ao MUSIC/SP:

public class MusicSpTest {    private static Terminal terminal;    @BeforeAll
public static void setUp() {
terminal = new Terminal(
"s3270/s3270","127.0.0.1", 23,
TerminalType.TYPE_3279, TerminalModel.MODE_80_24,
HostCharset.US_INTL, true);
terminal.connect();
}
@Test
public void logOnMusicSp() {
terminal.enter();
terminal.write("$000");
}
}

Após a execução do teste, sucesso ao utilizar o f3270!

Execução do teste de acesso ao MUSIC/SP através do f3270

2a opção: servidor IBM i de acesso público

Ferramentas de automação de testes para mainframe baseadas em terminal 3270 também podem ser utilizadas para terminais 5250, como AS/400 ou IBM i. Para possibilitar o teste, existe um mapeamento descrito na seguinte página: 3270 keyboard mapping for Telnet servers — IBM Documentation.

Este mapeamento abriu a possibilidade de trabalhar também com sistemas baseados em IBM i. De acordo com a Wikipedia, o IBM i foi originalmente lançado em 1988 como OS/400, junto com a linha de sistemas IBM AS/400. Foi renomeado para i5/OS em 2004, antes de ser renomeado pela segunda vez para IBM i em 2008.

Fui informado por um colega de trabalho (obrigado Eduardo Marcó!) da existência de um servidor público no endereço pub400.com. Acesssando o seguinte link, será solicitado o cadastramento de um usuário, que posteriormente é criado neste servidor, juntamente com um workspace próprio para o desenvolvimento de programas. O cadastramento deste usuário foi concluído rapidamente, e logo em seguida já recebi um email com as instruções para o acesso e a redefinição da senha.

O próximo passo foi a instalação de um terminal para acesso ao terminal local. Para tal, fiz a instalação do IBM i Access Client Solutions, um pacote de funcionalidades de acesso a servidores IBM i, incluindo um terminal 5250. Primeiro, é necessário o cadastramento de uma nova sessão 5250 na seguinte opção:

Acessando uma terminal 5250 pelo Access Client Solution

Após clicar em “Nova Sessão de Exibição”, será apresentada uma tela para informar os dados de conexão. Neste momento, basta informar os dados para a conexão recebidos no email recebido do pub400.com:

Configurando uma nova sessão 5250 para acesso ao pub400.com

Clicando em OK, será exibida a tela do terminal, seguida do login. O primeiro login exigirá a redefinição da senha. Após a redefinição da senha, o acesso é efetuado:

Tela inicial do pub400.com na sessão 5250

Neste momento, informar o mesmo login e senha e digitar <enter>. Com isso, já conseguimos o acesso para a utilização do servidor IBM i:

Tela inicial do pub400.com após o login bem sucedido

Primeiros testes de acesso ao servidor IBM i

Estas telas já possibilitaram nova validação da ferramenta de automação de testes para Mainframe que selecionamos anteriormente, o f3270. Na mesma estrutura do projeto, criei uma classe simples de teste para testar o acesso ao IBM i:

public class Pub400Test {

private static Terminal terminal;

@BeforeAll
public static void setUp() {
terminal = new Terminal(
"s3270/s3270","pub400.com", 23,
TerminalType.TYPE_3279, TerminalModel.MODE_80_24,
HostCharset.US_INTL, true);
terminal.connect();
}

@Test
public void logOnPub400() {
terminal.write("SFRUBIO");
}
}

Após a execução do teste, o acesso foi efetuado corretamente ao IBM i. Bingo!

Execução do teste de acesso ao pub400.com através do f3270

Outras opções de ambientes

Existe também a possibilidade de criação de um servidor IBM i localmente, com a utilização de uma máquina virtual com o Proxmob, um sistema operacional baseado em Debian, que permite a utilização de Linux Containers (LXC). No caso, um container LXC contendo o IBM i pode ser encontrado neste link. Todo o passo-a-passo para a configuração e utilização pode ser encontrado neste artigo: IBM i : noVNC + Containers + IBM i Access Client Solutions — 5250 on ANY browser (with HTML5) | LinkedIn.

Existe também um servidor pago, aonde um servidor IBM i é ofertado em diversas configurações, disponível neste link.

Conclusão

Ao contrário do que eu pensava, temos também alguns “sandboxes” para a prática de desenvolvimento de mainframe, tanto para sistemas operacionais baseados em terminais 3270 (ESA/390, IBM Z series) como para os baseados em terminais 5250 (AS/400, IBM i).

Com estas duas opções, podemos prosseguir com a realização de uma prova de conceito para a automação de testes para mainframe. Em breve, postarei a respeito de como montar a arquitetura para a automação de testes, utilizando o f3270 e padrões de projetos como driver factory e page objects.

--

--

Sergio Rubio

Líder de engenharia atuando desde 2003 atuando na área de Qualidade de Software. Sólidos conhecimentos em automação, com aquela queda maior por Java :-)