Planejamento e Projeto de Testes Taíse Dias Roteiro Processo de Desenvolvimento: Problema Solução Plano de Testes Projeto de Testes Teste baseado em Caso de Uso Conclusão Problema no Processo de Desenvolvimento Omissão de etapas de testes Inconsistência entre documentos Falta de comprometimento com a qualidade dos sistemas Conseqüências: produtos de baixa confiabilidade e gastos desnecessários por causa de descobertas de erros tardias. Definição de Requisitos Projeto do Sistema e do Software Implementação e Testes Unitários Integração e Teste do Sistema Operação e Manutenção Solução Iniciar ciclo de vida do teste em paralelo ao de desenvolvimento Elaborar Plano de Teste previamente ajuda quem pretende melhorar o seu processo de desenvolvimento e produzir com maior qualidade Solução Solução Poderia haver um responsável por testes desde o início do projeto O plano pode ser elaborado por alguém, antes do desenvolvimento do sistema Vantagens: exige o estudo de toda regra de negócio incentiva à imaginação e criação de cenários de testes, não visualizados pelo analista do sistema. Exemplo: Tela de Login Ex.: Tela de Login Casos de testes construídos sem análise prévia: Casos de Teste Informar login correto Login do Informar login incorreto Usuário Informar senha incorreta O sistema valida as informações e carrega na tela principal É exibido o alerta “Login e/ou senha inválido(s). Verifique por favor.” É exibido o alerta “Login e/ou senha inválido(s). Verifique por favor.” Ex.: Tela de Login Maior domínio das regras de negócios -> maior cobertura dos casos de testes Casos de Teste Login do Usuário Não informar o login É exibido o alerta “O campo login deve ser preenchido. Verifique, por favor.” Não informar senha É exibido o alerta “O campo de senha deve ser preenchido. Verifique por favor.” Verificar sintaxe A sintaxe do texto deve estar correta. Verificar as atribuições do usuário (teste de segurança) No momento em que ocorrer o login, apenas as funcionalidades com permissões atribuídas devem ser exibidas ao usuário. Logar com o mesmo usuário em dois browsers É exibido um alertas notificando a duplicidade, e é notificada por e-mail a ocorrência desta redundância ao usuário. Teste baseado em Caso de Uso Responsável pelo Plano de Testes: Analista de Testes Elabora Projeto de testes durante e/ou após elaboração de casos de uso Comunicação com o analista de sistemas tirar dúvidas sobre os casos de uso Exemplo de Caso de uso: O usuário informa a data início e data fim que deseja procurar. O sistema retorna todos os registros cadastrados entre as datas informadas. Neste momento, o analista de testes constrói os seguintes casos de teste: Teste baseado em Caso de Uso Casos de Teste Pesquisa por período Informar data início e fim em uma seqüência cronológica O sistema retorna todos os registros cadastrados entre as datas informadas Informar apenas a data de início O sistema pode exigir ou não a data fim como obrigatório, vai depender do critério do analista do sistema (o testador consulta o analista) Informar apenas data fim O sistema pode exigir ou não a data início como obrigatório, vai depender do critério do analista do sistema (o testador consulta o analista) Não informar nenhum dos campos É exibido o alerta para que o usuário preencha o(s) campo(s) obrigatório(s) para a consulta (a obrigatoriedade, mais uma vez, depende do analista). Informar a data fim anterior à data início É exibido o alerta “A data fim informada é anterior à data início. Verifique, por falor.” Documentação Elaborar documentos de testes Manter consistência com documento de requisitos Ex: O analista de testes tem conhecimento da existência de um campo de e-mail no cadastro de usuário. Imediatamente, ele cria um caso de teste que exija uma validação do campo de e-mail (aceitar apenas e-mails válidos). Quando finalmente consulta os fluxos de exceção do caso de uso, nota que não existe uma exceção levantada para o cadastro de e-mails inválidos. Então é adicionado um erro de especificação “Criar fluxo de exceção para cadastro de e-mails inválidos”. Plano de Testes Identificar o que será testado (requisitos) Descrever as estratégias de teste a serem empregadas Abordagem (Caixa Preta e Caixa Branca) Tipos de testes: funcionais, de segurança, entre outros. Descrever quais técnicas serão utilizadas para criação dos casos de testes: baseados em casos de uso, de boundary, entre outras. Critérios de sucesso Identificar os recursos necessários Recursos humanos Ferramentas Prover uma estimativa dos esforços de teste Atividades Responsabilidades Cronograma Projeto de Testes Artefato que descreve os casos de testes e os procedimentos para execução dos mesmos. Para projetar casos de testes, são visualizados cenários (casos de uso) a partir dos quais serão criados casos de testes. Estabilizar o Test bed: combinação de drivers e stubs Determinar pré-condições para o teste e os objetivos a serem atingidos Especificar os casos de testes individuais Determinar como executar os testes Exemplo de criação de caso de teste baseado em caso de uso [UC07] Nome: Atores: Prioridade: Requisitos associados: Cadastrar usuário Vendedor Essencial [RF02] Cadastro de usuários Entradas: Pré-condições: Pós-condições: Fluxos de eventos Fluxo Normal: Fluxo Excepcional 1: Fluxo Excepcional 2: 1. 2. 3. 4. 5. 6. 7. 8. 1. 2. 3. 1. 2. 3. Nome, CPF, Data de Nascimento Login (exceto para funcionário) Senha (exceto para funcionário) Crédito, data inicial, final, permissão para comprar em dinheiro, dias da semana (apenas funcionário) O vendedor deve estar logado no sistema O usuário não deverá estar cadastrado no sistema O usuário deve estar cadastrado no banco de dados O usuário seleciona a opção “Cadastrar Usuário”. [Fluxo Excepcional 1] O usuário seleciona se o cadastro a ser feito é de funcionário, gerente ou vendedor. O usuário fornece os dados da pessoa a ser cadastrada. O sistema verifica se todas as informações obrigatórias foram fornecidas. [Fluxo Excepcional 2] O sistema valida as informações fornecidas. O sistema mostra uma tela para confirmação do cadastro. O usuário confirma o cadastro. Os dados são armazenados na base de dados. A opção “Voltar” é selecionada. Todos os dados informados são descartados. A tela inicial do sistema é mostrada. Uma ou várias informações obrigatórias não são informadas ou o formato da informação não é o adequado. O sistema mostra uma tela informando que falta uma ou mais informações obrigatórias. O sistema retorna para a tela “Cadastrar Pessoa” com os dados informados nos seus respectivos lugares. Cadastrar Alterar Remover Relatórios Fazer logoff Cadastrar Organização Almoxarifado Produto Usuário Vendas Alterar Remover Relatórios Fazer logoff Cadastrar Alterar Remover Relatórios Fazer logoff Cadastro de Usuário Nome: Nome 1 CPF: 032.165.987-52 Data de Nascimento: 23/03/1985 Tipo de usuário: Gerente Continuar >> << Voltar Cadastrar Alterar Remover Relatórios Fazer logoff Cadastro de Usuário Login: login1 Senha: senha1 Cadastrar << Voltar Cadastrar Alterar Remover Relatórios Cadastro de usuário O usuário foi cadastrado com sucesso! OK Fazer logoff Cadastrar Alterar Remover Relatórios Fazer logoff Cadastrar Organização Almoxarifado Produto Usuário Vendas Alterar Remover Relatórios Fazer logoff Cadastrar Alterar Remover Relatórios Fazer logoff Cadastro de Usuário Nome: Nome 2 CPF: 053.725.944-50 Data de Nascimento: 07/07/1989 Tipo de usuário: Vendedor Continuar >> << Voltar Cadastrar Alterar Remover Relatórios Fazer logoff Cadastro de Usuário Login: login2 Senha: senha2 Cadastrar << Voltar Cadastrar Alterar Remover Relatórios Cadastro de usuário O usuário foi cadastrado com sucesso! OK Fazer logoff Cadastrar Alterar Remover Relatórios Fazer logoff Cadastrar Organização Almoxarifado Produto Usuário Vendas Alterar Remover Relatórios Fazer logoff Cadastrar Alterar Remover Relatórios Fazer logoff Cadastro de Usuário Nome: Nome 3 CPF: 012.165.548-54 Data de Nascimento: 07/07/1980 Tipo de usuário: Funcionário Continuar >> << Voltar Cadastrar Alterar Remover Relatórios Fazer logoff Cadastro de Usuário Crédito em reais: 10,00 Data Inicial: 01/11/2007 07/11/2007 Data Final: Permissão para compras em dinheiro? Não Dias permitidos para realizar compras: 2ª feira 3ª feira 4ª feira todos 5ª feira 6ª feira Cadastrar << Voltar Cadastrar Alterar Remover Relatórios Cadastro de usuário O usuário foi cadastrado com sucesso! OK Fazer logoff Exemplo de criação de caso de teste baseado em caso de uso Técnica utilizada: Use Case Testing ID CT_001 Tipo do teste Funcional Objetivo Verificar se a funcionalidade de cadastrar usuário está executando corretamente. Requisito [RF02] Cadastro de usuários Pré-condição 1. O vendedor deve estar logado no sistema 2. O usuário não deverá estar cadastrado no sistema Nº. do Passo Passos Resultados Esperados 1 Selecione a opção “Cadastrar Usuário”. A tela de cadastro é apresentada. 2 Forneça os dados do usuário (nome = nome1, CPF = 032.165.987-52, data de nascimento = 23/03/1985, tipo de usuário = gerente ) e selecione o botão “Continuar”. A tela para cadastrar login e senha é apresentada. 3 Forneça os valores de login e senha (login = O sistema retorna uma mensagem login1 e senha = senha1) e selecione o informando que o usuário foi cadastrado botão “Cadastrar”. com sucesso. 4 Verifique se o usuário está cadastrado no banco de dados com todas as informações fornecidas. O usuário foi cadastrado no banco de dados com sucesso. Exemplo de criação de caso de teste baseado em caso de uso E se nem todos os dados obrigatórios forem preenchidos? E se esse usuário já tiver sido cadastrado no banco de dados? E se o formato do CPF ou da data não obedecer ao padrão? E se o usuário desistir de cadastrar usuário durante a realização do cadastro? E se outras pré-condições forem violadas? Sugestão: “tentar criar casos de testes não convencionais (se você não tentar, os usuários irão!!!)” Conclusão Produzir requisitos de testes baseados nos requisitos de análise “As fábricas de software que experimentam algumas mudanças chegam sempre às mesmas conclusões: optar por testar somente no fim é ineficaz, gera mais gastos, e ainda induz ao maior de todos os prejuízos: a insatisfação do usuário. ” Referências [1] Testes de Software, disponível em www. URL: <http://testesdesoftware.blogspot.com/2007/05/artigoii.html#links>, último acesso em 23 de setembro de 2007. [2] Disciplina de Engenharia de Software, disponível em www. URL: http://www.cin.ufpe.br/~if682 [3] Spillner, A.; Linz, T.; Schaefer, H.: Software Testing Foundations, Rock Nook, 2007.