Você está na página 1de 4

Verificação, Validação e Teste de Software.

Qual
a diferença??

O ato de efetuar testes em tudo que construímos e usamos é algo


natural do ser humano, isso porque temos um instinto natural de saber
se as coisas funcionam corretamente. Testar tem se mostrado ao
longo dos séculos a maneira mais eficiente de verificar se algo está se
comportando de forma correta. Produtos de software não fogem a esta
regra. Isso porque mesmo o sistema que foi minunciosamente
projetado e construído não está livre de apresentar falhas, defeitos e
erros. Para que estes problemas sejam descobertos antes do sistema
ser entregue para o cliente, executamos uma série de atividades que
chamamos de Validação, Verificação e Teste.

Estes termos são frequentemente confundidos, por isso vamos ver


agora a diferença entre cada um destes processos:

1. Verificação: Fizemos o software corretamente?


Esta atividade se resume em responder a esta pergunta. A verificação
tem o objetivo de avaliar se o que foi planejado realmente foi
realizado. Ou seja, se os requisitos e funcionalidades documentados
foram implementados, além disso a verificação também pode ser
realizada para especificação de sistemas, para avaliar se os requisitos
estão sendo documentados como deveriam e ainda prever falhas ou
inconsistências entre requisitos.

2. Validação: Fizemos o software correto?

A validação tem o objetivo de avaliar se o que foi entregue atende as


expectativas do cliente. Ou seja, se os requisitos, independente do
que foi planejado, estão sendo implementados para atender a regra de
negócio do cliente, se o sistema é realmente aquilo que o cliente quer
e está pagando para ter. A validação final do sistema é realizada pelo
próprio cliente ou usuário.

3. Teste de Software: O software tem defeitos!


O teste de software é considerado uma técnica dinâmica de
verificação e validação, pois o software é executado com dados de
teste e seu comportamento é analisado. Diferentemente da
inspeção de software ou, também chamada de revisão por pares, que
é considerada uma técnica estática, pois não é necessário executar o
software em um computador.
Então é isso. Agora que já sabemos as diferenças entre eles, vamos
usar os termos certos daqui pra frente.

Sobre Ferramentas de Testes


11/01/2012

Ola!

Após um longo período sem posts espero retornar, de forma periódica, a


publicar alguns materiais sobre testes de softwares e afins.

Interessante que, neste período ausente, recebi uma grande quantidade de


solicitações de informações e a maioria era sobre ferramentas de testes. O que
percebo é que existe um certo equivoco, principalmente dos iniciantes na área,
sobre teste de software. A primeira coisa que se deve saber sobre ferramentas
de testes é. “Qual o objetivo que se deseja alcançar?” Pois, a utilização de uma
determinada ferramenta deve-se ao nível de teste associado a fase de teste e
à técnica utilizada, afim de se detectar o maior numero possível de falhas na
aplicação sob teste. Alem disso ainda temos ferramentas de apoio como:
ferramentas de gestão de incidentes, ferramentas de gerenciamento dos testes,
ferramentas de analise de código-fonte e etc.

Sendo assim, temos ferramentas para testes unitários, utilizados


nas técnicas de caixa-branca e que tem o JUnit como a ferramenta mais
conhecida. Esta é uma ferramenta, normalmente utilizada por
desenvolvedores, para teste de unidades de código-fonte ao longo do
desenvolvimento dos mesmos. Serve para garantir a corretude de
determinados trechos de código.

Temos, também, ferramentas de testes funcionais utilizados nos testes de


caixa-preta. Estas são as ferramentas que tem como objetivo simular a
utilização da aplicação ou sistema pelo usuário ou outro sistema.
Nesta família de ferramentas podemos citar: Selenium e BadBoy. Que são
ferramentas para aplicações web que simula a navegação pelas páginas a
procura de falhas nas funções existentes. Para testes funcionais em aplicações
desktop, temos: SiKuLi. Uma ferramenta que faz uma analise das imagens
contidas na tela para executar um script de teste previamente criado.
Para teste de performance temos: JMeter. Uma ferramenta que a principio foi
desenvolvida para testes de performance, mas que foram
acrecidas inúmeras outras funcionalidades. Com o JMeter é possível testar os
limites de sua aplicação, evitando que um grande numero de usuários cause
um crash no sistema, por exemplo.

Para gerenciamento dos casos de testes e controle da execução dos testes,


temos o TestLink. Esta ferramenta cuida da parte gerencial do ciclo de vida do
teste, desde a criação do plano e casos de teste até a produção
do relatório final dos testes.

Por fim, temos os bug trackers no qual o Mantis é o mais conhecido, por sua
praticidade, simplicidade e robustez. Um bug tracker é um gerenciador de
incidentes, utilizado para manter um controle de quais incidentes está para
correção, corrigido, em teste, etc.

Existem inúmeras outras ferramentas utilizadas nos testes de softwares, mas


quis apenas exemplificar com as que mais utilizo no meu dia-a-dia. Uma lista
mais detalhada de ferramentas pode ser encontrada aqui.

Bom, espero ter ajudado e até o próximo post!

Ferramentas de Teste
Abaixo temos uma lista de ferramentas para teste de software. A lista não
está fechada e o intuito é que seja acrescentada mais e mais ferramentas.

Lista de ferramentas de teste

Gerenciamento de teste:
01- TestLink (http://www.teamst.org/)

Ferramenta de gestão de teste que proporciona a criação, execução e


controle das atividades de teste.

Bugtracker:
01- Mantisbt (http://www.mantisbt.org/)
Ferramenta de gestão de incidentes, pratica e bastante robusta
02- Bugzilla (http://www.bugzilla.org/)
Um completo servidor para ajudar o gerenciamento do desenvolvimento
de software.
Testes Funcionais Automatizados:
01- Selenuim (http://seleniumhq.org/)
Suite de ferramentas para testes funcionais em aplicações WEB.
02- SiKuLi (http://sikuli.org/)
Ferramenta para automatizar teste de interfaces gráficas do usuário
(GUI) utilizando imagens (screenshots).
03- BadBoy (http://www.badboy.com.au/)
Ferramenta de testes para aplicações WEB.

Ferramentas para Testes de Performance


01- Apache JMeter (http://jakarta.apache.org/jmeter/)
Originalmente foi desenvolvida para ser uma ferramenta para teste de
Performance em aplicações WEB, mas que permite inúmeros tipos de
testes.

Testes Unitarios:
01- JUnit (http://junit.sourceforge.net/)
Umas das ferramentas mais difundidadas de testes unitarios, para
aplicações Java.
02- TestNG (http://testng.org)
Ótima framework para testes unitarios.
03- NUnit (http://www.nunit.org/)
Framework para teste unitario para aplicações que utiliza a tecnologia
dotNet.