• Nenhum resultado encontrado

Neste capítulo é apresentada uma abordagem chamada BISTWS (Built-in Structural Testing of Web Services) (Eler et al., 2010, 2011a) criada para apoiar diversas perspectivas relacionadas ao teste de serviços. O objetivo geral da abordagem é (i) apoiar desenvolvedores na criação de serviços com maior testabilidade e (ii) apoiar integradores no teste de aplicações baseadas em serviços. Os serviços desenvolvidos por meio da abordagem BISTWS são chamados de serviços testáveis.

Serviços testáveis são serviços capazes de oferecer aos integradores facilidades para o uso da técnica de teste estrutural, mas sem expor sua implementação. Eles possuem uma interface de teste que exporta operações para que os integradores possam consultar a cobertura estrutural obtida com base na execução de um conjunto de casos de teste. Além disso, os serviços testáveis também oferecem metadados de teste para auxiliar os integradores na criação de casos de teste significativos para que uma boa cobertura estrutural seja alcançada.

A abordagem BISTWS contribui com o aumento da testabilidade dos serviços porque ela co- bre dois dos três fatores principais relacionados à testabilidade dos serviços: perspectiva de teste e forma de distribuição. Em relação à perspectiva de teste, a abordagem apoia o desenvolvedor na criação de serviços testáveis que possuem alta testabilidade, o que pode representar uma vantagem uma vez que a testabilidade é um importante fator de qualidade (Tsai et al., 2006), e o integrador e o certificador, que podem usar as facilidades oferecidas pelo serviços testáveis para combinar a

CAPÍTULO 4. UMA ABORDAGEM DE TESTE ESTRUTURAL DE SERVIÇOS 36 técnica de teste estrutural com as técnicas baseadas em especificação durante o teste ou a certi- ficação dos serviços. Portanto, mesmo as perspectivas limitadas pelo encapsulamento do serviço podem aplicar outras técnicas de teste além das técnicas caixa-preta. Em relação à forma de distri- buição, apesar de não exportarem o código fonte para clientes externos, os serviços gerados pela abordagem BISTWS são distribuídos juntamente com uma interface de teste que possui operações que permitem uma melhor observação de sua estrutura.

De acordo com os níveis de teste de serviços definidos por Canfora e Penta (2009), a abordagem BISTWS apoia o teste das funcionalidades e o teste de regressão dos serviços, sem considerar o teste de integração e o teste dos requisitos não funcionais. Os serviços testáveis podem ser testados usando tanto a técnica caixa-preta quanto a técnica caixa-branca. As informações estruturais dos serviços testáveispodem ser usadas para definir quando os serviços devem ser testados em tempo de execução e como devem ser selecionados casos de teste para verificar possíveis mudanças em seu comportamento. Mais detalhes sobre o teste de regressão são apresentados no Capítulo 6, em que é apresentada uma abordagem de monitoração usando teste estrutural. A abordagem BISTWS não se propõem a apoiar o teste não funcional e nem o teste de integração entre serviços.

Uma ilustração da abordagem BISTWS é apresentada na Figura 4.1. Existem três atores im- portantes na abordagem: o desenvolvedor, o Serviço de Teste e o integrador. O desenvolvedor é o responsável por usar um Serviço de Teste fornecido pela abordagem BISTWS para criar um ser- viço testávela partir de um serviço comum. A transformação de um serviço comum em um serviço testável é chamada de instrumentação e é o processo pelo qual o serviço ganha a capacidade de registrar informações sobre sua execução sempre que for executado no contexto de uma sessão de teste. Além disso, o serviço recebe uma interface de teste contendo operações que oferecem apoio ao teste estrutural.

O integrador é o responsável por testar os serviços testáveis isoladamente ou no contexto de uma aplicação. Durante a atividade de teste, o serviço testável registra informações sobre sua própria execução em um arquivo ou banco de dados localizados no mesmo servidor em que ele está publicado. Após o teste, o integrador pode solicitar que o serviço testável gere um relatório de cobertura estrutural com base nos casos de teste executados. O serviço testável envia as infor- mações de execução para o Serviço de Teste. O Serviço de Teste usa as informações de execução para verificar quais requisitos de teste foram cobertos. Para isto ele consulta os requisitos de teste que foram gerados durante a instrumentação do serviço testável e que ficam armazenadas local- mente. Ao calcular a cobertura, o Serviço de Teste envia um relatório para o serviço testável que é imediatamente repassado ao integrador.

Além da cobertura estrutural, o integrador pode utilizar metadados de teste fornecidos pelo serviço testávele que foram gerados pelo desenvolvedor. Os metadados auxiliam o integrador na geração de casos de teste significativos para cobrir os requisitos de teste do serviço testável e atingir uma alta cobertura estrutural. Os serviços testáveis também possuem a funcionalidade de calcular a cobertura estrutural com base em um perfil de utilização, em que a cobertura é calculada com

CAPÍTULO 4. UMA ABORDAGEM DE TESTE ESTRUTURAL DE SERVIÇOS 37

Serviço

de

Teste

Desenvolvedor 1: usa 3: gera

Serviço

Testável

4: publica Informações de execução 6: registra dados de execução Serviços instrumentados 2: armazena Integrador 5: Testa 7: Solicita cobertura 9: solicita cobertura

8: consulta dados de execução 11: informa cobertura estrutural 12: informa cobertura estrutural 10: consulta

Figura 4.1: Uma ilustração da abordagem BISTWS

base nas operações e funcionalidades do serviço que são realmente usadas, ao invés de calcular a cobertura para todo o serviço.

Para que o uso da abordagem BISTWS seja possível é necessário que os atores da aborda- gem sigam regras de governança, que são regras criadas para garantir que cada ator desempenhará adequadamente o seu papel na abordagem. Os desenvolvedores devem concordar em fornecer o código para o Serviço de Teste e concordar em expor detalhes internos do serviço para os inte- gradores por meio dos relatórios de cobertura, mas sem expor o código. O Serviço de Teste, em contrapartida, deve manter sigilo sobre as informações recebidas. Uma lista de regras de gover- nança que devem ser seguidas pelos atores da abordagem é apresentada na Seção 4.5.

A seguir são apresentadas em detalhes as funções de cada ator e as interações que ocorrem entre eles para que seja possível a aplicação da abordagem e a utilização do teste estrutural no contexto de arquiteturas orientadas a serviços.