Integração do Zabbix com
Testes Automatizados
Quem sou eu?
Robert Silva
Especialista Zabbix e Instrutor na JLCP
Ministro Palestras sobre monitoramento
+7 anos na área de TI
2 anos de Zabbix
Membro ativo nas comunidades Zabbix Brasil
e Grafana Brasil
https://www.youtube.com/robertsilva
Focado em desenvolver soluções para
agregar valor ao negócio.
Apaixonado por tecnologia e automação.
2
Agenda
▪ Motivação e Objetivo.
▪ O que são testes?
▪ Tipos de testes.
▪ Por que testar?
▪ TDD e BDD.
▪ Por que integrar com o Zabbix?
▪ Exemplo prático.
▪ Encerramento.
3
Motivação e
Objetivo
Motivação e Objetivo
▪ Microsserviços e DevOps.
▪ Zabbix é voltado para Infraestrutura?
▪ Demonstrar que é possível integrar testes
automatizados com Zabbix, agregando cada vez
mais valor a ferramenta.
O que são testes?
O que são testes?
▪ Processo que tem como objevo verificar se o
desenvolvimento atende as especificações.
▪ Conceitos:
▪ Teste Manual.
▪ Teste Automazado.
7
Teste Manual
▪ Casos de Teste.
▪ Acessa a aplicação e aplica
os casos de testes.
8
Teste Automatizado
▪ Script de Teste.
▪ Trechos de código para
validar o funcionamento do
sistema.
9
Tipos de testes
Tipos de testes
▪ Existem diversas categorias de teste de soaware:
▪ Teste de Unidade:
▫ Tem o objevo testar um componente ou classe. É o teste
cujo objevo é testar somente um “pedaço do código”.
▪ Teste de Interface:
▫ Verifica se a navegabilidade e os objevos da tela funcionam
como especificados e se atendem da melhor forma ao
usuário.
11 https://www.devmedia.com.br/testlink-gerenciando-atividades-de-teste/32281
Tipos de testes
▪ Teste de Desempenho
▫ Certifica se o tempo de resposta é o desejado para o
momento de utilização da aplicação;
▪ Teste de Carga
▫ Assegura o funcionamento da aplicação com a utilização de
uma quantidade grande de usuários simultâneos;
▪ Teste de Aceitação
▫ Verifica se a solução atende às solicitações dos usuários;
12 https://www.devmedia.com.br/testlink-gerenciando-atividades-de-teste/32281
Por que testar?
Por que testar?
▪ Garantir o funcionamento do sistema e que
futuras alterações não impacte no
funcionamento.
14
TDD e BDD
16
TDD – Test-Driven Development (Desenvolvimento Orientado a Testes)
BDD – Behavior Driven Development (Desenvolvimento Guiado por
Comportamento ou Desenvolvimento Orientado a Comportamento)
Por que integrar
com Zabbix?
Porque integrar com Zabbix?
▪ Centralizar as informações em uma única solução.
▪ Ulizar o BDD para prover um Health Check das aplicações.
▪ Facilitar o troubleshoong para equipe de sustentação
▪ Minimizar o impacto para o cliente.
▪ Gerar indicadores de disponibilidade e desempenho.
18
Exemplo prático
Projeto Monitoramento Novo EAD
Teste de aceitação
Verifica se a solução atende às solicitações dos usuários
▪ Ferramentas ulizadas:
▫ Python 3 – Linguagem de programação simples e
poderosa
▫ Behave – Escrever as funcionalidades do sistema
ulizando linguagem natural com base no (Gherkin)
▫ Selenium WebDriver – Consultar elementos web,
ações no navegador.
▫ Zabbix – Solução de Monitoramento
O que é Gherkin?
▪ É uma linguagem comum de fácil entendimento, mas
conhecida como “Business Readable, Domain Specific
Language”, ou seja desenhada para fazer pessoas que não são
programadoras ou técnicas, entender o que o pessoal técnico
esta fazendo. Pelo Gherkin descrevemos o comportamento
do soaware, sem detalhar como esse comportamento é
implementado.
21 https://behave.readthedocs.io/en/latest/philosophy.html#the-gherkin-language
Estruturando nosso projeto
22
Behave Estrutura
features
features/steps/
features/steps/cadastro.py
features/steps/login.py
features/environment.py
features/novoead.feature
Estrutura Extra
features
features/results
features/results/test.json
features/novoead.py
Feature
23
Feature: Novo EAD
"""
Validar as funcionalidades de cadastro e login do novo EAD
"""
Scenario: Cadastro
"""
Efetuar cadastro de um novo usuário
"""
Given Pagina_de_cadastro
When Efetuar_cadastro
Then Validar_cadastro
Scenario: Login
"""
Efetuar login com um usuário
"""
Given Pagina_de_login
When Efetuar_autenticacao
Then Validar_login
Step - Cadastro
24
from behave import *
@given('Pagina_de_cadastro')
def step_impl(context):
context.browser.visit_cadastro()
@when('Efetuar_cadastro')
def step_impl(context):
context.browser.cadastro()
@then('Validar_cadastro')
def step_impl(context):
context.browser.validar_cadastro()
Step - Login
25
from behave import *
@given('Pagina_de_login')
def step_impl(context):
context.browser.visit_login()
@when('Efetuar_autenticacao')
def step_impl(context):
context.browser.login()
@then('Validar_login')
def step_impl(context):
context.browser.validar_login()
PageObject
26
def cadastro(self):
self.find(self.NOME).send_keys('Teste
Automatizado')
self.find(self.TELEFONE).send_keys('13999999999')
self.find(self.EMAIL).send_keys('teste6@automatizado.
com.br')
self.find(self.PASSWD).send_keys('teste')
self.find(self.SUBMIT).click()
PageObject
27
def login(self):
email = self.find(self.EMAIL)
email.clear()
email.send_keys(self.EMAIL_VALUE)
passwd = self.find(self.PASSWD)
passwd.clear()
passwd.send_keys(self.PASSWD_VALUE)
submit = self.find(self.SUBMIT_PAGE_LOGON)
submit.click()
Executando o Teste
28
$ behave --format=json.pretty --outfile=features/results/test.json
features/novoead.feature
--format = define o formato de saída
--outfile = define o arquivo de saída
Relatório no formato JSON
29
{
"keyword": "When",
"location": "features/novoead.feature:8",
"match": {
"arguments": [],
"location": "features/steps/cadastro.py:9"
},
"name": "Efetuar_cadastro",
"result": {
"duration": 4.735882997512817,
"status": "passed"
},
"step_type": "when"
},
Integração
30
Configuração do Zabbix
31
Regra de Descoberta
Configuração do Zabbix
32
Protótipo de Item
Configuração do Zabbix
33
Dados Recentes
Vídeo
Demonstravo
Vídeo Demonstravo
35
OBRIGADO!
Perguntas?
robert.silva@jlcp.com.br
https://www.linkedin.com/in/contatorobert/
36
CREDITS
Special thanks to all the people who made and
released these awesome resources for free:
▪ Presentaon template by SlidesCarnival
▪ Photographs by Unsplash
37

Integração do Zabbix com Testes Automatizados

  • 1.
    Integração do Zabbixcom Testes Automatizados
  • 2.
    Quem sou eu? RobertSilva Especialista Zabbix e Instrutor na JLCP Ministro Palestras sobre monitoramento +7 anos na área de TI 2 anos de Zabbix Membro ativo nas comunidades Zabbix Brasil e Grafana Brasil https://www.youtube.com/robertsilva Focado em desenvolver soluções para agregar valor ao negócio. Apaixonado por tecnologia e automação. 2
  • 3.
    Agenda ▪ Motivação eObjetivo. ▪ O que são testes? ▪ Tipos de testes. ▪ Por que testar? ▪ TDD e BDD. ▪ Por que integrar com o Zabbix? ▪ Exemplo prático. ▪ Encerramento. 3
  • 4.
  • 5.
    Motivação e Objetivo ▪Microsserviços e DevOps. ▪ Zabbix é voltado para Infraestrutura? ▪ Demonstrar que é possível integrar testes automatizados com Zabbix, agregando cada vez mais valor a ferramenta.
  • 6.
    O que sãotestes?
  • 7.
    O que sãotestes? ▪ Processo que tem como objevo verificar se o desenvolvimento atende as especificações. ▪ Conceitos: ▪ Teste Manual. ▪ Teste Automazado. 7
  • 8.
    Teste Manual ▪ Casosde Teste. ▪ Acessa a aplicação e aplica os casos de testes. 8
  • 9.
    Teste Automatizado ▪ Scriptde Teste. ▪ Trechos de código para validar o funcionamento do sistema. 9
  • 10.
  • 11.
    Tipos de testes ▪Existem diversas categorias de teste de soaware: ▪ Teste de Unidade: ▫ Tem o objevo testar um componente ou classe. É o teste cujo objevo é testar somente um “pedaço do código”. ▪ Teste de Interface: ▫ Verifica se a navegabilidade e os objevos da tela funcionam como especificados e se atendem da melhor forma ao usuário. 11 https://www.devmedia.com.br/testlink-gerenciando-atividades-de-teste/32281
  • 12.
    Tipos de testes ▪Teste de Desempenho ▫ Certifica se o tempo de resposta é o desejado para o momento de utilização da aplicação; ▪ Teste de Carga ▫ Assegura o funcionamento da aplicação com a utilização de uma quantidade grande de usuários simultâneos; ▪ Teste de Aceitação ▫ Verifica se a solução atende às solicitações dos usuários; 12 https://www.devmedia.com.br/testlink-gerenciando-atividades-de-teste/32281
  • 13.
  • 14.
    Por que testar? ▪Garantir o funcionamento do sistema e que futuras alterações não impacte no funcionamento. 14
  • 15.
  • 16.
    16 TDD – Test-DrivenDevelopment (Desenvolvimento Orientado a Testes) BDD – Behavior Driven Development (Desenvolvimento Guiado por Comportamento ou Desenvolvimento Orientado a Comportamento)
  • 17.
  • 18.
    Porque integrar comZabbix? ▪ Centralizar as informações em uma única solução. ▪ Ulizar o BDD para prover um Health Check das aplicações. ▪ Facilitar o troubleshoong para equipe de sustentação ▪ Minimizar o impacto para o cliente. ▪ Gerar indicadores de disponibilidade e desempenho. 18
  • 19.
  • 20.
    Teste de aceitação Verificase a solução atende às solicitações dos usuários ▪ Ferramentas ulizadas: ▫ Python 3 – Linguagem de programação simples e poderosa ▫ Behave – Escrever as funcionalidades do sistema ulizando linguagem natural com base no (Gherkin) ▫ Selenium WebDriver – Consultar elementos web, ações no navegador. ▫ Zabbix – Solução de Monitoramento
  • 21.
    O que éGherkin? ▪ É uma linguagem comum de fácil entendimento, mas conhecida como “Business Readable, Domain Specific Language”, ou seja desenhada para fazer pessoas que não são programadoras ou técnicas, entender o que o pessoal técnico esta fazendo. Pelo Gherkin descrevemos o comportamento do soaware, sem detalhar como esse comportamento é implementado. 21 https://behave.readthedocs.io/en/latest/philosophy.html#the-gherkin-language
  • 22.
    Estruturando nosso projeto 22 BehaveEstrutura features features/steps/ features/steps/cadastro.py features/steps/login.py features/environment.py features/novoead.feature Estrutura Extra features features/results features/results/test.json features/novoead.py
  • 23.
    Feature 23 Feature: Novo EAD """ Validaras funcionalidades de cadastro e login do novo EAD """ Scenario: Cadastro """ Efetuar cadastro de um novo usuário """ Given Pagina_de_cadastro When Efetuar_cadastro Then Validar_cadastro Scenario: Login """ Efetuar login com um usuário """ Given Pagina_de_login When Efetuar_autenticacao Then Validar_login
  • 24.
    Step - Cadastro 24 frombehave import * @given('Pagina_de_cadastro') def step_impl(context): context.browser.visit_cadastro() @when('Efetuar_cadastro') def step_impl(context): context.browser.cadastro() @then('Validar_cadastro') def step_impl(context): context.browser.validar_cadastro()
  • 25.
    Step - Login 25 frombehave import * @given('Pagina_de_login') def step_impl(context): context.browser.visit_login() @when('Efetuar_autenticacao') def step_impl(context): context.browser.login() @then('Validar_login') def step_impl(context): context.browser.validar_login()
  • 26.
  • 27.
    PageObject 27 def login(self): email =self.find(self.EMAIL) email.clear() email.send_keys(self.EMAIL_VALUE) passwd = self.find(self.PASSWD) passwd.clear() passwd.send_keys(self.PASSWD_VALUE) submit = self.find(self.SUBMIT_PAGE_LOGON) submit.click()
  • 28.
    Executando o Teste 28 $behave --format=json.pretty --outfile=features/results/test.json features/novoead.feature --format = define o formato de saída --outfile = define o arquivo de saída
  • 29.
    Relatório no formatoJSON 29 { "keyword": "When", "location": "features/novoead.feature:8", "match": { "arguments": [], "location": "features/steps/cadastro.py:9" }, "name": "Efetuar_cadastro", "result": { "duration": 4.735882997512817, "status": "passed" }, "step_type": "when" },
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
    CREDITS Special thanks toall the people who made and released these awesome resources for free: ▪ Presentaon template by SlidesCarnival ▪ Photographs by Unsplash 37