Desenvolvimento de APIs do Software TestLink em PHP utilizando SOAP

Por Aline Priscila Schmidt | 12/09/2017 | Tecnologia

Aline Priscila Schmidt 1, Daniel Luis Puia 1, Luciene Cavalcanti Rodrigues2

¹ FATEC – Faculdade de Tecnologia de São José do Rio Preto
Caixa Postal 15.064 – 91.501-970 – São José do Rio Preto – SP – Brasil

2 Instituto Federal de Educação, Ciência e Tecnologia do Estado de São Paulo

(IFSP – Votuporanga)

Departamento de Física Aplicada e Computacional

Instituto de Física de São Carlos da Universidade de São Paulo (IFSC/USP)

 FATEC – Faculdade de Tecnologia de São José do Rio Preto

schi.schmidt@gmail.com , danielpuia@gmail.com, prof.luciene@fatecriopreto.edu.br

 

Resumo: O setor de tecnologia da informação deve estar alinhado com as necessidades da organização. Segundo Herbsleb (2001), a crescente globalização do ambiente de negócios tem afetado diretamente o mercado de desenvolvimento de software, pois na medida em que cresce a demanda por sistemas complexos a qualidade em seu desenvolvimento desponta como um fator essencial. Assim, cada novo projeto demanda a definição de toda a estratégia a ser adotada no seu tratamento, desde a definição de requisitos até o teste do produto.  O teste de software é de fundamental importância para o controle da qualidade dos produtos desenvolvidos, pois certifica que os requisitos especificados estão completamente e corretamente implementados e que o produto irá atender às expectativas dos clientes. Levando em consideração a dificuldade que as organizações mostram em relação ao teste do produto, este artigo irá mostrar a ferramenta de gerenciamento de testes TestLink, de código livre, e como realizar a sua integração com outras ferramentas já existentes através de APIs (Application Programming Interface). Nativamente, o TestLink dispõe apenas de APIs no protocolo XML-RPC. Neste artigo, mostramos como conseguimos reimplementar essas APIs utilizando o protocolo SOAP, que é mais moderno e versátil, para ser integrado com as principais linguagens de programação do mercado atual.

 

Palavras-chave: teste de software, TestLink, engenharia de software, SOAP

 

Abstract:  The sector of information technology should be aligned with the organization's needs. According to Herbsleb (2001), the increasing globalization of the business environment has directly affected the market for software development, because as the demand for complex systems grows, the quality in its development has emerged as a critical factor. Thus, each new project requires the definition of the strategy to be adopted in their treatment, from requirements definition to product testing. Software testing is essential for quality control of the developed products, because it certifies that the specified requirements are fully and properly implemented and that the product will meet the customer’s expectations. Taking into account the difficulty that organizations have in relation to product testing, this article will show the open source test management tool TestLink, and how to make its integration with other existing tools through APIs (Application Programming Interface). Natively, TestLink only supports APIs in the XML-RPC protocol. In this paper, we will show how we re-implemented these APIs using the SOAP protocol, which is more modern and versatile, to be integrated with the main programming languages ​​of the current market.

 

Keywords: software testing, TestLink, Software Engineering, SOAP

 

1. Introdução

As exigências por softwares com maior qualidade têm motivado a definição de métodos e técnicas para o desenvolvimento de softwares que atinjam os padrões de qualidade impostos. Com isso, a Engenharia de Software evoluiu significativamente nas últimas décadas procurando estabelecer técnicas, critérios, métodos e ferramentas para a produção de software de qualidade.

Desta forma, levando em consideração a crescente necessidade por garantia de qualidade, optamos por utilizar a ferramenta TestLink. Essa ferramenta apresenta algumas vantagens, como o fato de ser open source, com interface web (não exige nada além de um browser do lado do cliente), e já possuir APIs para integração com softwares já existentes.

No entanto, as APIs do TestLink utilizam um protocolo antigo, o XML-RPC, o que complica ou impede a integração com aplicações e linguagens mais novas. Nesse artigo, iremos mostrar como conseguimos converter as principais APIs do TestLink de XML-RPC (XML Remote Procedure Call) para SOAP (Simple Object Access Protocol), disponibilizando-as em formato de Web Services.

 

2. Desenvolvimento

Sendo o TestLink é um sistema open source para gerenciamento de casos de teste, dentre as várias funcionalidades que ele apresenta, uma delas é a disponibilização de APIs, capazes de expor diversos dados da ferramenta de modo que outros sistemas consigam se integrar com ele. Desta forma, utilizando a linguagem PHP e o protocolo SOAP, publicamos as APIs em formato de Web Services, que vão se integrar com um conjunto de programas de demonstração escritos em C# [TestLink explicativo, 2012].

 

2.1 Funcionamento do sistema

O TestLink é todo codificado na linguagem PHP e roda em navegadores. É recomendado que seja utilizado o PHP 5.3 ou superior, cujo suporte nativo ao protocolo SOAP é muito fraco. Para funcionar, o protocolo SOAP necessita de um arquivo de definições chamado WSDL (Web Services Description Language) , que é um XML com todas as definições de publicação dos parâmetros de entrada e saída de cada um dos métodos que o web service expõe, bem como seus tipos de dados, primitivos (int, string, boolean, etc) e complexos (arrays e classes). Assim, foi constatado que existe um problema quanto a utilização do PHP 5: escrever o WSDL à mão, o que é muito trabalhoso e demorado, além de dificultar a manutenção futura do software, pois para cada alteração na classe SOAP do TestLink existe a necessidade de se alterar o WSDL.

Para facilitar o desenvolvimento e deixar o código mais enxuto e de fácil manutenção, optamos por utilizar a biblioteca NuSOAP para o PHP. Essa biblioteca, de código aberto, possibilitou utilizar diversas funções para publicar os tipos complexos do Web Service, bem como expor os métodos convertidos para o formato SOAP de modo que possam ser consumidos por outras aplicações. O NuSOAP é inteligente o suficiente para gerar o WSDL de forma dinâmica, de modo que o desenvolvedor não precise se preocupar com ele e volte suas atenções apenas para as regras de negócio. E assim, estando os Web Services expostos, basta consumi-los.

Para demonstrar o funcionamento dos Web Services foi utilizada a ferramenta SoapUI, da SmartBear, que possui uma versão gratuita. Essa ferramenta expõe o XML de entrada e saída e a vantagem é utilizá-la como debugger, pois manipulando o XML de forma pura, é possível saber que qualquer problema que houver ao consumir o Web Service não tem a ver com a linguagem que o está consumindo.

 

2.2 Segurança do sistema

A segurança implementada foi herdada da classe XML-RPC. O administrador do TestLink gera uma chave de acesso (devKey), que deve ser utilizada como parâmetro de entrada em todos os métodos, impedindo que usuários sem acesso leiam ou escrevam dados na database do TestLink. O método checkDevKey verifica a autenticidade da chave.

Já o método Repeat é o único que não utiliza a chave, pois serve apenas para validar o funcionamento do Web Service, recebendo uma string e retornando-a. Todos os demais métodos correspondem a regras de negócio, de leitura e gravação dos dados do sistema.

2.3 Integração com o banco de dados e com a aplicação desktop

Através da construção de um conjunto de programas de demonstração, utilizando a linguagem C#, é possível consumir os Web Services. Desta forma, o sistema desktop escrito em C# pode ler e gravar dados de um sistema web escrito em PHP, que utiliza como banco de dados o MySQL. Como as duas linguagens suportam o SOAP elas conversam entre si, consistindo todas as regras de negócio, independente da tecnologia utilizada, alguns métodos que foram implementados com sucesso utilizando SOAP:

  • sayHello: Says hello to the caller (diz olá ao chamador). Utilizado apenas para debug do web service, para verificar se há comunicação.
  • repeat: Repeats what the caller says (repete o que o chamador diz). Utilizado apenas para testar o envio e retorno de informações no web service.
  • checkDevKey: Checks the devkey and returns if it is valid or not (verifica a chave do desenvolvedor e retorna se ela é válida ou não).
  • getTestProjectByName: Returns the test project by its name (retorna o projeto de testes pelo nome).
  • createTestProject: Creates a new test project (cria um novo projeto de testes).
  • getProjectTestPlans: Returns the test plans of the supplied test project (retorna os planos de teste de um projeto de testes especificado).
  • addTestCaseToTestPlan: Adds a test case version to a test plan (adiciona um caso de teste a um plano de teste).
  • createTestSuite: Creates a test suite for a test project (cria uma teste suite para um projeto de testes).
  • createTestPlan: Creates a test plan for a test project (cria um plano de teste para um projeto de testes).
  • createTestCase: Creates a test case for a test project  (cria um caso de teste para um projeto de testes).
  • createBuild: Creates a new build for a specific test plan (cria uma build para um plano de teste especificado).
  • getProjects: Get all test projects (obtém uma lista de todos os projetos de testes).
  • getTestSuitesForTestPlan: Gets a list of the test suites for a test plan (obtém uma lista das suites de teste para um plano de teste).
  • getTestCasesForTestSuite: Gets a list of the test cases of a test suite (obtém uma lista dos casos de teste de uma suite de teste)
  • getTestCasesForTestPlan: Gets a list of the test cases of a test plan (obtém uma lista dos casos de teste de um plano de testes).

A lista completa com todos os detalhes dos métodos do web service pode ser acessada pelo seguinte link: http:///testlink/lib/api/soap/server.php

Figura 1 - Visão geral do projeto

Figura 2 - Hierarquia da entidades do sistema

 

3. Resultados

No desenvolvimento das APIs, foi necessário o conhecimento em relação ao funcionamento do TestLink e da linguagem PHP. Para demonstrar a integração, utilizamos C# desktop para demonstrar a versatilidade do protocolo SOAP. O desenvolvimento das APIs possibilita que as linguagens mais novas com suporte a SOAP se integrem com o TestLink. A documentação e os comentários no código foram todos escritos em inglês para que o projeto possa ser disponibilizado à comunidade global que deseja adicionar esse novo módulo ao TestLink.

 

4. Conclusões

Por meio deste trabalho, é possível afirmar que o TestLink pode ser integrado a qualquer sistema, utilizando o protocolo SOAP. Foi possível criar níveis de acesso diferenciados para cada analista de teste, gerando suas próprias especificações de testes. A principal característica do trabalho é poder integrar o TestLink a outros sistemas, independente da linguagem de programação utilizada.

E assim, através do desenvolvimento de APIs para a ferramenta, é possível a melhoria do processo de testes de software, podendo o analista de testes observar os seguintes aspectos:

  • Maior controle durante a execução dos testes, pois será possível controlar os desvios em relação ao previsto;
  • Estudo e análises, realizadas após o encerramento do projeto e entrega do produto gerado, reforçando os pontos positivos e criando ações corretivas para os pontos negativos detectados no processo de teste como um todo;
  • Qualidade do produto final gerado, no sentido da verificação (requisitos definidos e implementados corretamente);
  • Com o armazenamento dos casos de testes no TestLink,o sistema é capaz de gerar uma documentação, permitindo perceber mais claramente as falhas relacionadas a detalhamentos incorretos ou incompletos de requisitos.

Desta forma, a partir da utilização do sistema de gerenciamento de testes, será possível medir sistematicamente cada projeto de software, corrigindo desvios e modificando as prioridades e ações corretivas a serem tomadas. Em outras palavras, será possível aprimorar os processos com o aprendizado que o teste de qualidade resultou.

 

Referências

BARRETO JUNIOR, JOSÉ. Qualidade de Software. Disponível em <http://www2.unemat.br/rhycardo/download/qualidade_em_software.pdf>. Acesso em: 14 de janeiro de 2012.

Documentação básica de instalação do TestLink. Disponível em <http://arquiteturadesistemas.pbh.gov.br/wiki/doku.php?id=docs:testlink:configuracao:util_testlink>. Acesso em: 11 de janeiro de 2012.

DUARTE, KATIA CRISTINA E.: FALBO, RICARDO DE ALMEIDA. Uma ontologia de qualidade de software. Disponível em: < <http://www.cefetrn.br/~placido/disciplina/pgp/material/Wqs2000.pdf>. Acesso em: 12 de janeiro de 2012.

J. C. MALDONADO, A. M. R. VINCENZI, E. F. BARBOSA, S. R. S. SOUZA, and M. E. DELAMARO. Aspectos teóricos e empíricos de teste de cobertura de software. Technical Report 31, Instituto de Ciências Matemáticas e de Computação – ICMC-USP, Junho de 1998.

TestLink explicativo. Disponível em <http://www.testexpert.com.br/?q=node/650>. Acesso em: 01 de feveiro de 2012.

Artigo completo: