segunda-feira, 28 de março de 2011

[Seminário] Testes unitarios com JSUnit e JSCovarage

Teste de Software

O conceito de teste de software surgiu no final dos anos 50 como uma atividade isolada da Engenharia de Software. Era aplicado de forma manual pelos desenvolvedores com o objetivo de revisar seus códigos fonte. Com o passar dos anos, com esta abordagem sendo aplicada, os projetos passaram a apresentar melhora na qualidade do produto final quando comparados a projetos de software quenão aplicavam nenhuma etapa de testes.

Nos dias atuais, teste de software é visto como um subitemdentro da Qualidade de Software, sendo que para conseguirtal qualidade é necessário definir padrões de trabalho, métodos e melhorar o processo de desenvolvimento, assegurando de

fato que os defeitos sejam identificados o mais cedo possível durante o processo de desenvolvimento de software.

Veja abaixo alguns exemplos de problemas causados por defeitos de software:

• Intel: gastou 475 milhões dólares na correção do erro da vírgula flutuante do Pentium em 1994 (Computer Science, Springer Verlag - 1995);

• Prime Personal Communications: cancelou contrato de US$ 500 milhões com a Motorola por causa de falhas de Software (Wall Street journal - 24/02/1998);

De acordo com Alexandre Bartie, em seu livro sobre Garantia da Qualidade, mais de 30% dos Projetos de Software são cancelados antes de serem finalizados. Mais de 70% dos Projetos de Software falham nas entregas das funcionalidades esperadas. Os custos extrapolam mais de 180%os valores originalmente previstos e os prazos excedem em 200% os cronogramas originais.

Teste Unitário

O Teste de Unidade, ou Teste Unitário, classificado como teste caixa-branca por ser baseado na estrutura lógica do código, é responsável por testar a unidade de codificação da aplicação. Em um sistema orientado a objetos essa unidade pode ser representada pelos métodos das classes, ou outro nível de granularidade, dependendo da complexidade dos elementos a serem testados. Esta técnica testa apenas o código da aplicação, e podem-se testar todas as regras de negócio da mesma.

Por testar a lógica da funcionalidade, o código fonte é analisado, e um fundamental conceito é o de caso de teste, que representa uma instância de teste para aquela funcionalidade que percorre um determinado caminho no algoritmo de acordo com seus valores de teste. Um algoritmo pode possuir vários casos de teste, cada um deles contendo os valores que devem ser testados para analisar e percorrer os caminhos do algoritmo.

Teste de Cobertura

O teste de cobertura é responsável por verificar se o teste unitário está verificando todos os caminhos possíveis do algoritmo de alguma funcionalidade do software. Apresenta a porcentagem de cobertura de um teste unitário, por exemplo, sobum determinado método. O objetivo é ter a maior cobertura possível identificando áreas do projeto que ainda não estão cobertas pelos testes automatizados.

JsUnit

JsUnit é um framework open-source para testes unitários em Java Script, foi criada em 2001 e roda nas mais variadas combinações de browser/plataformas (navegadores), conseguindo assim, um vasto número de utilizadores, além de ter sua configuração considerada simples.

O JsUnit é um componente de software escrito na linguagem Java Script que disponibiliza todo o ambiente necessário para o teste unitário.

Para a execução dos testes, é necessário executar o testRunner.html. Assim que é executado, é apresentada a interface exibida na Figura 1, que possui uma opção para se carregar o arquivo HTML com os testes unitários.

Onde é exibido a opção “entre com o local da página de teste para executar”, basta adicionar no campo o local completo do endereço do arquivo e clicar em Run para executar os testes.

O resultado do exemplo é exibido pela Figura 2.

Na tela de resultado é possível ser observado o erro que foi intencionalmente adicionado no código para exemplo. Além de apresentar a barra vermelha, é possível verificar detalhes do erro na parte de baixo da interface.

A seguir mostra o teste feito, onde nenhum erro foi encontrado:

JsCoverage

JsCoverage é uma ferramenta que faz testes de cobertura em programas escritos na linguagem Java Script. Para conseguir analisar um código, o JsCoverage instrumenta a biblioteca que está sendo referenciada pela página HTML, acrescentando chamadas a funções específicas do JsCoverage que visam retornar o número de execuções de cada linha de código da biblioteca, conseguindo assim apresentar uma análise de cobertura completa da biblioteca utilizada.

Para exemplificar a sua utilização, é apresentado um exemplo a seguir. Um código HTML de uma pequena página que possui um campo de texto para inserção de qualquer valor é inserido na ferramenta para fazer o teste.

Após ser executado ao menos uma vez, basta acessar a aba Summary na interface do JsCoverage para visualizar a interface, exibida na Figura 6.

Ela apresenta todos os arquivos Java Script da página executada e as respectivas coberturas de cada um dos arquivos.

Neste caso indica que houve algum erro no código, pois ele não teve 100 % da cobertura, e mostra exatamente onde ocorreu o erro na aba source como mostra a fig. 7


Hildebrando Pedroni

Felipe Aparicio

Nenhum comentário:

Postar um comentário