Automação de Testes em Ruby com BDD usando Rspec

Falando um pouco mais sobre automação de testes — Já falei um pouco sobre Python + Pytest aqui https://medium.com/@matheus.adejair/integrando-pytest-com-reportportal-4eab7e91ff33 — trago aqui um pouco sobre a utilização do Ruby para automatizar validações de API usando a biblioteca Rspec para implementação de cenários com BDD.

O que é o Rspec?

Rspec é um framework de desenvolvimento orientada por com portamento, para utilização de programadores Ruby. Esta ferramenta é considerada uma meta-gem, ou seja, que utiliza outras gens para seu funcionamento. São elas:
- spec-core
- rspec-responses
- rspec-mocks
Cada uma delas pode ser instalada separadamente e carregado isoladamente usando o arquivo de configuração require ( que veremos na sequência) mas, para este artigo, iremos importar o pacote completo do Rspec.
Abaixo, seguem os links para melhor contextualizar o que é e como funciona o Rspec:
RSpec: Behaviour Driven Development for Ruby
Publisher: RSpec — Relish (relishapp.com)

Como é o funcionamento de uma RubyGem?

Para melhor entendermos o funcionamento, vamos entender primeiro o que são as gens.
RubyGems é um sistema de pacotes Ruby que facilita a criação, compartilhamento e instalação de bibliotecas. Assim como na maioria das linguagens de programação, Ruby utiliza um grande conjunto de bibliotecas de terceiros e sua forma de disponibilização são as gens.
Aqui, neste link, tem uma melhor explicação de utilização das bibliotecas e como importá-las https://www.ruby-lang.org/pt/libraries/

Configurações para iniciarmos as automações

Considerando que estamos trabalhando em ambiente Windows e que já temos a instalação do Ruby e suas dependências já feitas e a instalação do VSCode para implementar os testes.

Obs.:
Caso ainda não tenha Ruby instalado, siga os passos deste link
https://www.ruby-lang.org/pt/documentation/installation/
Caso ainda não tenha o VSCode, siga os passos deste link
Download Visual Studio Code — Mac, Linux, Windows
Após, instalar o VSCode, instale os plugins do Ruby, Cucumber e Vscode icons

Seguindo a instalação das bibliotecas, primeiro precisaremos ter instalado a gem Bundler, que é o nosso gerenciador de dependências que vai usar o arquivo Gemfile, que iremos criar no próximo passo — para fazer uma comparação, com o JAVA, usamos o Maven que utiliza o formato de XML para adição de dependências de projeto no arquivo POM.

Iniciando o processo, basta executar o comando gem install bundler no seu CMD/Terminal. Com o Bundler, você pode especificar todas as dependências necessárias através do Gemfile. Esse arquivo deve conter a declaração das dependências necessárias para o seu projeto executar.

Para ficar mais claro, escolha um diretório no seu computador, em seguida execute os comando abaixo:

gem install bundler
bundle init

O primeiro comando ira instalar a execução do bunbler e o segundo irá inicializa-lo, criando no diretório escolhido o arquivo Gemfile.

Segue imagem exemplificando a estrutura dos arquivos e pasta

Até aqui tudo tranquilo, temos o esqueleto padrão do nosso Gemfile.

Obs.: Caso seja criado uma linha no arquivo contendo : git_source(:github) {|repo_name| “https://github.com/#{repo_name}" } pode deletar, pois não usaremos nenhum vinculo com repositório neste exemplo.

Agora precisamos setar nossas dependências do projeto, para fazer isso temos uma sintaxe padrão com diferentes opções:

Uma opção é identificar a gem da qual vamos instalar, apenas inserindo o seguinte linha:

gem 'rspec'

Ou, podemos inserir com o descritivo da versão desejada:

gem 'rspec', 'x.0.0'

No nosso caso vamos manter a primeira sintaxe, para que seja instalada a versão mais atual do Rspec.
Inserindo a linha, salve o arquivo, volte ao terminal e execute o comando bundler install.

Assim como na imagem, o terminal apresenta as dependências instaladas com sucesso e deverá ser gerado um arquivo .lock, que mostra o log da execução do bundle.

Vamos ao Rspec

Agora, vamos a criação do projeto com o Rspec.
Ainda com terminal aberto, vamos executar o comando rspec — init

Assim como mostrado na imagem, o comando deverá criar uma pasta contendo arquivo spec_helper.rb e na raiz, um arquivo .rspec

Próximo passo é criar um arquivo para criarmos as definições dos primeiros passos, usando métodos de Context, Describe e it.

O que é cada método:
describe-> Método que serve para “aninhar” um grupo de exemplos;
context->Método que também serve com mesmo propósito do Describe mas, sendo usado dentro deste para aninhar cada contexto a ser validado;
it -> Método que referencia o exemplo do cenários a ser validado.

Criando os cenários

Vamos começar criando arquivo de nome describe_it_spec.rb ( ou nome de achar melhor).
Todo o arquivo criado para uso do Rspec deve conter obrigatoriamente o _spec.rb para que a biblioteca execute de maneira correta. Então, botão direito do mouse na pasta de nome spec, opção new file e crie seu arquivo.

Na imagem podemos já entender a criação de um describe, contento o descritivo do que os métodos dentro do context deverão fazer, um context, com descritivo do que o bloco de validação irá validar e os its, com uma breve descrição do que cada cenário estará executando

Se preferir, apenas faça um ctrl+c / ctrl+v do código abaixo para seu arquivo criado para os testes :D

describe 'Operacoes basicas de matematica > ' do context 'Operacoes com numeros positivos > ' doit 'somar dois números positivos' do$soma = 1 + 1expect($soma).to eq 2 puts "resultadoSoma: #{$soma}" endendend Obs.: Ao copiar o código no seu arquivo_spec.rb, lembre-se de ajustar as indentações dos métodos ;)

Na imagem , orientei três passos de 1 a 3, dentro da validação de “somar dois números positivos”, que são:

1 >> Criamos uma variável ($soma) para armazenar o resultado do cálculo;

2>>Método expect que valida o resultado armazenado na variável a um valor esperado usando .to eq( equivalente ao equals);

3>>Print em console no terminal usando o puts, padrão do Ruby , inserindo, dentro de aspas duplas um texto desejado, seguido de : #{$soma} para retornar o valor armazenado após o calculo executado;

Continuando, salve o arquivo e execute o comando rspec através do terminal para “rodar” o cenário de soma.

Se tudo estiver ok, deverá apresentar mensagem no terminal conforme imagem

E assim temos o primeiro cenário, simples e básico, mas já orientado a BDD rodando e usando a biblioteca Rspec em Ruby.

No git disponibilizo o código criado, contendo mais alguns cenários dentro do mesmo arquivo _spec.rb para melhor exemplificar o fluxo de criação.
Segue link https://github.com/MatheusAdejair/teste_ruby_rspec/tree/master

Conclusão

Este artigo tem objetivo de trazer ( para algumas pessoas )o primeiro contato com o Ruby, orientar sua instalação e suas configurações em ambiente windows e iniciar a aplicação do Rspec para implementação de validações usando BDD.
A pretensão é dar continuidade com mais dois artigos complementares a este, apoiando com o entendimento do uso do Rspec junto com o HTTParty para validações de APIs e geração de relatórios de cenários criados.

Originally published at https://matheus-adejair.medium.com on March 8, 2021.

Impulsionar pessoas para inovar o mundo

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store