E aí [Música] o Olá eu sou o professor Marcelo Fantinato Essa é a disciplina de engenharia de software e nós vamos falar hoje sobre testes automatizados na verdade nós temos três aulas que tem um assunto correlacionado que é a entrega contínua e uma das formas de se obter entrega contínua é usando testes automatizados você não precisa de testes automatizados apenas para favorecer a entrega contínua mas você precisa de testes automatizados para favorecer a entrega contínua então a essa primeira aula é sobre testes automatizados de uma forma independente porque ele é importante por si só mas
Lembrando que nós estamos estamos no contexto inclusive se vocês olharem os alunos do universo se olharem lá no sistema né a que vocês acompanham as aulas semanalmente vocês vão ver que o tema dessa semana o entrega contínua bom nós passamos duas duas semanas cujos tópicos eram relacionados a teste de software mas sem tocar diretamente no assunto automação de teste e agora sim nós vamos falar sobre então a automação de testes e a primeira pergunta é por que automatizar os testes é uma pergunta cuja resposta ela pode ser inclusive e fácil né porque provavelmente a resposta
é um pouco óbvia é pelo menos a primeira resposta né que é o aumento de produtividade então nós queremos automatizar os testes de software para aumentar a produtividade do time de Desenvolvimento deixar tudo mais rápido se você tem testes automáticos em vez de testes manuais é praticamente óbvio que você vai ganhar tempo e por outro lado Nós também temos o aumento da qualidade porque uma vez que você pode fazer testes é sendo executado de forma mais rápida você pode fazer mais testes e se você pode fazer mais testes é por tabela a gente entende que
a gente vai pegar mais defeitos no software vai pegar mais falhas vai corrigir mais defeitos e consequentemente vamos aumentar a qualidade existe um mito né que eu não sei se vocês já sentiram isso ou já ouviram falar mas de que existe um custo muito alto para automação de teste de fato existe um custo alto Porém esse custo ele deve se pagar né existe um custo alto você tem que ter pessoas especializadas que nós chamamos de Engenheiros de automação de teste deve planejar o seu trabalho deve automatizar deve testar os testes e tudo mais então sim
existe um cu o Porém esse curso ele se paga uma vez que você executa o teste automaticamente uma vez duas vezes três vezes 4x 5x VN vezes né Sem vezes 90 sei lá Quantas vezes você vai executar esses testes automaticamente e aí os custos ficou irrisório ele vai ser um custo muito alto se você automatizar os testes e praticamente nunca rodá-los nunca executá-los dessa forma sim o custo é alto mas obviamente que não é esse objetivo então se você pensar apenas enquanto você é que gasta para automatizar os testes você vai pensar Poxa um custo
muito alto porém não é essa conta que você tem que fazer a conta é o quanto eu gasto para automatizar e o quanto eu economizo nas execuções automatizadas versus automações execuções manuais e a bom E aí quais os testes que eu devo querer automatizar né a resposta que já está aqui no slide é praticamente tudo eu quero executar praticamente todos os testes é quase se existe um caso de teste o ideal seria executada de forma automática e não manual a porque é justamente por a conta daqueles benefícios que a gente viu anteriormente ainda vão aparecer
alguns outros benefícios a nós só existe né não é praticamente tudo não é não tá escrito tudo porque existem algumas exceções então existem alguns testes que eles são naturalmente executados uma única vez e se eu vou executar esses festas uma única vez obviamente não faz sentido então eu automatizá-los justamente porque eu disse aqui só vale a pena se eu for executar ele várias várias vezes então por exemplo existem testes explorar e quer uma abordagem de técnica que eu não cheguei comentário nas aulas anteriores Mas é uma abordagem de teste em que o analista de teste
ele vai explorando a o sistema aplicação seguindo uma abordagem que ele chama de flor a tória em busca a de falhas né seguindo determinados cenários e aí ele só faz isso uma vez nesse caso não faz sentido realmente automatizar e quais as atividades que devem ser automatizados tampa geração de casas de teste quanto à execução dos casos de teste e aí a geração de casos de teste é aquela pode ser um pouco mais gostosa é e a mais a infecção de casa de teste aqui depois a gente vai realmente tem um benefício a bom para
geração então pensa né a gente tem que gerar casos de teste e executar esses casos de teste normalmente abandonar a automação de teste nós estamos pensando em aí eu tenho esse caso de teste aqui eu quero executá-lo de forma automática ou de forma manual e geralmente então quando a gente pensa e automação de teste Alice que a gente está pensando porém a automação de teste pode vir antes eu eu tenho que gerar os casos de teste vamos gerar ele gerá-los de forma automática ou de forma semi-automática com o apoio de ferramentas certo então para isso
é a geração automática de casos de teste ela vai ser usada para sistematizar a seleção dos dados de entrada para os casos de teste nós já pensamos né nós já temos aquelas técnicas de teste estrutural de teste funcional para sistematizar a seleção de casos de teste a diferença é que quando nós vimos aquelas técnicas nas aulas anteriores é deve ter ficado na implícito que um analista de teste faria isso é mas na verdade uma analista de teste pode fazer isso de forma automática ou semiautomática seguindo o apoio de uma ferramenta certo então a ferramenta vai
de alguma forma selecionar e sugerir os dados de entrada para a criação dos casos de teste Mas como eu havia comentado é a execução automática dos casos de teste que é Acaba ganhando maior força quando a gente pensa na automação né Ou seja é é quando é usado para executar os casos de teste ganhando tempo e aumentando consequentemente a qualidade como eu já havia comentado bom então as formas de implementação ou execução dos casos de teste elas vão diferenciar entre si principalmente se eu estou falando de teste de unidade e integração ou teste de aceitação
e sistema Então é bom eu tenho casos de teste eu quero automatizar a sua execução como eu vou fazer isso vai depender principalmente aqui eu tô no nível mais baixo de teste e integração e Unidade unidade integração ou se eu tô no nível mais em cima aceitação e sistema certo no caso do teste de unidade a gente já viu que o próprio um implementador é que faz o teste de unidade né e ele também então que vai ser responsável pela automação desse teste então o codificador não é um implementador do sistema é que está desenvolvendo
um sistema ele é responsável por fazer o teste de unidade inclusive por automatizar esse teste no caso do teste de aceitação de sistema geralmente quase sempre é uma equipe a parte que se preocupa com o teste e nós temos a figuras dos analistas de teste que normalmente projetam casos de testes de forma manual nós temos os testadores que executam os casos de testes de forma manual e nós temos também a figura de um engenheiro de automação de teste para fazer esse trabalho de forma automatizada e é para isso então nós temos ferramentas de apoio né
Tanto para o teste de unidade ou integração a por exemplo no caso de teste de unidade existe uma ferramenta muito famosa Cláudia illness é para fazer a automação do teste de unidade usando algum ambiente é para Java né e vi que também ferramentas de apoio à geração de drivers ou e também estamos ou morre que são necessárias para você fazer o teste de unidade e você pode ter a geração disso de forma automática ou semiautomática já pro teste de aceitação e sistema são outros tipos de ferramenta normalmente ferramentas de captura e repetição então só voltando
né no caso de teste de unidade esse diy Unity como que ele funciona ele ajuda você a criar uma classe de teste para cada classe que vai ser testado então para cada classe que você cria pago o tema você cria uma classe de teste e o diurit é um frango por quê que ajuda nisso no caso o teste de aceitação do sistema você não ta no nível da da unidade então você não enxerga as classes que vão ser testados você vê o sistema como um todo inclusive quase sempre em geral usando do ponto de vista
do usuário final ou seja na interface com o usuário interface gráfica para isso são usadas em geral ferramenta de captura e repetição ou conhecida como inglês como a Record e playback Ou seja você começa o você é criou o caso de teste executa ele a primeira vez de forma manual porém a liga uma ferramenta que vai gravando tudo o que você está fazendo então a clica aqui entre o cuidado aqui eu clico naquele botão ele fica uma informação ali e vou para outra tela e o script está gravando tudo a ferramenta a ferramenta está gravando
tudo é um script e depois esse script pode ser executado de novo e de novo e de novo certo então a ferramenta ela captura e pode rodar novamente porém né quase sempre senão Sempre você precisa pegar o script que a ferramenta gerou e editar esse script principalmente para colocar as pontas de prova para colocar as verificações que são necessárias um exemplo provavelmente a ferramenta mais famosa para isso é a ferramenta Selenium o futebol e além de ferramentas específicas como direi um esse e a acelera um existem ambientes de automação de teste né que seriam suítes
de ferramentas é pra dar suporte a um banco de dados por exemplo quais são os casos de teste e você não teria isso num documento de texto por exemplo seria no de uma forma estruturada armazenado no banco de dados é ou ferramentas também para fazer análise de cobertura de testes a eu já executei esses casos de teste quanto de cobertura e já consegui do código por exemplo para fazer simulação modelagem para emitir relatórios né esse tipo de relatório de cobertura relatórios de Ai eu já executei tantos testes quando você já passaram quantos falharam ou qualquer
outro tipo de relatório relacionado à execução de teste de alguma forma então você pode ter uma uma suíte de ferramentas relacionadas a teste principal e a testes automatizados bom é isso então como referência né a segunda referência aí é um dos livros que já apareceu aqui algumas vezes nessas aulas livro do preze - Maxim engenharia de software uma abordagem profissional dessa edição de 2021 a mais também um livro de Hubble e Farley entrega continua como entregar só fica de forma rápida e confiável Então veja que esse livro ele não fala sobre testes automatizados no título
mas sim como entregar contínua mas dentro dele é falado de testes automatizados porque como eu comecei a aula falando testes automatizados não existem apenas para garantir entrega contínua Mas é uma das partes necessárias para isso é isso então pessoal obrigado a [Música] E aí [Música] [Música]