Buscar

Unidade 3 TESTES DE SOFTWARE

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 35 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 35 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 35 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

07/06/2020 Ead.br
https://fadergs.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller# 1/35
PRÁTICAS DE ENGENHARIA DEPRÁTICAS DE ENGENHARIA DE
SOFTWARESOFTWARE
GERENCIAMENTO,GERENCIAMENTO,
CONFIGURAÇÃO E TESTECONFIGURAÇÃO E TESTE
DE DE SOFTWARESOFTWARE
Autor: Esp. Daniel Brandão
I N I C I A R
07/06/2020 Ead.br
https://fadergs.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller# 2/35
introduçãoIntrodução
Arquitetura de software é o estudo da estrutura e desempenho em larga escala dos
sistemas de software. Aspectos importantes da arquitetura de um sistema incluem a
divisão de funções entre os módulos, os meios de comunicação entre os módulos e a
representação de informações compartilhadas. A de�nição visa abranger esses usos
distintos, mas relacionados, enquanto encoraja uma de�nição mais rigorosa do que
constitui a organização fundamental de um sistema em domínios especí�cos. Para
um bom funcionamento, adotar estruturas que auxiliem na con�guração e
gerenciamento de projetos é fundamental. Nesta unidade, iremos mais a fundo nas
técnicas e tecnologias envolvidas no processo de gerenciamento e con�guração de
versões de software em um processo de entrega e integração contínua - CD/CI (em
inglês chamado de Continuous Delivery/Continuous Integration), assim como de
técnicas e automação de testes.
07/06/2020 Ead.br
https://fadergs.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller# 3/35
Uma das boas práticas na gestão de projetos de software é o controle de processos e
de versionamento de código-fonte. Com um projeto bem de�nido na fase de análise
de sistemas, a primeira etapa como levantamento de requisitos e boas práticas são
estabelecidas, a �m de que a equipe de desenvolvimento esteja a par do contexto em
que estarão envolvidos no projeto.
Com o avanço das tecnologias envolvidas na troca de mensagens em sistemas, as
aplicações e softwares precisaram evoluir e, com isso, o modo como as equipes de
desenvolvimento e os programadores full stack criam e disponibilizam essas
aplicações também precisou evoluir. As linguagens de programação deixaram de ser
puro código e passaram a ter toda uma base por trás, com frameworks e servidores
próprios para executar aquele código. Com essa estrutura, a forma como se enviam
os arquivos para um servidor, como na web, precisou acompanhar tudo isso,
evoluindo do uso simples do protocolo FTP (File Transfer Protocol ou Protocolo de
Transferência de Arquivo) para o CD (Continuous Delivery ou Entrega Contínua) e CI
(Continuous Integration ou Integração Contínua).
Gerenciamento deGerenciamento de
Versões deVersões de
SoftwareSoftware
07/06/2020 Ead.br
https://fadergs.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller# 4/35
Um projeto de software requer diferentes olhares, desde sua fase de ideação, na
prototipação inicial, passando por levantamento de requisitos, re�namento desses
requisitos, a construção de modelos de banco de dados, o desenvolvimento em si,
testes e mais testes. Uma das fases �nais é a entrega do projeto, fase essa conhecida
como deploy (do inglês, implementar). É nesta última fase que o sistema passa a estar
em um servidor, já como ambiente de homologação e habilitado para testes em
ambiente real que, posteriormente, será liberado no chamado Ambiente de
Produção. Este ambiente é como chamamos o estado de uso do sistema por seus
usuários. É o ambiente onde o sistema está em execução de fato.
Com o sistema em produção, o que pode ocorrer após isso são as eventuais
manutenções ou melhorias, lançamento de novas versões e trabalhos do gênero.
Para Lopes et al. (2019, p. 2),
Cada etapa do processo não envolve somente o desenvolvedor e a
linguagem, mas também o ambiente onde os processos estão ocorrendo,
de forma que um mesmo produto de software assume comportamentos
diferentes de acordo com seu ambiente de desenvolvimento. Isso porque
durante seu desenvolvimento um sistema precisa passar por uma série de
testes, mudanças e adequações [...].
Observe que a etapa de entrega é precedida de outras que também são de total
importância. A entrega ou implantação de uma aplicação também necessita de
cuidados especiais e deve contar com especialistas no processo, de acordo com o
grau de complexidade da estrutura de servidor empregada, das tecnologias
utilizadas no desenvolvimento e da quantidade de entregas necessárias ao longo do
processo de deploy.
Métodos Ágeis de Desenvolvimento
Assim como um sistema não é criado apenas de uma forma, uma só linguagem de
programação e um mesmo banco de dados sempre, o modo de criar projetos
também possui diferentes vertentes. Os métodos ágeis de desenvolvimento de
software surgiram no �nal da década de 90, propondo uma nova abordagem para
organizar tais atividades (SATO, 2014, p. 2).
07/06/2020 Ead.br
https://fadergs.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller# 5/35
Esses métodos não trabalham apenas com a ideia da programação em si, mas de
todos os aspectos de um projeto, incluindo as entregas. Até então, as tarefas de
desenvolvimento e a parte operacional do sistema eram bem divididas em times ou
funções distintas. Enquanto um tem o interesse apenas de pensar no
desenvolvimento em si, visando ao código-limpo e requisitos satisfeitos, o outro
preza pela estabilidade do serviço e a persistência da aplicação, sempre disponível
ao usuário �nal.
Na tentativa de agilizar o processo e de não ter um abismo entre a equipe ou pessoa
responsável pela programação em si e quem irá testar e posteriormente implantar a
aplicação em servidor de produção, foram surgindo novas visões e técnicas de
trabalho entre os processos. Dessa necessidade, surgiu o conceito de CI/CD –
Continuous Integration/Continuous Delivery (Integração Contínua e Entrega
Contínua). Essa técnica diminui o tempo entre cada deploy e passa a ter mais
entregáveis ao longo do processo.
Sato (2013, p. 5) ainda a�rma que o aumento da frequência de deploys faz com que a
quantidade de mudanças em cada deploy diminua, reduzindo também o risco
associado a ele. Logo, com mais entregas em tempos mais curtos entre si, haverá
menos trabalho de correção, fazendo com que a equipe consiga entregar um
produto de mais qualidade com baixos riscos de grandes manutenções futuras.
Entrega Contínua
CD (Continuous Delivery), como se chama o processo de Entrega Contínua de uma
aplicação, é o processo de entrega constante. Feita assim que pequenos artefatos
são desenvolvidos. No desenvolvimento de sistemas modulares, por exemplo, cada
módulo é uma parte do sistema. A aplicação é constituída de partes menores onde
cada uma representa um módulo, podendo ser dividido em: cadastro de clientes,
catálogo de produtos, controle �nanceiro, recursos humanos, por exemplo. Na
técnica de Entrega Contínua (CD), ao invés de ser submetida apenas a parte da
aplicação ou a aplicação inteira de uma vez, ao �nal do processo, as entregas ou
submissões da aplicação em pequenas etapas podem ser diárias, semanais ou em
outra periodicidade.
07/06/2020 Ead.br
https://fadergs.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller# 6/35
Para Bernardo (2018, on-line), Entrega Contínua é uma abordagem na qual os times
de desenvolvimento lançam produtos de qualidade de forma frequente, previsível e
automatizada. Em vez de fazer grandes entregas de uma vez, fazem várias pequenas
e rápidas — reduzindo as chances de erros e conquistando maior controle de
qualidade. A prática se apresenta como uma solução moderna de desenvolvimento
de sistemas, visto que, com o desenvolvimento sendo feito orientado a entregas, ao
�nal de cada entrega, o programador tem mais segurança. O que ele está criando
passa por testes de execução tanto em ambiente de desenvolvimento quanto no
ambiente de produção.
Esse processo é compreendido quando se utiliza o versionamento de código. Aose
utilizar técnicas e ferramentas de controle de versão, há uma segurança de que, caso
algum erro ocorra durante o processo de deploy ou se alguma das entregas feitas
apresente defeito, a aplicação pode retornar a um estágio anterior ao da entrega
defeituosa, fazendo com que o erro seja reparado de maneira mais rápida e prática.
Muitas vezes, isso é detectado tão depressa que o usuário do sistema em si nem
percebe que houve um downgrade da aplicação (voltar a um estado anterior).
Com a aplicação do conceito de Entrega Contínua (CD), alguns benefícios são
notados, como:
automatização do processo de deploy de uma aplicação;
melhora na produtividade do time de desenvolvimento;
encontro e correções de bugs mais rapidamente;
distribuição de atualizações mais rapidamente.
Podemos dizer que essas são as principais características do uso de CI/CD no
desenvolvimento e instalação de uma aplicação em servidor web. Uma tarefa
geralmente ligada da CD é o provisionamento de servidor.
Segundo Sato (2014, p. 63),
O termo provisionamento é comumente usado por empresas de
telecomunicações e por equipes de operações para se referir às etapas de
preparação iniciais de con�guração de um novo recurso. Por exemplo:
provisionar um aparelho celular, provisionar acesso à internet, provisionar
um servidor, provisionar uma nova conta de usuário, e assim por diante.
07/06/2020 Ead.br
https://fadergs.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller# 7/35
Em outras palavras, provisionar é prover previamente um ambiente ou con�guração
inicial de algum serviço para que o usuário possa utilizar sem ter mais esse trabalho
a cada novo aparelho. No caso de aplicações web, já é comum utilizar servidores em
nuvem ou servidores dedicados em empresas terceirizadas. Nesse caso, o nível de
provisionamento vai variar, podendo utilizar o conceito de virtualização, com
máquinas virtuais, atuando em um mesmo servidor, onde toda a estrutura
necessária em nível de software pode ser feita ainda em ambiente de
desenvolvimento e, posteriormente, ser submetida completamente, já pronta e
con�gurada, para o ambiente de produção em servidor web.
praticarVamos Praticar
Leia o trecho:
“Muitas empresas de sucesso na internet – como Google, Amazon, Net�ix, Flickr, GitHub e
Facebook – perceberam que a tecnologia pode ser usada a seu favor e que o atraso no
deploy para produção signi�ca atrasar sua habilidade de competir e se adaptar a mudanças
no mercado. É comum que elas realizem dezenas ou até centenas de deploys por dia” (SATO,
2014, p. 4).
Essa linha de pensamento que tenta diminuir o tempo entre a criação de uma ideia e sua
implementação em produção também é conhecida como:
a) Engenharia de Software.
b) Arquitetura de Software.
c) Integração Contínua.
07/06/2020 Ead.br
https://fadergs.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller# 8/35
d) Entrega Contínua.
e) Métodos Ágeis.
07/06/2020 Ead.br
https://fadergs.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller# 9/35
O ambiente de produção é como chamamos o ambiente de servidor web em que a
aplicação estará em execução e, em consequência, sendo utilizada pelo usuário �nal
da mesma. Após a submissão e as devidas parametrizações do servidor, a aplicação
deverá estar pronta para uso. Mas, como submeter os arquivos da aplicação ao
servidor? É isso que veremos a seguir, com duas formas distintas de fazer a tarefa:
com Entregas Contínuas ou um deploy único.
Aplicação com Entregas
Contínuas
Segundo Bernardo (2018, on-line), na integração contínua,
os desenvolvedores integram as suas mudanças ao branch principal
sempre que possível. [...] As mudanças são validadas com builds de testes
que rodam de forma automatizada, impedindo problemas na hora de
lançar mudanças nas integrações.
Integração eIntegração e
Con�guração deCon�guração de
SistemasSistemas
07/06/2020 Ead.br
https://fadergs.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller# 10/35
Geralmente ligada a um processo automatizado, as entregas e integrações contínuas
permitem que a equipe de desenvolvimento se preocupe menos com as entrega em
si e mais com sua tarefa principal, que é a de criar as aplicações e seus testes. Esta
metodologia permite ter equipes mais focadas em programar propriamente,
deixando algumas tarefas mais autônomas e menos burocráticas, dando mais
liberdade aos desenvolvedores.
Esta integração e entregas contínuas estão diretamente ligadas ao versionamento e
controle de código. O método mais comum de criar versões de código é o uso do GIT.
Serviços como GitHub e GitLab são os mais conhecidos serviços que utilizam a
metodologia da criação de versões de arquivos em ambiente web. Esta prática com
Git realiza a criação de repositórios onde cada arquivo de um projeto é criado e
submetido a um servidor, onde será armazenado como cópia de seu estado atual,
permitindo assim que cada arquivo criado e alterado tenha a possibilidade de ser
revertido a um estado anterior. Logo, são criadas cópias ou versões do arquivo, vindo
daí o conceito de versionamento.
O controle de versões ou de código-fonte é uma forma de gerenciamento na
alteração de códigos em arquivos de uma aplicação. É como você ter um site na web,
já funcionando e sendo utilizado pelos usuários, mas se você precisar adicionar mais
uma opção ao menu. Você pode alterar o arquivo com o menu localmente e, após a
alteração, submetê-lo ao servidor web. Com isso, o site será atualizado e a nova
opção de menu estará disponível. Em um processo de transferência de arquivo
comum via FTP, por exemplo, o arquivo que contém o menu originalmente será
substituído pela nova versão. Com uso do versionamento de código, tanto a nova
versão do arquivo como a anterior, estão disponíveis. Daí vem a ideia de versão de
código.
Git
Git é um sistema de controle de versão de arquivos onde é possível desenvolver
projetos com diferentes pessoas contribuindo ao mesmo tempo, criando versões de
cada alteração sem riscos de alterações serem sobrescritas (SCHMITZ, 2015). Esse
sistema foi criado por Linus Torvalds, o mesmo criador do núcleo (kernel) do sistema
07/06/2020 Ead.br
https://fadergs.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller# 11/35
operacional Linux. A ideia do Git é ter diferentes versões de um mesmo arquivo, de
maneira independente um do outro, podendo reverter a um estado anterior o
arquivo sempre que necessário. Cada atualização de arquivo é chamada de
con�rmação. É geralmente utilizado como uma aplicação por shell script ou prompt
de comando, com comandos básicos como Pull, Commit, Split e Merge.
Os maiores benefícios apresentados pelo uso do versionamento via Git são:
Acompanhamento histórico de alterações: é possível revisar como as
con�rmações foram alteradas ao longo do tempo, ver quando e por quem
as alterações foram feitas e reverter para uma con�rmação anterior, se
necessário. Esse histórico facilita a identi�cação e a correção de bugs.
Trabalho em equipe: você pode compartilhar seu código facilmente com
outros colegas de equipe para revisão antes de con�rmar ou mesclar um
arquivo. Além disso, os recursos de rami�cação e revisão permitem o
desenvolvimento simultâneo. Várias pessoas podem trabalhar no mesmo
arquivo e resolver as diferenças nele posteriormente.
Melhora na velocidade e produtividade da equipe: o Git facilita o
rastreamento de alterações no código. O desenvolvedor pode se
concentrar em escrever código, em vez de gastar tempo rastreando e
mesclando versões diferentes de sua equipe. Além disso, o Git executa
cálculos e armazena seu repositório principal localmente, tornando-o mais
rápido na maioria das operações.
Disponibilidade e redundância: o Git trabalha de maneira distribuída, o
que signi�ca que não existe um local central e único onde tudo esteja
armazenado. Em um sistema distribuído, existem vários backups no casode você precisar de um. Essa abordagem também signi�ca que você pode
trabalhar off-line e con�rmar suas alterações quando estiver tudo pronto.
Git é o padrão do setor: devido à sua popularidade, o Git se transformou
no padrão de muitos ambientes de desenvolvimento integrado (IDEs) e por
muitas ferramentas populares de desenvolvedor, incluindo AWS
CodeCommit, Jenkins e Travis. Existem muitos recursos gratuitos do Git
disponíveis.
A Figura 3.1 apresenta a estrutura de um repositório Git, baseado em um �uxo de
trabalho com diferentes rami�cações.
07/06/2020 Ead.br
https://fadergs.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller# 12/35
Como apresentado pela �gura, o primeiro elemento representa o chamado Working
Directory, que é a pasta que contém os arquivos atuais, em que se está trabalhando
no momento. A segunda �gura representa o Index Stage, uma área temporária de
arquivos, que estarão preparados para realização do commit (envio). A terceira
imagem seria a Head, área de rami�cação dos arquivos no repositório.
Figura 3.1 - Fluxo de trabalho em um processo Git
Fonte: Elaborada pelo autor.
saibamaisSaiba mais
O Git utiliza comandos básicos, uma espécie de
linguagem própria para troca de informações e o
cumprimento do �uxo de processos dele mesmo.
Alguns comandos como Git init (utilizando para
iniciar um repositório), Git Pull (serve para baixar
as últimas alterações de um repositório), Git
Remote -V (para saber onde estão indo as
alterações sendo realizadas), Git Status
(comando que mostra se há alterações a serem
submetidas ao repositório), Git Commit
(comando que “comita”, ou seja, envia arquivos
novos ou alterados aos servidores). Saiba mais
sobre comandos Git acessando o site.
ACESSAR
https://rogerdudler.github.io/git-guide/index.pt_BR.html
07/06/2020 Ead.br
https://fadergs.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller# 13/35
Para realização das operações, o ambiente Git propõe o uso de comandos, como:
Pull, Push, Merge, Clone, Commit, Branch, entre outros. Através de linha de comando,
você gerencia projetos inteiros ou arquivos especí�cos em um ou mais repositórios.
praticarVamos Praticar
O versionamento de código via GIT é uma forma de gerenciar código-fonte ou arquivos de
maneira a criar instâncias deles. Com esse sistema, é possível compartilhar arquivos entre
vários autores e colaboradores sob a segurança de estar criando cópias de cada versão de
arquivo. Sobre os benefícios de se utilizar o versionamento via GIT, é correto o que se
a�rma em:
a) Transferência de arquivos via Cliente FTP.
b) Redundância e backup único dos arquivos.
c) Uma tarefa executada exclusivamente pelo DevOps.
d) Aumento na velocidade e na produtividade no desenvolvimento.
e) Menor acoplamento entre equipes de desenvolvimento e produção.
07/06/2020 Ead.br
https://fadergs.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller# 14/35
O contexto do desenvolvimento de software engloba técnicas que buscam agilizar o
processo da criação de sistemas. Como temos visto, alguns passos são importantes
de serem contemplados no projeto de software com objetivo de não apenas concluir
um projeto, mas de manter a qualidade no produto �nal, contando com menor
tempo de desenvolvimento e a otimização do trabalho da equipe de
desenvolvimento. Um dos aspectos mais importantes é o teste de software.
Geralmente, o teste de software é de�nido como uma atividade para veri�car se os
resultados reais correspondem aos resultados esperados e para garantir que o
sistema de software esteja livre de defeitos. Envolve a execução de um componente
de software ou de um sistema para avaliar uma ou mais propriedades de interesse. O
teste de software também ajuda a identi�car erros, lacunas ou falta de requisitos, ao
contrário dos requisitos reais (PEZZÈ e YOUNG, 2018). Pode ser feito manualmente
ou usando ferramentas automatizadas. Alguns preferem dizer o teste de software
como um teste de caixa branca e caixa preta.
Existem diferentes técnicas de testes. A TLD ou Teste Depois do Desenvolvimento é
o processo mais comum na prática de construção de um software (BARROS e
Teste de Teste de SoftwareSoftware
07/06/2020 Ead.br
https://fadergs.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller# 15/35
JÚNIOR, 2019, p. 10). Assim como este, existem outros como o TDD ou
Desenvolvimento Orientado a Testes, com as tarefas de testes sendo realizadas
antes da criação de uma funcionalidade (BARROS e JÚNIOR, 2019).
Para Pezzè e Young (2018, p. 25), o teste completo de cada produto individual pode
não ser econômico, dependendo dos custos do teste, da con�abilidade do processo
de produção e dos custos de falhas em campo. Nesse contexto, é importante
compreender todos os tipos de testes para poder ponderar tanto na estimativa de
prazo quanto de custo que cada teste deverá gerar em torno de um projeto de
software. O teste é importante porque os erros do software podem ser caros ou até
perigosos, podendo causar perdas monetárias e humanas, com exemplos históricos
que podem até causar espanto.
Alguns dos casos mais emblemáticos são: erros em sistemas �nanceiros, bug do
milênio, falha de software embarcado em automóveis (que custa uma fortuna com
recalls), promoções em lojas virtuais vendendo produtos caros a meros R$ 1,00,
entre outros casos. Em todos os casos, alguns testes antes da validação e
implantação do software poderiam ter evitado milhões ou até bilhões de prejuízo
para empresas e até instituições públicas. A falta de um planejamento e de um bom
plano de testes pode custar caro, literalmente.
Plano de Testes
A melhor maneira de aplicar testes em software é começar elaborando um plano de
testes. Para Andrade e Viana (2016, on-line),
No ciclo de desenvolvimento de softwares, a realização de testes tem
espaço desde a fase de design até o lançamento do produto. Eles conferem
con�abilidade ao software, reorientam o desenvolvimento do design e do
código e poupam gastos desnecessários, quando detectam erros nas fases
iniciais do desenvolvimento de um software.
Para eles, para cada tipo de uso que o software deverá ter após desenvolvido, existe
um grau de necessidade e importância dos testes. O plano de testes se trata da
07/06/2020 Ead.br
https://fadergs.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller# 16/35
documentação dos testes de software cujo conteúdo deve contemplar os critérios
aceitos para o produto �nal, a �m de guiar os passos da execução dos testes.
Assim como outras etapas da engenharia de software, os testes possuem
certi�cações que são concedidas por organizações internacionais que trabalham
especi�camente com qualidade, através de certi�cações concedidas por
organizações que avaliam o processo considerando modelos de qualidade, como o
Capability Maturity Model Integration (CMMI), assim como a ISO-12207.
Segundo Pezzè e Young (2018, p. 29), nenhuma técnica de teste ou de análise pode
servir sozinha a todos os objetivos. As razões primárias para combinar técnicas em
vez de escolher uma técnica melhor são:
E�cácia para diferentes classes de erros. Por exemplo, condições de corrida
são muito difíceis de encontrar com teste convencional, mas podem ser
detectadas com análise estática.
Aplicabilidade em diferentes etapas do projeto. Por exemplo, pode-se
aplicar técnicas de inspeção inicialmente aos requisitos e representações
de projeto que não são apropriadas para análises mais automáticas.
Diferenças de objetivos. Por exemplo, teste sistemático (não randômico)
busca maximizar detecção de falhas, mas não pode ser usado para medir
con�abilidade. Para isso, teste estatístico é necessário.
Compromissos entre custo e garantias. Por exemplo, pode-se utilizar uma
técnica relativamente custosa para garantir algumas propriedades
essenciais de componentes centrais (exemplo: um kernel de segurança),
enquanto queas mesmas técnicas seriam caras demais para aplicar a todo
o projeto.
Tipos de Testes
Normalmente, o teste é classi�cado em três categorias: Teste Funcional, Teste Não
Funcional ou Teste de Desempenho, Manutenção (Regressão e Manutenção). A
seguir, são descritas, de melhor forma, as três categorias de teste:
07/06/2020 Ead.br
https://fadergs.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller# 17/35
O teste funcional, conhecido como teste caixa-preta, é caracterizado por
técnicas para derivar casos de teste a partir de especi�cações funcionais.
Dentro dos testes funcionais, temos: unidade, integração,
interoperabilidade, de aceitação do usuário, entre outros.
Os testes não funcionais, também chamado de teste caixa-branca, buscam
realizar a veri�cação da estrutura de software, através de requisitos não
necessariamente operacionais, mas de partes de suporte e veri�cação de
ambiente. Alguns dos tipos de testes não funcionais geralmente aplicados
são: de atuação, resistência, carga, volume, escalabilidade, usabilidade.
Os testes de manutenção têm a ver com testes realizados para veri�car
algumas situações que podem ter gerado alteração ou mau funcionamento
em sistemas que já estão em uso. Os principais são: de regressão e
manutenção.
Além da classi�cação de testes, existem tipos de testes que são empregados como
metodologia ágil, na busca da automatização de testes, como TDD, ATDD, DDD,
BDD e outros, que serão apresentados a seguir.
DDD
O Domain-Driven Design, ou Design Orientado a Domínio, foi inicialmente introduzido
e popularizado pelo programador Eric Evans em seu livro Design Orientado a
Domínio: Atacando as Complexidade no Coração do Software (2004). É a expansão e
a aplicação do conceito que se aplica ao desenvolvimento de software. Segundo
Evans (2016), DDD visa facilitar a criação de aplicativos complexos, conectando as
partes relacionadas do software em um modelo em constante evolução e concentra-
se em três princípios fundamentais:
Concentra-se no núcleo do domínio e domínio lógico.
Baseia-se em projetos complexos em modelos de domínio.
Colabora constantemente com domínios especializados, para melhorar o
modelo de aplicativo e resolver quaisquer domínios de problemas
relacionados e emergentes.
Domain-Driven Design também enfatiza fortemente a prática cada vez mais popular
de continuous integration (CI ou Integração Contínua) que solicita que toda a equipe
07/06/2020 Ead.br
https://fadergs.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller# 18/35
de desenvolvimento use um repositório de código compartilhado e envie
con�rmações diárias diariamente (se não várias vezes ao dia). Um processo
automático é executado no �nal do dia, que veri�ca a integridade de toda a base de
códigos, executando testes de unidade automatizados, testes de regressão e
similares, para detectar rapidamente quaisquer problemas em potencial que possam
ter sido introduzidos nas con�rmações mais recentes.
TDD
Primeiramente, na abordagem de Desenvolvimento Orientado a Testes (TDD), é
desenvolvido o teste que especi�ca e valida o que o código fará. De maneira simples,
os casos de teste são criados antes da criação do código. O objetivo do TDD é tornar
o código mais claro, simples e sem erros.
O TDD começa com o design e o desenvolvimento de testes para todas as
funcionalidades de um aplicativo. A técnica instrui os desenvolvedores a escrever
um novo código somente se um teste automatizado falhar. Isso evita a duplicação de
código. A abordagem TDD é principalmente uma técnica de especi�cação. Isso
garante que seu código-fonte seja exaustivamente testado no nível con�rmatório.
Existem dois níveis de TDD: Developer TDD e o TDD de aceitação (ATDD). O
primeiro trata escreve um teste de desenvolvedor único, ou seja, teste de unidade e,
em seguida, apenas o código de produção su�ciente para realizar esse teste. O teste
de unidade se concentra em todas as pequenas funcionalidades do sistema. O
Developer TDD é chamado simplesmente de TDD. Já no ATDD, você escreva um
único teste de aceitação. Este teste cumpre os requisitos da especi�cação ou
satisfaz ao comportamento do sistema. Depois disso, você escreva apenas o código
de produção/funcionalidade su�ciente para realizar esse teste de aceitação. O teste
de aceitação se concentra no comportamento geral do sistema. O ATDD também era
conhecido como Desenvolvimento Comportamental (BDD).
ti
07/06/2020 Ead.br
https://fadergs.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller# 19/35
praticarVamos Praticar
Teste de software é um processo de veri�cação de um sistema para decidir se ele atende aos
requisitos especi�cados e produz os resultados desejados. Como resultado, você identi�ca
erros no produto de software. De acordo com os tipos de teste de software, está correto o
que se a�rma em:
a) TDD é um teste que se concentra no núcleo de domínio de um sistema.
b) BDD e TDD se trata do mesmo tipo de teste.
c) O teste caixa-branca é o tipo de teste de manutenção de software.
d) O teste caixa-preta também é conhecido como Teste Funcional.
e) Os testes devem ser aplicados apenas na fase �nal do desenvolvimento.
07/06/2020 Ead.br
https://fadergs.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller# 20/35
O gerenciamento de implantação de projetos de software abrange o conhecimento,
técnicas e ferramentas necessárias para gerenciar o chamado deploy, a entrega em si
de um produto de software.
Diferente da metodologia de entregas contínuas, é possível realizar uma chamada
entrega única. Este tipo de deploy é realizado, em geral, para aplicações mais simples,
com grau de tecnologias e com baixo acoplamento em relação ao próprio servidor,
ou seja, uma aplicação criada em uma única linguagem, ou criada por uma só pessoa,
de maneira simples, páginas webs estáticas ou até dinâmicas, mas sem maiores
complexidades.
Este tipo de implantação pode ser considerado mais simples, porém, se não for feito
da maneira correta, poderá apresentar falhas que comprometam a execução de
maneira correta. Mesmo sendo um método mais fácil de implantação, requer o
mínimo de cuidados e também deve submeter a testes a aplicação após seu deploy.
Independentemente de ser considerado mais simples, requer cuidados semelhantes
ao da Entrega Contínua, porém sem a necessidade de mais de um pro�ssional
envolvido no processo.
Implantação deImplantação de
SistemasSistemas
07/06/2020 Ead.br
https://fadergs.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller# 21/35
Utilizando Cliente FTP
Para realizar uma implantação de sistema neste método, é preciso utilizar alguma
ferramenta chamada Cliente FTP no processo. Este método nada mais é do que
transferir arquivos de um servidor ou máquina local para outra máquina ou servidor,
no caso de uma aplicação web o envio é para um servidor web. Esse processo se
utiliza de um protocolo de internet especí�co, o FTP (File Transfer Protocol ou
Protocolo de Transferência de Arquivo). Existem vários softwares que auxiliam na
transferência de arquivos neste processo, podendo ser utilizadas tanto IDEs
(Integrated Development Environment ou Ambiente de Desenvolvimento Integrado),
programas especí�cos de Client FTP como Filezilla, SmartFTP, Transmit, Free FTP,
entre outros. Existe opção tanto para sistemas operacionais Windows e Linux, como
MAC OS, entre outros. A �gura 3.2 mais à frente apresenta um exemplo de um
cliente FTP, o programa Filezilla no caso.
De modo geral, o protocolo FTP requer alguns argumentos para conectar uma
máquina local até um servidor ou outra máquina, a saber:
Host: é a URL (Uniform Resource Locator) ou o domínio do servidor, que
pode ser representado, por exemplo, pelo IP (Internet Protocol ou Protocolo
da Internet) no formato http://0.0.0.0 ou nome de domínio no formato
<http://dominio.com.br>.
Nome do usuário: esse é o nome de usuáriocriado no servidor que dá
acesso a um diretório ou ao diretório raiz de um servidor web.
Senha: a senha do usuário cadastrado no servidor.
Porta: é a liberação de acesso ou conexão, onde, para cada tipo de conexão,
uma porta pode ser usada. A porta padrão da web é a 21, mas essa pode ser
parametrizada de maneira personalizada.
A Figura 3.2 apresenta o detalhe da parte de cima do aplicativo Filezilla, contendo os
campos a serem preenchidos com Host, Usuário, Senha e Portal.
07/06/2020 Ead.br
https://fadergs.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller# 22/35
Uma vez que estejam preenchidos os campos com os dados corretos, basta clicar o
botão “Conexão rápida” ou na setinha ao lado para escolher outra opção, com
alguma outra conta já utilizada. Uma vez conectado, basta utilizar a árvore de
diretórios ao lado para acessar os arquivos locais e arrastar os arquivos para a aba
ao lado, de�nindo onde �carão os arquivos no servidor.
Com o Filezilla, o processo é realmente simples e, logo após você escolher um
arquivo ou pasta, deve arrastar para o lado servidor. Assim que o upload for
concluído, seus arquivos estarão acessíveis no endereço o qual foi submetido. Por
exemplo: http:// 0.0.0.0/arquivos. Ao término do envio, �carão listados os diretórios
(pastas) e os arquivos enviados, à direita. O Filezilla mostra detalhes de log com
tamanho do arquivo, tipo do arquivo, data de modi�cação, entre outros detalhes.
Todos esses elementos estão visíveis na Figura 3.3:
Com a aplicação devidamente con�gurada com banco de dados e outros detalhes
necessários, ela estará disponível para ser acessada via navegador (caso seja uma
aplicação web), ou por outro meio. Após isso, caso necessite submeter alguma
alteração da aplicação, basta conectar novamente e submeter o arquivo alterado ou
o novo arquivo de código-fonte criado. O cliente FTP irá perguntar se você quer
substituir o arquivo que já existe no servidor e pronto. Sim, o processo é
relativamente simples como parece, uma vez que a forma de transferência real e a
troca de mensagens via protocolos de rede é algo transparente ao usuário via
aplicação como os softwares de cliente FTP. Assim, seus arquivos ou aplicação
Figura 3.3 - Janela completa do Cliente FTP Filezilla
Fonte: Elaborada pelo autor.
07/06/2020 Ead.br
https://fadergs.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller# 23/35
estarão atualizados e/ou carregados no servidor ou máquina remota, estando
sempre prontos a serem novamente acessados.
Realizando Entregas e Integração
Contínua
Entregas Contínuas e de qualidade com tempo de ciclo curto precisam de um alto
grau de automação. Da necessidade de diminuir a distância entre equipe de
desenvolvimento e equipe operacional, surgiu a cultura DevOps. A escolha das
ferramentas certas para o ambiente ou projeto é importante quando você muda
para a cultura DevOps.
Com base em práticas enxutas e ágeis, o DevOps signi�ca automação de processos
no desenvolvimento e fornecimento de software. É quase impossível descrever essa
abordagem no estilo “receita de bolo”, mas de modo geral podemos dizer que essa
metodologia acaba por bene�ciar a maioria dos desenvolvedores com a melhora na
conexão dos desenvolvedores e a parte operacional, antes mantidos isolados.
Existem muitas ferramentas de DevOps que podem auxiliar no processo de
implantação desta cultura, que ajuda bastante em como fazer isso acontecer.
07/06/2020 Ead.br
https://fadergs.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller# 24/35
Um engenheiro DevOps é um pro�ssional que deve ser capaz de entender todo o
processo de desenvolvimento e seu ciclo de vida, aliado à experiência de operar e
administrar o sistema. Na verdade, se você parar para analisar ou pesquisar pelo
período remoto do início da prática de desenvolvimento web, os primeiros
pro�ssionais considerados analistas ou desenvolvedores web tinham esta prática
atual, de dominar tanto a parte de codi�cação (a prática de programação em si) com
a de con�guração e manutenção de uma aplicação em servidor web.
No contexto geral, existem vários benefícios do uso da cultura DevOps no seu
processo de implantação e deploy de aplicações web. Dentre eles, estão:
Velocidade: operação em alta velocidade na inovação e entrega de novas
funcionalidades de sistemas.
Entrega rápida: aumento da frequência e ritmo de novos lançamentos,
tanto para novas aplicações quanto para correções de problemas
apresentados na execução da aplicação.
07/06/2020 Ead.br
https://fadergs.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller# 25/35
Con�abilidade: garante entregas mais rápidas e contínuas, gerando
con�ança e passando segurança ao usuário �nal.
Escalabilidade: a aplicação pode crescer sem que o serviço tenha que �car
indisponível, utilizando também a arquitetura por microsserviços.
Colaboração melhorada: equipes de desenvolvimento e operação
trabalham mais próximas e de maneira colaborativa, compartilhando
responsabilidades e combinando �uxos de trabalho.
Segurança: operando rapidamente e utilizando controles de versões, a
cultura DevOps auxilia em manter uma aplicação sempre atualizada e com
uso de técnicas que garanta o acesso contínuo por pro�ssionais
capacitados.
Ferramentas DevOps
Para uma boa prática DevOps, é altamente indicado o uso de ferramentas que
auxiliem na produtividade da função. Existem algumas no mercado que tem por
objetivo eliminar algumas práticas mais trabalhosas, como a de con�gurações
extensas de servidores, desde o cuidado com o sistema operacional, variáveis de
ambientes, sistemas de arquivos, até a con�guração de servidor web e de aplicação,
banco de dados, entre outros.
Docker
Uma ferramenta bastante usual é o Docker. É uma tecnologia que permite a criação
de containers, onde o objetivo é você criar um container local, con�gurado com todas
as variantes citadas anteriormente, que preparam um ambiente propício para a
execução da aplicação criada (LOPES et al., 2019). Esse container pode ser criado em
uma máquina ou servidor local e, após a criação da aplicação, pode ser submetido ao
servidor web e ali será executado como um nó de um servidor, sem precisar de
praticamente nenhuma outra con�guração. Isso faz com que a aplicação web dentro
do container funcione independentemente do sistema operacional do servidor web.
Jenkins
07/06/2020 Ead.br
https://fadergs.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller# 26/35
Segundo o site o�cial, o Jenkins é o principal servidor de automação de código
aberto que fornece centenas de plugins para dar suporte à construção, implantação e
automação de qualquer projeto (JENKINS, 2019, on-line). Com grande apelo de uso
em projetos e por equipes que adotam a prática de entregas e integrações contínuas,
esta ferramenta é capaz de automatizar processos repetitivos, sendo um apoio ao
processo contínuo de atualizar e manutenção de aplicações em ambiente web.
A documentação do Jenkins explica bem como integrar a ferramenta a uma
aplicação de acordo com cada linguagem de programação. Na verdade, você pode
utilizar ferramentas de cada linguagem para integrar o processo de entrega contínua
do Jenkins. Com a ferramenta, o �uxo de entrega contínua mais básico terá, no
mínimo, três estágios que devem ser de�nidos em um arquivo Jenkins: Compilar,
Testar e Implementar. O último estágio, também chamado de deploy, precisa ser
devidamente precedido pelos estágios de Compilar e Testar, para garantir que
versão estável está sendo utilizada na atividade de implantação de uma aplicação.
Para utilizá-lo como serviço, não há complicações. Basta baixar o instalador no site
o�cial e ter como requisito básico pelo menos 512Mb de memória RAM e um espaço
em disco de 10Gb, requisitos mínimos para a versão 1.4 (JENKINS, 2019, on-line).
Diversas empresas, de todos os portes, utilizam o Jenkinscomo forma o�cial de
automatizar seu �uxo de entregas contínuas. Desde gigantes como Microsoft,
Redhat, Github, Rackspace, até empresas locais de desenvolvimento de sistemas e
aplicações, principalmente sistemas para web.
07/06/2020 Ead.br
https://fadergs.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller# 27/35
Controle de Logs
Uma tarefa importante no �uxo de trabalho DevOps é o controle de logs. Com um
�uxo contínuo de atualizações e novas submissões de arquivos, vários logs são
gerados e precisam ser mantidos para um controle inteiro do processo. A�nal, um log
diz muito sobre o uso de um servidor, pois se trata de discriminar detalhes de
trabalhos em um ambiente, identi�cando: o que, quem e quando foi feita alguma
reflitaRe�ita
Realizar o acompanhamento de projetos,
desde a fase de análise de requisitos até
seu deploy é uma tarefa que requer
bastante cuidado. Para que o CI / CD seja
e�caz, você precisa vinculá-lo aos seus
processos para que ele seja iniciado
quando um novo código for con�rmado.
Para poder con�ar que seus testes serão
precisos, é necessário recriar o ambiente
do aplicativo em contêineres que
simulem o ambiente �nal onde o software
irá ser executado. Após a conclusão dos
testes, é importante con�gurar um
processo de homologação para, aí sim,
chegar à implantação em ambiente de
produção.
07/06/2020 Ead.br
https://fadergs.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller# 28/35
ação em determinado computador, sistema ou servidor. Para o trabalho DevOps,
algumas ferramentas são indicadas para esse controle, como:
Flume: ferramenta sob a licença da Fundação Apache que controla o �uxo
de trabalhos em processos de software.
ELK: uma stack (pilha) de aplicações que inclui o uso das ferramentas
Elasticsearch, Logstash e Kibana, todas pertencentes à empresa Elastic.
Fluentd: projeto de software criado pela empresa Treasure Data que, além
de manipular logs, serve como um coletor de dados de modo geral, podendo
ser utilizado para diversos �ns.
praticarVamos Praticar
As aplicações Web já não são mais tão simples como no início da popularização da internet.
Com recursos avançados, a começar da evolução das próprias linguagens de programação,
os requisitos de servidor de hospedagem aumentaram consideravelmente. A entrega de
software passou a ser contínua e o versionamento de código quase que uma regra geral. A
respeito das técnicas modernas de implantação de software na Web, é correto a�rmar:
a) Entrega contínua é o envio de código-fonte via Cliente FTP.
b) DevOps é um sistema de arquivos distribuídos.
c) HTTP é o protocolo utilizado em aplicações para transferência padrão de
arquivos para servidores.
d) Integração contínua e entrega contínua são técnicas que trabalham em conjunto.
e) Um desenvolvedor Full Stack é um programador que também atua como DevOps.
07/06/2020 Ead.br
https://fadergs.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller# 29/35
indicações
Material
Complementar
FILME
Firewall - Segurança Em Risco
Comentário: O enredo trata da história de Jack Stan�eld
(Harrison Ford) como um especialista em sistema de
segurança bancária. Com a família do personagem
sequestrada, um criminoso exige que o pro�ssional ache
uma brecha no sistema criado por ele mesmo para conseguir
fraudar e desviar uma quantia milionária de Dólares. Apesar
de não ser tão recente, o �lme traz um enredo bastante
atual e possível que envolve segurança pessoal e digital,
boas práticas em sistemas e o envolvimento com projetos de
software.
Para conhecer mais sobre o �lme, acesse o trailer a seguir.
07/06/2020 Ead.br
https://fadergs.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller# 30/35
T R A I L E R
L IVRO
Engenharia de software - uma
abordagem profissional
Roger Pressman
ISBN: 978-0-07-802212-8
Comentário: Esse livro foi escrito por uma das maiores
autoridades em se tratando de Engenharia de Software,
Roger Pressman. Partindo desde os princípios da matéria,
ele aborda o uso de diagramas em cada etapa do processo
de desenvolvimento de um sistema, baseado em técnicas
atuais de desenvolvimento e implementação de software.
07/06/2020 Ead.br
https://fadergs.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller# 31/35
conclusão
Conclusão
Ao concluir a unidade, podemos dizer que durante o desenvolvimento de software,
tão importante quanto bem documentar cada etapa e saber utilizar as ferramentas
necessárias para se chegar ao produto, saber gerenciar os processos e integrar
ferramentas é primordial. Com o avanço das práticas de desenvolvimento de
software, novas culturas surgiram e se tornaram importantes na busca de produtos
de software de qualidade, destacando a cultura DevOps como uma forma de
automatizar processos outrora bastante demorados. A implantação de sistemas
baseada em Entrega e Integração Contínuas também são excelentes formas de criar
um ambiente mais produtivo de desenvolvimento, encurtando espaço entre a equipe
envolvida e o alcance da meta, que sempre será o software de qualidade. Também
vimos como as técnicas de testes estão cada dia mais presentes nos ambientes de
desenvolvimento e como auxiliam na obtenção da qualidade do produto �nal,
estando presente em todas as etapas de desenvolvimento.
referências
Referências
Bibliográ�cas
07/06/2020 Ead.br
https://fadergs.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller# 32/35
ANDRADE, Ana Paula; VIANA, Phil. Criação e geração de planos de teste de
software. Disponível em: https://www.ibm.com/developerworks/br/local/rational/
criacao_geracao_planos_testes_software/index.html. Acesso em: 16 fev. 2020.
BARROS, Gabryela Santana; JÚNIOR, Lielson R. Pereira. Análise experimental
entre as técnicas TDD e Test-Last no processo de manutenção corretiva de
software. Disponível em: http://ri.ucsal.br:8080/jspui/bitstream/pre�x/879/1/
TCCGABRYELAELIELSON.pdf. Acesso em: 17 fev. 2020.
BERNARDO, Kaluan. Entrega Contínua – o que é e como aplicar. Disponível em:
https://www.opus-software.com.br/o-que-e-entrega-continua/. Acesso em: 25 fev.
2020.
EVANS, Eric. Domain-Driven Design: atacando as complexidades no coração do
software. 3. ed. São Paulo: Alta Books, 2016.
JENKINS. Build great things at any scale. Disponível em: https://jenkins.io/. Acesso
em: 16 fev. 2020.
LOPES, Klerison Emmanuel; CAMPOS, Ronaldo Ribeiro de; PETRUCELLI, Erick
Eduardo; SORIANO, Gustavo Henrique. O processo de deploy automático em
ambientes de computação na nuvem: exemplo de utilização da plataforma Jenkins.
Disponível em:
https://revista.fatectq.edu.br/index.php/interfacetecnologica/article/view/545/361.
Acesso em: 15 fev. 2020.
PEZZÈ, Mauro; YOUNG, Michal. Teste e análise de software: processo, princípios e
técnicas. Porto Alegre: Bookman, 2018.
SATO, Danilo. DevOps na prática: entrega de software con�ável e automatizada. 2.
ed. São Paulo: Casa do Código, 2014.
SCHMITZ, Daniel. Tudo que você queria saber sobre Git e GitHub, mas tinha
vergonha de perguntar. Disponível em: https://tableless.com.br/tudo-que-voce-
queria-saber-sobre-git-e-github-mas-tinha-vergonha-de-perguntar/. Acesso em: 25
fev. 2020.
https://www.ibm.com/developerworks/br/local/rational/%20criacao_geracao_planos_testes_software/index.html
http://ri.ucsal.br:8080/jspui/bitstream/prefix/879/1/%20TCCGABRYELAELIELSON.pdf
https://www.opus-software.com.br/o-que-e-entrega-continua/
https://jenkins.io/
https://revista.fatectq.edu.br/index.php/interfacetecnologica/article/view/545/361
https://tableless.com.br/tudo-que-voce-queria-saber-sobre-git-e-github-mas-tinha-vergonha-de-perguntar/
07/06/2020 Ead.br
https://fadergs.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller# 33/35
07/06/2020 Ead.br
https://fadergs.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller# 34/35
07/06/2020 Ead.br
https://fadergs.blackboard.com/webapps/late-Course_Landing_Page_Course_100-BBLEARN/Controller#35/35

Continue navegando