O teste de software é uma etapa integrante das principais metodologias de desenvolvimento de software existentes. Entretanto, ainda não existia um método para teste de software em PON. O estudo e proposição de um método para teste de software em PON resultou em várias atividades que culminaram no desenvolvimento dessa dissertação.
Inicialmente, foram realizadas pesquisas em trabalhos do grupo do PON para conhecer o atual estado da arte e da técnica desse paradigma. A partir disso, para aplicar o conhecimento adquirido sobre o estado da técnica do PON, foi modelado e desenvolvido um software de combate aéreo seguindo as etapas do DON. É importante ressaltar que até então poucas aplicações haviam sido concebidas sob os princípios desse paradigma, com escopo relativamente modesto, que, de certa forma, não contribuía para um aprendizado orientado a exemplos, oferecendo poucas possibilidades de desenvolvimento aos desenvolvedores e estudantes do PON. Então, esse software auxiliou também na visão de análise e projeto de uma aplicação em PON.
Constatou-se também, que o PON tem sido materializado em termos de programação e modelagem, porém não possuía um método formalizado para orientar a atividade de teste. O PON é fundamentado nos melhores conceitos do PI e PD, no entanto, ele difere substancialmente em relação à definição de instruções, sintaxe e funcionamento. Por isso, técnicas e critérios de teste comuns não podem
ser simplesmente aplicadas, sem levar em consideração as particularidades desse paradigma.
Com isso, foi realizada uma ampla pesquisa para conhecer as técnicas de teste de software mais comuns e representativas que possibilitassem a compreensão mais aprofundada deste tema. Constatou-se que, em geral, o PI é que mais possui trabalhos relacionados a teste de software por ter a maioria das linguagens de programação mais utilizadas. Por sua vez, o teste de software no PD (principalmente SBRs) envolve, principalmente, a representação do sistema por meio de uma rede de Petri. Porém, a representação do PON por meio de redes de Petri ainda não está plenamente definida e formalizada o que inviabiliza o estudo e proposição de testes com esta técnica.
Então, buscou-se compreender como são realizadas as principais atividades de teste de software. Constatou-se com base na literatura que o teste de software ocorre, geralmente, em quatro fases:
• Teste unitário: testa a menor unidade ou bloco de instrução de um programa; • Teste de integração: testa a integração das unidades que foram testadas
individualmente;
• Teste de validação: testa o software de acordo com o documento de requisitos;
• Teste de sistema: testa o sistema por completo incluindo a interação com outros softwares, banco de dados, conexões de rede, etc.
Notou-se que apenas as fases de teste unitário e teste de integração buscam exercitar o código e a lógica interna do software. As fases de teste de validação e teste de sistema não consideram o código fonte ou estruturas internas do software. Assim, para o contexto do PON, optou-se por estudar as fases de teste unitário e teste de integração, sendo que as fases de teste de validação e teste de sistema, a priori, podem ser realizadas no PON da mesma maneira que se faz em outros paradigmas.
A proposta de teste de unidade em PON considera as menores unidades testáveis do paradigma que são Premise, Condition e SubCondition, Rule e FBE (que envolve Method). Cada uma destas unidades possui particularidades de implementação e critérios de teste. Premise utiliza a determinação de classes de equivalência e análise de valor limite para determinar casos de teste. Condition
avalia o estado de SubConditions ou Premisses para que ela possa ser aprovada.
Rule avalia o estado de sua Condition. Methods são testados como métodos OO e
sugere-se o uso do critério de teste funcional.
A proposta de teste de integração em PON considera o funcionamento e o comportamento de todas as entidades em conjunto na realização de casos de uso. Testes de integração podem ser realizados por meio de duas abordagens que se complementam: (1) Teste sobre a descrição e funcionalidades do caso de uso e (2) Teste diretamente sobre as notificações entre as entidades PON que implementam o caso de uso.
Com isso, essa dissertação preencheu uma lacuna que havia neste paradigma: o desenvolvimento de um método de teste para processos de desenvolvimento de software usando o PON. As contribuições desta dissertação estão voltadas para a determinação de teste de software nas fases de teste unitário e teste de integração e são utilizados critérios de caixa-branca e caixa-preta para a geração de casos de teste.
O caso de estudo permitiu a aplicação da proposta do método de teste de software em toda a aplicação apresentada no Capítulo 3, aprofundando mais o conteúdo e aprendizado sobre o método. Também, foram apresentadas demonstrações, comentários e recomendações sobre o teste de software em PON. O método de teste de software mostrou-se útil para geração de casos de teste para as fases de teste unitário e teste de integração.
O PON permite a alteração do estado de Attributes, Premisses, Rules e
Methods em qualquer parte do programa. Cada um desses elementos pode
influenciar no comportamento de outras entidades já existentes. Certamente, esta característica exige maior atenção do programador, tendo em vista o potencial impacto que decorre da execução de cada entidade, tornando obrigatório levar isto em consideração.
Assim, a união das contribuições desta dissertação e outros trabalhos aqui apresentados, bem como as contribuições apresentadas nos demais trabalhos relacionados ao PON, certamente abrirão margem para outros trabalhos que contribuirão ainda mais com o amadurecimento do paradigma em questão, o qual atualmente é considerado um paradigma emergente. Certamente, com novos avanços nessas áreas em estudo será possível vislumbrar novos métodos de teste de software em PON.