180 likes | 326 Views
Teste em Esquemas de Dados. Universidade Federal do Paraná Departamento de Informática Seminário. Maria Cláudia Figueiredo Pereira Emer. Introdução - Contexto. Importância da atividade de teste Produtos confiáveis Avaliação do nível de qualidade Por que testar esquemas de dados?
E N D
Teste em Esquemas de Dados Universidade Federal do Paraná Departamento de Informática Seminário Maria Cláudia Figueiredo Pereira Emer
Introdução - Contexto • Importância da atividade de teste • Produtos confiáveis • Avaliação do nível de qualidade • Por que testar esquemas de dados? • Assegurar a integridade dos dados • Evitar falhas na aplicação que utiliza os dados
Introdução - Contexto • Esquemas XML • Operadores de mutação – Li e Miller (2005) • Teste aplicando o Critério Análise de Mutantes – Franzotte e Vergilio (2006) • Esquemas de base de dados • Uso de informações do esquema – Robbert e Maryanski (1991), Chan et al. (2005) • Teste aplicando Critério de Teste Baseado na Definição e Uso de atributos - Aranha et al. (2000)
Introdução – Motivação • Auxiliar na garantia de qualidade de software • Importância do esquema de documentos XML e de Base de dados • Necessidade de identificar defeitos em esquemas de dados • Exigência por abordagens e ferramentas específicas • Existência de poucos trabalhos que exploram esse assunto
Introdução – Objetivos • Investigar abordagens de teste envolvendo esquemas de dados • Propor classes de defeito para esquemas • Introduzir uma abordagem de teste baseada em defeitos • Estudar aspectos de implementação • Avaliar o custo e a eficácia da abordagem
XML • Linguagem de marcação para conteúdo • Bem-formado regras de XML • Válido Esquema • Esquema • Vocabulário com definição de elementos, atributos e restrições aos dados • Exemplos: DTD e XML Schema
Base de Dados • Conjunto de informações inter-relacionadas • Modelo de dados relacional, orientado a objetos, objeto-relacional • Instância conteúdo específico que varia com o tempo • Esquema definição da estrutura lógica da base de dados
Abordagem de Teste – Definição • Deriva casos de teste para mostrar a presença ou ausência de defeitos em esquemas de dados • Genérica, pode ser aplicada em qualquer esquema de dados • Baseada em defeitos, define Classes de Defeito que descrevem erros comuns e são usadas para obter os casos de teste
Abordagem de Teste - Definição • Gera instâncias de dados alternativas que representam possíveis defeitos • Produz consultas que são capazes de revelar os defeitos • Os casos de teste são formados por uma instância de dados alternativa associada a uma consulta e a especificação do resultado esperado • Defeito revelado resultados obtidos (consultas) diferentes dos esperados (especificação de dados)
Abordagem de Teste - Classes de Defeito • Classe 1 (C1) – Restrições de Domínio: defeitos relacionados a definição de domínio dos conteúdos de elementos ou atributos. • Tipo de Dado Incorreto (TDI): definição incorreta de tipo de dado; • Valor Incorreto (VI): definição incorreta de valor padrão ou fixo; • Valor Enumerado Incorreto (VEI): definição incorreta de lista de valores aceitáveis; • Valor Máximo e Mínimo Incorreto (VMMI): definição incorreta de valores limites; • Tamanho Incorreto (TI): definição incorreta do número de caracteres permitidos; • Dígito Incorreto (DI): definição incorreta do total de dígitos ou dígitos decimais permitidos; • Padrão Incorreto (PI): definição incorreta da seqüência de caracteres ou números permitidos; • Caracteres de Espaço em Branco Incorretos (CEBI): definição incorreta de como devem ser tratados caracteres de espaço em branco.
Abordagem de Teste - Classes de Defeito • Classe 2 (C2) – Restrições de Definição: defeitos relacionados a definição de atributos, relativos a integridade dos dados. • Uso Incorreto (UI): o atributo está incorretamente definido como opcional ou obrigatório; • Unicidade Incorreta (NI): o atributo está incorretamente definido como único; • Chave Incorreta (CI): o atributo está incorretamente definido como chave. • Classe 3 (C3) – Restrições de Relacionamento: defeitos relacionados a definição de relacionamento entre elementos. • Ocorrência Incorreta (OI): definição incorreta do número de vezes que um mesmo elemento pode ocorrer; • Ordem Incorreta (RI): definição incorreta da ordem em que os elementos podem ocorrer; • Cardinalidade Incorreta (AI): definição incorreta do número de ocorrências de um elemento em relação a outro elemento de acordo com um relacionamento;
Abordagem de Teste - Classes de Defeito • Classe 3 (C3) – Restrições de Relacionamento (continuação) • Generalização/Especialização Incorreta (GSI): definição incorreta de uma generalização/especialização; • Agregação Incorreta (GI): definição incorreta de uma agregação; • Elemento Associativo Incorreto (EAI): definição incorreta de um elemento associativo. • Classe 4 (C4) – Restrições Semânticas: defeitos relacionados a definição de restrições em relação ao conteúdo dos dados, escritas por regras de negócio. • Condição Incorreta (COI): definição incorreta de um predicado que expressa uma condição que deve ser satisfeita pelo conteúdo de determinado atributo.
Abordagem de Teste – Contextos de Uso • XML • Documentos XML que armazenam dados; • Mensagens XML que trocam informações entre aplicações Web; • Resultados de consultas à base de dados em XML; • Documentos XML atualizados; • Serviços Web. • Base de Dados • Relacional; • Orientada a objetos; • Objeto-relacional.
Fragmento do esquema pedido em XML Schema - pedidoID … <xsd:attribute name="pedidoID"> <xsd:simpleType> <xsd:restriction base="xsd:integer"> <xsd:minInclusive value="0"/> <xsd:maxInclusive value="999999"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> … S = (E,A,R,P) E = {pedido, cliente, itens, item, codigo, descricao, quantidade, preco} A = {pedidoID} R = {ordem, tipo de dado, ocorrência, máximo/mínimo} P = {pedido(pedidoID cliente itens, ordem: cliente itens), pedidoID(tipo de dado, máximo/mínimo), …} Abordagem de Teste – Contextos de XML – Exemplo
Instância original … <ordem pedidoID = "000134"> ... Instância alternativa - C1-DI … <ordem pedidoID = "00013"> ... Abordagem de Teste – Contextos de Uso – Exemplo Classes de defeito identificadas em pedidoID: C1-TDI; C1-VMMI; C1-DI; C2-UI. Segundo a especificação dos dados: pedidoID: Uso é requerido e código com exatamente seis dígitos Dois defeitos revelados em pedidoID: C2-UI e C1-DI
Estágio Atual do Trabalho • Abordagem de teste genérica para esquemas de dados • Baseada em defeitos • Classes de defeito • Instâncias de dados alternativas • Consultas • Ferramenta XTool • Experimentos: XML Schema e esquema de base de dados relacional • Aplicabilidade, custo e eficácia em revelar defeitos
Estágio Atual do Trabalho • Experimento I: XML Schemas • Experimento II: Abordagem X Teste de mutação – XML Schemas • Experimento III: Base de dados relacional (em andamento) • Considerações • Custo: análise dos resultados • Eficácia: capaz de revelar defeitos • Teste de mutação: defeitos revelados • Vantagem da abordagem em relação ao teste de mutação – geração automática de dados de teste