• Nenhum resultado encontrado

Etapas e categorias de testes de software

2.2 TESTES NO PROCESSO DESENVOLVIMENTO DE SOFTWARE

2.2.1 Etapas e categorias de testes de software

A atividade de teste é complexa, por envolver diversos fatores que podem gerar ocorrências de erros no software. Um tipo de erro comum se dá quando uma função ou rotina é desenvolvida de forma incorreta uma dada funcionalidade. Normalmente são definidos meios, como, por exemplo, a depuração no código-fonte, para localizar problemas no código gerado através de uma alteração e deve ser corrigido para prevenção de erros futuros em funções do software (DELAMARO; MALDONADO; JINO, 2016).

Para Sommerville (2011), os testes possuem algumas etapas que devem ser seguidas para o melhor andamento das atividades durante a elaboração do projeto, como ilustrado na Figura 2, sendo estas etapas: (i) projeto dos casos de testes; (ii) preparação do ambiente e dos casos de testes; (iii) execução dos casos de testes e (iv) avaliação e comparação dos resultados dos testes, validando o resultado do processamento realizado pelo software (MYERS et al., 2004; PRESSMAN, 2011; SOMMERVILLE, 2011).

Figura 2 – Um modelo do processo de teste de software

Fonte: (Sommerville, 2011, p. 147)

A atividade de teste estabelece técnicas e critérios para contribuir com a qualidade e produtividade do teste. Segundo Barbosa (2004), as atividades de teste revelam que as formas de condução dos testes acontecem por demandas e prioridades, além do processo que incentiva e aprendizagem das práticas e conceitos de testes. As categorias de testes que acontecem geralmente nos projetos de desenvolvimento de software são: testes unitários, testes de integração, testes de sistema e testes de aceitação.

As estratégias de testes de software são definidas de acordo com o modelo que é utilizado e segundo as práticas de testes associadas às atividades. Uma das estratégias mais comuns, descrita por Crispin e Gregory (2009), vem sendo aplicada e consiste nas seguintes atividades: (i) visão geral do produto e planejamento: o teste é responsável por auxiliar o entendimento das histórias (que são solicitações feitas por clientes para suprir uma/ou mais necessidades) e criar o plano de teste que será aplicado durante todo o projeto; (ii) ciclo iterativo: as tarefas do projeto são estimadas e são gerados os TDD (os testadores ajudam os desenvolvedores a criar os testes de mesa); (iii) testes de sistema: nesta etapa são executados os testes exploratórios, de aceitação, testes relacionados a carga e segurança do software; (iv) nova versão do software: nesta etapa os testadores fazem uma retrospectiva do desenvolvimento antes da liberação para o cliente (KHAN, 2011; KAUR; KHATRI; DATTA, 2013).

Durante o processo de desenvolvimento de software, existem quatro fases de testes que são executadas com objetivos distintos, para garantir melhor qualidade do produto para as fases seguintes. O Quadro 1 apresenta as categorias, indicando suas descrições e autores que os fundamentam. (DELAMARO; MALDONADO; JINO, 2016).

Quadro 1 – Categorias usadas no desenvolvimento de software

Categorias Descrição Autores

Teste de Unidade Testes executados no código-fonte do sistema.

JOVANOVIĆ, (2008).

Teste de Integração Testes de Integração de Módulos JOVANOVIĆ, (2008), BASTOS

et al., 2012).

Teste de Sistema Teste de entrada e saída GAROUSI; VARMA, (2010). GAROUSI; ZHIC, (2013). Testes Funcionais

Testes Não-Funcionais Testes de Segurança

Teste de Aceitação Teste Alfa GONZÁLEZ et al. (2014). JURECZKO, M., MLYNARSKI, M., (2010).

Teste Beta

Fonte: Elaborado pela autora (2018)

O teste de unidade é o processo de testar os componentes de programa (como métodos ou classes de objeto), as funções individuais ou métodos, sendo estes os tipos mais simples de componente. Esse teste enfoca a lógica interna de processamento e as estruturas de dados dentro dos limites de um componente (JOVANOVIĆ, 2008; WAZLAWICK, 2013).

O teste de integração é o processo de testes efetuados no sistema em busca de falhas com a junção dos módulos. A definição mais comum para este tipo de teste é um conjunto de várias partes do software individualmente integradas de forma a criar componentes compostos, formando uma versão do software com todos os módulos funcionando em conjunto. Entre as estratégias de integração são citadas as seguintes (WAZLAWICK, 2013):

a) Integração big-bang: consiste em construir as diferentes classes ou componentes

separadamente e depois fazer a junção de tudo, ao final.

b) Integração bottom-up: consiste em integrar inicialmente os módulos de mais baixo

nível, ou seja, aqueles que não dependem de nenhum outro, e depois ir integrando os módulos de nível imediatamente mais alto.

c) Integração top-down: consiste em integrar inicialmente os módulos de mais alto

nível, deixando os mais básicos para o final. A vantagem está em verificar inicialmente os comportamentos mais importantes do sistema em que repousam as maiores decisões.

d) Integração sanduíche: consiste em integrar os módulos de nível mais alto da forma top-down e os de nível mais baixo da forma bottom-up. Essa técnica reduz os

problemas das duas estratégias anteriores, mas seu planejamento é mais complexo. Os testes de sistema são realizados quando alguns ou todos os componentes de um sistema estão integrados de forma a testar o software como um todo, dando atenção às interfaces dos componentes. Para Wazlawick (2013, p. 295), o “teste de sistema pode ser encarado como o teste de execução dos fluxos de um caso de uso expandido”. Se cada uma das operações de sistema (passos do caso de uso) já estiver testada e integrada corretamente deve-se, então, verificar se o fluxo principal do caso de uso pode ser executado corretamente, obtendo os resultados desejados, bem como os fluxos alternativos.

O teste de aceitação, se refere à execução das operações no sistema por parte do cliente, utilizando a interface final do sistema. Em outras palavras: o teste de sistema faz a verificação do sistema, enquanto o teste de aceitação faz a validação. O teste de aceitação tem duas variantes:

a) Teste alfa: é quando o próprio cliente ou o representante executa o software de forma

livre, sem o planejamento e sem a formalidade do teste de sistema.

b) Teste beta: sendo este menos controlado pela equipe de desenvolvimento, as versões

do software são disponibilizadas para os clientes e, sem o acompanhamento direto nem controle pela empresa desenvolvedora, os usuários exploram o sistema e suas funcionalidades.

Para auxiliar nas demandas dos testes de software é necessário ter como apoio técnicas que permitam ter um melhor desempenho durante o planejamento, a execução e a análise dos dados depois de serem execuções. Nesse sentido, apresentam-se as principais técnicas de testes usados durante o desenvolvimento de software.

As categorias servem para separam os testes de acordo com o processo de desenvolvimento, sendo executado um os testes correspondentes a etapa. Dentro das categorias existem os tipos de estratégias que podem complementar os testes proporcionando maior qualidade no software.