• No results found

DEL 2 FORSKNINGSDESIGN

4.4 Troverdighet, bekreftbarhet og overførbarhet

Com a geração preliminar dos modelos do GenArch concluída, tais modelos podem passar por incrementos e refinamentos, tais como, adição de novos elementos nos modelos ou reestruturação do conteúdo deles e definição de novas associações dos elementos de implementação da LPS com características no modelo de configuração, e entre outras melhorias. Com os modelos prontos, a derivação dos produtos com seus testes pode ser iniciada. A abordagem deste trabalho propõe duas formas de derivação: (i) carregamento de testes do núcleo da LPS e (ii) carregamento de testes para os produtos.

Figura 61 - Operação Derivate Core Tests da extensão do GenArch.

A Figura 61 apresenta a forma como a derivação dos testes do núcleo (core) é iniciada na extensão do GenArch. Ela ilustra a operação Derivate Core Tests que inicia o processo de derivação do núcleo da LPS e dos testes relacionados aos elementos que compõem esse núcleo. Em seguida, o usuário da extensão do GenArch precisa definir o projeto que receberá o código do núcleo e seus testes, assim como escolher os estágios de teste que serão considerados.

Figura 62 - Assistente de derivação dos testes do núcleo.

A Figura 62 apresenta o assistente de derivação do testes do núcleo. A extensão do GenArch seleciona os artefatos do núcleo, ou seja, os elementos que estão representados no modelo de arquitetura e não apresentam relação com características variáveis da LPS. Depois da derivação, o núcleo da LPS é carregado juntamente com os testes desse núcleo pertencentes a cada possível estágio definido. Por exemplo, se for especificado a derivação de testes de unidade para o núcleo são carregados os testes anotados com @Test e com o atributo strategy igual a core e o atributo stage com valor unit.

Figura 63 - Testes de unidade em projeto de produto.

A Figura 63 ilustra testes de unidade presentes num projeto Java após a derivação. Podem ser visualizados em tal figura, os testes de unidade GenericDAOImplTest e ProdutoDAOTest, assim como o suite de teste DaoSuite. Além disso, é encontrado o teste ContextProdutoSBeanTest e outras classes de teste para elementos da camada de serviço da LPS E-Commerce. A Figura 64 apresenta o script de teste usado para testar a página de cadastro do tipo de um produto e que foi criado a partir do template TesteCadastroTipoProduto.xpt (Seção 5.2.2.4). O script da Figura 64 deve estar presente no projeto caso a opção system test tenha sido definida. Contudo, é importante ressaltar que o algoritmo atual da extensão do GenArch processa todos os templates encontrados no modelo de arquitetura, ou seja, sejam eles para testes ou não. Além disso, o script foi gerado normalmente pelo fato do template que serviu de base para a sua criação não depender de características da LPS. A funcionalidade de selecionar especificamente os templates de teste de sistema para o núcleo na derivação é alvo de trabalhos futuros.

Figura 64 - Script de teste para o Selenium IDE.

No que se refere à derivação dos produtos e dos seus testes, é usado outra operação da extensão do GenArch. Essa operação é Derivate Product Tests que aciona o assistente de carregamento dos testes dos membros de uma LPS. A Figura 65 ilustra a escolha da opção Derivate Product Tests.

Figura 65 - Operação Derivate Product Tests da extensão do GenArch.

Depois de selecionar a opção Derivate Product Tests da extensão da ferramenta GenArch, o assistente para carregamento da implementação de determinado produto e dos seus testes é iniciado. Esse assistente é semelhante ao assistente de derivação dos testes do núcleo. A diferença é que existe a necessidade de especificar uma configuração do produto alvo dos testes. A Figura 66 apresenta o assistente de geração dos testes de dado produto.

Figura 66 - Assistente de derivação dos testes de um produto.

Com a conclusão da derivação pelo assistente da Figura 66, os artefatos de implementação relacionados às características presentes na configuração do produto são derivados, assim como as classes de teste do núcleo e os testes que lidam com variabilidades da LPS. Os testes que devem ser considerados são os que pertencem aos estágios selecionados pelo usuário da extensão do GenArch. É importante destacar que a derivação atual da extensão, no que se refere especificamente aos testes de integração e sistema de produtos, os quais são implementados na forma de templates de teste, são processados independentemente dos estágios escolhidos. Dessa forma, eles são sempre identificados e customizados de acordo com as características presentes em dado produto. A correta seleção dos templates devido à necessidade de derivar testes de integração ou sistema é objeto de trabalhos futuros deste documento.

A Figura 67 apresenta testes que são carregados ao definir o estágio de integração para a derivação (opção integration test). Nesse caso, somente os testes

de integração do núcleo são gerados e sabendo que todos os templates são considerados, estarão presentes os artefatos de teste criados a partir dos templates de teste de integração.

Figura 67 - Testes de integração em projeto de Produto.

A Figura 67 mostra a classe de teste de integração ProdutoMBeanTest. Essa classe foi construída para testar ProdutoMBean, classe do núcleo dos membros da LPS. Existe também a presença da classe de teste ProdutoMBeanProductTest que foi criado a partir do template ProdutoMBeanProductTest.java.xpt (Seção 5.2.2.5). O conteúdo final da classe de

teste é definido com base na presença ou ausência da característica variável ContentApproval.

5.3 Sumário

Este capítulo apresentou uma linha de produto de sistemas web pertencente ao contexto de Comércio Eletrônico (E-Commerce) que foi usada para avaliar a abordagem proposta neste trabalho. As tecnologias de implementação usadas nessa LPS, as principais características e os mecanismos para tratar as suas variabilidades foram destacadas. Além disso, a arquitetura da LPS que se caracteriza como uma arquitetura MVC (Model - View - Controller) foi também estudada, bem como é encontrada uma visão de alguns dos elementos de implementação de tal linha de produto web.

O capítulo também apresentou a aplicação das atividades (passos) da abordagem proposta na LPS E-Commerce. Foram detalhadas as diretrizes de implementação dos artefatos de teste, como também a gerência, customização e derivação de testes. O capítulo destacou também os diagramas, código das classes

de teste de unidade e integração do núcleo, assim como a criação dos templates para definir o conteúdo dos testes de integração dos produtos ou para gerar os

scripts de teste de sistema para o Selenium IDE. Além disso, a aplicação da

anotação @Test é evidenciado de forma prática, bem como é destacado, também num contexto real de uso, como a extensão do GenArch permite: (i) a geração dos modelos (arquitetura, característica e configuração); (ii) derivação dos testes para o núcleo, ou seja, testes voltados exclusivamente para as partes comuns de um dado produto; e (iii) derivação dos testes para as partes comuns e variáveis de um membro específico da LPS, isto é, testes que envolvem tanto o núcleo como as variabilidade dos produtos gerados.

6 Trabalhos Relacionados

Nesta seção são apresentados trabalhos de pesquisa no contexto de teste de linhas de produto de software. As características de cada trabalho são destacadas, bem como são realizadas comparações entre os trabalhos relacionados existentes e a abordagem de teste de LPS proposta na dissertação.