Por que eu devo ler este artigo:Este artigo traz alguns dos conceitos fundamentais da área de testes de software, reforça a importância de executar testes durante o processo de desenvolvimento de software, bem como evidencia a importância de gerenciar esses testes. Além disso, o artigo é útil, pois traz uma visão geral sobre as ferramentas de execução e gestão de testes de software e apresenta a ferramenta TestingExpress, um software gratuito e que oferece funcionalidades para a realização da gestão e execução de testes de modo rápido e descomplicado.

Nas últimas décadas houve um aumento na adoção de softwares de gestão por empresas de diversos segmentos e tamanhos a fim de otimizar suas atividades. Consequentemente, identificou-se um aumento na dependência desses sistemas e assim, erros provenientes de falhas nos softwares refletiram diretamente nas atividades da empresa, ocasionando na maioria das vezes inúmeros prejuízos. Tal fato evidenciou uma crise de credibilidade que os softwares passaram a ter após recorrentes problemas.

Em 1979, Glenford Myers, em seu livro ‘The Art of Software Testing’ (A arte de teste de software), já apresentava o conceito no qual quanto mais cedo descobrimos e corrigimos o erro, menor é o seu custo para o projeto. Esse custo em correção de bugs cresce 10 vezes para cada estágio em que o projeto do software avança. Segundo o National Institute of Standards and Techonology, estima-se entre 22,2 a 59,5 bilhões de dólares as perdas anuais como resultado de software de qualidade baixa, muitas vezes pouco ou quase nada testado.

Para contornar esse cenário, visando responder a essa crise de credibilidade e tentando reduzir principalmente os erros oriundos da ausência de realização de testes, diversas normas para definir e padronizar os testes de software foram elaboradas:

  • ISO (International Organization for Standardization) 9126-1 – Software Quality Characteristics (2003): define um modelo de avaliação da qualidade de um software baseado na funcionalidade, portabilidade, confiabilidade, manutenibilidade, usabilidade e eficiência;
  • ISO 12207 – Systems and Software Engineering – Software Life Cycle Processes (2008): descreve a arquitetura do ciclo de vida do software, inclusive no que se refere a testes;
  • IEEE (Institute of Electrical and Electronics Engineers) 829 – Standard for Software and System Test Documentation (2008): é a norma focada especificamente em testes de software. Ela provê um padrão de documentação e planejamento de testes, sendo aplicável a todo ciclo de vida do teste de software.

Além das normas citadas, os testes de software também são mencionados no CMMI (Capability Maturity Model – Integration), MPS.BR (Melhoria de Processos do Software Brasileiro), RUP (Rational Unified Process) e em diversos segmentos da metodologia ágil.

A criação dessas normas, aliada ao uso delas em metodologias de desenvolvimento de software, possibilitou que os testes, assim como a gestão dos mesmos, passassem a ter um papel de maior destaque durante processo de desenvolvimento de software.

O teste de software trata-se de uma análise técnica que é realizada com o objetivo de identificar informações referentes à qualidade do produto. É uma ação que deve ser executada em todas as partes do software com o objetivo de alcançar 100% cobertura. O teste tem como meta identificar alguma não conformidade do produto alvo da análise. Uma vez identificada essa não conformidade, ela deverá ser acompanhada de perto até que a mesma seja corrigida e avaliada novamente. Trata-se de uma atividade não trivial e de difícil gestão.

Os testes são divididos em diversos grupos ou categorias, dentre os principais destacam-se os testes funcionais e os testes estruturais. Enquanto os funcionais têm como foco garantir que os requisitos estabelecidos estão sendo atendidos da forma esperada, os testes estruturais têm como objetivo identificar problemas de comportamento do sistema em diversas situações diferentes da situação normal.

Existem diversos motivos que justificam a implantação de testes de software nas empresas:

  1. Quando um produto não é testado, há uma grande chance que ele contenha erros ou defeitos, assim este produto não vai satisfazer as necessidades do cliente;
  2. O cliente quando não está satisfeito com o produto, dificilmente irá contratar novamente a empresa;
  3. Quando não há qualidade no produto, a empresa fica com a imagem prejudicada. Logo, é necessário mais investimento em marketing, por exemplo;
  4. Se os erros são encontrados pelo cliente, o custo para corrigir esses erros é muito maior do que quando o sistema ainda está em desenvolvimento;
  5. Com os testes, é possível ter uma maior garantia de que o sistema não possui erros críticos, os quais, quando existem, podem causar grandes prejuízos para o cliente;
  6. Com os testes, novos clientes ficarão interessados em seus sistemas devido às recomendações;
  7. Quando há uma equipe de teste para avaliar o sistema, todos saem ganhando: o dono da empresa (menos gasto com marketing e mais prestígio para a empresa), o cliente (satisfação e confiança no sistema), os usuários (conseguem usar o sistema de forma útil e correta), os programadores (motivação por criar sistemas com qualidade) e os testadores (mais empregos).

Teste é uma parte importante para o sucesso de um projeto, haja vista que os desenvolvedores estão sujeitos a falhas na programação, ou os requisitos nem sempre são entendidos conforme deveriam. A ausência de testes aumenta o risco do sistema de não atender adequadamente as necessidades do cliente, gerando consequentemente resultados negativos.

Com base nesse cenário, com o objetivo de atender as normas de qualidade existentes e garantir a satisfação dos seus clientes, as empresas de desenvolvimento de software passaram a incorporar em suas equipes profissionais especialistas em testes de software, além disso, implantaram práticas e técnicas para a elaboração, execução e principalmente gerenciamento dos planos e casos de testes.

A gestão dos testes possui um papel de destaque dentro de um processo de testes, afinal, é responsável pelo planejamento e controle de todas as atividades. Um bom gerenciamento dos testes é de fundamental importância, principalmente quando há uma alteração no requisito que causa alteração no caso de uso. Quando isso ocorre, é necessário identificar rapidamente quais testes precisam ser alterados e/ou executados novamente, garantindo que após a alteração o sistema permaneça coberto pelos testes.

Todavia, aplicar as práticas e técnicas para a elaboração, execução e gerenciamento dos planos e casos de testes não é uma tarefa trivial, pois o volume de informação gerado nesta atividade é muito elevado. Para contornar esta dificuldade, são utilizadas ferramentas voltadas especificamente para o gerenciamento e execução de testes de software.

Além de simplificar as atividades de gestão, a adoção deste tipo de ferramenta possibilita a centralização das informações, além da facilidade na criação de casos de testes, estimulando que mais casos sejam criados e tenhamos uma cobertura maior dos testes sobre o sistema, propiciando melhora da qualidade das aplicações testadas.

As ferramentas de gerenciamento de testes podem ser utilizadas em todas as etapas do ciclo de vida do teste, e têm como grande vantagem a centralização de todas as informações relacionadas à evolução dos testes realizados no software.

Geralmente elas não têm apenas uma função, podendo apresentar distintas aplicabilidades, como priorização dos testes, cronograma de atividades, registro dos resultados, rastreamento do progresso e gerenciamento dos incidentes dos testes.

O objetivo deste tipo de ferramenta está voltado ao controle dos testes, sejam eles manuais ou automatizados. Elas permitem que informações sejam coletadas e acompanhadas, ...

Quer ler esse conteúdo completo? Tenha acesso completo