Buscar

1633112392720

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 21 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 21 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 21 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

20/09/2021
1
Infraestrutura Ágil
Testes Aplicados a Infraestrutura Ágil
Ma. Patrícia Valério Martinez
• Unidade de Ensino: 04.
• Competência da Unidade: Conceito DevOps, Tipos de Testes, 
Técnica de Desenvolvimento, Ferramentas de Automação de 
Testes, Tipo de Ataques e Ferramentas de Segurança.
• Resumo: O conceito de tipos e ferramentas de testes.
• Palavras-chave: DevOps, Testes, ferramentas, ataques e
segurança.
• Título da Teleaula: Infraestutura Ágil.
• Teleaula nº: 04
Contextualizando
• Conceito DevOps;
• Tipos de Testes;
• Técnica de Desenvolvimento;
• Ferramentas de Automação de Testes;
• Tipo de Ataques;
• Ferramentas de Segurança.
Conceito DevOps
• Devops é um termo criado para descrever um conjunto de 
práticas para integração entre as equipes de 
desenvolvimento de softwares, operações (infraestrutura ou 
sysadmin) e de apoio envolvidas (como controle de 
qualidade) e a adoção de processos automatizados para 
produção rápida e segura de aplicações e serviços.
Conceito DevOps
• O DevOps é uma metodologia que visa a integração entre 
os setores de desenvolvimento e operações. 
• O objetivo é agilizar e otimizar a criação e o gerenciamento 
da estrutura das aplicações. No caso de uma empresa de 
tecnologia, como uma desenvolvedora de softwares, 
o DevOps permite maior agilidade nas entregas.
Conceito DevOps
1 2
3 4
5 6
20/09/2021
2
• Em todo o processo DevOps a palavra de ordem é 
velocidade. A ideia é sempre automatizar tudo quanto for 
possível e melhorar a velocidade das entregas, mas 
velocidade alta tem um custo. 
• Como as implantações são exponenciais, a quantidade de 
bugs adicionados também, não por falta de testes em si, 
mas por questões estatísticas. 
Conceito DevOps
• Se antes do DevOps você tinha uma implantação por 
semana, agora você tem 10 por dia, querendo ou não os 
bugs vão vir em maior quantidade.
• Temos que pensar que é necessário testar melhor o código 
antes de ir para dentro da esteira DevOps. 
Conceito DevOps
• Ao invés de ter testes manuais, que vão verificar se tal 
funcionalidade adicionada faz o que deve, os 
desenvolvedores unidos com o time de operações, criam 
testes automatizados a medida que o código vai sendo 
desenvolvido e adicionado a esteira de CI/CD. 
• Para isso foram criadas ferramentas, técnicas e modelos que 
testam de maneira automatizada boa parte do código.
Conceito DevOps
• Os programas são instruções que um programador escreve 
para que uma máquina execute. E independente de qual 
linguagem se use para isso é inevitável que ocorram falhas 
nessa programação ou por um comportamento que não foi 
previsto pelo programador ao escrever o código ou até 
mesmo uma falha desconhecida de comportamento da 
aplicação. 
Conceito DevOps
• Desde o início da programação de softwares, os 
desenvolvedores usam algum tipo de teste para verificar o 
comportamento do seu código. 
• Geralmente esses testes eram feitos de forma manual, por 
equipes responsáveis por testar falhas e simular problemas 
antes que o programa fosse liberado para ir para a 
produção.
Conceito DevOps
• Com o advento dos métodos ágeis de desenvolvimento, 
houve uma mudança na abordagem de como construir os 
testes e como aplicá-los.
• Essas metodologias culminaram também no 
desenvolvimento da cultura DevOps, que tem como 
premissa, uma velocidade maior no desenvolvimento de 
infraestrutura para se aliar as metodologias ágeis de 
desenvolvimento de software.
Conceito DevOps
7 8
9 10
11 12
20/09/2021
3
• Como uma das bases do DevOps é a automação, não daria 
para deixar os testes todos manuais, atrasando assim as 
entregas das versões da aplicação em produção. 
• Foi assim que surgiram métodos, ferramentas e técnicas 
para automatizar os testes e possibilitar que sejam 
integrados em esteiras de entrega de CI/CD. 
Conceito DevOps
Tipos de Testes
• A principal vantagem da automatização de testes é a 
agilidade, isso porque testes manuais são demorados e 
custosos para a equipe de TI e para o cliente final. 
• Quando a automatização é utilizada, o processo pode ser 
muito mais ágil e simples.
• Vamos estudar quais tipos de testes normalmente se usam 
em DevOps.
Tipos de Testes
• Testes Unitários: este teste é o mais básico teste que se 
pode criar em uma aplicação, ele diz respeito principalmente 
a funcionalidade que se está desenvolvendo. Pode ser um 
método ou até uma classe toda, o importante aqui é passar 
valores diferentes para essa unidade e testar se o retorno é 
o esperado. É o desenvolvedor que diz o que é uma unidade 
para ele dentro do sistema, mas o importante é não ser algo 
muito grande, para evitar que o teste não seja efetivo.
Tipos de Testes – Unitário 
• Por ser um teste pequeno esse é o tipo de teste que mais se 
encontra nos sistemas e hoje existem diversas ferramentas 
para ajudar na criação deles.
• O foco do teste unitário é testar uma função específica, 
mesmo que ela precise acessar informações de banco de 
dados, as ferramentas conseguem criar dados falsos para os 
testes, para que um problema de acesso ao dado, não afete 
os testes. 
Tipos de Testes – Unitário 
• Se a classe possui seu teste unitário, ele é conhecido como 
um código coberto e o índice de cobertura de um código é a 
quantidade de testes existentes pela quantidade de classes 
disponíveis no sistema.
Tipos de Testes – Unitário 
13 14
15 16
17 18
20/09/2021
4
• Testes de Integração: o foco é nas relações das classes em 
si, as que já existem no sistema e as que estão entrando. 
Por exemplo, se você está desenvolvendo uma nova 
funcionalidade que envia e-mail aos clientes se determinado 
evento ocorre, toda as classes envolvidas no seu código 
devem ser testadas, como cadastro do cliente, recuperação 
desses dados de um banco de dados, o evento que dispara 
os e-mails e etc. Toda essa relação deve funcionar com 
dados diferentes, simulando diversas situações. 
Tipos de Testes – Integração
• Os testes de integração costumam ser bem mais demorados 
que os testes unitários e por isso devem ser feitos com 
cuidado para não demorarem demais. 
Tipos de Testes – Integração
• Testes Funcionais: nestes testes o foco é verificar como o 
sistema se comporta quando dados inesperados forem 
passados a ele. Como por exemplo, uma função que faz 
multiplicação receber o valor “zero” que é impossível de se 
calcular, ou um campo de e-mail receber um e-mail inválido. 
A ideia aqui é testar se aquela funcionalidade está 
preparada para tratar valores falsos ou incorretos e qual 
será o seu comportamento, se ele vai falhar, se ele foi 
projetado para tratar esses erros, qual mensagem dispara 
ao usuário no caso deles ocorrerem.
Tipos de Testes – Funcionais
• Testes de desempenho: chamado também de teste de stress 
e carga, serve para testar cargas altíssimas no sistema e ver 
como será o seu comportamento. Geralmente feito em 
sistemas web, para verificar até onde o sistema consegue 
receber e tratar requisições de maneira correta até falhar. 
Ferramentas testam o acesso simultâneo e determinam 
quantos acessos, sem falhar, aquele sistema suporta. Depois, 
de posse desses dados, os analistas de infraestrutura podem 
configurar corretamente um ambiente de produção com base 
nos acessos diários que eles recebem.
Tipos de Testes – Desempenho
• Teste de Interface de Usuário (UI): são usados para testar a 
interface da aplicação que o usuário tem acesso, simulando 
um acesso real, clicando em telas, preenchendo campos e 
verificando o retorno da aplicação. Dentro do conceito 
DevOps, também existem ferramentas para simular o acesso 
as telas, como se fosse um usuário. Nestes testes, o foco é 
verificar se alguma funcionalidade adicionada a interface 
está funcionando conforme o esperado e está trazendo os 
dados que foi programada para trazer.
Tipos de Testes – Interface de Usuário
• Testes Fim a Fim: são conhecidos também como testes de 
sistema ou end-to-end que serve para testar o sistema como 
um todo. Esse teste é muito custosoem tempo e 
geralmente é feito em mudanças críticas que alteram a 
versão da aplicação e muda algo crítico ao funcionamento 
do sistema como um todo.
Tipos de Testes – Fim a Fim
19 20
21 22
23 24
20/09/2021
5
• Time de Qualidade do Software: dentro das empresas, 
normalmente se tem um time de desenvolvedores 
responsável por realizar essa bateria de testes ou verificar 
se foram feitos corretamente pelos outros desenvolvedores. 
Tudo para garantir que nenhum Bug facilmente detectável 
passe despercebido e acabe sendo alertado pelo cliente, o 
que é péssimo para a imagem da empresa, que passa 
descuido no desenvolvimento. Esse time é o QA ou Quality
Assurance ou Qualidade do Software.
Tipos de Testes – QA
• O time de QA é um time de desenvolvedores focados em 
entregar qualidade para o código. Geralmente utilizando 
ferramentas que testam se os requisitos pedidos foram 
atendidos ou não. Também são eles responsáveis por 
garantir que o código não vai aceitar dados estranhos e para 
isso eles também usam de testes que simulam dados que 
não deveriam jamais serem aceitos pelo sistema, para 
verificar seu comportamento. 
Tipos de Testes – QA
• Os sistemas são feitos para uma determinada função, que 
caso aceite dados estranhos, podem causar um 
comportamento completamente errado e até travamentos, 
como num caso de um sistema que faz a multiplicação de 
números, aceitar receber o número zero ou um aceitar letras 
ao invés de números.
Tipos de Testes – QA
• Os testes são importantes dentro do conceito do mundo 
DevOps e ele é muito importante quando se une as 
automações e a todo o processo de desenvolvimento de 
software. 
Tipos de Testes
Técnica de 
Desenvolvimento
• Dentro do desenvolvimento ágil, muita coisa mudou do 
método tradicional e os testes também não fugiram a regra, 
e hoje em dia, técnicas avançadas de desenvolvimento 
voltadas a testes são usadas para melhorar e até prever 
falhas em softwares.
• As mais conhecidas e usadas são as TDD (Test Driven
Development) ou Desenvolvimento Dirigido a Testes e a 
BDD (Behavior Driven Development) ou Desenvolvimento 
dirigido a comportamento.
Técnica de Desenvolvimento
25 26
27 28
29 30
20/09/2021
6
• Essas técnicas de desenvolvimento são amplamente 
utilizadas no mercado e ambas têm um foco diferente ao 
começar o desenvolvimento.
• Antes das técnicas ágeis de desenvolvimento, um analista 
de negócio, entenderia com o cliente o que ele precisava e 
transformaria isso em requisitos para a equipe de 
desenvolvimento, que então trabalharia para codificar isso.
Técnica de Desenvolvimento
• Esse método geralmente acabava desenvolvendo um código 
que não era exatamente aquilo que o cliente tinha pedido e 
em um tempo relativamente grande para entrega. Imagina as 
diversas frustrações, quando você precisava de uma 
funcionalidade, esperava meses e quando concluída não era 
nada do que você tinha pedido. 
Técnica de Desenvolvimento
• Com o inicio das técnicas ágeis, isso mudou muito e 
pequenas funcionalidades são desenvolvidas e lançadas 
rapidamente, permitindo assim que o software evolua muito 
mais rápido e as falhas corrigidas dinamicamente. Então o 
processo de criação de requisitos mudou também, para 
pequenas tarefas e elas por sua vez, vão se juntando para 
criar a funcionalidade esperada.
Técnica de Desenvolvimento
• TDD – Desenvolvimento Orientado a Testes: foi a 
primeira técnica de desenvolvimento focado exclusivamente 
em testes, a ideia é orientar todo o desenvolvimento de 
softwares por testes. Isso significa que o processo de criação 
do código, passa a ser primeiro criar testes e depois criar o 
código em si. Isso pode parecer impossível, mas faz sentido 
quando vemos casos reais de teste.
Técnica de Desenvolvimento – TDD 
• A técnica TDD foi proposta por Beck, no seu livro Tdd -
Desenvolvimento Guiado Por Testes e trazia uma forma 
diferente de encarar como se desenvolve software.
• Imagine se as tarefas pudessem ser criadas e ao mesmo 
tempo testadas.
Técnica de Desenvolvimento – TDD 
• Essa é a ideia por traz do TDD, começar o desenvolvimento 
pelos casos de testes, implementando a partir deles, os 
métodos, classes e objetos e assim ir avançando para chegar 
ao nível de ter as funcionalidades atendidas. 
• Mas como podemos escrever testes antes de termos um 
código? Parece complicado, mas na verdade é simples, 
focando os esforços nos requisitos, ou seja, no que o sistema 
tem que fazer, antes de desenvolver o código propriamente 
dito.
Técnica de Desenvolvimento – TDD 
31 32
33 34
35 36
20/09/2021
7
• Os passos do TDD são:
o Crie um teste que valide o requisito;
o Crie o código que passe no teste;
o Refatore o código, atualizando-o.
Técnica de Desenvolvimento – TDD 
• BDD – Desenvolvimento Orientado à Comportamento:
é uma evolução do TDD, levando em conta uma série de 
problemas enfrentados pelos desenvolvedores, proposto 
primeiramente por North. Ele relata os problemas reais 
enfrentados por ele ao tentar usar a técnica do TDD.
Técnica de Desenvolvimento – BDD 
• Um dos grandes problemas enfrentados pelos 
desenvolvedores e o time de qualidade é que nem sempre 
eles têm uma interação boa o suficiente dentro dos projetos 
em TDD, pois eles criam os testes, baseados nos requisitos e 
enviam para o time de desenvolvimento para criar o código. E 
isso acabava gerando lacunas entre o que era testado e o que 
era desenvolvido. 
Técnica de Desenvolvimento – BDD 
• Para resolver esse problema, uma melhor interação entre os 
requisitos e os testes criados. E também uma forma 
padronizada de escrever os cenários de testes, com uma 
linguagem específica.
• Essa linguagem e esse padrão, deram um enorme avanço 
para as ferramentas que automatizaram esse processo, já 
que, com uma forma única de escrever os cenários, podemos 
usar como entrada para as ferramentas de criação de teste.
Técnica de Desenvolvimento – BDD 
• A linguagem adotada dentro de todo o escopo do 
desenvolvimento, desde seu levantamento de requisitos, seu 
desenvolvimento, até seu controle de qualidade, elimina 
algumas falhas na comunicação entre as equipes, como se 
fosse a união do DevOps com o QA (Time de Qualidade). 
• Assim o analista de requisitos, os desenvolvedores e os 
testadores conseguem falar a mesma língua quando as 
pessoas de tecnologia se dirigem aos negócio.
Técnica de Desenvolvimento – BDD 
• Foi proposto uma forma de descrever as funcionalidades:
o Funcionalidade: Descrever o que a funcionalidade deve 
fazer.
o Como: Quem executa essa funcionalidade.
o Eu quero: O que essa pessoa espera da funcionalidade.
Técnica de Desenvolvimento – BDD 
37 38
39 40
41 42
20/09/2021
8
o De modo que: A descrição do resultado que se espera 
alcançar com a funcionalidade.
Técnica de Desenvolvimento – BDD 
• Um modelo de criação de cenários chamado given-when-then
ou dado-quando-então:
o Dado: contexto inicial X (givens);
o E: mais itens do contexto;
o Quando: Y ocorre;
o Então: garanta Z resultado.
Técnica de Desenvolvimento – BDD 
Segue abaixo o exemplo:
o Funcionalidade: Abertura de conta corrente;
o Como: Gerente de banco;
o Eu quero: Cadastrar as informações do cliente;
o Para: Abrir uma conta bancária para ele.
Técnica de Desenvolvimento – BDD 
• Cenário 1 Cliente com dados corretos:
o Dado que: O cliente deseja abrir uma conta.
o E informou CPF correto.
o E informou RG correto.
o E informou endereço completo correto.
o Quando: Entrar com essas informações no cadastro.
o Então: A conta deve ser criada com os dados dele.
Técnica de Desenvolvimento – BDD 
• Cenário 2 Cliente já cadastrado no sistema:
o Dado que: O cliente deseja abrir uma conta.
o E Informou um CPF correto, mas existente no sistema.
o Quando: Entrar com essas informações no cadastro.
o Então: Não será cadastrado o cliente no sistema e o 
sistema deve avisar o cliente.
Técnica de Desenvolvimento – BDD 
• Depois que os cenários foram desenhados, o BDD funciona 
exatamente como no TDD, ou seja, a partirdos cenários se 
desenha os testes que vão cumprir os cenários e com os 
testes funcionando se complementa as classes que vão 
cumprir os requisitos.
Técnica de Desenvolvimento – BDD 
43 44
45 46
47 48
20/09/2021
9
• O levantamento de requisitos usando o BDD deve seguir uma 
estrutura de descrever uma funcionalidade, detalhar o 
comportamento dessa funcionalidade através de cenários, 
detalhar todos os cenários possíveis para aquela 
funcionalidade, mapear os cenários em classes de testes 
automatizados, implementar o código que resolve os testes 
com sucesso e refatorar o código tornando-o melhor.
Técnica de Desenvolvimento – BDD 
• Usar TDD e BDD ajuda melhorar a qualidade do produto de 
uma forma geral pois incentiva a colaboração da equipe e 
promovendo o alinhamento do conhecimento desde o início.
Técnica de Desenvolvimento
Infográfico – Tipos de 
Testes
• Um desenvolvedor cria uma funcionalidade para o sistema 
e baseado nela, ele cria um teste que vai verificar apenas, 
se ela cumpre exatamente o que foi proposto nos 
requisitos, ignorando as conexões que essa funcionalidade 
fará com outras.
• Qual o tipo de teste se refere o texto?
Descrição da Situação Problema
• O Teste unitário, pois é criado para testar apenas o 
comportamento de uma funcionalidade, uma classe, ou 
método.
• É uma prática de desenvolvimento de software onde os 
desenvolvedores, com frequência, unem as suas alterações 
de código em um repositório central onde são aplicados 
os testes automatizados antes do deploy da aplicação.
Solução da Situação Problema
• O teste unitário consiste em verificar o comportamento das 
menores unidades em sua aplicação. Tecnicamente, isso 
seria uma classe ou até mesmo um método de classe em 
línguas orientadas a objetos e seria um procedimento ou 
função em línguas processuais e funcionais.
Solução da Situação Problema
49 50
51 52
53 54
20/09/2021
10
• Os testes unitários procuram aferir a corretude do código, 
em sua menor fração. Em linguagens orientadas a objetos, 
essa menor parte do código pode ser um método de uma 
classe. Sendo assim, os testes unitários são aplicados a 
esses métodos, a partir da criação de classes de testes.
Solução da Situação Problema
• O foco do teste unitário é a garantia de conformidade para 
que quando for necessário fazer alterações em um código, 
seja por motivos de manutenção ou atualização, essas 
alterações não provoquem outros problemas, gerando uma 
reação em cadeia.
Solução da Situação Problema
Ferramentas de 
Automação de Testes
• O processo de automação de testes consiste no uso de 
softwares específicos capazes de controlar e gerenciar 
determinados testes. Isso é possível a partir da aplicação de 
estratégias e algumas ferramentas que facilitam a 
comparação entre resultados previstos e resultados reais.
• Vamos conhecer algumas ferramentas de automação de 
testes.
Ferramentas de Automação de Testes
• Cucumber: é uma ferramenta de código aberto, criada para 
automatizar e auxiliar no BDD, usando o conceito de escrita 
de funcionalidade e cenários, para criar testes e os esqueletos 
das classes que serão criadas pelos desenvolvedores. Uma 
vantagem com o cucumber é a possibilidade de escrever os 
cenários em diversos idiomas até o Português Brasil.
Ferramentas de Testes – Cucumber Ferramentas de Testes – Cucumber
• Exemplo de um código escrito no Cucumber: 
55 56
57 58
59 60
20/09/2021
11
• Ao descrever a funcionalidade, perceba que o cucumber já 
reconhece as palavras chave especiais que são usadas por ele 
para montar os testes.
• A estrutura do teste foi montada, você deve criar a classe que 
irá executar a tarefa do teste e ao rodar o Cucumber init, ele 
traz um resumo de como deve ser implementado as classes e 
métodos.
Ferramentas de Testes – Cucumber Ferramentas de Testes – Cucumber
• Os Frameworkings criados para auxiliar na escrita e 
automação de testes são:
o JUnit para Java;
o PyUnit para Python;
o Jasmine para Javascript.
• Todos esses frameworks trabalham no modelo BDD e 
auxiliam o desenvolvimento a partir das criações dos testes, 
porém focados nas linguagens específicas.
Ferramentas de Automação de Testes
• Tricentis Tosca: ferramenta de testes de software de ponta 
a ponta, diferencial dela é possuir uma interface web para 
configuração e programação automatizada dos testes.
Ferramentas de Testes – Tricentis Tosca
• Apache Jmeter e Neotys Neoload: ferramentas 
largamente usadas para realizar testes de carga ou stress em 
aplicações web, possui uma interface que permite configurar 
periodicidade de testes, tamanho de cargas enviadas por 
determinado tempo e e traz relatórios de carga.
• A Neoload é usada para testar APIs, serve como teste de 
carga e stress porém específica para testes usando Restful.
Ferramentas de Automação de Testes
• Selenium e katalon: ferramentas de testes de interface de 
usuário, são usadas para automatizar acessos pela interface, 
simulando usuários reais. Usados principalmente para 
verificar se funcionalidades da interface estão retornando os 
dados esperados. Elas podem acessar sistemas Web e clicar 
em diversos pontos da tela, simulando exatamente como um 
usuário faria. Além disso também são usadas para fazer 
testes de stress e carga na interface do usuário.
Ferramentas de Automação de Testes
61 62
63 64
65 66
20/09/2021
12
• Sonarqube: uma ferramenta de qualidade muito usada no 
mercado, ela é capaz de medir a quantidade de cobertura de 
um código, ou seja, a quantidade de testes existentes pela 
quantidade de código existente. Isso é importante pois a 
empresa pode definir uma política de cobertura, por exemplo 
acima 80% para que o código prossiga para as outras etapas 
da esteira e o Sonarqube consegue fazer isso barrando 
código fora de um percentual de cobertura configurado. 
Ferramentas de Testes – Sonarqube
• Possui uma forma de detectar bugs, brechas conhecidas de 
segurança, código duplicado, padrões incorretos e 
vulnerabilidades de segurança conhecidas, como senhas em 
texto claro dentro do código ou pacotes com código 
malicioso. 
• Ela é realmente um canivete suíço para as equipes de 
qualidade, testes e operações, possuindo diversas 
ferramentas disponíveis para análise do código.
Ferramentas de Testes – Sonarqube
• Possui uma interface gráfica, onde é possível ver os relatórios 
de cobertura e brechas de segurança:
Ferramentas de Testes – Sonarqube
• Na imagem, o Sonarqube detectou que não tem nenhum Bug 
ou vulnerabilidade detectada, tem apenas 2% de cobertura 
de testes e 1,7% de código repetido. 
• Os code smells, são características de um código que 
possivelmente estão com problemas mais profundos que o 
Sonarqube não conseguiu determinar ao certo.
Ferramentas de Testes – Sonarqube
• Na figura a seguir é apresentado um código que detectou 2 
bugs, 37 code-smells, 13.6% de cobertura de testes e 26% 
de código duplicado.
• Indica uma necessidade de refatoração, melhorando a escrita 
do código para evitar duplicações.
Ferramentas de Testes – Sonarqube Ferramentas de Testes – Sonarqube
67 68
69 70
71 72
20/09/2021
13
• Nesta sessão vimos como podemos utilizar ferramentas para 
criar e automatizar a criação e execução de testes, 
integrando com qualquer esteira de entrega de software.
Ferramentas de Automação de Testes
Principais Tipos de 
Ataques
• Ataques Hackers têm se intensificado e inovado. Estar 
preparado para eles é um dos itens mais importantes 
atualmente.
• Vamos tratar de alguns dos tipos desses ataques e ver como 
negligenciar essa área pode custar muito caro.
Principais Tipos de Ataques
• Os anos de 2020 e 2021 foram anos marcados por dois 
fenômenos, o primeiro uma pandemia mundial, causado por 
um vírus que fez com que o mundo inteiro parasse sua 
economia e milhões de vidas fossem perdidas. 
• O segundo foi a pandemia de ataques cibernéticos no mundo, 
durante a pandemia da Covid-19, o número de ataques foi 
maior que os últimos 15 anos somados.
Principais Tipos deAtaques
• Alguns ataques causaram enormes prejuízos e até causaram 
problemas diplomáticos entre países. 
Principais Tipos de Ataques
• DDoS (Distributed Deny of Service): ataque de negação 
de serviço é basicamente sobrecarregar o sistema com tantas 
requisições que ele não consiga mais responder a requisições 
legítimas dos usuários, fazendo com que o sistema fique fora 
do ar. 
Ataque – DDoS
73 74
75 76
77 78
20/09/2021
14
• Scanner de Portas: esse ataque basicamente procura por 
portas conhecidas que normalmente são usadas por 
servidores, para a partir delas se procurar vulnerabilidades e 
explorá-las.
• Portas preferenciais desse tipo de ataque são a 80/443, 
portas usadas para servir páginas na internet e porta 22, 
usadas por serviço de SSH, que provê uma forma de conexão 
remota a administradores dos servidores.
Ataque – Scanner de Portas
• Ransoware (Sequestro de dados): um dos ataques mais 
difundidos ultimamente, trata de roubar e criptografar os 
dados da vítima, exigindo um pagamento para que seja 
descriptografado.
• Grandes empresas tem caído nesse golpe e cada vez mas 
espaço entre os ataques cibernéticos.
Ataque – Ransoware
• Ataques de Força Bruta: esse ataque é semelhante ao ato 
de tentar forçar uma porta trancada até ela abrir. Usando 
ferramentas específicas para testar diversas combinações de 
usuário e senha, o atacante força até acertar a combinação. 
Apesar de ser um ataque bem antigo e conhecido, muitas 
empresas ainda caem nele, por não adotarem uma política de 
troca e complexidade de senhas e um colaborador pode 
colocar uma senha fraca, comprometendo toda a segurança 
da empresa.
Ataque – Força Bruta
• Phishing: esse ataque é geralmente feito por e-mail e 
funciona tentando capturar dados sigilosos dos usuários, 
utilizando iscas para que eles cliquem em links suspeitos sem 
se dar conta e passem informações ao atacante.
Ataque – Phishing
• Clonagem de Aplicativo de Mensagens: atacantes 
entram em contato inventando uma história para que o 
usuário passe o código de recuperação do aplicativo, a vítima 
sem se dar conta do golpe passa o código e a partir desse 
momento o criminoso tem acesso as mensagens do usuário e 
os contatos da agenda e começa a passar mensagens falsas 
aos contatos pedindo dinheiro emprestado ou nos casos mais 
sofisticados, procurando dados relevantes como senhas e 
usuários de sistemas enviados pelo aplicativo.
Ataque – Clonagem de Aplicativo de Mensagens
• Cryptojacking: é a mineração de crypto moedas em 
servidores sem seu consentimento. O ataque funciona 
invadindo um computador ou servidor e instalando um 
software malicioso que fica utilizando o poder de computação 
(CPU) da máquina para minerar cripto moedas em nome do 
atacante, degradando a performance e causando problemas 
para a aplicação normal do servidor responder já que está 
competindo com a aplicação maliciosa.
Ataque – Cryptojacking
79 80
81 82
83 84
20/09/2021
15
• Keylogger e Screenlogger: é um programa malicioso que 
grava tudo o que é digitado pelo usuário, fazendo com que o 
atacante tenha acesso as senhas e usuários de acesso que a 
pessoa digita, o Keylogger. 
• Tem a variante dele que grava tudo que o usuário ve na tela 
o Screenlogger.
Ataque – Keylogger e Screenlogger
• Cross-site Scripting (XSS): forma de injetar códigos em 
páginas Web no servidor, utilizando o navegador. Executando 
sequestros de cookies de sessão, keyloggers e 
redirecionamento de páginas.
Ataque – Cross-site Scripting
• Dafacement: é uma técnica de alteração de estruturas de 
uma página Web, muito utilizadas por hackers que 
conseguem invadir a parte administrativa da página, 
possibilitando que se coloque informações que o site não 
possuía esse tipo de ataque é vulgarmente conhecido como 
pichação de sites porque é semelhante ao ato de se 
vandalizar um muro, com a diferença que se vandaliza o site. 
Esse ataque tem cunho político ou ativista, com o intuito de 
ridicularizar a segurança do site ou deixar uma mensagem.
Ataque – Dafacement
• Existem centenas de tipos e ataques conhecidos, além de 
sempre estar sendo criados novos, por isso é importante 
sempre estar atualizado e manter a segurança em todo o 
ciclo do desenvolvimento de software.
Principais Tipos de Ataques
Ferramentas de 
Segurança
• Um problema comum que ocorre no desenvolvimento de 
software é o desenvolvedor só se preocupar com a 
funcionalidade dela e deixar de lado o quesito segurança, que 
na mente de muitos desenvolvedores, não é uma 
preocupação dele e sim de uma equipe específica para isso. A 
cada linha de comando inserido ao desenvolver um software, 
temos que pensar como aquela funcionalidade pode estar 
criando uma brecha de segurança que pode inviabilizar todo o 
projeto. 
Ferramentas de Segurança
85 86
87 88
89 90
20/09/2021
16
• Por exemplo, falhas ao desenvolver uma página de login pode 
abrir brechas de XSS, permitindo um atacante executar 
código malicioso dentro de um site ou até fazer login dentro 
do sistema sem ter o acesso permitido.
• Nesta sessão vamos aprender quais ferramentas existem para 
nos ajudar a mitigar os problemas de segurança.
Ferramentas de Segurança
• Hoje em dia costuma utilizar o termo DevSecOps, que seria 
entender que a segurança deve permear todo o ciclo de 
DevOps em todas as suas etapas.
• Dentro do DevSecOps, as ferramentas que são usadas para 
segurança são chamadas de Application Security Testing
(AST) ou Testes de segurança de aplicativos. E, são divididas 
em diversas categorias que dependem de onde estão sendo 
utilizadas e para qual finalidade.
Ferramentas de Segurança
Pirâmide das Ferramentas de AST
• Teste estático de segurança de aplicações (SAST): 
este tipo de aplicação, testa a segurança conhecendo as 
informações sobre o sistema, são tipos de testes chamados 
de White Hat (Chapéu branco) ou Caixa Branca, que testam a 
segurança internamente ao sistema, montando uma 
arquitetura a ser testada e tem acesso ao código fonte criado 
pelo desenvolvedor.
Ferramentas de Segurança
• Como esses testes são específicos por linguagens de 
programação, cada uma dela vai possuir uma ferramenta 
específica, vamos citar algumas:
o .Net Security Guard usada para .Net, C# e VB.Net.
o Agnitio usada para ASP, ASP.NET, C\#, Java, Javascript e 
etc.
Ferramentas de Segurança
o DevBug usada para PHP.
o GolangCI-Lint usada para Golang.
o Google CodeSearchDiggity usada principalmente para 
identificar possíveis brechas de XSS no código.
o Horusec usada em Python, Ruby, Javascript e etc.
Ferramentas de Segurança
91 92
93 94
95 96
20/09/2021
17
• Teste de segurança de aplicativo dinâmico (DAST): 
funciona com o chamado teste de caixa preta (Black box) ou 
Chapéu preto (Black hat), já que não se tem o conhecimento 
prévio do sistema ou do código fonte. Elas detectam 
vulnerabilidades de segurança de uma aplicação em 
execução, para verificar respostas de interfaces, solicitações, 
scripts e etc. Procurando se é possível injeções de dados, 
roubo de sessões e autenticação.
Ferramentas de Segurança
• Ferramenta dessa classe:
o Netsparker é um scanner de vulnerabilidade, apontando 
falhas em um dashboard interativo.
Ferramentas de Segurança
Dashboard Netsparker
• Acunetix Vulnerability Scanner outro scanner bem 
utilizado que possui também um dashboard interativo e pode 
ser incluído em pipelines de entrega.
• Veracode Dynamic Analysis é uma ferramenta usada para 
web applications e também bem integrada com pipelines 
Devops.
Ferramentas de Segurança
• Análise de Composição de Software (SCA): Todo o 
software utiliza bibliotecas que não são por padrão criadas 
pelo desenvolvedor, usar itens que já foram criados auxilia a 
produtividade, já que não é necessário ficar quebrando a 
cabeça para inventar aquilo que já existe. As bibliotecas 
importadas para o código podem conter vulnerabilidades. 
Para verificar isso, que servem essas ferramenta do tipo SCA, 
elas buscam dentro do código, bibliotecas importadas quepossuem vulnerabilidades conhecidas e verifica se estão em 
conformidade com as licenças utilizadas na empresa.
Ferramentas de Segurança
• Ferramentas do tipo SCA:
o Whitesource ferramenta muito utilizada para detectar 
vulnerabilidades em bibliotecas open source e se integra 
com facilidade em pipelines de entrega.
o Sonatype um catálogo gigante de bibliotecas das mais 
diversas linguagens de programação, para detectar 
vulnerabilidades em bibliotecas públicas.
Ferramentas de Segurança
97 98
99 100
101 102
20/09/2021
18
• Varredura de Segurança de Banco de Dados: as 
ferramentas fazem uma varredura em banco de dados, para 
verificar falhas que podem afetar a sua segurança, como 
versões desatualizadas, patches não aplicados, senhas fracas, 
erros de configuração e problemas com ACL (Listas de 
controle de acesso). 
Ferramentas de Segurança
• As ferramentas de Varredura de Segurança de Banco de 
Dados:
o Scuba usado em diversos sistemas de banco de dados, 
ele analisa mais de 2.000 problemas conhecidos de 
configuração incorreta e vulnerabilidades. 
Ferramentas de Segurança
o MSSQL DataMask usado para verificar vulnerabilidades 
em Microsoft SQL servers.
o BSQL Hacker é uma ferramenta para testar injeções de 
SQL e suas variações e ótimo para testar falhas de 
configuração de acesso a banco de dados.
o Oracle auditing tools ferramenta usada nos bancos 
Oracle para verificar ataques de senha e usuário fracos, 
testes de configurações e vulnerabilidades.
Ferramentas de Segurança
• O objetivo de uma pipeline é automatizar o processo de 
entrega de software em produção de forma rápida, ao 
mesmo tempo garantindo sua estabilidade, qualidade e 
resiliência.
• DevSecOps integra a segurança ao desenvolvimento de 
aplicativos do início ao fim. Essa integração no pipeline requer 
que a organização adote uma nova mentalidade, assim como 
novas ferramentas.
Pipeline DevSecOps
• Os principais pontos da pipeline DevSecOps :
o Codar: na parte de codificar, os testes de SAST são os que 
devem ter maior quantidade, justamente por serem os 
que testam o código em si.
o Buildar: na parte do empacotamento ainda existem testes 
de SAST, mas os que prevalecem são os DAST e os SCA.
Pipeline DevSecOps
o Testar: na parte de testes, ainda podemos incluir mais 
DAST e Pentests.
o Liberar: nessa parte podemos rodar testes de compliance, 
para verificar se o código está em conformidade com 
algumas regras da empresa, bibliotecas e licenças.
o Implantar: nessa parte podemos rodar testes de código de 
infraestrutura e de imagens docker.
Pipeline DevSecOps
103 104
105 106
107 108
20/09/2021
19
o Monitorar: com a aplicação em ambiente de produção, 
devemos ter SIEM, para correlacionar algum problema de 
segurança ou ataques.
Pipeline DevSecOps Pipeline DevSecOps
• O delicado equilíbrio entre privacidade e segurança é a chave 
para a criação de aplicativos e serviços de sucesso que 
normalmente requerem dados do usuário. A má 
implementação de padrões de segurança pode colocar os 
usuários e dados em risco.
• O DevSecOps permite que esse equilíbrio seja alcançado e 
garante que os dados do usuário sejam protegidos.
DevSecOps
Infográfico – Tipos de 
Ataques
• Os ataques é uma ação praticada por hackers que consiste 
na transmissão de vírus (arquivos maliciosos) que infectam, 
danificam e roubam informações de computadores e demais 
bancos de dados online, por exemplo.
• Pesquise sobre alguns ataques e quais foram as suas 
consequências.
Descrição da Situação Problema
• Hackers iranianos atacam o site do programa de 
bibliotecas do governo dos EUA: em 6 de Janeiro de 
2020, hackers iranianos atacaram o site do programa 
Bibliotecas de Depósitos Federais dos Estados Unidos, 
causando um dafacement, chamado também de pichação, 
quando o atacante altera dados de site. No ataque em 
questão, foram alterados páginas e colocado mensagens de 
apoio ao General Soleimani, morto em 3 de janeiro daquele 
ano em um ataque dos EUA.
Solução da Situação Problema
109 110
111 112
113 114
20/09/2021
20
• DDoS contra a Amazon: um ataque DDoS massivo contra 
a Amazon, foi interceptado e a empresa fez um relatório do 
tamanho do ataque, foi 2,3 terabits por segundo e a taxa de 
encaminhamento de pacotes de 293,1 Mbps. O ataque foi 
considerado o maior ataque DDoS da história.
Solução da Situação Problema
• Ataque a GoDaddy: é uma das maiores empresas de 
hospedagem do mundo. Ocorreu um incidente de violação 
de dados, permitindo um atacante a invadir credenciais 
expostas dos usuários do site. O Grande problema foi a 
demora da GoDaddy em descobrir a falha, o incidente 
ocorreu em 19 de outubro de 2019, mas só foi corrigida dia 
23 de abril de 2020, essa demora leva aos cibercriminosos a 
vender as credenciais na Deepweb e lucrar durante o tempo 
que a violação ficou exposta.
Solução da Situação Problema
• Ransomware na W&T Offshore: a gigante do petróleo e 
Gás teve um sequestro de 800GB de dados confidenciais 
como Extratos de reconcialiação bancária, modelos de 
análise de risco, relatórios de dívidas. Apesar de ocorrer uma 
negociação com os criminosos, foi liberado 10GB desses 
dados na Deepweb.
Solução da Situação Problema
• Ransomware no banco BCR: um dos maiores ataques de 
Ransoware da história, hackers sequestraram cerca de 11 
milhões de dados de cartão de crédito do Banco da Costa 
Rica (BCR) um banco estatal, mas que possue cerca de 140 
mil clientes Americano. Após o banco negar o vazamento, 
hackers compartilharam 240 números de cartão, com datas 
de validade e CVV (O código de verificação), para provar que 
estavam falando sério. O ataque causou um prejuízo 
bilionário ao banco.
Solução da Situação Problema
• Alguns ataques cibernéticos, geraram não só prejuízos, mas 
problemas na infraestrutura crítica, como no ataque a seguir:
o Ataque fecha Óleoduto nos EUA: um ataque hacker 
parou um dos maiores óleodutos dos EUA, que fornecem 
combustíveis para praticamente o país inteiro. Esse 
ataque levou a atrasos e mudanças de vôos, gerou 
pânico de desabastecimento em pessoas, que saíram 
para tentar comprar o restante de combustíveis nos 
postos.
Solução da Situação Problema
• Tentativa de envenenamento da água na Flórida: um 
hacker invadiu o sistema de abastecimento de água da 
florida e aumentou o nível de hidróxido de sódio e soda 
cáustica para 100 vezes o nível normal. O operador percebeu 
a alteração e voltou aos níveis normais, antes de causar 
algum problema maior, mas ficou claro a vulnerabilidade do 
sistema.
Solução da Situação Problema
115 116
117 118
119 120
20/09/2021
21
• Os exemplos são inúmeros, mas já percebemos que o 
quesito segurança da informação, não é apenas um adendo 
ao desenvolvimento de software, mas é obrigatório.
• Profissionais da área, vão ser cada vez mais requisitados 
para governos e empresas privadas, ter um pipeline DevOps
configurado para levar a segurança a sério e é uma 
obrigação de todos os profissionais de tecnologia nesse 
mundo extremamente conectado.
Solução da Situação Problema
Recapitulando
Recapitulando
• Conceito DevOps;
• Tipos de Testes;
• Técnica de Desenvolvimento;
• Ferramentas de Automação de Testes;
• Tipo de Ataques;
• Ferramentas de Segurança.
 Siga em frente e bons estudos! Obrigada!
121 122
123 124

Continue navegando