• Nenhum resultado encontrado

Histórico de revisões

4. O que é um software testável

Segundo (ZADROSNY,2006) e (PRESSMAN,2002), as seguintes características levam a um software testável e devem ser levadas em conta quando ele é construído:

39

Guia de Teste 11 DIRETORIA DE INFORMÁTICA - DIN

Operabilidade: o software deve ser projetado e implementado com qualidade.

"Quanto melhor funciona, mais eficientemente pode ser usado e testado".

Observabilidade: variáveis devem ser visíveis ou consultáveis durante a execução. "O que você vê é o que você testa."

Controlabilidade: variáveis devem poder ser controladas diretamente pelo engenheiro de teste. "Quanto mais você pode controlar o software, mais o teste pode ser automatizado e otimizado".

Decomponibilidade: módulos independentes podem ser testados independentemente. "Controlando o escopo do teste, podemos isolar problemas mais rapidamente e realizar retestagem mais racionalmente".

Simplicidade: o conjunto de características deve ser o mínimo necessário para atender os requisitos. "Quanto menos há a testar, mais rapidamente podemos testá-lo".

Estabilidade: o software se recupera bem de falhas. "Quanto menos modificações, menos interrupções no teste".

Compreensibilidade: a documentação técnica é acessível instantaneamente, bem organizada, específica, detalhada e precisa."Quanto mais documentação temos, mais racionalmente vamos testar".

É importante mencionar que softwares são testáveis, porém quando se cria software pensando em como será testado o processo de testes se torna menos custoso, o desenvolvedor consegue mitigar erros em tempo de desenvolvimento, haja vista que o desenvolvedor preocupa-se com o que está sendo feito pois será avaliado por outra equipe. Com isso a probabilidade dos riscos de defeitos e falhas diminui.

Pelas razões já mencionadas acima os testes devem ocorrer desde o começo do projeto.

A testabilidade pode ser incorporada nos vários estágios do desenvolvimento de software como:

Fase de especificação: Durante o processo de revisão especificação, a equipe de testes deve ser questionada quanto ao seu entendimento aos requisitos, afinal elaborar testes sobre um conjunto de requisitos não claros, ou, que existam dúvidas sobre sua execução é uma tarefa complicada e algumas vezes impossível dependendo do escopo do projeto.

Fase de detalhamento do projeto: os testes nessa fase estabelecem com clareza os conjuntos de entradas e saídas esperadas, facilitando a montagem de cenários de testes pela equipe de testes, e para a equipe de desenvolvimento esclarecer o que deve ser tratado.

Fase de codificação: nesta fase, a responsabilidade dos testes é da equipe de desenvolvimento, cabendo aos desenvolvedores criar os testes unitários e integração das funcionalidades geradas. Esta fase é essencial, é onde essencialmente os erros são inseridos no código.

40

Guia de Teste 12 Fase de testes: Nesta fase os critérios de aceite, requisitos funcionais e não funcionais serão validados e verificados pela equipe de teste. Onde serão verificados os testes criados nas fases anteriores (controle e garantia) e validação dos critérios de aceitação com base em scripts de testes e planos de testes pertinentes desta fase.

Criar softwares testáveis é responsabilidade de TODOS, garantir a qualidade do produto que está sendo entregue também é responsabilidade de TODOS.

Para facilitar a criação de softwares testáveis, precisamos definir alguns padrões para desenvolvimento dentro da DIN-TCE-RN.

Em cada uma das seções posteriores sobre os estágios de testes são mencionados critérios mínimos para aplicação de testes. A definição de software testável e os aspectos que serão considerados como objetos de testes conforme padronização do processo de desenvolvimento DINDEV [TODO - link com o projeto DINDEV desenvolvido pelo servidor André Gustavo].

4.1 Princípios de testes

De acordo com ISTQB (2018) existem alguns princípios que devem ser levados em consideração, quando se testa. São eles:

Testes mostram a presença de defeitos, não a sua ausência

O teste reduz a probabilidade de defeitos não descobertos permanecerem no software, mas, mesmo se nenhum defeito for encontrado, o teste não é a prova de correção. Isso quer dizer, que teste não consegue abranger todas as possibilidades, e que não podem garantir ausência de falhas, porém podem e irão mostrar defeitos e falhas.

Testes exaustivos são impossíveis

Testar tudo, todas as combinações possíveis de entrada e todas as pré-condições não é viável, exceto em casos triviais. Ao invés disso utilizar-se de técnicas de teste e priorização é recomendado para otimizar o custo de realização de testes.

O teste inicial economiza tempo e dinheiro

Antecipar defeitos de especificação de requisitos diminuem seu custo e impacto na aplicação, utilizam-se normalmente técnicas, recomenda-se a leitura do tópico 3.1 do ISTQB (2018), sobre testes estáticos.

Defeitos se agrupam

Um pequeno número de módulos geralmente contém a maioria dos defeitos descobertos durante o teste de pré-lançamento ou é responsável pela maioria das falhas operacionais. Observar quais os módulos é os potenciais

41

Guia de Teste 13 DIRETORIA DE INFORMÁTICA - DIN

agrupadores de erros é essencial para otimizar os esforços em desenvolvimento dos testes.

Cuidado com o paradoxo do pesticida

Testes repetitivos não mostrarão novos defeitos, para detectá-los é necessária a constante atualização dos testes em conformidade aos requisitos e expectativas alterados. Alguns casos esse efeito é benéfico, como os casos dos testes de regressão, onde o número de defeitos é relativamente baixo e auxiliam na detecção dos testes que precisam ser atualizados, falhas que surgiram com as modificações de requisitos e implementações que impactaram no sistema entre outros.

O teste depende do contexto

Os testes devem ser planejados de acordo com o contexto em que estão incluídos, testes em dispositivos mobiles com metodologia ágil é testado de forma diferente do teste em um ambiente desktop em um projeto de ciclo de vida sequencial.

Ausência de erros é uma ilusão

Existe uma expectativa errada sobre a equipe de testes, como mencionado anteriormente, testes afirmam a existência de falhas, porém NÃO GARANTEM a falta de falhas ou defeitos. Esperar que a equipe de testes valide todas as condições é impossível pois Testes exaustivos são impossíveis, logo mesmo que se teste, e crie-se toda uma suíte de testes, ainda é possível que o resultado final não atenda as expectativas do cliente.

Teste é responsabilidade de todos

Este princípio é uma das premissas para que a qualidade seja alcançável é necessário que todos estejam envolvidos no processo. Lembrando que a qualidade é o que se deseja em relação ao que se é entregue, e teste é uma ferramenta de aferição da qualidade.

Documentos relacionados