Geração de casos de teste apoiados em banco de dados Projeto Final de Graduação Aluno: Alexandre...

21
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

Transcript of Geração de casos de teste apoiados em banco de dados Projeto Final de Graduação Aluno: Alexandre...

Page 1: 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.

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

Page 2: 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.

11/04/23 2Alexandre L. Silva © LES/PUC - Rio

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

Page 3: 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.

11/04/23 3Alexandre L. Silva © LES/PUC - Rio

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.

Page 4: 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.

11/04/23 4Alexandre L. Silva © LES/PUC - Rio

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

Page 5: 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.

11/04/23 5Alexandre L. Silva © LES/PUC - Rio

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

Page 6: 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.

11/04/23 6Alexandre L. Silva © LES/PUC - Rio

Estudos conceituais e de tecnologia

• Visão geral do processo de geração de casos de teste

Test tool

specification

Boundary

conditions

criterion

Test case

selection

criterion

Test log &

findings

Test script

generator

Test case

generator

Automated

test scripts

Test

cases

XML

Architect

Designer

Interface

designer

Developer

Marked up

use cases

Interface

sketch

Decision

table

generator

Specifier

&

Reviewer

Standard

use cases

Decision

tables

XMLDecision

table

editorTyped deci-

sion tables

XML

User

Interface

State

machines

XMLState

machine

editor

Design

user

interface

Mark up

use cases

Boundary

conditions

adder

XML

Performable

test cases

Manual

test cases

Format & print

tool

Data

dictionary

SWB

Develop

artifactTest

artifact

Artifact

Page 7: 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.

11/04/23 7Alexandre L. Silva © LES/PUC - Rio

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

A1Ir de carro

X X X

A2Ir à pé

X

• Cada coluna da tabela de decisão define uma regra;

• Cada regra representa um caso de teste;

Page 8: 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.

11/04/23 8Alexandre L. Silva © LES/PUC - Rio

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

Page 9: 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.

Estudos conceituais e de tecnologia

• Grupo Condicional:– Permite que determinadas condições dividam restrições entre si;

• Exemplo:– Sem o uso de grupo condicional:

– Com o uso de grupo condicional mutuamente exclusivo obrigatório:

Condições Situações

Condição 1 V V F F

Condição 2 V F V F

Condições Situações

Condição 1 V V F F

Condição 2 V F V F

11/04/23 9Alexandre L. Silva © LES/PUC - Rio

Page 10: 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.

11/04/23 10Alexandre L. Silva © LES/PUC - Rio

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

a.a

aba

a{a

aPa

AB?A

AB

(PQR){1,2}PQR

PQRPQR

boa-(noite | tarde)boa-noite

boa-tarde

Page 11: 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.

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

11/04/23 11Alexandre L. Silva © LES/PUC - Rio

Page 12: 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.

Grupo Condicional Extensível (GCE)

  código da disciplina

1ª disciplina  

   

2ª disciplina  

   

3ª disciplina  

   

• Requisitos:

– Preparar o banco de dados - DBUnit;

– Estender o grupo condicional;

• 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

11/04/23 12Alexandre L. Silva © LES/PUC - Rio

Page 13: 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.

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:• Tabela com dados corretos:

<?xml version='1.0' encoding='UTF-8'?>

<dataset>

<corretos disciplina="INF1687" />

<corretos disciplina="INF1425" />

<corretos disciplina="INF3458" />

</dataset>

• Tabela com dados incorretos:

<?xml version='1.0' encoding='UTF-8'?>

<dataset>

<corretos disciplina="INF1413" />

<corretos disciplina="INF1416" />

<corretos disciplina="INF2112" />

</dataset>

11/04/23 13Alexandre L. Silva © LES/PUC - Rio

Page 14: 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.

Grupo Condicional Extensível (GCE)

• Preparar o banco de dados:

– Definir a conexão com o banco de dados:protected IDatabaseConnection getConnection() throws Exception{

}

protected IDataSet getDataSet() throws Exception{

...

}

– Recuperar os dados do banco:

– Popular as estruturas de dados:• Dados corretos;

• Dados incorretos;

11/04/23 14Alexandre L. Silva © LES/PUC - Rio

Page 15: 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.

Grupo Condicional Extensível (GCE)

• Extensão do Grupo Condicional:

– Oferecer o grupo condicional extensível:

– Estender a validação da tabela;

11/04/23 15Alexandre L. Silva © LES/PUC - Rio

Page 16: 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.

Grupo Condicional Extensível (GCE)

• Exemplo de tabela

11/04/23 16Alexandre L. Silva © LES/PUC - Rio

Page 17: 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.

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;11/04/23 17Alexandre L. Silva © LES/PUC - Rio

Page 18: 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.

11/04/23 18Alexandre L. Silva © LES/PUC - Rio

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

Page 19: 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.

11/04/23 19Alexandre L. Silva © LES/PUC - Rio

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;

Page 20: 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.

11/04/23 20Alexandre L. Silva © LES/PUC - Rio

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

Page 21: 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.

11/04/23 21Alexandre L. Silva © LES/PUC - Rio

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