• Sonuç bulunamadı

2. Araştırmanın Metodu ve Kaynakları

2.2. HADİSÇİLİĞİ

2.2.3. Hadisleri Şerhi

2.2.3.3. Garib Kelimeleri Açıklaması

critério Análise de Mutantes é o escore de mutação que é calculado como a razão entre o número de mutantes mortos e o número de mutantes não equivalentes. O escore de mutação varia entre 0 e 1 e fornece uma medida objetiva de quanto o conjunto de casos de teste analisado aproxima-se da adequação (Delamaro et al., 2007a).

2.4

Ferramentas de Apoio ao Teste de Software

A atividade de teste é reconhecidamente uma atividade de alto custo e geralmente devido a falta de recursos disponíveis ela é realizada somente nas últimas fases do desenvolvimento de software (Myers et al., 2004). Ferramentas que auxiliem os testes são importantes pois além de facilitar a aplicação correta da técnica, ajudam o testador na construção e execução dos casos de testes. A automatização de algumas atividades contribui também para a redução dos custos e diminui a possibilidade do testador cometer enganos.

Apesar dos benefícios evidentes, poucas ferramentas foram desenvolvidas com o objetivo de cobrir todas as fases de testes. As ferramentas existentes, em geral, focam na aplicação de uma técnica específica para uma determinada linguagem de programação.

A técnica Funcional não exige uma rigorosidade tão grande quando comparado com outras técnicas, e por isso poucas ferramentas são construídas para dar suporte a seus critérios. O parti- cionamento em classe de equivalência e a análise de valor limite geralmente são documentadas utilizando apenas um editor de texto e testadas a partir da execução do programa.

O framework JUnit (Riehle, 2008), apesar de não se basear em nenhuma técnica, pode auxiliar a atividade de testes pois, permite a organização e execução dos casos de teste. O JUnit permite também a automatização do teste de regressão. O teste de regressão é caracterizado pela re-execução de todos os casos de teste quando necessário. Essa atividade ocorre geralmente durante a fase de correção dos erros encontrados. Assim, após o programa ser corrigido pelos desenvolvedores os testes precisam ser executados novamente para garantir que os erros foram corrigidos e novos erros não foram introduzidos.

Da mesma forma que o JUnit auxilia a atividade de teste para programas em Java, a fer- ramenta CUTE (Sommerlad e Graf, 2007) oferece suporte para programas desenvolvidos nas linguagens C e C++.

Como os requisitos da técnica Estrutural são gerados a partir do código-fonte e aqueles exigem um considerável esforço para serem identificados, diversas ferramentas foram desen- volvidas com o objetivo de automatizar algumas atividades dos critérios desta técnica. Em

Barbosa et al. (2007); Maldonado et al. (1998) são descritas diversas ferramentas que apoiam a técnica Estrutural, dentre elas destacam-se:

• ASSET (Frankl e Weyuker, 1985): ferramenta desenvolvida na New York University em 1985 para o teste de programas Pascal com suporte aos critérios baseados na análise de fluxo de dados.

• xSuds (Agrawal et al., 1998): ambiente desenvolvido com o objetivo de fornecer uma plataforma de testes contendo um conjunto de ferramentas de apoio a geração de ca- sos de teste, a análise e depuração de programas. Atualmente o ambiente xSuds vem sendo comercializado pela IBM com suporte aos critérios de teste Estrutural em progra- mas escritos em C e C++. Para o teste de programas em C a ferramenta apoia a apli- cação dos critérios de fluxo de controle (Todos-Nós e Todos-Arcos) e de fluxo de dados (Todos-c-Usos, Todos-p-Usos e Todos-Usos) e para a linguagem C++ apenas os critérios baseados no fluxo de controle.

• Poke-tool (Chaim, 1991): ferramenta proposta inicialmente para suporte a testes apli- cados as linguagens C, devido à sua característica, também foram propostas configura- ções para o teste de programas em Fortran e Cobol (Fonseca, 1993; Leitão, 1992). A ferramenta oferece auxilio aos critérios, Todos-Nós, Todos-Arcos, Todos-Usos e Todos- Potenciais-Usos. A ferramenta é orientada à sessão e algumas de suas funcionalidades in- cluem: geração de sessão de teste; inserção e execução de casos de teste; instrumentação do programa sob teste; avaliação da cobertura dos testes, etc.

• JaBUTi (Vincenzi et al., 2003): ferramenta desenvolvida para apoiar a aplicação dos cri- térios da técnica Estrutural para a linguagem Java. Ela suporta os principais critérios desta técnica, como Todos-Nós, Todos-Arcos, Todos-Usos e Todos-Potenciais-Usos, incluindo os critérios dependentes e independentes de exceção.

Uma característica importante dessa ferramenta é que ela permite que os testes sejam realizados com base no bytecode. Isso é importante no teste de componentes, pois nem sempre o código-fonte está disponível para o testador (Vincenzi et al., 2007). Dentre as suas funcionalidades podem ser destacadas a possibilidade de importação dos casos de teste do JUnit, a visualização gráfica do GFC, o acompanhamento dos critérios já cobertos e os requisitos necessários para a satisfação dos critérios.

Atualmente a JaBUTi se caracteriza por uma família de ferramentas que estão sendo desenvolvidas para dar suporte a diversas áreas, como a Orientação a Aspectos (OA) (Lemos, 2009) e a Arquitetura Orientada a Serviços (SOA) (Eler, 2008).

16 2.4. Ferramentas de Apoio ao Teste de Software Também foram construídas diversas ferramentas para apoiar o critério Análise de Mu- tantes. Tradicionalmente, não existe uma maneira direta de definir os operadores de mutação para uma dada linguagem. Em geral, os operadores de mutação são projetados tendo por base a experiência no uso de dada linguagem, bem como os enganos mais comuns cometidos durante sua utilização (Delamaro et al., 2007a). As principais ferramentas que suportam este critério são:

• Mothra (Choi et al., 1989): segundo Delamaro et al. (2007a), foi a ferramenta que mais se popularizou e mais influenciou o desenvolvimento do critério. A ferramenta foi desen- volvida por pesquisadores da Purdue University e do Georgia Institute of Technology para programas em Fortran. Na ferramenta é possível selecionar o conjunto de operadores de mutação a serem aplicados e a “intensidade” do teste, que é a porcentagem dos mutantes que deve ser aleatoriamente, selecionada.

• Proteum (Delamaro, 1993): de acordo com Delamaro et al. (2007a), foi desenvolvida para dar suporte ao critério Análise de Mutantes para programas desenvolvidos em C. A versão atual da ferramenta foi quebrada em diversos programas, cada um com uma funcionalidade especifica. Cada um desses programa pode ser executados a partir da linha de comandos do console e também dentro de scripts.

A ferramenta disponibiliza relatórios estatísticos, mostrando a quantidade de mutantes que cada caso de teste matou, quantos ainda estão vivos, quantos foram marcados como equivalentes, etc. A ferramenta conta com 71 operadores de mutação divididos em quatro classes: mutação de comandos, mutação de operadores, mutação de variáveis e mutação de constantes.

Atualmente existem diversas linhas de pesquisa em torno dessa ferramenta, dentre elas destacam-se a extensão da ferramenta para aplicação em Redes de Petri (Simão, 2000), Máquinas de Estados Finitos (Fabbri et al., 1995) e Statecharts (Sugeta et al., 1999). • Jumble (Irvine et al., 2007): ferramenta de apoio ao critério para a linguagem Java. Pode

ser utilizada por linha de comando ou como um plugin do Eclipse. Quando utilizada no Eclipse a ferramenta trabalha em conjunto com o jUnit para a construção e execução dos casos de teste. Não permite a seleção dos operadores de mutação e suas saídas são todas em forma textual.

• JesTer (Moore, 2008) : também desenvolvida para a linguagem Java com integração com casos de teste utilizando o JUnit. Os resultados da execução dos mutantes são salvos em um arquivo XML o que facilita a comunicação com outras ferramentas.

• MuJava (Offutt et al., 2006): é o resultado de uma colaboração entre duas universidades, Korea Advanced Institute of Science e Technology (KAIST) e George Mason University. A ferramenta trabalha com 43 operadores, sendo 15 operadores do nível de método e 28 operadores do nível de classe, permitindo ao testador selecionar quais operadores deverão ser considerados.

• MuClipse (Smith e Williams, 2009): construída a partir da MuJava, foi exportada como um plugin para o ambiente Eclipse com o objetivo de simplificar a instalação e configu- ração da ferramenta. Também é integrada com o JUnit e utiliza o mesmo conjunto de operadores da MuJava. Os resultados da execução dos casos de teste são mostrados no terminal do eclipse indicando quantos mutantes foram mortos, quantos ainda estão vi- vos e o escore de mutação obtido. A ferramenta permite também visualizar quais são os mutantes vivos e qual a sua diferença em relação ao programa original.

As ferramentas apresentadas nesta seção foram desenvolvidas para dar suporte a diversas linguagens de programação sobre diferentes paradigmas. Na próxima seção são apresentados algumas diferenças entre os paradigmas Procedimental e Orientado a Objetos e como essas diferenças podem influenciar na atividade de teste.