• Nenhum resultado encontrado

2.2 TESTES NO PROCESSO DESENVOLVIMENTO DE SOFTWARE

2.2.3 Técnicas de Testes ágeis

Os modelos tradicionais de desenvolvimento de software, descrevem que as atividades de testes ocorrem ao final no processo de desenvolvimento. Geralmente, os testes iniciam após a implementação. De forma inversa, os testes ágeis ocorrem de maneira constante, procurando identificar problemas antecipadamente, utilizando-se de um desenvolvimento interativo e curto, tendo sempre o contato com o cliente e buscando obter

feedback sobre o produto ou funcionalidade que está sendo construída (BOEING et al., 2012).

Os testes tradicionais são mais orientados para testes unitários e de sistema, não verificando outros aspectos chaves para o bom funcionamento e compreensão das funcionalidades.

As fases de teste no desenvolvimento ágil são realizadas de maneiras diferentes, tendo como principais categorias o teste unitário e o teste de aceitação. De acordo com cada modelo ágil de desenvolvimento são utilizadas técnicas de testes ágeis diferentes, que podem ser selecionadas por estratégias de tempo, custo e agilidade. Algumas delas são descritas a seguir:

a) Desenvolvimento orientado a testes (Test Driven Development - TDD): é um

desenvolvimento orientado a testes, proposto por Beck (2002), no qual os casos de testes são formulados antes mesmo do desenvolvimento do código-fonte do sistema. Esses modelos ágeis descrevem os testes automatizados como uma das tarefas mais importantes na engenharia de software (JURECZKO; MLYNARSKI, 2010). Os TDD’s estão na classificação dos testes unitários, pois são projetados por desenvolvedores antes da construção do código, simulando um teste de mesa do próprio código que será construído.

b) Teste de regressão: é uma técnica muito utilizada em testes ágeis, pois tem como

objetivo garantir que as correções de defeitos e as novas funcionalidades introduzidas em uma nova versão do software não afetem negativamente as funcionalidades já existentes na versão anterior (SARAVANAN; RAVICHANDRAN, 2015; SUN; PENG; LEUNG; LI, 2016). Houveram pesquisas importantes publicadas sobre testes de regressão antes da adoção generalizada de modelos ágeis, que ocorreram durante a primeira década do século XXI. (PARSONS; SUSNJAK; LANGE, 2013). Nos testes

de regressão são executados pela categoria de testes de sistemas, no qual são feitos testes nas funcionalidades do software.

c) Desenvolvimento Orientado a Testes de Aceitação (Acceptance Test Driven Development - ATDD), (MELNIK, 2007; MUGRIDGE, 2008), são também

conhecidos como testes de aceitação, testes de negócios (business testing), testes de histórias (story testing) ou testes para cliente (customer testing) (DENG, 2007). Os testes de ATDD possuem a mesma lógica dos testes TDD, mas são mais dirigidos aos requisitos do negócio ao invés de testes unitários e de integração, como o TDD. Os testes de aceitação estão dentro das categorias de testes que são executados na etapa de testes de aceitação.

d) Teste exploratório: acontece sem ter um caminho definido a percorrer e as

descobertas a serem feitas não são definidas com antecedência. Durante a última década, o teste exploratório foi reconhecido como uma abordagem séria, e ganhou um forte apoio dentro da comunidade de praticantes, por exemplo, em contextos ágeis (SHAH; GENCEL; ALVI, PETERSEN, 2013). Já os testes exploratórios estão presentes na classificação dos testes de sistemas, pois executam operações reais que o cliente faria.

e) Testes de usabilidade: buscam validar a facilidade de utilização do sistema por parte

do usuário, podendo ser usados para avaliar o software com a realização dos testes de interface, onde é verificada a interação do usuário com a aplicação, garantindo o acesso e navegação através das funções dos usuários (BASTOS et al., 2012; SINGHERA; HOROWITZ; SHAH, 2010). Os testes são executados dentro da categoria de testes de sistemas, integração e de aceitação, pois está relacionado a vários aspectos de testes que devem ser feitos antes da liberação do software. As práticas de testes ágeis são apoiadas por boas técnicas de testes ágeis, no processo convencionais de testes as técnicas mais executadas são os testes unitários, funcionais e de regressão. Na abordagem das técnicas de teste ágeis os testes são executados de forma estratégica, não somente executando testes convencionais, mas sim testes que tragam benefícios tanto para a qualidade do processo e produto, quanto à satisfação do cliente com o software.

As práticas de testes ágeis são apoiadas por técnicas de testes mais rápidas como testes exploratórios, de aceitação, de usabilidade, de regressão, sendo que no processo convencional de testes as categorias mais executadas durante o desenvolvimento são testes de interação e de sistema. Na abordagem das técnicas de teste ágeis os testes são executados de

forma estratégica, não somente executando testes convencionais, mas sim testes que tragam benefícios tanto para a qualidade do processo e produto, quanto à satisfação do cliente com o software.

Aderentes à perspectiva de desenvolvimento ágil, mais presentes e conhecidas na literatura são técnicas mais utilizadas em ambientes de desenvolvimento ágil de software. O resultado dessa análise foi organizado no Quadro 2.

Quadro 2 – Técnicas de testes de software aplicadas em contexto de desenvolvimento ágil

Técnicas Categorias Descrição Autores

Test Driven Development

(TDD)

Teste de Unidade

É um desenvolvimento orientado a testes, desenvolvido por Beck (2002), o qual significa escrever os casos de testes antes de desenvolver o código-fonte do sistema em forma de pequenas e rápidas interações.

JURECZKO; MLYNARSKI, (2010). Testes de Regressão Testes de Integrações

É realizado entre duas versões diferentes do software para mostrar que as mudanças na nova versão, não interferem com a parte inalterada na versão original.

SARAVANAN;

RAVICHANDRAN, (2015). SUN; PENG; LEUNG; LI, (2016). PARSONS, D., SUSNJAK, T., LANGE, M., (2013). ANAND; DINAKARAN, (2015). PANIGRAHI, C. R.; MALL, R. (2016). Acceptance Test Driven Development – (ATDD) Testes de Aceitação

É o desenvolvimento orientado a testes de aceitação e tem como foco a criação dos testes associados às estórias dos usuários, tendo como visão bem clara das necessidades essenciais do negócio do cliente, se baseando em exemplos reais para a criação destes cenários.

GONZÁLEZ et al. (2014). JURECZKO, M., MLYNARSKI, M., (2010). Teste Exploratório Testes de Sistema

São testes que tem o foco em percorrer caminhos em busca de descobertas a serem feitas não conhecidas com antecedência. O objetivo é a realização os testes, mas não com instruções detalhadas sobre como realizar tais explorações dentro do software.

SHAH; GENCEL; ALVI, PETERSEN, (2013). ITKONEN, MÄNTYLÄ e LASSENIUS (2015). Teste de Usabilidade (GUI) Testes de Sistema

São testes executados na intenção de identificar problemas em telas do software. As funcionalidades precisam ser de fácil entendimento, para que o usuário não perca tempo procurando uma opção para fazer determinada tarefa. GUIs ajudam os usuários a se concentrar no problema em vez de utilizar esforços em lembrar todas as opções fornecidas pelo aplicativo. As coisas precisam ser de fácil entendimento, para que o usuário não perca tempo procurando.

SINGHERA; HOROWITZ; SHAH, (2010).

A técnica de teste de regressão é a mais recorrente nos artigos referente aos testes ágeis, uma vez que são vistos como muito importantes, pois indiferente do modelo de desenvolvimento ágil utilizado, todos os softwares passam por correções e possíveis melhorias durante todo o período do processo.

Outra técnica de teste ágil que está destacada nos artigos selecionados é a ATDD, encontrando-se descrições de como aplicar esta técnica de testes de aceitação (ATDD) no desenvolvimento de software ágil (JURECZKO, M., MLYNARSKI, M., 2010; GONZÁLEZ, J. P., DOMINGUEZ MAYO, F. J., GUTIÉRREZ RODRÍGUEZ. J. J., ESCALONA CUARESMA, M. J., 2014).

Para melhor acompanhar o andamento dos testes é preciso ter métricas, indicadores e medidas para observar como está a eficiência dos testes. Nesse sentido, são descritas e abordadas as principais medidas que são usadas para avaliar os testes de software durante o desenvolvimento, e sendo que essas métricas foram citadas segundo os autores do portfólio 2 desta pesquisa.