Geração de casos de teste apoiados em banco de dados Projeto Final de Graduação Aluno: Alexandre L. Silva Orientador: Prof. Arndt von Staa Agenda • Estado da arte • Motivação • Estudos conceituais e de tecnologia • Dados usados nos casos de teste • Proposta: grupo condicional extensível • Considerações finais • Trabalhos futuros • Referências bibliográficas 05/11/2015 Alexandre L. Silva © LES/PUC - Rio 2 Estado da arte • Teste de software: Testes visam controlar a qualidade do software a partir da realização de experimentos controlados. • Lachtemacher, 2010: Geração de scripts de casos de teste, baseado em tabelas de decisão. O usuário deve definir as regras que vão limitar os valores gerados para os casos de teste (dado aleatório ou gramática regular). • Caldeira, 2010: extensão do trabalho de [Lachtermacher, 2010]. Nesse trabalho, durante a edição da tabela de decisão é possível definir explicitamente os valores dos casos de teste. 05/11/2015 Alexandre L. Silva © LES/PUC - Rio 3 Motivação • Aumentar a variedade de sistemas que utilizam tabelas de decisão para a geração de scripts de teste. • Tornar possível a escolha aleatória em conjuntos de valores préestabelecidos 05/11/2015 Alexandre L. Silva © LES/PUC - Rio 4 Objetivo • Propor a geração de casos de teste envolvendo banco de dados e utilizando tabelas de decisão como técnica de projeto dos casos de teste 05/11/2015 Alexandre L. Silva © LES/PUC - Rio 5 Estudos conceituais e de tecnologia • Visão geral do processo de geração de casos de teste Architect Specifier & Reviewer Standard use cases Interface sketch Design user interface Interface designer User Interface Mark up use cases State machine editor Marked up use cases SWB Designer Decision table generator Data dictionary Test case generator XML Typed decision tables XML State machines Decision table editor Test case selection criterion XML Decision tables Developer XML Develop artifact Test cases Boundary conditions adder Test artifact XML Performable test cases Test script generator 05/11/2015 Manual test cases tool Automated test scripts Test log & findings Format & print Boundary conditions criterion Artifact Test tool specification Alexandre L. Silva © LES/PUC - Rio 6 Estudos conceituais e de tecnologia • Uma tabela de decisão é uma ferramenta que tem como objetivo expressar as combinações de condições necessárias para a execução de um determinado conjunto de ações [MYERS, 2004]; • Característica: Não ambígua e completa Como irá ao jogo? R1 R2 R3 R4 C1 Estádio perto da residência? Sim Sim Não Não C2 Dia chuvoso Não Sim Sim Não X X X A1 A2 Ir de carro X Ir à pé • Cada coluna da tabela de decisão define uma regra; • Cada regra representa um caso de teste; 05/11/2015 Alexandre L. Silva © LES/PUC - Rio 7 Estudos conceituais e de tecnologia • Exemplo de condição (na ferramenta): • Uma condição é definida por: – Tipo de campo • Texto, clicável, marcador, seletor, seletor múltiplo ou nenhum; – Identificador • Por exemplo: id (elemento de HTML); – Nome – Grupo condicional 05/11/2015 Alexandre L. Silva © LES/PUC - Rio 8 Estudos conceituais e de tecnologia • Grupo Condicional: – Permite que determinadas condições dividam restrições entre si; • Exemplo: – Sem o uso de grupo condicional: Condições Situações Condição 1 V V F F Condição 2 V F V F – Com o uso de grupo condicional mutuamente exclusivo obrigatório: Condições 05/11/2015 Situações Condição 1 V V F F Condição 2 V F V F Alexandre L. Silva © LES/PUC - Rio 9 Dados usados nos casos de teste • Geração randômica: – Campo do tipo numérico; – Campo do tipo numérico, com limitadores: • Por exemplo, o valor deve estar entre 1 e 50; • Geração de dados através de uma expressão regular: Expressão Regular Strings aba a.a a{a aPa A AB? AB PQR (PQR){1,2} PQRPQR boa-noite boa-(noite | tarde) boa-tarde 05/11/2015 Alexandre L. Silva © LES/PUC - Rio 10 Dados usados nos casos de teste • Geração de dados de maneira explícita: • Geração através da escolha randômica em um conjunto prédefinido 05/11/2015 Alexandre L. Silva © LES/PUC - Rio 11 Grupo Condicional Extensível (GCE) • Objetivos: – Permitir a valoração dos casos de teste através de dados do banco de dados; – Permitir a valoração de casos corretos e incorretos; • Exemplo: sistema de matrícula da PUC-Rio código da disciplina 1ª disciplina 2ª disciplina 3ª disciplina • Requisitos: – Preparar o banco de dados - DBUnit; – Estender o grupo condicional; 05/11/2015 Alexandre L. Silva © LES/PUC - Rio 12 Grupo Condicional Extensível (GCE) • Preparar o banco de dados: – Estrutura da tabela: Campo Tipo Nulo Chave Codigo Inteiro Não Sim Valor String Sim Não • Tabela com dados corretos: <?xml version='1.0' encoding='UTF-8'?> <dataset> <?xml version='1.0' encoding='UTF-8'?> <dataset> <corretos disciplina="INF1413" /> <corretos disciplina="INF1687" /> <corretos disciplina="INF1416" /> <corretos disciplina="INF1425" /> <corretos disciplina="INF2112" /> <corretos disciplina="INF3458" /> </dataset> 05/11/2015 • Tabela com dados incorretos: </dataset> Alexandre L. Silva © LES/PUC - Rio 13 Grupo Condicional Extensível (GCE) • Preparar o banco de dados: – Definir a conexão com o banco de dados: protected IDatabaseConnection getConnection() throws Exception{ … } – Recuperar os dados do banco: protected IDataSet getDataSet() throws Exception{ ... } – Popular as estruturas de dados: • Dados corretos; • Dados incorretos; 05/11/2015 Alexandre L. Silva © LES/PUC - Rio 14 Grupo Condicional Extensível (GCE) • Extensão do Grupo Condicional: – Oferecer o grupo condicional extensível: – Estender a validação da tabela; 05/11/2015 Alexandre L. Silva © LES/PUC - Rio 15 Grupo Condicional Extensível (GCE) • Exemplo de tabela 05/11/2015 Alexandre L. Silva © LES/PUC - Rio 16 Grupo Condicional Extensível (GCE) • Resumo do processo de geração de scripts de teste • Fluxo de valoração dos casos de teste – Para cada condição da tabela de decisão: • A condição pertence ao GCE? – Sim: » A condição é V? » Sim: usa um valor da estrutura de dados corretos; » Não: usar um valor da estrutura de dados incorretos; – Não: » Segue o fluxo das demais condições; 05/11/2015 Alexandre L. Silva © LES/PUC - Rio 17 Grupo Condicional Extensível (GCE) • Outras formas de valoração: – Condições de condições de contorno [MYERS, 2004]: • Por exemplo, se campo permite valores entre -1,0 e +1,0, devem ser gerados casos de teste com os seguintes valores: – -1,0; +1,0; -1,001 e +1,001; • Por exemplo, se um campo permite entre 1 e 50 caracteres, devem ser gerados casos com: – Nenhum caractere, somente um caractere, 50 caracteres e 51 caracteres; – Gramática livre de contexto (V -> w): <Nome> ::= <InicioNome> <RestoNome> <InicioNome> ::= ( <Letras> | ‘_’ ) <RestoNome> ::= 0 – 31 [ <CharCont> ] <CharCont> ::= ( <Letras> | <Digitos> | ‘_’ ) <Letras> ::= ( <Maiusculas> | <Minusculas> ) <Digitos> ::= $Numerais <Maiusculas> ::= $UpperCase_ASCII <Minusculas> ::= $LowerCase_ASCII 05/11/2015 Alexandre L. Silva © LES/PUC - Rio 18 Considerações finais • Objetivos: – Reduzir o volume de trabalho de definir dados explícitos na geração de scripts de casos de teste; – Aumentar a diversidade de sistemas que podem ser apoiados pela geração de scripts de teste; 05/11/2015 Alexandre L. Silva © LES/PUC - Rio 19 Trabalhos futuros • Codificação da proposta; • Permitir a atribuição de pesos entre os casos de teste com sucesso e sem sucesso: – Por exemplo: casos • Aplicação de regras de negócio no momento da valoração dos dados 05/11/2015 Alexandre L. Silva © LES/PUC - Rio 20 Referências bibliográficas • Caldeira, Luiz Rodolfo N., Manual Editor de Tabelas de Decisão. Rio de Janeiro, 2010. • Delamaro, Márcio; Maldonado, Jose Carlos; Jino, Mario. Introdução ao teste de software. Rio de Janeiro: Elsevier/ Campus, 2007. 394 p. (Série Sociedade Brasileira de Computação ) ISBN 9788535226348. • Jargas, Aurélio Marinho. Expressões Regulares - Guia de Consulta Rápida. Editora Nocatev, 2001. • Lachtermacher, Luana. O uso de tabelas de decisão para a automação da geração e da execução de casos de teste. Rio de Janeiro, 2010. 110p. Dissertação de Mestrado - Departamento de Informática, Pontifícia Universidade Católica do Rio de Janeiro. • Myers, G. J.,The Art of Software of Testing. 2nd edition; Hoboken, New Jersey: John Wiley & Sons; 2004. • Staa, Arndt v. Programação modular: desenvolvendo programas complexos de forma organizada e segura. Rio de Janeiro: Campus, 2000. 690p. ISBN 8535206086. • Staa, Arndt v. Notas de aula de Teste de Software: Aula 24 Geração automática de casos de teste. http://www.inf.pucrio.br/~inf1413/docs/INF1413_Aula24_GeracaoAutomaticaCasosTeste.pdf • Trabalho Acadêmico. http://pt.wikipedia.org/wiki/Trabalho_acadêmico • DBUnit. http://www.dbunit.org/ • Database Testing with DbUnit http://www.roseindia.net/testingtools/DbUnit/index.shtml 05/11/2015 Alexandre L. Silva © LES/PUC - Rio 21