• Nenhum resultado encontrado

software estão entre as mais custosas do processo de desenvolvimento (JURISTO et

al., 2004), uma das condições necessárias para sucesso de projetos de software

reside no planejamento cuidadoso dos testes. Esse planejamento é vital para que, dentre outros fatores, as funcionalidades identificadas nos documentos de requisitos do software sejam executadas sob todas as condições e regras definidas pelos requisitos, evitando-se assim parcialidade nos testes. Dentro do Plano de Testes, os Casos de Teste definem o conjunto de dados a serem aplicados e os resultados

89 esperados, enquanto os Procedimentos de Testes referenciam os Casos de Teste e definem os passos para a execução efetiva dos testes (MYERS, 2004).

No Teste Baseado em Modelos (MBT – Model Based Testing) (APFELBAUM e DOYLE, 1997), modelos são usados para descrever os vários elementos relacionados ao Teste de Software, dentre eles os casos e procedimentos de teste. Em relação aos testes funcionais, esses modelos são obtidos a partir das especificações funcionais do sistema.

Algumas abordagens na literatura exploram a geração dos casos e procedimentos de teste a partir de casos de uso e modelos de teste (HARTMANN et

al., 2005; GÓIS et al., 2010). Nestes casos, porém, a criação dos modelos de teste fica

sob inteira responsabilidade do Analista de Testes, pois estas abordagens não definem como construir estes modelos a partir da especificação dos requisitos.

A abordagem proposta neste trabalho usa como base a especificação dos casos de uso, estruturada de acordo com o UCModel, e define um conjunto de regras de transformação que apóia a geração automática dos modelos preliminares de testes funcionais diretamente a partir dessa especificação.

Para construção do modelo de testes foi adotado, por oportunidade e conveniência, o metamodelo TDE (HARTMANN et al., 2005). Esse metamodelo foi selecionado em virtude do conhecimento prévio de membros do grupo de Engenharia de Software Experimental (ESE) da UFRJ sobre esse modelo e da colaboração existente entre o grupo ESE e a Siemens Corporation Research/USA, onde esse metamodelo foi desenvolvido e é atualmente explorado em projetos reais de larga escala com o apoio de uma ferramenta proprietária denominada TDE/UML©.

O processo de geração dos casos e procedimentos de testes funcionais a partir das especificações de casos de uso é realizado em 3 etapas distintas:

1) Derivação do modelo preliminar de testes: ocorre após a especificação e validação da especificação e produz um modelo preliminar de testes representado como um diagrama de atividades da UML2 (OMG, 2010a) e descrito de acordo com o metamodelo TDE. Este modelo é chamado de preliminar porque, neste momento, existem lacunas no modelo que correspondem aquelas informações relevantes no contexto do teste funcional, mas que não puderam ser extraídas diretamente da especificação de casos de uso devido a diferenças conceituais entre esses dois modelos.

2) Edição do modelo de testes: nesta atividade os modelos gerados na atividade anterior são editados e complementados com um conjunto de informações que são relevantes apenas no contexto de teste, como por

90 exemplo, a definição de classes de valores a serem aplicados durante a execução dos testes. A complementação do modelo de testes é necessária porque o modelo de casos de uso trata de conceitos abstratos, enquanto o modelo de testes lida com valores concretos associados a esses conceitos para que o comportamento do sistema possa ser avaliado a partir destes valores. Para auxiliar o analista de testes nessa tarefa, o modelo preliminar de testes é incrementado com uma série de comentários que procuram indicar quais regras são relevantes em determinado ponto do diagrama. 3) Geração dos casos e procedimentos de teste: a partir dos modelos de

teste devidamente complementados, essa atividade se limita a percorrer o modelo de testes e gerar os caminhos possíveis de execução no diagrama, aplicando os valores definidos em cada ponto de decisão.

Os passos 1 e 3 desse processo são apoiados por uma ferramenta chamada ModelT2 (ALBUQUERQUE et al., 2010), definida e construída no escopo deste trabalho, que será apresentada em detalhes no capítulo 6.

4.8 Conclusão

Neste capítulo foi apresentada uma visão detalhada da abordagem proposta e dos conceitos que a compõem, além dos documentos e artefatos envolvidos na produção da especificação de requisitos funcionais. Fazem parte do escopo dessa abordagem:

1) Um conjunto de atividades de especificação e inspeção de requisitos funcionais, alinhadas com o processo de engenharia de requisitos previsto no SEWBOK (SAWYER e KOTONYA, 2004), além de atividades para geração de testes funcionais a partir de descrições de casos de uso;

2) Um gabarito para o documento de requisitos, alinhado com o padrão IEEE 830-1998 (IEEE, 1998) e com o gabarito de especificação Volere (ROBERTSON e ROBERTSON, 2010) e, organizado para apoiar a especificação de requisitos funcionais de aplicações Web segundo a abordagem proposta;

3) Um gabarito para especificação de casos de uso, organizado a partir do corpo de conhecimento existente na literatura técnica, e que define os elementos para descrição do comportamento do sistema;

91

 Um conjunto de modelos conceituais que capturam os aspectos estruturais e comportamentais relacionados ao domínio do problema;

 Um conjunto de diagramas de atividades que formalizam o comportamento do sistema tanto no nível de abstração do caso de uso quanto no detalhamento das ações do sistema, e;

 Um conjunto de regras que define e restringe o comportamento do sistema, classificadas de acordo com as perspectivas de projeto Web nas quais impactam.

5) O metamodelo UCModel, definido com o objetivo de estruturar a especificação dos casos de uso em torno de um conjunto de regras e restrições bem definido e prover um arcabouço sintático e semântico a partir do qual é possível explorar questões relacionadas à qualidade da especificação, e;

6) Um conjunto de regras de transformação modelo-modelo que possibilitam a geração automática de um modelo preliminar de testes funcionais a partir da especificação de casos de uso, proporcionando ao analista de testes um ponto de partida consistente com a especificação a partir do qual os modelos definitivos de teste podem ser obtidos.

Assim, a abordagem apresentada como objeto desta tese, procura contemplar o espectro que engloba desde a análise e classificação dos requisitos funcionais, de forma alinhada à visão dos métodos Web contemporâneos, passando pela estruturação da especificação em torno de um conjunto de modelos que representam esses requisitos e formalizam o comportamento do sistema com o apoio de um metamodelo, chegando até o controle de qualidade da especificação (técnicas de inspeção) e do produto final (geração de casos e procedimentos de testes funcionais) através da exploração do arcabouço sintático e semântico que apóia a própria especificação dos requisitos. O tratamento dos requisitos a partir de uma visão horizontal, representada pela cobertura no tratamento dos requisitos desde a sua análise e classificação até o seu desdobramento em termos de garantia da qualidade do produto, aliada à uma visão vertical, representada pelo detalhamento e formalização em termos de modelos das características comportamentais do sistema, representam diferenciais desta abordagem em relação a outros trabalhos que também investigaram questões relacionadas à especificação de requisitos para aplicações de software (INSFRAN et al., 2002; ESCALONA et al., 2003; SOMÉ, 2006; ESCALONA et

92 No capítulo 5 será apresentado em detalhes o metamodelo UCModel que foi definido no contexto deste trabalho com o objetivo de estruturar a especificação de casos de uso através de um conjunto de critérios e restrições, que visam formalizar a descrição dos casos de uso através de um arcabouço com estrutura sintática e semântica bem definidas.

O capítulo 6 apresenta a infra-estrutura computacional organizada com o propósito de apoiar a abordagem de especificação e garantia da qualidade proposta nesta tese, além de detalhar as ferramentas UseCaseAgent e ModelT2 que compõem essa infra-estrutura.

No capítulo 7 são apresentados dois estudos que foram planejados e conduzidos com o objetivo de avaliar a abordagem proposta neste trabalho, juntamente com o metamodelo UCModel e a ferramenta UseCaseAgent que apóia a atividade de especificação.

93

5 Metamodelo para Especificação de Casos de

Uso

Neste capítulo é apresentado o metamodelo UCModel, criado com o objetivo de apoiar a descrição de casos de uso segundo um conjunto de critérios e restrições bem definido, e que compõe a abordagem proposta nesta tese. São apresentados os princípios que nortearam a criação desse metamodelo, os elementos e as restrições que o compõem e os desdobramentos do seu uso em relação ao controle de qualidade da especificação

5.1 Introdução

A organização e adoção de um gabarito para descrição dos casos de uso representa o primeiro passo no sentido de padronizar essas descrições, pois ele oferece uma estrutura a partir da qual é possível capturar um conjunto de características relevantes do caso de uso, sob determinada perspectiva. Essa padronização oferece, ainda, um foco de leitura para os casos de uso baseado na definição dos componentes do gabarito, possibilitando que os membros da equipe e demais interessados no projeto tenham um entendimento comum sobre esses artefatos (COCKBURN, 2000; ARMOUR e MILLER, 2001).

Por outro lado, a natureza livre das descrições textuais dos elementos que compõem o caso de uso limita sua utilização à comunicação entre os stakeholders. Apesar dessa comunicação ser relevante para o sucesso de projetos de software, o frágil apoio semântico proporcionado pelas descrições textuais não permite a organização de uma infra-estrutura computacional capaz de (WILLIAMS et al., 2005):

 Oferecer apoio adequado à especificação dos casos de uso, principalmente dos comportamentos que o compõem (fluxos principal, alternativos e de exceção);

 Apoiar um procedimento (semi) automatizado de avaliação da qualidade dos casos de uso, e;

 Viabilizar transformações modelo-modelo ou modelo-texto a partir das especificações dos casos de uso com o objetivo de apoiar as fases subseqüentes do desenvolvimento.

94 Nesse sentido, neste capítulo é apresentado um metamodelo, denominado UCModel, cujo objetivo é permitir a organização das especificações de casos de uso segundo um conjunto de critérios e restrições bem definido, e oferecer uma estrutura sintática e semântica a partir da qual seja possível:

 Avaliar as especificações dos casos de uso sintática (revisão com apoio ferramental) e semanticamente (inspeções), e;

 Apoiar a garantia da qualidade do produto final, através da geração semi- automática de casos e procedimentos de testes funcionais.

O metamodelo UCModel foi definido como uma extensão do metamodelo da UML (OMG, 2010a), especializando parte dos conceitos relacionados ao diagrama de atividades para capturar tanto as informações básicas acerca dos casos de uso quanto os fluxos das ações que descrevem o seu comportamento.

Este capítulo apresenta o metamodelo UCModel e os princípios que orientaram a sua criação. São detalhados os elementos que compõem o UCModel, as extensões do metamodelo da UML usadas para defini-los e as restrições que possibilitam a estruturação das descrições dos casos de uso segundo os critérios e princípios desse metamodelo.