É muito raro os gestores de negócio e/ou Arquitectos SOA terem à sua disposição, de forma simples e rápida, informação confiável sobre a evolução dos processos de QA dos serviços ou das orquestrações de serviços que estão em desenvolvimento. De igual forma, não é habitual que os gestores de negócio e/ou de operações partilhem uma visão comum sobre o desempenho dos serviços já em produção.
Outra dificuldade que frequentemente tem forte impacto nas práticas de QA de uma arquitetura orientada a serviços é o conhecimento técnico detalhado que é exigido aos testadores ou aos key users, o que muitas vezes limita a execução de testes com maior profundidade.
Tendo em conta as dificuldades acima referidas, e com vista a melhorar o seu processo de QA, a Link concebeu uma plataforma integrada para testes em arquiteturas orientadas a serviços, cujos principais objetivos a que se propôs foram:
- 1) Permitir que os diferentes perfis comprometidos no desenvolvimento e governação de uma arquitetura SOA (Arquitectos, gestores de negócio, testadores funcionais, operações, key users), partilhem uma visão unificada e consistente do progresso das iniciativas de QA.
- 2) Mitigar a necessidade de conhecimentos técnicos detalhados requeridos para a execução de testes aos perfis mais funcionais.
- 3) Suportar processos de QA que abranjam tanto a fase prévia à entrada em produção dos serviços como o acompanhamento após a entrada em produção.
Plataforma Integrada (principais características)
A solução concebida pela Link resultou da integração de diversos tipos de ferramentas frequentemente utilizadas tanto na área do Quality Assurance como na área das arquiteturas SOA. Isoladamente, cada uma destas ferramentas apenas está vocacionada para garantir parte do processo de QA, ou apenas permite um acompanhamento parcial das iniciativas SOA (sem abranger o QA).
Com a integração de vários tipos de ferramentas numa única plataforma, a Link procurou complementar as valências de cada uma delas de forma a contribuírem para um processo de QA unificado e consistente.
Eliminar limitações à execução de testes funcionais
Um dos principais óbices nos testes a serviços e orquestrações é a dificuldade com que os testadores funcionais (que dominam as particularidade do negócio que os serviços sustentam) se deparam na execução dos seus testes.
Para a executar testes a um serviço é necessário recorrer a uma ferramenta de automação de testes a serviços, o que requer um domínio técnico da linguagem utilizada pela ferramenta, bem como um conhecimento das API’s dos serviços que irão ser testados.
De uma forma geral os testadores funcionais e Key users não possuem este conhecimento, o que se torna uma restrição à execução de testes funcionais, que acabam muitas vezes por não ser executados com a profundidade necessária.
De forma a contornar este problema procedeu-se, no seio desta plataforma, à integração entre uma ferramenta de automação de teste funcionais a serviços e uma ferramenta de gestão de testes, habitualmente utilizada pelos key user e testadores funcionais para planear e registar a execução dos seus testes.
A ferramenta de gestão de testes foi estendida por forma a permitir que um testador, uma vez concluída a tarefa de especificação de testes, alerte através do envio de um e-mail as equipas de desenvolvimento (ou testadores com um perfil mais técnico) que os testes se encontram especificados e estão prontos para serem automatizados.
Por sua vez a ferramenta de automação de testes funcionais a serviços foi também estendida com um mecanismo que permite que as equipas de desenvolvimento (uma vez terminada a automação dos testes) possam associar os testes codificados aos testes especificados na ferramenta de gestão de testes.
O resultado desta associação permitirá aos testadores funcionais despoletar a execução dos testes diretamente da ferramenta de gestão de testes, bem como receber e registar os resultados da execução.
A plataforma passou assim a permitir:
- a) A existência de um mecanismo de comunicação entre a comunidade de testadores funcionais e key users e as equipas de desenvolvimento ou testadores técnicos.
- b) Aos testadores funcionais a possibilidade de planearem, especificarem e executarem autonomamente os seus testes funcionais sem terem de abandonar a ferramenta de trabalho com a qual estão mais familiarizados, e sem terem de dominar a complexidade técnica das API e da ferramenta de automação de teste funcionais a serviços.
Gestão eficaz de defeitos
Como tal, esta plataforma foi complementada com a integração de uma ferramenta de gestão de defeitos que permite aos testadores funcionais, aquando da ocorrência de um defeito na execução de um teste, proceder ao registo e atribuição dos mesmos às equipas de desenvolvimento diretamente a partir da ferramenta de gestão de testes.Desta forma todo o processo de reporte de um defeito poderá ser iniciado diretamente a partir da ferramenta de gestão de testes, ficando o defeito aberto automaticamente associado ao teste onde foi detetado (principio da rastreabilidade).Por seu lado as equipas de desenvolvimento serão automaticamente notificadas por e-mail da abertura de um defeito na ferramenta de gestão de defeitos onde poderão consultar toda a informação a respeito do defeito bem com eventuais evidências recolhidas.
A partir da ferramenta de gestão de testes os testadores funcionais poderão também fazer todo o acompanhamento dos defeitos associados a um teste, desde a sua abertura até ao seu fecho e assim saber quando poderão re-executar um teste (após a correção dos defeitos).Através desta integração conseguiu-se assim agregar a esta plataforma uma gestão eficaz do ciclo de vida dos defeitos, assegurando a rastreabilidade entre os testes e os correspondentes defeitos reportados, disponibilizando uma comunicação fluida entre os testadores funcionais e as equipas de desenvolvimento, e permitindo mais uma vez à comunidade de testadores funcionais a possibilidade de o fazer a partir da ferramenta de gestão de testes com a qual estão mais familiarizados.
Estender o QA à governação dos serviços
A visibilidade sobre o andamento das iniciativas de QA, para além das equipas de testadores ou das próprias equipas de desenvolvimento, é algo de pouco frequente e que motiva que arquitetos SOA, equipas de desenvolvimento e testadores tenham muitas vezes visões diferenciadas sobre o progresso do desenvolvimento de novos serviços ou orquestrações.
Para obviar este problema, esta plataforma foi enriquecida com uma integração entre a ferramenta de automação de testes funcionais aos serviços (onde os testes são efetivamente executados) e uma ferramenta de governação de serviços. Esta integração permite que os resultados da execução dos testes (resultados, erros, nº de execuções, etc…) sejam propagados à ferramenta de governação ficando associados aos respetivos serviços e orquestrações.
Desta forma, quando um arquiteto SOA aceder à ferramenta de governação SOA poderá encontrar para além de toda a informação habitual referente à governação dos serviços (Ex: dependências, endpoints, interfaces, WSDL), informação complementar sobre o progresso das atividades relacionadas com o processo de QA (plano de testes, testes executados, resultado dos testes etc..).
No sentido inverso esta integração permite também, sempre que for detetado um erro na execução de testes a um serviço, informar a ferramenta de automação de testes funcionais, sobre quais os serviços dependentes do serviço testado. Esta informação é por sua vez agregada ao resultado da execução dos testes e propagada até à ferramenta de gestão de testes onde surgirá como um alerta aos testadores funcionais.
Com esta integração, conseguiu-se por um lado enriquecer a visão que a comunidade de arquitetos SOA pode ter sobre o progresso dos serviços e orquestrações em desenvolvimento, e por outro lado alertar testadores funcionais sobre as dependências entre serviços onde foram detetados problemas na execução de testes.
QA para além da entrada em produção
Para além dos serviços que estão em desenvolvimento ou prestes a entrarem em produção, outro aspeto com o qual a governação SOA se preocupa é o desempenho dos serviços em produção.
Mais uma vez, e também nesta matéria, não é comum uma visão consistente e partilhada entre gestores de operações e os arquitetos SOA.
A pensar nesta problemática foi adicionada a esta plataforma uma integração entre uma ferramenta de automação de teste de carga a serviços e a ferramenta de governação.
Esta integração permite (da mesma forma que para os testes funcionais) que após a execução dos testes de carga os resultados sejam exportados para a ferramenta de governação e fiquem associados aos respetivos serviços. Desta forma os arquitetos SOA passam a dispor em tempo real na sua ferramenta de governação uma visão sobre o progresso dos testes de performance aos serviços de forma geral, e em particular sobre os testes de desempenho aos serviços já em produção, podendo atuar de imediato.
Envolver gestores de negócio nas iniciativas de QA
Uma ferramenta de arquitetura empresarial permite visualizar de forma fácil as relações entre diversos domínios (processos de negócio, aplicações, projetos, serviços, orquestrações) de uma organização e a forma como essas relações se alteram ao logo do tempo.
No seio desta plataforma foi também assegurada uma integração entre a ferramenta de governação SOA e uma ferramenta de arquitetura empresarial, com o intuito de adicionar a esta ferramenta a possibilidade de visualizar as relações de conceitos associados ao QA (Ex: casos de testes, bateria de testes) e os restantes conceitos nela habitualmente mapeados (Ex: serviços, orquestrações, aplicações, etc…).
Desta forma, será possível aos gestores de negócio visualizarem sob a forma de “mapas” os testes planeados para um dado serviço e a data prevista de execução, e ao longo do tempo analisar a evolução do estado de execução dos testes de um serviço num determinado período, ou ainda visualizar dashboards sobre o estado de maturidade de uma orquestração indicando o número de serviços testados com sucesso ou percentagem de casos testes passados.
Ferramentas utilizadas
Ferramenta de gestão de testes:
A ferramenta de gestão de testes utilizada na plataforma foi o TestLink. As razões que levaram à seleção desta ferramenta foram essencialmente duas.
- A primeira por se tratar de uma ferramenta amplamente disseminada e popular na comunidade de testadores funcionais, e cuja funcionalidades atendem as principais necessidade destes tipo de utilizadores.
- A segunda por se tratar de uma ferramenta opensource, que não requer qualquer tipo de licenciamento.
Ferramenta de gestão defeitos:
Para ferramenta de gestão de defeitos foi selecionada a ferramenta Mantis. Esta ferramenta foi selecionada por permitir uma integração simples com o TestLink (ferramenta de gestão de testes), e por também ela ser uma ferramenta freeware que não necessita de qualquer tipo de licenciamento.
Ferramenta de automação de testes funcionais a serviços:
Como ferramenta de automação de testes funcionais a serviços selecionou-se o SoapUI. Para além da forte disseminação desta ferramenta no seio das equipas de desenvolvimento em arquiteturas orientadas a serviços, as principais razões da sua seleção são o facto de ser uma ferramenta opensource o que permitiu a sua fácil integração na plataforma, e por também ela não requisitar licenciamento.
Ferramenta de automação de testes de carga a serviços:
A ferramenta selecionada para automação de testes de carga a serviços foi o LoadUI. Esta ferramenta pertence ao mesmo fabricante do SoapUI e as razões que motivaram a sua seleção são essencialmente as mesmas.
Ferramenta de governação SOA
A ferramenta de governação SOA selecionada para integrar a plataforma foi a ferramenta OER (Oracle Entreprise Repository).
A plataforma está no entanto preparada para poder integrar ferramentas de governação de outros fabricantes.
Ferramenta de arquitetura empresarial (Enterprise Architecture)
A ferramenta de arquitetura empresarial selecionada foi o EAMS, desenvolvido pela Link, e que se encontra em utilização corrente em diversos clientes, de áreas de negócio que vão desde a Banca às Operadores de Telecomunicações, passando pelas Utilities.
O EAMS possui também a flexibilidade acrescida de poder ser integrado com ferramentas de governação de outros fornecedores para além da Oracle.