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?
Fonte: https://web.archive.org/
Fonte: https://fpftech.com
#1 Conceitos de Qualidade de Software
O que poderia melhorar nesse site?
Fonte: https://web.archive.org/
#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
- Criar um registro "X"
- Ler um registro "X"
- Atualizar um registro "X"
- Ler um registro "X"
- Apagar um registro "X"
- 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
-
Um cenário a ser testado (um “dado”)
-
Um método para testar (um “quando”).
-
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
- O Unittest utiliza da orientação a objeto
- Uma classe de teste do Unittest
- Herda de unittest.TestCase.
- Pode conter vários casos de teste.
- Um caso de teste é um método dentro dessa classe com nome iniciado de "test".
- É uma boa prática de escrita de casos de teste unitário, separar cada caso de teste em um método de teste.
- 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:
- Clone o projeto abaixo
- Implemente os casos de testes utilizando o framework Unittest.
- 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
-
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:
-
Criar um módulo de teste utilizando unittest
-
Criar uma função de teste para criação de um TODO
-
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
- https://www.linkedin.com/posts/oadrianomoura_qualidade-melhoriacontinua-produ%C3%A7%C3%A3o-activity-7142463611435757568-axcG/?originalSubdomain=pt
- https://www.ciawebsites.com.br/sites/como-melhorar-usabilidade-site-heuristicas-de-nielsen/
- https://repositorio.ufc.br/bitstream/riufc/70363/1/2022_tcc_agsousa.pdf
- https://medium.com/@tiago.peng/exploratory-testing-tours-uma-excurs%C3%A3o-na-met%C3%A1fora-do-turista-b2ae41ec555
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