Teste de Software

Agenda

1

Conceitos de Qualidade  de Software

2

Introdução ao Teste de Software

3

Testes em Aplicações Web (Planejamento, Especificação e Execução)

4

Testes Ágeis

Vanilton Pinheiro

Analista de Sistemas

#0 Apresentação
#1 Conceitos de Qualidade de Software

Qual barriga tem mais qualidade?

#1 Conceitos de Qualidade de Software

Qual salto tem mais qualidade?

Sabrina (Romena)

Biles (Americana)

#1 Conceitos de Qualidade de Software

Qual ambiente tem mais qualidade Piscina ou igarapé?

#1 Conceitos de Qualidade de Software

Qual buscador tem mais qualidade?

#1 Conceitos de Qualidade de Software

Qual site tem mais qualidade?

#1 Conceitos de Qualidade de Software

O que poderia melhorar nesse site?

#1 Conceitos de Qualidade de Software

Teste

Significado

Percepções, necessidades e resultados

Qualidade

#1 Conceitos de Qualidade de Software

Qualidade

Teste

Significado

Percepções e necessidades

Regras, heurísticas, padrões e etc.

Possuir grau de utilidade ou valor

Fonte: https://diferenser.com.br/os-tres-cerebros/

#1 Conceitos de Qualidade de Software

Qualidade

Teste

Significado

<form id="form-login">
    <label for="fname">First name:</label><br>
    <input type="text" id="fname" name="fname" maxlength="30"><br>
    <label for="lname">Last name:</label><br>
    <input type="text" id="lname" name="lname" maxlength="100">
</form>

Quais testes poderiam ser derivados do campo First name?

Atividade 1

#1 Conceitos de Qualidade de Software

Qualidade é o grau de utilidade esperado ou adquirido de qualquer coisa, verificável através da forma e dos elementos constitutivos do mesmo e pelo resultado do seu uso.

Fonte: https://pt.wikipedia.org/wiki/Qualidade

#1 Conceitos de Qualidade de Software

Fonte: https://pt.wikipedia.org/wiki/Qualidade

A palavra "qualidade" tem um conceito subjetivo que está relacionada com as percepções, necessidades e resultados em cada indivíduo.

#1 Conceitos de Qualidade de Software

De quem é a responsabilidade da qualidade em uma empresa?

#1 Conceitos de Qualidade de Software

Cultura da Qualidade

 

  • Atividades são entendidas e realizadas
  • Todos têm certeza sobre as políticas internas e externas
  • Ambiente propício para boas práticas e comportamentos, experimentação e adaptação a mudanças

Propósito, Missão e os valores da empresa

Comunicação e colaboração

Conformidade/Padronização

Realize e busque Feedback

Controle e Fiscalização

Treinamento e compartilhamento

Automação de Processos

#1 Conceitos de Qualidade de Software

Cultura da Qualidade no Fluxo de Trabalho

Priorizado

WIP 3

Desenvolvimento

WIP 1

Teste

Considere um time com 4 integrantes, sendo 3 desenvolvedores e um testador.

Identifique o gargalo que existe no fluxo abaixo e o que poderia ser movimentado para melhorar o fluxo de entregáveis até a raia de Homologação.

WIP 2

Homologação

#1 Conceitos de Qualidade de Software
#1 Conceitos de Qualidade de Software
#1 Conceitos de Qualidade de Software

Qualidade de produto segundo ISO 25010:2011

#1 Conceitos de Qualidade de Software

Resumo de Qualidade de Software

  • Qualidade de Software: A capacidade do software de funcionar de maneira confiável, eficiente e de acordo com os requisitos especificados.
  • Métricas de Qualidade: Critérios utilizados para medir atributos do software, como desempenho, segurança, manutenibilidade e usabilidade.
  • Garantia da Qualidade (QA): Conjunto de atividades para assegurar que o processo de desenvolvimento produza software de qualidade.
  • Controle de Qualidade (QC): Processo de verificação e validação do produto final para garantir que ele esteja livre de defeitos.
  • Fatores de Qualidade: Aspectos como confiabilidade, eficiência, manutenibilidade e portabilidade que influenciam a qualidade do software.
#1 Conceitos de Qualidade de Software

Atividade 2

  • Cenário: Você foi contratado como parte de uma equipe de qualidade de software para avaliar um sistema de gestão escolar. O sistema foi desenvolvido recentemente e está em fase de testes. Sua tarefa é avaliar a qualidade do software com base na ISO 25010.
  • Construção em Grupo:
    Forme grupos de 3 a 4 pessoas discutam em conjunto quais fatores de qualidade são mais críticos para o sistema de gestão escolar e proponham soluções práticas para melhorar esses fatores.

  • Entrega:
    Elabore um relatório com as respostas do grupo, detalhando as avaliações feitas e as recomendações propostas.

#2 Introdução ao Teste de Software
#2 Introdução ao Teste de Software
#2 Introdução ao Teste de Software
#2 Introdução ao Teste de Software

Teste pode ser usado apenas para mostrar a presença de defeitos mas nunca sua ausência."

Dijkstra (1970)

Teste é o processo de executar um programa ou sistema com a intenção de encontrar erros."

Myers (1979)

Teste é apenas uma amostragem."

Roper (1994)

Teste é um processo de engenharia concorrente ao processo de ciclo de vida do software, que faz uso e mantém artefatos de teste usados para medir e melhorar a qualidade do produto de software sendo testado." Craig e Jaskiel (2002)

O que é teste de software?

#2 Introdução ao Teste de Software

Teste de Software é uma maneira pela qual pode-se aplicar estratégias e técnicas que aproximam uma solução atender a expectativa de um usuário final em um sistema de informação."

Vanilton Pinheiro (2023)

O que é teste de software?

#2 Introdução ao Teste de Software

Verificação e Validação

Estamos construindo certo o produto?

Estamos construindo o produto certo?

Requisitos

Expectativas

#2 Introdução ao Teste de Software

Verificação e Validação

“Processo de avaliar o software ao final de seu processo de desenvolvimento para garantir que está de acordo com o uso pretendido.” (Ammann e Offutt, 2008; ISO/IEC/IEEE, 2010)

“Processo para determinar se os produtos de uma determinada fase de desenvolvimento satisfazem os requisitos estabelecidos na fase anterior.” (Ammann e Offutt, 2008; ISO/IEC/IEEE, 2010)

#2 Introdução ao Teste de Software

Níveis de maturidade de teste (Beizer, 1990)

  • 0 - Não há diferença entre teste e depuração (debugging);
  • 1 - O propósito do teste é mostrar que o software funciona.
  • 2 - O propósito do teste é mostrar que o software não funciona.
  • 3 - O propósito do teste não é provar nada, mas reduzir o risco de não funcionamento a um valor aceitável.
  • 4 - Teste não é uma ação, mas sim uma disciplina mental (institucionalizada na empresa) que resulta em software de baixo risco sem que seja empregado muito esforço de teste.
#2 Introdução ao Teste de Software

Teste garante a inexistência de defeitos?

#2 Introdução ao Teste de Software

Boehm e Basili (2001) também apontam que é quase improvável liberar um produto de software livre de defeitos.

Além disso, quanto mais tarde um defeito é revelado, maior será o custo para sua correção.

#2 Introdução ao Teste de Software

A regra 10 de Myers apresenta que o custo da correção de um defeito tende a aumentar quanto mais tarde ele for encontrado.

#2 Introdução ao Teste de Software

Então para que testar software?

#2 Introdução ao Teste de Software
#2 Introdução ao Teste de Software

Por que existe bug?

#2 Introdução ao Teste de Software

Erro

Defeito

Falha

Causa

Consequência

Terminologia

#2 Introdução ao Teste de Software

Terminologia

Considere o seguinte comando de atribuição:

(z = y + x)

 (z = y − x)

Variável z com valor errôneo

x = 0

x 0

Erro (Engano)

Defeito (Produzido)

Falha (Propagação)

#2 Introdução ao Teste de Software

Terminologia

Um engano pode resultar em vários defeitos e cada defeito pode levar o software a falhar de diferentes maneiras.

Roper (1994)

#2 Introdução ao Teste de Software

Terminologia

O Modelo RIP de Ammann e Offutt (2008), estabelece as condições que devem ser estabelecidas para que a falha ocorra. São elas:

  • Reachability (Alcançabilidade): os cenários de teste podem alcançar o defeito
  • Infection (Contaminação): o software passa para um comportamento incorreto
  • Propagation (Propagação): o comportamento incorreto é perceptível
#2 Introdução ao Teste de Software

Terminologia

Conceitos chaves segundo Ammann e Offutt (2008) para um bom teste

  • Observabilidade de Software: comportamento dos componentes HW ou SW na sua saída
  • Controlabilidade de Software: entradas valores, operações e comportamentos
#2 Introdução ao Teste de Software

Terminologia

Quais foram os maiores problemas que vocês já enfrentaram testando?

#2 Introdução ao Teste de Software
  • Não há tempo para o teste exaustivo.
  • Muitas combinações de entrada para serem exercitadas.
  • Dificuldade em determinar os resultados esperados para cada caso de teste.
  • Requisitos do software inexistentes ou que mudam rapidamente.
  • Não há tempo suficiente para o teste.
  • Não há treinamento no processo de teste.
  • Não há ferramenta de apoio.
  • Superiores que desconhecem teste ou que não se preocupam com a qualidade focando apenas na entrega

Problemas/limitações comuns atuando com teste:

#2 Introdução ao Teste de Software
  • Uma loja que vende 1000 produtos, que podem ser pagos por 5 bandeiras de cartões de crédito e pode ser feito o parcelamento em até 12 vezes

Quantos cenários de teste seriam necessários para cobrir todas as possibilidades?

CTs Tempo Execução de 1 CT (min) Tempo para executar (min)
60000 5 300000
Horas Dias (alucinado) Meses (alucinado)
5000 208,3 6,9
Dias (trabalho) Meses (trabalho)
625,0 20,6

Teste Exaustivo.....

#2 Introdução ao Teste de Software

Casos de Teste

  • Um caso de teste é um exercício de comparação do que é produzido pelo software para o que se espera de saída do mesmo, dado o requisito definido.

  •  (d, S(d)) é um caso de teste, onde d ∈ D é a entrada e S(d) representa a saída esperada de d de acordo com a especificação S

#2 Introdução ao Teste de Software

Casos de Teste

Obrigatório:

Entrada; Saída Esperada

#2 Introdução ao Teste de Software

Atividade 3 - Especificação

Campos de Cadastro: O formulário de cadastro de aluno deve incluir os seguintes campos obrigatórios e opcionais:

  • Nome Completo (Obrigatório): Campo de texto para o nome completo do aluno.
  • Data de Nascimento (Obrigatório): Campo de data para registrar a data de nascimento do aluno.
  • CPF (Obrigatório): Campo de texto para o CPF do aluno. Deve ser único e validado conforme o formato padrão brasileiro (ex.: 123.456.789-00).
  • RG (Opcional): Campo de texto para o número do RG do aluno.
  • Endereço (Obrigatório): Conjunto de campos para o endereço do aluno, incluindo:
    • Logradouro
    • Número
    • Complemento (Opcional)
    • Bairro
    • Cidade
    • Estado
    • CEP
  • Nome dos Pais/Responsáveis (Obrigatório): Campos de texto para o nome completo dos pais ou responsáveis.
  • Contato dos Pais/Responsáveis (Obrigatório): Campos de telefone e e-mail para contato dos pais ou responsáveis.
  • Data de Matrícula (Obrigatório): Campo de data para registrar a data em que o aluno foi matriculado.
  • Foto do Aluno (Opcional): Campo para upload de uma foto do aluno.

Objetivo:
Permitir que os administradores e/ou secretários escolares cadastrem novos alunos no sistema, atualizem informações de alunos já existentes e, se necessário, excluam cadastros.

#2 Introdução ao Teste de Software

Atividade 3 - Casos de Teste

Individualmente criem casos de teste para a funcionalidade de Cadastro de Aluno, considere:

 

  • Cadastro de Novo Aluno
  • Edição de Aluno Existente
  • Exclusão de Cadastro
  • Pesquisa de Aluno
#2 Introdução ao Teste de Software

Casos de Teste - Entradas

  • Entrada do usuário via interface gráfica (Desktop ou Mobile)
  • Dados oriundos de sistema terceiros que servem de entrada para o programa em teste (Ex: APIs);
  • Dados fornecidos por outro dispositivo;
  • Dados lidos de arquivos ou banco de dados;
  • O estado do sistema quando os dados são recebidos;
  • O ambiente no qual o programa está executando.
#2 Introdução ao Teste de Software

Casos de Teste - Saída

  • Via interface gráfica (Desktop ou Mobile)
  • Outro sistema interagindo com o programa em teste;
  • Dados escritos em arquivos ou banco de dados;
  • O estado do sistema ou o ambiente de execução podem ser alterados durante a execução do programa.
#2 Introdução ao Teste de Software

Casos de Teste - Oráculo

  • O oráculo corresponde a um mecanismo (programa, processo ou dados) que indica ao projetista de casos de testes se a saída obtida para ele é aceitável ou não.
#2 Introdução ao Teste de Software

Casos de Teste - Oráculo Beizer (1990)

  • Oráculo “Kiddie” - simplesmente execute o programa e observe sua saída. Se ela parecer correta deve estar correta.
#2 Introdução ao Teste de Software

Casos de Teste - Oráculo Beizer (1990)

  • Conjunto de Teste de Regressão - compare a saída obtida com a saída produzida por uma versão mais antiga do programa.
#2 Introdução ao Teste de Software

Casos de Teste - Oráculo Beizer (1990)

  • Validação de Dados - compare a saída obtida com uma saída padrão determinada por uma tabela, fórmula ou outra definição aceitável de saída válida.
#2 Introdução ao Teste de Software

Casos de Teste - Oráculo Beizer (1990)

  • Conjunto de Teste Padrão - execute o programa com um conjunto de teste padrão que tenha sido previamente criado e validado. Utilizado na validação de compiladores, navegadores Web e processadores de SQL.
  • Programa existente - execute o programa em teste e o programa existente com o mesmo caso de teste e compare as saídas. Semelhante ao teste de regressão.
#2 Introdução ao Teste de Software

Casos de Teste - Cascata

  1. Criar um registro "X"
  2. Ler um registro "X"
  3. Atualizar um registro "X"
  4. Ler um registro "X"
  5. Apagar um registro "X"
  6. Ler o registro apagado "X"

O que ocorre com o passo 2 senão for realizado o passo 1?

#2 Introdução ao Teste de Software

Casos de Teste - Independente

Todo o teste está auto contido, ou seja, não existe a chance de outro teste interferir em sua execução (melhor prática)

Execução em qualquer ordem

Mais complexos de serem mantidos

#2 Introdução ao Teste de Software

Conceitos

1.

Processo de Teste de Software

Um Processo de Teste de Software tem como objetivo estruturar as etapas, as atividades, os artefatos, os papéis e as responsabilidades do teste, permitindo organização e controle de todo o ciclo do teste, minimizando os riscos e agregando valor ao software.

Níveis ou Fases de Teste

Os testes são aplicados a tipos diferentes de destinos, em diferentes estágios ou níveis de esforço de trabalho. Esses níveis são normalmente distintos por essas funções que são melhores habilitadas para projetar e conduzir os testes e em que as técnicas são mais apropriadas para os testes em cada nível.

2.

Técnicas de Teste

Caixa Branca, Preta e Cinza

3.

Tipos de Teste

  • Para cada contexto compreender quais testes são interessantes aplicar.

4.

#2 Introdução ao Teste de Software

Níveis ou Fases de Teste

Unidade

Integração

Sistema

Aceitação

#2 Introdução ao Teste de Software

Por que testar o software em fases e não apenas como um todo?

Reduzir a complexidade

Aumentar o foco de atuação (Dividir para conquistar)

Níveis ou Fases de Teste

#2 Introdução ao Teste de Software

Teste de Unidade

def soma(a, b):
    return a + b
  
 
def multiplicacao(a, b):
    return a ** b
  
  
def exponencial(a, b):
    return a ** b  

if __name__ == '__main__':
    print(soma(1,1)==2)
    print(multiplicacao(1,1)==1)
    print(exponencial(1, 1)==1)

O objetivo é identificar erros de lógica e de programação na menor unidade de programação.

Qual linha de código ao lado está o bug?

#2 Introdução ao Teste de Software

Teste de Unidade

Driver e Stub são dublês (doubles, também conhecidos como mocks), cuja função é substituir um componente durante os testes de software, automatizados ou não.

Como testar uma unidade que precisa receber dados de outra unidade para ser executada?

#2 Introdução ao Teste de Software

Teste de Integração

O Objetivo é verificar se as unidades testadas individualmente se comunicam como desejado.

  • Problemas que o teste de integração pode auxiliar a identificar
    • Dados podem se perder na interface das unidades.
    • Variáveis globais podem sofrer alterações indesejadas.
#2 Introdução ao Teste de Software

Teste de Integração

#2 Introdução ao Teste de Software

Teste de Sistema e Aceitação

Teste de Sistema Teste Aceitação
O objetivo é verificar se o programa em si interage corretamente com o sistema para o qual foi projetado. Isso inclui, por exemplo, o SO, banco de dados, hardware, manual do usuário, treinamento, etc. (Visão técnica) O objetivo é verificar se o programa desenvolvido atende as exigências do usuário.
- Alguns testes que compõem: funcionalidade, usabilidade, segurança, confiabilidade, disponibilidade, performance, backup/restauração, portabilidade, entre outros ISO 25010:2011 e ISO-IEC-9126.
- Podemos considerar como um teste de integração com maior amplitude
#2 Introdução ao Teste de Software

Teste de Sistema e Aceitação

#2 Introdução ao Teste de Software

Resumindo Niveis ou Fases de Teste

Teste Procedimental

Teste Orientado a Objeto

Procedimento ou rotinas

Métodos

Classes

Clusters

Componentes

Subsistemas

Dois ou mais procedimentos ou Subsistemas

Sistema completamente em funcionamento

Sistema completamente em funcionamento

#2 Introdução ao Teste de Software

Técnicas de Teste

Baseado em requisito especificado

#2 Introdução ao Teste de Software

Técnicas de Teste

Baseado na estrutura do programa implementado

#2 Introdução ao Teste de Software

Técnicas de Teste

  • Um testador de caixa cinza conhece parcialmente a estrutura interna, o que inclui acesso à documentação das estruturas de dados internas, bem como aos algoritmos usados.
  • Caixa cinza lida com cenários de teste inteligentes, por exemplo, manipulação de tipo de dados, performance, segurança, protocolo de comunicação, manipulação de exceção
#2 Introdução ao Teste de Software

Tipos de Teste

Verificação da consistência entre o produto implementado e os requisitos funcionais  

Funcional

Teste executado para medir características não-funcionais

Não Funcional

Verifica se o software funciona de acordo com as necessidades do cliente

Aceitação

Realizado com usuários finais na organização desenvolvedora antes de liberar uma versão

Alfa

Realizado fora da organização, preferencialmente nos locais dos usuários finais

Beta

Repetição de teste num programa já testado, depois de haver modificação

Regressão

#2 Introdução ao Teste de Software

Tipos de Teste

Executado dentro de um contexto de sistema
Exemplos: Número de usuários simultâneos
Configuração da máquina

 

Desempenho

Submeter o software a cargas de dados e solicitações para avaliar seu comportamento.

Carga/Volume

Submeter o sistema a situações anormais. Execução do sistema exigindo dos recursos mais do que foi projetado para suportar

Estresse

Avaliação do sistema feita por especialistas, a partir da observação e análise do comportamento do usuário durante a navegação e execução de tarefas específicas

 

Usabilidade

Comprime um conjunto de testes não exaustivos, garantindo que as principais funcionalidades funcionem 

Sanidade

Teste executado sem um planejamento prévio
Geralmente feito por ferramentas automatizadas

Macaco

#2 Introdução ao Teste de Software

Tipos de Teste

Teste baseado na experiência com área de atuação de testes definidos e tempo de exploração.

 

Exploratório

Teste baseado na experiência sem área de atuação de testes definidos e sem tempo de exploração.

Ad-hoc

Elaboração de casos de teste que possam subverter as verificações de segurança do programa

Segurança

O teste de instalação verifica se sob diferentes condições como pouco espaço de memória, interrupções no sistema e demais entraves que podem comprometer esse processo, o programa consegue ser instalado ou se cede facilmente a essas limitações.

 

Instalação

#2 Introdução ao Teste de Software

Processo de Teste de Software

Um Processo de Teste de Software tem como objetivo estruturar as etapas, as atividades, os artefatos, os papéis e as responsabilidades do teste, permitindo organização e controle de todo o ciclo do teste, minimizando os riscos e agregando valor ao software.

 

#2 Introdução ao Teste de Software

Processo de Teste de Software

#2 Introdução ao Teste de Software

Modelos de Apoio ao Processo de Teste de Software

#2 Introdução ao Teste de Software

Modelos de Apoio ao Processo de Teste de Software

#2 Introdução ao Teste de Software

Modelos de Apoio ao Processo de Teste de Software

#2 Introdução ao Teste de Software

Atividade 4

Monte um conjunto de casos de teste para testar o método check_valid_identifier(String) no módulo validators. Lembrando que para cada entrada (string) de teste deve ser verificado  a saída no tipo boleano.  

Existe o seguinte problema:

“Um identificador deve começar com um alfabeto ou sublinhado, não pode começar com um dígito ou qualquer outro caractere especial, além disso, dígitos podem vir depois e deve conter no mínimo 3 e no máximo 10 caracteres”

#2 Introdução ao Teste de Software

Testes sem critérios são testes sem direção

 

#2 Introdução ao Teste de Software

Escolher diferentes elementos para o teste tendo em vista a necessidade de divisão do problema em questão. 

a)

 Figuras acima adaptada de Pezzè e Young (2007) ilustram a segmentação ocasionada por diferentes critérios de teste supostamente dos menos rigorosos (a) para os mais rigorosos (e)

b)

c)

d)

e)

#2 Introdução ao Teste de Software

Partição de Equivalência

 

  • Notas
    • Reduzir número de Casos de Teste e propõe boa cobertura de código
    • Empregado intuitivamente

 

#2 Introdução ao Teste de Software

Partição de Equivalência

  • Considere o sistema de recursos humanos que processa pedidos de emprego com base na idade de uma pessoa e que possui as seguintes regras de negócio:
    • Pessoas menores de 16 anos não devem trabalhar
    • Pessoas entre 16 e 60 anos podem trabalha
    • Pessoas com mais de 60 anos não podem trabalhar
0 - 15 anos 16 - 59 anos 61 -  ∞ anos

Partição Válida

Partição Inválida

Partição Inválida

#2 Introdução ao Teste de Software

Partição de Equivalência

  • Como deveriam ser derivados as partições válidas para o exemplo abaixo

Em geral são definidas duas classes inválidas e uma válida.

#2 Introdução ao Teste de Software

Partição de Equivalência

  • Aplicações e Limitações

    • Reduz significativamente o numero de casos de teste em relação ao teste exaustivo.

    • Mais adequado para o teste de produtos com domínios de entrada divididos em intervalos ou conjuntos.

    • Assume que os valores dentro da mesma classe são equivalentes.

    • Aplicável em todas as fases de teste: unidade, integração, sistema e aceitação

#2 Introdução ao Teste de Software

Análise do Valor Limite

0 - 15 anos 16 - 59 anos 61 -  ∞ anos

Inválido

Inválido

Válido

#2 Introdução ao Teste de Software

Análise do Valor Limite

  • Derive casos de teste para os limites válidos e inválidos conforme a imagem abaixo:

Válido

Inválido

Inválido

#2 Introdução ao Teste de Software

Tabela de decisão

Tabelas de Decisão representam regras de negócio complexas por meio de um conjunto de decisões

#2 Introdução ao Teste de Software

Tabela de decisão

  • Suponha que uma companhia de seguros ofereça desconto especial para motoristas que são casados e/ou com filhos

Regra 1
Regra 2 Regra 3 Regra 4
Condições
Casado(a)? Sim Sim Não Não
Tem Filhos? Sim Não Sim Não
Ações
Desconto R$? 60 25 50 0

2 condições elevado a quantidade de possibilidades (2)

#2 Introdução ao Teste de Software

Tabela de decisão

A estrutura base para um teste em tabela de decisão é:

A multiplicação das partições das variáves. Variável 1 contêm 2 partições x Variável 2 com 2 partições = 4 testes

#2 Introdução ao Teste de Software

Tabela de decisão

Exemplo de Requisito

  • Caso o cliente possua a conta há dois anos ou mais, e possua saldo superior a R$ 2000,00 o mesmo deve considerado Cliente VIP.
  • Caso o cliente possua a conta há dois anos ou mais, e possua saldo inferior a R$ 2000,00 o mesmo não deve considerado Cliente VIP.
  • Caso o cliente não possua a conta há dois anos ou mais, o mesmo não deve considerado Cliente VIP independentemente do valor em conta.
#2 Introdução ao Teste de Software

Teste Unitário

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.

#2 Introdução ao Teste de Software

Teste Unitário

Cada teste deve lidar apenas com

  1. Um cenário a ser testado (um “dado”)

  2. Um método para testar (um “quando”).

  3. Uma chamada para um método de verificação (um “então”).

#2 Introdução ao Teste de Software

Frameworks de Teste Unitário

#2 Introdução ao Teste de Software

Unittest o foi originalmente inspirada no JUnit e tem uma semelhança às principais estruturas de teste de unidade em outras linguagens. Ele suporta automação de teste, compartilhamento de código de configuração e desligamento de testes, agregação de testes em coleções e independência dos testes da estrutura de relatórios.

https://docs.python.org/pt-br/3.11/library/unittest.html

A biblioteca Unittest já vem nativamente com o python

Frameworks de Teste Unitário

#2 Introdução ao Teste de Software

Frameworks de Teste Unitário

Na IDE PyCharm basta criar um novo python file com unit test que já é oferecido o modelo abaixo:

#2 Introdução ao Teste de Software

Frameworks de Teste Unitário

  1. O Unittest utiliza da orientação a objeto
  2. Uma classe de teste do Unittest
  3. Um caso de teste é um método dentro dessa classe com nome iniciado de "test".
  4. É uma boa prática de escrita de casos de teste unitário, separar cada caso de teste em um método de teste.
  5. Da mesma forma, deve-se agrupar em uma classe de teste, os casos de teste referentes a determinada classe e/ou método em teste, visando facilitar a localização dos testes.
#2 Introdução ao Teste de Software

Frameworks de Teste Unitário

  • No corpo de um método de teste basicamente o que se faz é:

    • Criar um objeto da classe que contem o método a ser testado 

    • Invocar o método em teste com os  parâmetros desejados e armazenar o valor de retorno

    • Utilizar uma das asserções disponíveis no framework para comparar o resultado obtido com o resultado esperado.

#2 Introdução ao Teste de Software

Frameworks de Teste Unitário

  • Para a criação de um caso de teste e necessário:

    • Identificar o método a ser testado

    • Compreender a especificação do método: o que recebe de entrada e qual a saída produzida em função da entrada escolhida.

      • Entrada

      • Saída

    • Comparar a saída produzida (obtida) com aquela que deveria ser gerada conforme a especificação.

#2 Introdução ao Teste de Software

Utilizando os casos de testes elaborados na atividade 4:

  1. Clone o projeto abaixo
  2. Implemente os casos de testes utilizando o framework Unittest.
  3. Crie um repositório no seu github com o testes criados.
git clone https://github.com/Vanilton18/xpto-exemplos-teste.git

Atividade 5

#2 Introdução ao Teste de Software

Atividade 5

Verificar a cobertura de código por linha utilizando o Coverage

# Criar um ambiente virtual
python3 -m venv venv 

# Instalar a biblioteca coverage
pip install coverage 

# Alterar o executor do unittest para coverage 
# (na raiz do projeto por padrão utilizar test_*.py na frente dos módulos de teste)
python -m unittest discover

# Executar o teste com o coverage
coverage run -m unittest discover

# Gerar report no terminal
coverage report

# Gerar report HTML
coverage html
#3 Testes em Aplicações Web

Arquitetura Cliente-Servidor: O Coração da Web

A arquitetura cliente-servidor é um modelo fundamental para a comunicação na internet.

 

#3 Testes em Aplicações Web

Servidor: O Cérebro da Web

O servidor é o computador que armazena e processa os dados da web.

Armazenamento

Contém todos os arquivos de um site.

Processamento

Responde a solicitações dos clientes.

Segurança

Protege dados e aplicações.

 

#3 Testes em Aplicações Web

Cliente: A Porta de Entrada para a Web

O cliente é o dispositivo que acessa os dados do servidor.

Navegadores Web

Chrome, Firefox, Safari, etc.

Aplicativos Móveis

Redes sociais, jogos, etc.

Dispositivos IoT

Sensores, smart home, etc.

#3 Testes em Aplicações Web

Rede: O Caminho entre Cliente e Servidor

A rede é a infraestrutura que conecta clientes e servidores.

Internet

Rede global de computadores

Redes Locais (LAN)

Conexão de dispositivos em uma área limitada.

Redes sem Fio (Wi-Fi)

Comunicação sem cabos

#3 Testes em Aplicações Web

O Fluxo de Dados: Uma viagem pela Web

A comunicação entre cliente e servidor é um processo em etapas.

Solicitação

O cliente envia uma solicitação ao servidor.

Processamento

O servidor processa a solicitação.

Resposta

O servidor envia a resposta ao cliente.

#3 Testes em Aplicações Web

Protocolos da Web: Linguagem da Comunicação

Protocolos definem as regras de comunicação entre cliente e servidor.

HTTP Transferência de Hipertexto
HTTPS Transferência de Hipertexto Segura
DNS Sistema de Nomes de Domínio
#3 Testes em Aplicações Web

Aplicações da Arquitetura Cliente-Servidor

A arquitetura cliente-servidor é a base para uma ampla gama de aplicações web.

#3 Testes em Aplicações Web

Tudo isso?! E agora o que testar?

#3 Testes em Aplicações Web

Modelo de Falhas para Aplicações Web

O modelo de falhas para aplicações web, proposto por Andrews e Whittaker (2006), oferece uma estrutura abrangente para analisar as potenciais falhas que podem ocorrer em diferentes camadas de uma aplicação web.

#3 Testes em Aplicações Web

Modelo Falha - Camada do Servidor

Falhas de Configuração

Configurações inadequadas no servidor, como permissões incorretas para arquivos e diretórios, podem criar brechas de segurança que permitem acesso não autorizado ou modificação de dados. É crucial configurar o servidor com rigor, definindo permissões apropriadas e utilizando mecanismos de autenticação e autorização robustos.

O servidor pode ser sobrecarregado por um grande volume de tráfego, resultando em lentidão ou indisponibilidade. É importante monitorar o uso de recursos do servidor e implementar medidas para escalar a capacidade de acordo com as necessidades, como balanceamento de carga e escalonamento horizontal.

Sobrecarga e disponibilidade

Falhas de segurança no software do servidor podem ser exploradas por hackers para realizar ataques, como injeção de código SQL ou ataques de Cross-Site Scripting (XSS). É fundamental manter o servidor e seus softwares atualizados com as últimas correções de segurança e aplicar políticas de segurança rígidas.

Vulnerabilidade de segurança

#3 Testes em Aplicações Web

Modelo de Falha - Camada do Cliente

1.

Incompatibilidade de Navegador

A renderização de conteúdo web pode variar entre diferentes navegadores e versões, levando a problemas de exibição e usabilidade. É crucial realizar testes de compatibilidade em vários navegadores para garantir uma experiência consistente para todos os usuários.

2.

Execução de Código Malicioso

Vulnerabilidades no navegador podem permitir que scripts maliciosos sejam executados, o que pode comprometer dados confidenciais, roubar informações pessoais ou redirecionar o usuário para sites maliciosos. É essencial manter o navegador atualizado com as últimas correções de segurança e utilizar extensões de segurança confiáveis.

3.

Falhas na Atualização

Navegadores desatualizados são mais suscetíveis a ataques, pois podem conter vulnerabilidades conhecidas que não foram corrigidas. É fundamental manter o navegador atualizado com as últimas versões para garantir a segurança e a confiabilidade das aplicações web.

 

4.

Erros no Cache

O cache do navegador pode armazenar versões desatualizadas do conteúdo web, levando a problemas de exibição e usabilidade. É importante implementar mecanismos de invalidação de cache para garantir que os usuários vejam o conteúdo mais recente.

 

#3 Testes em Aplicações Web

Modelo de Falha - Camada de Rede

Interrupções de Conectividade

Quedas na conexão de rede podem impedir a comunicação entre o cliente e o servidor, resultando em indisponibilidade da aplicação web. É importante implementar mecanismos de redundância, como conexões de backup e gateways redundantes, para minimizar o impacto de interrupções.

Latência Elevada

Retardos na rede podem levar a tempos de resposta lentos, impactando a experiência do usuário e prejudicando a usabilidade da aplicação web. É fundamental otimizar a rede, reduzindo a latência e implementando técnicas de otimização de desempenho para melhorar a experiência do usuário.

Ataquem Man-in-the-middle

Ataques Man-in-the-Middle (MitM) ocorrem quando um atacante intercepta a comunicação entre o cliente e o servidor, roubando dados confidenciais ou manipulando a comunicação. É essencial utilizar criptografia HTTPS para proteger a comunicação entre o cliente e o servidor e garantir a privacidade e integridade dos dados.

#3 Testes em Aplicações Web

Falhas de Segurança

Cross-Site Scripting (XSS)

O ataque XSS permite que hackers injetem scripts maliciosos em um site confiável, roubando dados confidenciais do usuário ou redirecionando o usuário para sites maliciosos. É importante validar e filtrar cuidadosamente a entrada do usuário e implementar técnicas de codificação para evitar XSS.

Injeção de SQL

A injeção de SQL permite que hackers injetem código SQL malicioso em formulários de entrada, manipulando os dados do banco de dados ou obtendo acesso não autorizado aos dados. É essencial utilizar parâmetros preparados e validar cuidadosamente a entrada do usuário para prevenir injeção de SQL.

Falhas de Autenticação

Falhas na implementação de autenticação podem permitir que hackers acessem contas de usuário ou informações confidenciais. É importante utilizar mecanismos de autenticação robustos, como autenticação de dois fatores, e proteger os dados de login do usuário.

Falhas de Autorização

Falhas na implementação de autorização podem permitir que usuários não autorizados acessem recursos protegidos. É importante implementar mecanismos de autorização granulares para garantir que apenas usuários autorizados acessem os recursos apropriados.

#3 Testes em Aplicações Web

Falhas de Performance

Tempo de carregamento

Os tempos de carregamento lento podem levar à frustração do usuário e perda de clientes. É importante otimizar o desempenho da aplicação web, minimizando o tamanho das páginas, comprimindo arquivos e utilizando CDN para distribuir o conteúdo globalmente.

Erros de Servidor

Erros de servidor podem interromper o funcionamento da aplicação web e prejudicar a experiência do usuário. É importante implementar mecanismos de tratamento de erros, registrar erros e monitorar a saúde do servidor para garantir uma experiência suave para os usuários.

Pontos de Congestionamento

Pontos de congestionamento na aplicação web podem levar a tempos de resposta lentos e prejudicar a experiência do usuário. É importante analisar o desempenho da aplicação e identificar os pontos de congestionamento para otimizar o código e a arquitetura da aplicação.

Uso de Recursos Excessivo

O uso excessivo de recursos do servidor pode levar a lentidão e instabilidade da aplicação web. É importante otimizar o código da aplicação, reduzir o uso de recursos e implementar mecanismos de escalabilidade para garantir o desempenho da aplicação.

 

#3 Testes em Aplicações Web

Prevenção de Falhas

Teste de Segurança

 

A realização de testes de segurança regulares é essencial para identificar vulnerabilidades e corrigir falhas antes que sejam exploradas por hackers. É importante utilizar ferramentas de teste de segurança, como scanners de vulnerabilidades, e realizar testes de penetração para avaliar a segurança da aplicação web.

 

Monitoramento e Análise de Log

 

Monitorar e analisar os logs do servidor e da aplicação web é crucial para identificar padrões suspeitos e detectar ataques em andamento. É importante configurar sistemas de monitoramento robustos e analisar os logs regularmente para detectar atividades suspeitas.

 

 

Atualizações de Segurança

 

É fundamental manter o servidor e todos os softwares da aplicação web atualizados com as últimas correções de segurança para proteger a aplicação de ataques conhecidos. É importante configurar um sistema de atualização automatizado para garantir que as atualizações de segurança sejam aplicadas de forma rápida e eficiente.

 

 

Treinamento e Conscientização

 

É importante treinar a equipe de desenvolvimento web sobre as melhores práticas de segurança e conscientizá-los sobre as ameaças comuns para garantir que eles implementam medidas de segurança eficazes durante o desenvolvimento da aplicação web.

 

 

#3 Testes em Aplicações Web
  • Geral: Fornecer uma estrutura valiosa para analisar as potenciais falhas que podem ocorrer em diferentes camadas de uma aplicação web.
  • Compreensão: os desenvolvedores web compreendam as diferentes falhas que podem ocorrer
  • Prevenção: Implementar medidas de segurança eficazes para prevenir ataques, garantir a confiabilidade e proteger os dados dos usuários.
  • Abordagens: Propor testes de segurança, performance e usabilidade, incluindo testes rigorosos, monitoramento constante e atualização regular.

Modelo de Falha - Resumo

#3 Testes em Aplicações Web

Outros problemas em testar Aplicações Web

  • Ambientes variados
  • Navegador
    • Softwares terceiros (Extensões dos navegadores)
    • Padronização entre navegadores
    • Performance de renderização
    • Consumo de recursos
    • Automatização de testes podem ser limitadas em alguns navegadores

 

#3 Testes em Aplicações Web

Estratégias de Teste

Performance

Sensores, smart home, etc.

  • Heurísticas

  • Exploratório

  • Performance

  • Funcional

  • Segurança

#3 Testes em Aplicações Web

Heurísticas

O que é?

"Uma regra, simplificação, ou aproximação que reduz ou limita a busca por soluções em domínios que são difíceis e pouco compreendidos"

Objetivo

Identificar problemas de usabilidade que impedem a interação fluida e eficaz do usuário com o sistema.

 

Metodologia

Utilizar as heurísticas de Nielsen para avaliar a interface do usuário, procurando por falhas que violem os princípios de design.

 

Vantagens

Rápido, eficaz e relativamente barato, ideal para uma avaliação inicial de usabilidade.

#3 Testes em Aplicações Web

Heurísticas Nielsen

#3 Testes em Aplicações Web

Visibilidade do Estado do Sistema

O sistema deve manter o usuário informado sobre o que está acontecendo, com feedback apropriado e em tempo hábil.

 

#1

#3 Testes em Aplicações Web

Correspondência entre sistema e mundo real

O sistema deve falar a linguagem do usuário, com termos e conceitos familiares ao mundo real.

#2

#3 Testes em Aplicações Web

Controle e Liberdade do Usuário

O usuário deve ter a possibilidade de reverter ações, com opções de desfazer e refazer.

#3

#3 Testes em Aplicações Web

Consistência e Padrões

O sistema deve utilizar linguagem consistente e padrões familiares, garantindo a previsibilidade da interface.

#4

#3 Testes em Aplicações Web

Prevenção de Erro

Ações drásticas como deletar e sair devem ser confirmadas antes de serem executadas, evitando, assim, erros.

#5

#3 Testes em Aplicações Web

Reconhecimento ao invés de lembrar

O usuário não tem obrigação de lembrar todo o caminho que fez dentro de um site. O uso da breadcrumb facilita isto.

#6

#3 Testes em Aplicações Web

Flexibilidade e Eficiência de Uso

O usuário deve poder escolher o melhor ajuste para utilizar a interface. 

#7

#3 Testes em Aplicações Web

Estética e Design Minimalista

Evite colocar muitas informações juntas. Ocultar parte da informação e permitir que o usuário a visualize apenas quando quiser é uma alternativa.

#8

#3 Testes em Aplicações Web

Recuperação diante de Erros

Quando algo sair errado, deixe claro para o usuário o que está acontecendo e o que ele deve fazer para resolver.

#9

#3 Testes em Aplicações Web

Ajuda e Documentação

Oriente o usuário sobre a informação necessária e sempre busque deixar isto o mais claro possível e da maneira mais rápida.

#10

#3 Testes em Aplicações Web

Atividade 6

  • Organize grupo de até 5 pessoas 
  • Utilizando as heurísticas de usabilidade de Nielsen realizem a avaliação de uma aplicação ou site na web, façam o levantamento no que se adequa e não se adequa conforme as 10 heurísticas.
  • Identifique ao menos ao menos 5 heurísticas.
  • Utilize a ferramenta mural no link 
#3 Testes em Aplicações Web

Outras dicas para teste de usabilidade

#4 Testes Ágeis

Teste Ágil

O Teste Ágil é uma prática que enfatiza a qualidade e a colaboração. Ele se integra ao ciclo de desenvolvimento de software, promovendo testes contínuos e iterativos.

 

#4 Testes Ágeis
#4 Testes Ágeis
#4 Testes Ágeis
#4 Testes Ágeis
#4 Testes Ágeis
#4 Testes Ágeis
#4 Testes Ágeis
#4 Testes Ágeis
#4 Testes Ágeis
#4 Testes Ágeis
Testes Tradicionais Testes Ágeis
Ocorre após o desenvolvimento É realizado por todos membros do time
É realizado por meios manuais e automáticos É realizado com maior ênfase por meios automáticos
Enfoque maior em testes de caixa preta na perspectiva da interface gráfica do software Enfoque maior em testes de caixa preta e branca em todas as camadas da arquitetura
Testes são usados como roteiros para a execução manual realizada por um testador
Testes são usados como complementação dos requisitos e documentação do código
Maior ênfase em testes planejados detalhadamente e execução baseada em roteiros Maior ênfase em testes exploratórios
#4 Testes Ágeis
#4 Testes Ágeis

Premissas Testador Ágil 

#4 Testes Ágeis
#4 Testes Ágeis

Planejamento Testes Ágeis

  • Guias e diretrizes (foco na intenção do que vai ser testado)
  • Planilhas
  • Checklists
  • Conversa cara a cara

 

#4 Testes Ágeis

Planejamento Testes Ágeis

#4 Testes Ágeis

Planejamento Testes Ágeis

  • Pode-se planejar focando na exploração por meios de:

    • Mapas mentais

    • Testes de aceitação

    • Automatização ao invés de testes tradicionais com roteiros

    • Planilhas

    • Checklists
    • Conversa cara a cara

 

#4 Testes Ágeis

Estratégia Testes Ágeis 

#4 Testes Ágeis

Estratégia Testes Ágeis 

#4 Testes Ágeis

Estratégia Testes Ágeis e Tradicionais

  • Os objetivos são os mesmos

    • Para confirmar se o software faz o que ele deve fazer

    • Para confirmar se o software não faz o que ele não deveria fazer

    • Para aferir o atendimento a um atributo de qualidade (implícito e explícito)

    • Encontrar defeitos

  • A diferença é a abordagem (mais leve, mais fluída, mais proativa)

#4 Testes Ágeis

Quadrante do Teste Ágil

#3 Testes em Aplicações Web

Automação de Testes

A automação viabiliza ciclos curtos de entrega

 

 

A automação pode fazer parte de um ciclo de integração contínua fornecendo feedback contínuo

 

 

A automação oferece uma rede de segurança por meio de regressões completas 

 

 

A automação permite a implementação do conceito DRY (Don’t Repeat Yourself) e libera as pessoas para realizarem tarefas mais criativas ao invés de terem que executar testes manuais, enfadonhos e repetitivo

#3 Testes em Aplicações Web

Automação de Testes

#3 Testes em Aplicações Web

Automação de Testes Funcionais

pip install pytest-playwright
playwright install chromium
playwright codegen vanilton.net/web-test/todos
  1. No projeto de teste que foi realizado os testes unitários instale a biblioteca conforme a linha 1 abaixo:

#3 Testes em Aplicações Web

Automação de Testes Funcionais

#3 Testes em Aplicações Web

Automação de Testes Funcionais

Para implementar um cenário de criação de um TODO podemos seguir os seguintes passos:

  1. Criar um módulo de teste utilizando unittest 

  2. Criar uma função de teste para criação de um TODO

  3. Verificar se o TODO foi criado com sucesso.

#3 Testes em Aplicações Web

Implemente 3 testes para  cobrir os cenários de sanidade do Programa Triângulo:

 https://vanilton.net/web-test/triangulo_v2/

 

Atividade 7

#3 Testes em Aplicações Web

Pirâmide Automação de Teste

Lento

Rápido

$$$

$

# de testes

  • Automação de API
  • Contrato ou Mock
  • Unitário
  • Automação Funcional
#3 Testes em Aplicações Web

Teste Exploratório

Teste exploratório é uma técnica de teste de software que enfatiza a liberdade do testador para explorar o sistema de forma não estruturada e descobrir defeitos inesperados.

#3 Testes em Aplicações Web

Teste Exploratório


Segundo James Bach (2001) criador da técnica:

 

"O teste de software exploratório é uma abordagem de teste sofisticada e divertida. Em algumas situações, pode ser ordens de grandeza mais produtivas do que o teste com scripts. Ainda não encontrei um testador que não tivesse, pelo menos inconscientemente, realizado testes exploratórios em algum momento. No entanto, poucas pessoas estudam essa abordagem e ela não é muito respeitada na nossa área. "..Abordagem exploratória é: pensamento científico em tempo real.”

#3 Testes em Aplicações Web

Teste Exploratório


No artigo entitulado “Exploratory Testing Explained” recomenda o uso de testes exploratórios quando quiser diversificar os testes e ir além dos testes óbvios.

 

James Back

#3 Testes em Aplicações Web

Teste Exploratório

  • Quando se quer ter um feedback rápido sobre um novo produto ou nova funcionalidade;
  • Quando se quer aprender um produto rapidamente;
  • Quando se quer buscar diversidade após executar os testes tradicionais;

Quando usar?

#3 Testes em Aplicações Web

Teste Exploratório

  • Quando se quer encontrar defeitos críticos rapidamente;
  • Quando se quer comparar e investigar de forma independente e rápida o trabalho de outro testador;
  • Quando se quer isolar e investigar um defeito;
  • Quando se quer investigar o status de um risco em particular, a fim de avaliar a necessidade de criação de testes tradicionais para mitigar o risco.

Quando usar?

#3 Testes em Aplicações Web

Teste Exploratório

#3 Testes em Aplicações Web

Teste Exploratório

Planejamento do Teste Exploratório

Planejamento é fundamental para o sucesso do teste exploratório. Defina objetivos, escopo e estratégias para garantir que os testes sejam eficazes.

Definir o escopo Quais funcionalidades serão testadas?
Estabelecer objetivos Quais são as metas do teste?
Criar uma lista de testes Quais cenários serão explorados?
Definir a duração Quanto tempo será dedicado aos testes?
#3 Testes em Aplicações Web

Teste Exploratório

Design - Charter

#3 Testes em Aplicações Web

Teste Exploratório

Design - Charter - Outro Exemplos

#3 Testes em Aplicações Web

Teste Exploratório

Design - Tour (Metáfora do Turista)

Tour Testing é uma abordagem estruturada para testes exploratórios, onde a exploração de um produto é organizada em torno de um tema específico

#3 Testes em Aplicações Web

Teste Exploratório

Design - Tour (Metáfora do Turista)

Distrito Comercial

  • Guia turístico (seguir o manual)
  • Passeio do Dinheiro (explorar areas de venda, anúncios e etc)

  • Tour do coletor de lixo (Exceções)

Distrito Histórico

  • Passeio pela vizinhança ruim (falhas antigas)

  • Tour do museu (códigos antigos)

Distrito Turístico

  • Tour do Colecionador (máximo de saídas possível)

  • Tour das Supermodelos (foco na interface)

Distrito Hoteleiro

  • Tour pela chuva (iniciar as operações e interrompê-las)

  • Tour do preguiçoso (preencher o mínimo possível de dados)

Distrito de Entreterimento

  • Passeio pelo beco (recursos menos utilizados)

  • Passeio noturno (aplicativo em execução sem fechá-lo)

Distrito Decadente

  • Tour Antissocial (entradas menos prováveis ou astutas)

  • Tour do Obsessivo Compulsivo (repetir a mesma entrada várias vezes)

#3 Testes em Aplicações Web

Teste Exploratório

Execução do Teste Exploratório

A execução do teste exploratório envolve a aplicação das técnicas escolhidas e a exploração do software de forma livre e intuitiva. Documente os testes e os defeitos encontrados.

 

#3 Testes em Aplicações Web

Teste Exploratório

Resultados

Após a conclusão do teste exploratório, os resultados são analisados para avaliar a qualidade do software e identificar áreas de melhoria.

#3 Testes em Aplicações Web

Teste Exploratório x Ad-hoc

#3 Testes em Aplicações Web

Teste Exploratório

  • Os testes não são criados com antecedência
  • Não segue um roteiro rígido (segue guias e diretrizes)
  • É baseado em pensamento estruturado e exploração livre
  • É adaptativo e flexível
  • Enfoca o aprendizado em paralelo
  • A execução do teste é guiada/aprimorada com base em execuções anteriores
  • Exige profissionais experientes
  • Expande o escopo dos testes tradicionais baseados em roteiros (Injeta/introduz variação aos casos de testes)
  • Fluxo imediato de feedback (e correção de curso)
  • Amplifica a cobertura dos testes
#3 Testes em Aplicações Web
  • Utilizando a metáfora do turista juntamente com a escrita de charter escolha uma aplicação/site web evidenciando possíveis defeitos/melhorias na aplicação.
  • Observações:
    • Procure evidenciar o que foi identificado com anotações e imagens para facilitar a reprodução.

Atividade 8

#1 Módulo

Descrição

Atividade

Atividade

X Minutos

Referências

eTech - Teste de Software

By Vanilton Pinheiro

eTech - Teste de Software

Fundamentos básicos sobre testes; Introdução a testes ágeis; Testes Exploratórios; Testes Unitários; Introdução à automação de testes; Automação de testes; Testes de Serviços; Testes de Performance.

  • 203