Teste Unitário e de Cobertura com a utilização das ferramentas JsUnit e JsCovarage para a linguagem de programação Java Script.
Para que serve
Fornecer conhecimentos teóricos e práticos na utilização da abordagem baseada em testes no desenvolvimento com a linguagem Java Script. Definir o passo a passo para a utilização da ferramenta JsUnit e JsCoverage.
Em que situação o tema é útil
A abordagem de desenvolvimento baseado em testes é hoje um importante diferencial para a busca de qualidade em qualquer software. Nesse contexto, o JsUnit se apresenta como uma ferramenta para automatizar os testes unitários no ambiente de desenvolvimento JavaScript. Já o JsCoverage é uma ferramenta para execução dos testes de cobertura.
Autores: Jenifer Vieira Toledo, Elessandro Rodrigues Marques, Marcelo Santos Daibert e Marco Antônio Pereira Araújo
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 que não aplicavam nenhuma etapa de testes. Mesmo assim, a tarefa de efetuar testes em software foi considerada secundária por algum tempo, chegando a ser vista até mesmo como uma punição para os programadores, ou como uma tarefa onde não se deveria gastar muito tempo e despender grandes investimentos.
Além disso, testar software para descobrir os defeitos que desqualificam os produtos para os consumidores era visto como um trabalho tedioso e cansativo, a ser evitado pelos mais artificiosos dos especialistas em tecnologia. Entretanto, a responsabilidade com a qualidade do produto final desenvolvido deve ser levada em consideração e justamente por isso o tema teste de software está em evidência.
Nos dias atuais, teste de software é visto como um subitem dentro da Qualidade de Software, sendo que para conseguir tal 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. O custo de um defeito em um software não deve ser avaliado somente pelo aspecto financeiro. Os softwares são escritos para controlar equipamentos com propósitos mais variados possíveis, como dosagens de medicamentos, exames médicos, construção e controle de aviões, aeronaves espaciais, satélites, entre outros vários sistemas. E, em muitos casos, um defeito pode causar a destruição total de um caro equipamento ou até mesmo em perda de vidas humanas. 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);
· Ariane 5: 10 anos de desenvolvimento no valor de US$ 7 bilhões, com uma carga de US$ 500 milhões em equipamentos, explodiu 40 segundos após lançamento (ESA-1996);
· Therac-25: seu software ministrou doses de radiação em pacientes entre 1985 e 1987 resultando em seis óbitos (IEEE Computer - 07/07/1993).
Existem vários outros exemplos e relatos onde defeitos de software foram decisivos para a ocorrência de algum problema ou acidente, o que motiva a busca e identificação prematura destes defeitos, evitando assim a sua manifestação através das falhas que podem impactar as vidas de seus usuários.
O autor Alexandre Bartie, em seu livro sobre Garantia da Qualidade, apresenta um quadro estatístico sobre projetos americanos de desenvolvimento de software relatando que 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.
Neste sentido, o teste de software é um componente a mais dentro do processo de desenvolvimento de software que busca contribuir para a busca de qualidade. O objetivo deste artigo é apresentar as técnicas de teste unitário e de cobertura no contexto de desenvolvimento Web, mais especificamente para a linguagem Java Script. Para isso, são apresentadas as ferramentas JsUnit e JsCoverage para, respectivamente, auxiliarem na tarefa de teste unitário e de cobertura, ambos de forma automatizada.
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.
...