segunda-feira, 28 de novembro de 2011

Testes De Níveis ou Fases

TESTES UNITÁRIOS

Estes testes são realizados nas menores parcelas do código possível, visam testar sub-rotinas, classes, pequenas partes ou unidades do sistema de forma isolada ou até mesmo separadas do restante do código, para garantir que atendam as especificações, características e funcionalidade.
Os testes unitários são utilizados intensamente os testes de caixa branca. Na grande maioria dos casos estes testes são realizados pelos próprios desenvolvedores (RIOS e MOREIRA, 2006), durante o desenvolvimento do código.

TESTES DE INTEGRAÇÃO

Os testes de integração são realizados no momento em que dois ou mais componentes precisam se comunicar, cada componente já foi previamente testado nos testes unitários.
Podemos chamar de componentes os pedaços de código, módulos, aplicações distintas, clientes, servidores e etc.
Existem algumas técnicas para realização destes testes conhecidas como:
·       Botton-up – os testes são realizados no agrupamento dos componentes de mais baixo nível, como os de infra-estrutura, formando novos módulos. Desta forma vai incluindo os módulos até termos o software completo;
·       Top-down – exatamente inverso da técnica Botton-up, a vantagem desta técnica é a de poder apresentar os resultados para os usuários ou clientes antes dos módulos de baixo nível estejam prontos. De forma geral desenvolvemos o esqueleto global do sistema e os componentes são adicionados a ele. Um exemplo é desenvolver a interface gráfica antes do sistema em si;
·   Fluxo de dados – o agrupamento e os testes são realizados conforme a o projeto desenhou o fluxo dos dados;
·      Big-bang – esta técnica é a mais caótica, pois se integra todos os módulos de uma só vez e depois realiza os testes. É recomendado nunca utilizar esta técnica.

TESTES DE SISTEMA

Os testes de sistema fazem uso da técnica de caixa preta, ou seja, foca na visão do usuário final, ou seja, são realizados testes simulando ao máximo os ambientes ao qual o software será utilizado.
Nos testes de sistema os principais testes são os de performance que pretende determinar a capacidade máxima que o software pode atingir em determinado ambiente e o teste de carga que visa simular uma grande massa de dados e usuários simulando um ambiente o mais próximo do real possível.

FASE ALPHA

Nesta etapa o software está praticamente pronto para o lançamento é executado os testes de caixa preta, focando sempre na simulação de ambientes reais de utilização.
Podemos incluir nesta etapa o software em uso real em ambientes controlados, como por exemplo, utilizá-lo internamente na própria empresa de desenvolvimento.
Se necessário criar subdivisões da etapa de Alpha, exemplo:
·         Pré-Alpha: primeiro build do software finalizado disponibilizada para os testes;
·       Alpha 1: um novo build é gerado com as correções dos problemas encontrados na fase de pré-alpha, nesta etapa implementa-se o uso do software internamente na empresa de desenvolvimento;
·    Alpha 2: similar ao Alpha 1, porém uma nova buid é gerada se necessário com correções dos problemas encontrados nas fases anteriores, nesta etapa os testes são expandidos ao uso do software internamente na empresa em filiais se for o caso e em parceiros.

FASE BETA

A fase de beta é uma continuidade das Alphas, porém agora se iniciam testes em clientes de forma controlada e também de forma descontrolada, que nada mais é que disponibilização dos pacotes em sites e listas de discussões, com uma eficiente forma de receber os feedbacks destes usuários “voluntários”, normalmente usa-se emails para esta comunicação.

sábado, 19 de novembro de 2011

Tipos de testes


Abaixo veremos diversas técnicas para auxiliar na estruturação dos testes de software, vale lembrar que muitas vezes os tipos de testes se sobrepõem e ainda não se encaixam por completo há necessidade, mas o importante é dar o caminho, pois o objetivo continua o mesmo, encontrar defeitos no software.

Testes Caixa Preta

Segundo Rios & Moreira (2006), os testes de caixa preta realizam testes na visão do usuário com objetivo de verificar as funcionalidades e os requisitos sem qualquer conhecimento do código ou da lógica interna dos itens testados. Outra definição é a de teste funcional, orientado a entrada e saída, onde definimos um conjunto de entradas, sem considerar a estrutura do software desenvolvido e validamos sua saída, ou seja, quanto mais abrangentes sejam as entradas melhor será o teste.
Esta técnica pode ser utilizada em todas as outras fases de testes, porém esse tipo de teste é insuficiente para identificar certos riscos num projeto de software (BACH, 1999).

Testes Caixa Branca

Nesta técnica o testador tem acesso ao código fonte e irá preparar os testes baseando em sua lógica interna e estrutura avaliando aspectos como: testes de condição, teste de fluxo de dados, testes de ciclos, varia a entrada para que todas as condições e códigos possíveis sejam executados.
Os testes de caixa branca: visam avaliar as clausulas de código, a lógica interna do componente codificado, as configurações e outros elementos técnicos (RIOS e MOREIRA, 2006).

Testes Caixa Cinza

Os testes nesta técnica é uma interseção entre as técnicas de caixa preta e branca, com base no código fonte e estrutura do código, criamos os testes de forma que o realizamos conforme a técnica de caixa preta em outras palavras o desenvolvedor auxilia na criação do Plano de testes, que falaremos a seguir, de forma que os testes atinjam o maior número possível de possibilidades.

quinta-feira, 17 de novembro de 2011

O que são Testes de Software


Os testes são realizados para validar se o software realiza de forma completa o que foi proposto em sua especificação, ou seja, realiza a função para o qual foi desenvolvido, em outras palavras deve-se realizar a validação de requisitos, verificação de falhas, de erros de segurança e etc.
Outras definições:
·         Processo de executar um programa ou sistema com a intenção de encontrar defeitos (teste negativo) (MYERS, 2004);
·         Qualquer atividade que a partir da avaliação de um atributo ou capacidade de um programa ou sistema seja possível determinar se ele alcança os resultados desejados (BILL HETZEL, 1988).
É de conhecimento comum que os testes devem ser realizados para melhorar a qualidade do software, porém a qualidade é obrigação e os testadores de software devem disponibilizar os produtos após seus testes com excelência buscando melhorar continuamente seus processos e testes.
Os testes são realizados por testadores de software ou por aplicações desenvolvidas para este fim, neste ponto aplicações para testes tendem há demandar mais tempo para serem desenvolvidas do que a aplicação a ser testadas, mas estas considerações devem ser realizadas na fase de projeto da aplicação.