Você está na página 1de 37

Testes de Softwares

Testes manuais x Testes automatizados


(CONCEITOS)
Aula 01

Gabriel Leme / David Martins


Por que testar?
Testes de softwares são necessários por:
Cometermos erros de programação;
Não termos total concentração;
Por não termos total entendimento das regras de
negócio;
Para aprimorarmos a qualidade do produto a ser
entregue;
Entre várias outras razões;
Defeito, Erro e Falha
 Defeito é uma deficiência mecânica ou algorítmica
(deficiência no código) que se ativada pode levar a
uma falha.
 Erro éum estado de execução que impede o software
de continuar, pode ser causado por algo externo ao
software ou falhas na grafia do código fontes, tais
como ausência de ponto-e-vírgula e parâmetros.
 Uma Falha é um evento notável onde o sistema viola
suas especificações, é a existência aparente de um
defeito.
Fundamentos de testes

Testabilidade
“Segundo Pressman a testabilidade de
um software pode ser dada pelo quão
fácil o programa por ser testado.”
Fundamentos
A atividade de teste é o processo de executar
um programa com a intenção de descobrir um
erro.
 Um bom caso de teste é aquele que apresenta
uma elevada probabilidade de revelar um erro
ainda não descoberto
 Um teste bem sucedido é aquele que revela um
erro ainda não descoberto.
O projeto de casos de teste
A realização, com sucesso, da etapa de teste
de um software deve ter, como ponto de
partida, uma atividade de projeto dos casos
de teste deste software.
 Projetarcasos de teste para um software
pode ser uma atividade tão complexa quanto
a de projeto do próprio software, mas ela é
necessária como única forma de conduzir, de
forma eficiente e eficaz, o processo de teste.
Princípios Básicos
 Conhecida a função a ser desempenhada pelo produto, testes são
executados para demonstrar que cada função é completamente
operacional, este primeiro princípio deu origem a uma importante
abordagem de teste, conhecida como o teste de caixa preta
(black box)
 Com base no conhecimento do funcionamento interno do produto,
realiza-se testes para assegurar de que todas as peças destes
estão completamente ajustadas e realizando a contento sua
função
 A abordagem originada por este segundo princípio, foi dado o
nome de teste de caixa branca (white box), devido ao fato de que
maior ênfase é dada ao desempenho interno do sistema (ou do
produto).
Características
 Operabilidade
 Melhor funcionamento, melhor pode ser testado.
 Observabilidade
O que é visível é testável.
 Controbilidade
 Melhorcontrole, mais testes podem ser automatizados e
otimizados.
 Decomponibilidade
 Resetar e isolar o sistema.
Características
Simplicidade
Menos é mais.
Estabilidade
Menos modificações, menos interrupções.
Compreensibilidade
Mais informações, menos dúvidas.
Tipos de Testes
 Teste de instalação  Teste de integração
 Teste de configuração  Teste de volume
 Teste de integridade  Teste de performance
 Teste de segurança  Teste de usabilidade
 Teste funcional  Teste de regressão
 Teste de unidade
Teste Não Funcionais
São técnicas utilizadas para verificar a operação correta
do sistema em relação a casos inválidos ou inesperados de
entrada. Outras técnicas de teste existem para testar
aspectos não-funcionais do software, como por exemplo,
os testes de desempenho, teste de carga ou teste de
usabilidade. As técnicas não funcionais verificam atributos
de um componente ou sistema que não se relacionam com
a funcionalidade (por exemplo, confiabilidade, eficiência,
usabilidade, performance, manutenção e portabilidade).
Teste de Instalação e Configuração
De acordo com o Ministério da cidadania:
  Testede configuração: foco em garantir que o
objetivo do teste funcione conforme pretendido em
diferentes configurações de hardware e software.
 Teste de instalação: foco em garantir que o objetivo
do teste seja instalado como pretendido em diferentes
configurações de hardware e software e em diferentes
condições (como espaço insuficiente em disco e
interrupções de energia).
Teste de Integridade e Segurança
Teste de integridade: enfatiza a avaliação da
robustez do objetivo do teste (resistência aos
defeitos) e compatibilidade técnica em relação a
linguagem, sintaxe e uso dos recursos.
Teste de segurança: foco em garantir que os
dados (ou sistemas) do objetivo do teste estejam
acessíveis somente aos agentes para os quais são
destinados.
Teste de Unidade e Integração
Teste de unidade: foca em fornecer valores
válidos ou inválidos e verificando se o retorno
foi de acordo com o esperado.
Teste de Integração: foco em testar os módulos
que serão integrados e testados. Como por
exemplo, seu software acessando um banco de
dados ou fazendo uma chamada externa a outros
sistemas.
Teste de Volume e Performance
Teste de volume: foco em verificar a habilidade do
objetivo do teste em manipular as quantidades de dados,
como entrada, saída ou residentes no banco de dados.
Teste de Performance: foco em avaliar a capacidade de
resposta, robustez, disponibilidade, confiabilidade e
escalabilidade de uma aplicação, conforme a quantidade
de conexões simultâneas, avaliando seu desempenho em
alta carga de trabalho e considerando seu
comportamento em circunstâncias normais.​
Teste de Usabilidade e Regressão
Teste de usabilidade: realizado em conjunto com os
reais usuários do sistema e verificar a facilidade que
o software ou sistema desenvolvido possui, de ser
claramente compreendido e manipulado pelo usuário.
Teste de regressão: consiste na aplicação de versões
mais recente do software, para garantir que não
surgiram novos defeitos em componentes já
analisados.
Testes Estáticos
 Sãoaqueles realizados sobre o código-fonte do
software, utilizando como técnica básica a inspeção
visual. Este tipo de teste é de simples
implementação, uma vez que não há necessidade de
execução do programa para obter-se resultados. Eles
podem ser utilizados utilizando a técnica de leitura
cruzada, onde um leitor é atribuído para avaliar o
trabalho de cada programador do software. Uma
outra forma de realizar o teste é por inspeção, onde
uma equipe designada analisa o código à luz de um
questionário especialmente concebido — a check list.
Testes Dinâmicos
 Os testes dinâmicos são os procedimentos
baseados na execução do código binário do
programa, sendo esta execução realizada com
base em subconjuntos de dados — o jogo de
teste. A escolha do subconjunto de dados a ser
utilizado para o teste pode ser feita com base em
aspectos estruturais do software (obtido a partir
do código-fonte) ou em aspectos funcionais (a
partir da especificação do programa).
Teste de Validação
 Ao final do teste de integração, o software é
finalmente estruturado na forma de um pacote ou
sistema. A forma mais simples de definição do teste
de validação é a verificação de que o software como
um todo cumpre corretamente a função para a qual
ele foi especificado. É importante lembrar que, no
documento de especificação do software, quando no
início da sua concepção, são definidos os chamados
critérios de validação, que servirão de guia para o
julgamento de aprovação ou não do software nesta
etapa de testes.
Teste Funcional
Verificar se a aplicação está apta a realizar as
funções na qual foi desenvolvida para fazer,
podendo ser realizado de forma manual,
automatizada ou uma misturando os dois.
Existem diversas maneiras de se testar um
software, sendo as principais os testes de caixa
branca e caixa preta.
Teste Caixa-Branca
Também chamada de teste estrutural, a técnica de
caixa-branca avalia o comportamento interno do
software.
Esta técnica de teste avalia o comportamento interno
do componente de software, trabalhando diretamente
sobre o código fonte do componente de software para
avaliar aspectos tais como: teste de condição, teste de
fluxo de dados, teste de ciclos e teste de caminhos
lógicos
Teste Caixa-Preta
Esta técnica de teste em que o componente de software a ser
testado é abordado como se fosse uma caixa-preta, ou seja,
não se considera o comportamento interno do mesmo.
Dados de entrada são fornecidos, o teste é executado e o
resultado obtido é comparado a um resultado esperado
previamente conhecido.
O componente de software a ser testado pode ser um método,
uma função interna, um programa, um componente, um
conjunto de programas e/ou componentes ou mesmo uma
funcionalidade.
Testes Manuais
São testes de software envolvendo testadores manualmente
casos de teste para executar sem usar ferramentas de
automação. Os testadores estão realmente por trás da tela
do aplicativo, realizam casos de teste e ver qual é o
resultado.
Cada aplicação nova ou modificada deve primeiro ser
testada manualmente antes de podermos realizar testes
automatizados. É assim que determinamos a testabilidade do
software. O teste manual requer mais esforço, mas é
necessário verificar a operação do aplicativo.
Objetivos (Testes Manuais)
Tem como objetivo garantir que a aplicação esteja livre de erros,
estabelecendo as especificações funcionais e critérios de
aceitação.
Plano de teste, casos de teste e casos de uso devem cobrir todo o
entendimento sobre a aplicação. O design, elaborado na fase de
teste, garante que os desenvolvedores possam compreender
melhor as condições da aplicação e guia na resolução dos defeitos
relatados pelos testadores. Os testadores então realizam o teste
novamente para verificar se o erro foi corrigido, seguindo este
ciclo até que a aplicação apresente o mínimo possível e aceitável
de erros.
Objetivos (Testes Manuais)
Tem como objetivo garantir que a aplicação esteja livre de erros,
estabelecendo as especificações funcionais e critérios de
aceitação.
Plano de teste, casos de teste e casos de uso devem cobrir todo o
entendimento sobre a aplicação. O design, elaborado na fase de
teste, garante que os desenvolvedores possam compreender
melhor as condições da aplicação e guia na resolução dos defeitos
relatados pelos testadores. Os testadores então realizam o teste
novamente para verificar se o erro foi corrigido, seguindo este
ciclo até que a aplicação apresente o mínimo possível e aceitável
de erros.
Testes Automatizados
É um processo em que as ferramentas de software
executam testes pré-programados, tendo como
objetivo simplificar testes com grande consumo de
demanda da equipe, executando-os em poucos scripts.
Com as ferramentas de testes podemos executar
testes, reportar resultados e comparar resultados,
podendo ser utilizados durantes horas e até mesmo
sem interrupções.
Tipos de Testes Automatizados
Testes de Unidade Automatizada (Unit Tests)
 Testesde unidade automatizada realizado em nível de
códigos, identificando bugs nas funções, métodos e
rotinas.
 Sempre que o código é compilado, todos os testes de
unidade são executados e nos informam se todas as
funcionalidades estão funcionando. Se algum teste de
unidade falhar, significa que há um bug presente no
código de produção.
Tipos de Testes Automatizados
Web Service / API Tests (Application
Programming Interface (API) )
O que testamos aqui geralmente são os
problemas de funcionalidade, conformidade e
segurança. Em aplicativos da web, podemos
testar a solicitação e a resposta de nosso
aplicativo, quer estejam seguros e
criptografados ou não.
Tipos de Testes Automatizados
Testes de GUI automatizados
É a forma mais difícil de automação.
As interfaces gráficas são altamente sujeitas a
mudanças tornando difícil a automação.
Como o usuário usará o mouse e o teclado, os testes
automatizados de GUI também imitam o mesmo
comportamento, fazendo uso do mouse e do teclado
para clicar ou gravar em objetos presentes na
interface do usuário.
Ranking das 10 melhores ferramentas
para testes automatizados
 1. Selenium  6. TestComplete
 2. Katalon Studio  7.
TestPlant
 3. UFT eggPlant
 4.  8. Tricentis Tosca
Watir
 5.  9. Ranorex
IBM Rational
Functional Tester  10. Robot framework
FrameWorks
 1. Selenium
Selenium é a ferramenta mais popular e usada do
mercado.
Usada principalmente para aplicações web.
O Selenium WebDriver ajuda a criar scripts de
automação de testes mais complexos e avançados.
Além disso, os testadores podem escrever em várias
linguagens de programação como Java, Perl,
JavaScript, PHP, Python, C#, Ruby e Groovy.
FrameWorks
 2. TestComplete
 É uma plataforma comercial que pode automatizar testes
do desktop, celular e aplicações web.
 Permite também a utilização de diversas linguagens.
 Possibilita a criação de testes automatizados para
aplicativos iOS, Web Microsoft Windows e Android.
 A ferramenta comporta as seguintes funções:
 Testes de GUI
 Visualizador de testes
 Testes com scripts
 Gravação e reprodução de testes
FrameWorks
 3. Cucumber
 O Cucumber é uma ferramenta de testes open
source desenvolvido com o conceito desenvolvimento
orientado por comportamento (BDD).
 Este conceito é usado para escrever testes de aceitação para
aplicações web. Anteriormente, era restrito apenas ao Ruby,
mas atualmente suporta outras linguagens como Java, NET,
Scala, Groovy, etc. Funcionalidades:
 Fornece documentos únicos, que inclui especificações e testes
 Também suporta múltiplos sistemas operacionais.
 O código do Cucumber pode ser executado em diferentes
frameworks como Selenium, Ruby, etc
Behavior Driven Development (BDD)

 Criado por Dan Noth, o Behavior Driven


Development (BDD ou  Desenvolvimento Guiado por
Comportamento) é uma técnica de desenvolvimento Ágil
que tem como foco a linguagem e as interações usadas no
processo de desenvolvimento, permitindo se concentrar
nas razões pelas quais o código deve ser criado, e não em
detalhes técnicos, além de minimizar traduções entre a
linguagem técnica na qual o código é escrito e outras
linguagens de domínio, usuários, clientes, gerência do
projeto, etc.
Testes manuais x
Testes
automatizados
Referencias

 https://medium.com/@mvmgmg/teste-manual-vs-automa%C3%A7%C3%A3o-de
-teste-8fcf4f9832b1
 https://viniciuspessoni.com/2018/08/03/framework-teste-automatico-softwa
re/
 https://www.primecontrol.com.br/10-ferramentas-de-automacao-de-testes-
mais-usadas/
 https://pt.wikipedia.org/wiki/Behavior_Driven_Development
 https://www.testar.me/teste-de-software

Você também pode gostar