Existem diversas definições de teste de software?
Verificar se o software esta fazendo o que deveria fazer, de acordo com os seus requisitos, e não esta fazendo o que não deveria fazer; Processo de executar um programa ou sistema com a intenção de encontrar defeitos (teste negativo).(Glen Myers – 1979)
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)
Segundo uma estimativa de Beizer (1990), a média do número de defeitos em programas liberados para teste é de 1 a 3 por 100 instruções executáveis. Claro, existem diferenças entre programadores, porém uma coisa é certa, todos eles cometem erros em grau maior ou menor.
Conforme (Bohem, 1976), quanto mais tarde um defeito for identificado mais caro fica para corrigi-lo e mais ainda, os custos de descobrir e corrigir defeitos no software aumentam exponencialmente na proporção que o trabalho evolui através das fases do projeto de desenvolvimento.
De acordo com (Matin & McClure, 1984)
- Manutenção contabiliza quase 67% dos custos totais de software;
- 20% do orçamento de manutenção é para corrigir defeitos;
- 25% é gasto para adaptar programas a um novo hardware e software;
- 6% é gasto corrigindo documentações;
- 4% é gasto na resolução de problemas de performance;
- 42% é gasto fazendo mudanças solicitadas pelos usuários.
De acordo com (Syllabus, 2011), a atividade de teste traz uma necessidade de mudança de postura para o desenvolvedor. Se durante as etapas anteriores do processo de desenvolvimento a preocupação é a de criar/construir um produto que atende às especificações implícitas e explícitas do produto, na atividade de teste o desenvolvedor tentará provar que o produto que ele produziu não atende às especificações. O uso de procedimentos formais nesta etapa ajuda o desenvolvedor a realizar esta “inversão de papéis”.
Com a ajuda do teste é possível medir a qualidade do software em termos de defeitos encontrados, por características e requisitos funcionais ou não funcionais do software (confiabilidade, usabilidade, eficiência, manutenibilidade e portabilidade). (Syllabus, 2011)
O resultado da execução dos testes pode representar confiança na qualidade do software caso sejam encontrados poucos ou nenhum defeito. Um teste projetado adequadamente e cuja execução não encontra defeitos reduz o nível de riscos em um sistema. Por outro lado, quando os testes encontram defeitos, a qualidade do sistema aumenta quando estes são corrigidos. (Syllabus, 2011)
Testes devem ser integrados como uma das atividades de garantia da qualidade (ex.: juntamente aos padrões de desenvolvimento, treinamento e análise de defeitos). (Syllabus, 2011)
O objetivo principal do processo de teste é simplesmente encontrar o maior número possível de defeitos no software. (BASTOS, Aderson et al., 2007)
Os documentos básicos para definir os objetivos de teste são os requisitos do negocio, e caso tais requisitos não se encontrem disponíveis ou estejam mal definidos, os objetivos poderão ser buscados em reunião com os usuários ou desenvolvedores. Algumas empresas criam requisitos de teste a partir dos requisitos de negócios. (BASTOS, Aderson et al., 2007)
A prática de gerar requisito de teste a partir dos requisitos do negócio facilita de modo considerável traçar objetivos capazes de cobrir todas as necessidades especificadas pelos usuários. Isso também permite garantir que sejam cobertos todos os requisitos que precisam ser testados. (BASTOS, Aderson et al., 2007)
Uma visão comum do processo de teste é de que ele consiste apenas da fase de execução, como executar o programa. Esta, na verdade, é uma parte do teste, mas não contempla todas as atividades do teste. (Syllabus, 2011)
Segundo (syllabus, 2011), existem atividades de teste antes e depois da fase de execução. Por exemplo: planejamento e controle, escolha das condições de teste, modelagem dos casos de teste, checagem dos resultados, avaliação do critério de conclusão, geração de relatórios sobre o processo de teste e sobre sistema alvo e encerramento ou conclusão (ex.: após a finalização de uma fase de teste). Teste também inclui revisão de documentos (incluindo o código fonte) e análise estática.
[Crédito da Imagem: Teste de Software – ShutterStock]