Este documento descreve uma metodologia de testes para garantir a qualidade dos programas desenvolvidos em um laboratório de computação móvel. A metodologia inclui testes de processamento de dados, usabilidade, integração com hardware, escalabilidade e usuários finais para garantir a acurácia, persistência, usabilidade, desempenho e integração do software. Os testes devem ser planejados e executados de forma independente e paralela ao desenvolvimento para evitar atrasos na entrega.
2. O laboratório possui vários programas em desenvolvimento
e precisamos garantir o bom funcionamento dos mesmos.
A metodologia de testes em desenvolvimento busca
garantir o bom funcionamento dos programas aqui
desenvolvidos em várias frentes diferentes.
Os testes devem ser atrelados ao desenvolvimento de
forma a evitar atrasos na entrega do software. Essa
abordagem é possível pela independência entre os tipos de
testes.
3. Definir uma metodologia de testes que garanta a
boa qualidade dos programas desenvolvidos no laboratório.
A metodologia aqui definida visa garantir:
Acurácia dos algoritmos implementados.
Persistência dos dados correta.
Boa usabilidade.
Escalabilidade.
Integração com hardware.
4. Definir uma metodologia de testes que além de atender
os requisitos anteriores possa ser executada de modo a
evitar atrasos na entrega do software.
Testar os principais componentes do software de modo
independente e e garantir que os mesmos continuem
funcionando corretamente de forma integrada.
Desenvolver documentos de requisitos e casos de testes
que cubram todas as necessidades do programa.
5. Segue agora uma descrição da metodologia de testes.
Cada “módulo” pode e deve ser feito em momentos
diferentes do desenvolvimento, mas nem todos os
módulos serão aplicados a todos os projetos.
Os módulos de teste são:
Processamento de dados
Usabilidade
Escalabilidade
Integração com Hardware
Usuários finais
6. Processamento de dados
Objetivo: Garantir a acurácia dos algoritmos
implementados e a correta persistência dos dados.
Quem executa: Equipe de teste e a de desenvolvimento
caso a equipe de testes detecte erro.
Quando executar: Sempre que uma nova função for
implementada.
Inclui duas sub-rotinas de testes: Acuraria e Persistência.
7. Processamento de dados - Acurácia
Tem como objetivo garantir o correto processamento de
dados pelo algoritmo de forma que a saída do mesmo
sempre corresponda a esperada para a entrada dada.
O teste é tão bom quanto os casos de testes elaborados
para o mesmo. Todas as entradas possíveis tem de ser
previstas no documento de casos de teste.
O teste é dividido em duas etapas, testes Caixa Preta e
testes Caixa Branca.
8. Processamento de dados - Acurácia
Tipos de teste:
Caixa Preta: Fornece a entrada e observa a saída sem
conhecimento do algoritmo. Pode ser automatizado. O
teste tem sucesso quando a saída corresponde a esperada
para a entrada dada.
Caixa Branca: Utilizada para descobrir onde está o erro
do algorítimo. Observa-se a execução e descobre-se onde
está o erro de processamento. Só será executado quando
o teste Caixa Preta resultar em falha.
9. Processamento de dados - Acurácia
Roteiro de testes:
Definição de Casos de Teste
Execução dos testes Caixa Preta
Execução dos testes Caixa Branca
Quem faz: Responsável pelo projeto
Como: Com base nos documentos de Caso de
Uso. Deve cobrir todas as possibilidades do
caso de uso.
Quem faz: Equipe de teste
O que faz: Executa os casos de teste e verifica
se ouve sucesso ou falha (pode automatizar).
Marca sucesso ou falha, e em caso de falha
passa para o responsável os dados do teste.
Quem faz: Equipe de desenvolvimento
O que faz: localiza no algorítimo o ponto de
falha. Marca os dados para correção e
repassa para o responsável.
10. Processamento de dados - Persistência
Tem como objetivo garantir a correta persistência dos
dados processados seja em banco de dados externo ou em
arquivo local.
Busca verificar a persistência, a recuperação de dados,
o tratamento de falta de conexão e a possibilidade de
corrompimento de dados.
Executar sempre que dados precisarem ser persistidos
e/ou recuperados.
11. Processamento de dados - Persistência
Roteiro de testes: Persistência em arquivos.
Verificar se o arquivo foi gravado corretamente.
Verificar se o arquivo pode ser recuperado pelo programa.
Verificar possibilidade de corrompimento de dados devido a
interrupções inesperadas.
12. Processamento de dados - Persistência
Roteiro de testes: Persistência em Banco de Dados.
Verificar possíveis erros de conexão
Verificar tratamento de erros de conexão
Verificar se os dados foram persistidos corretamente
Verificar se os dados podem ser recuperados corretamente
Verificar se houve corrupção dos dados
(principalmente em servidor externo)
Legenda:
Sempre executar
Sevidor externo
13. Usabilidade
Objetivo: Garantir que o usuário consiga usar o programa,
e possa aprender a fazê-lo com facilidade.
Quem executa: Equipe de teste em conjunto com possíveis
usuários.
Quando executar: Sempre que uma nova versão for ser
liberada.
14. Usabilidade
Critérios que serão avaliados:
Facilidade de aprendizado.
Rapidez na realização da tarefa proposta.
Baixa necessidade de refazer algo devido a erros.
Acessibilidade.
Avaliação baseada em Passeio Cognitivo. As etapas do
roteiro seguinte podem ser automatizadas de modo a
focar a entrevista com o usuário na sua experiencia em si.
15. Usabilidade
Roteiro de testes:
Fornecer a tarefa a ser executada.
Computar passos necessários para execução da tarefa.
Verificar necessidade de refazer passos e pontos de
Ambiguidade.
Verificar tempo médio
de execução.
Fazer entrevista com o
Usuário.
16. Integração com o Hardware
Objetivo: Garantir que o programa tenha boa integração
com o hardware e não faça uso danoso do sistema.
Quem executa: Equipe de teste.
Quando executar: Sempre que uma nova versão for ser
liberada.
17. Integração com o Hardware
Sempre testar o uso de processador, memória, rede e
bateria (em caso de aplicações móveis).
Tais dados podem ser obtidos através de chamadas ao
S.O. O uso do hardware deve ocorrer de modo a não
prejudicar o sistema como um todo.
Software para sistemas embarcados necessitam de
testes específicos de integração de modo a cobrir todas as
interfaces que o hardware hospedeiro provê.
18. Escalabilidade
Objetivo: Descobrir a carga máxima de requisições que o
servidor suporta de modo a poder dimensionar
corretamente o mesmo para o uso que o software fará
dele.
Quem executa: Equipe de teste.
Quando executar: Sempre que uma nova versão for
lançada.
19. Escalabilidade
Executar várias requisições simultâneas as servidor de
modo a descobrir a sua carga máxima, tempo médio de
resposta e tempo médio de resposta em situação de
estresse.
Essas informações podem ser uteis para dimensionar o
servidor e fornecer parâmetros para otimização das
requisições que o software faz ao servidor.
20. A metodologia de testes consegue cumprir bem o seu
papel, dependendo somente da boa documentação do
programa, e de que a equipe de testes consiga prever,
através dos casos de uso, todas as possibilidades do
programa.
Os testes só terão sucesso quando os casos de uso e teste
são bem definidos, para isso é necessário um bom
documento de levantamento de requisitos do projeto.