Gerência - Qualidade e Testes

Introduzindo Conceitos de Testes Comportamentais

Testes comportamentais (como são chamados os testes de software que valorizam a participação do usuário no processo) tem como razão reverter a idéia subentendida de que testes servem para encontrar falhas, o que comprometeria a imagem dos desenvolvedores.

por Fabio Camara



Por: Cinthia Gomes e Fábio Câmara

Facilidade no uso. Interface amigável, com comandos simples e intuitivos. Essas são algumas características buscadas não só em celulares, notebooks e outros eletroeletrônicos, mas também quando falamos de software - talvez a frase deveria ser: principalmente quando falamos de software.

Quando refletimos esta frase, nos perguntamos: como desenvolver um software e saber que a aplicação de fato atende às necessidades do usuário final (ou seria mais adequado "cliente")? Ponto para quem respondeu "efetuando testes".

No filme "Big", (com o título "Quero ser Grande" aqui no Brasil) o personagem do ator Tom Hanks é uma criança que tem o desejo de se tornar adulto da noite para o dia. No filme, o personagem foi atendido por uma máquina de um parque de diversões. O filme nos mostra que o personagem na vida de adulto, arruma emprego numa fábrica de brinquedos e alavanca as vendas testando os produtos e sugerindo outros. Faz todo sentido, afinal é um adulto com a mente de uma criança de 10 anos. Todos os brinquedos testados e aprovados por ele são sucesso de vendas.

Trazendo o exemplo para a vida real e para o desenvolvimento de softwares, fica fácil identificar a importância dos testes comportamentais no processo de construção. Somente o cliente na utilização do software, identificará possíveis falhas e isso agregará incalculável valor ao resultado final. Testes comportamentais são mais eficazes que testes automatizados, no que diz respeito à satisfação do cliente / usuário, justamente por encontrarem vulnerabilidades e inconsistências que a automação não encontra.

Testes comportamentais (como são chamados os testes de software que valorizam a participação do usuário no processo) tem como razão reverter a idéia subentendida de que testes servem para encontrar falhas, o que comprometeria a imagem dos desenvolvedores. Na prática, ninguém é melhor que o próprio usuário para saber qual funcionalidade se adequará melhor ao uso que a aplicação terá em seu dia-a-dia. Trazer esta informação para o desenvolvedor antecipa a maturidade e aumenta a qualidade do produto final.

Vale a pena lembrar que, para se colocar no lugar do usuário final e testar a usabilidade, especificação e funcionalidade de uma aplicação, se faz necessário conhecer o público-alvo a quem se destina o mesmo, quais suas expectativas, sua rotina de trabalho, os diversos cenários e tipos de clientes dentro de uma mesma empresa.

Testes comportamentais subdividem-se fundamentalmente em três categorias: testes de verificação, testes de validação e testes de especialização. Cada um, por sua vez, possui itens a serem detalhados, conforme acompanharemos a seguir.

Testes de verificação

Garantem a navegabilidade, a interface amigável, a usabilidade e a leitura da aplicação diante do usuário final. Testes de verificação devem ser executados ao longo de todo o processo, uma vez que auxiliam na identificação de inconsistências de fácil e rápida correção.
  • Testes de Usabilidade: Tendo como ponto de partida o caminho que o usuário fará para executar determinada tarefa, testes de usabilidade visam identificar eventuais dificuldades encontradas na utilização/navegação do software. A interface deve ser intuitiva, simples, e a aplicação deve ter condições de uso.

  • Testes de Especificação: Tem como objetivo assegurar que todas as especificações solicitadas pelo cliente foram atendidas.
Testes de Validação
  • Testes de Funcionalidade: Qual o negócio que seu software deve executar satisfatoriamente? A aplicação atende às expectativas de negócios? Testes de funcionalidade identificam possíveis inconsistências no atendimento às premissas de negócios. Logo, se o software desenvolvido deixa de executar determinada função durante os testes, dizemos que o mesmo não está em conformidade com as necessidades de negócios do sistema.

  • Testes de Regressão: Como o próprio título sugere, testes de regressão são os efetuados a partir de releases anteriores, com o objetivo de assegurar que inconsistências encontradas desde o primeiro release foram corrigidas. Voltando no tempo para validar tudo o que foi validado anteriormente, elimina-se a reincidência de erros e garante-se a entrega do projeto 100% livre de falhas conhecidas e versões posteriores.
Testes de Especialização

Dentre as categorias de testes comportamentais, os chamados Testes de Especialização são os responsáveis pela personalização do software desenvolvido e a valorização do usuário no resultado final.
  • Testes de Cenário: Sabendo-se que dentro de uma empresa serão vários os usuários e, conseqüentemente, várias as configurações de máquina, os testes de cenário servem para diagnosticar o comportamento do produto em diferentes ambientes.

  • Testes de Persona: Por meio da criação de perfis e formação de grupos de usuários, cria-se um documento onde descreve-se o uso que cada grupo faz da aplicação, dentro de seus respectivos logins. Assim, com testes de persona, é possível traçar o caminho que cada usuário, dentro de seu perfil, faz dentro do software e identificar inconsistências e vulnerabilidades que o usuário encontraria, personalizando as experimentações.
Foco no cliente, na satisfação do mesmo e na qualidade dos serviços prestados. Tudo isso sem comprometer a imagem de quem desenvolve o projeto e em tempo hábil para entrega dentro do prazo preestabelecido. Sim, é possível com testes comportamentais.

Cinthia Gomes é analista de Teste e qualidade da F|Camara - Formação e Consultoria, possui sólidos conhecimentos na elaboração de planos, roteiros e scripts de testes. Também efetua testes de performance e carga através de ferramentas do VSTS - Visual Studio Team System.

Fabio Camara é diretor de tecnologia da F|Camara - Formação e Consultoria, possui os títulos de MVP na ferramenta VSTS, MSF Practitionner, Certified SCRUM Practitionner, ITIL Foundations entre outros. Busca resgatar o valor humano nas metodologias e nos projetos de desenvolvimento de software.
Fabio Camara

Fabio Camara - MVP VSTS, MCT, MCP, MCSD, MCTS, MCPITP, MCPD, MSF Practitioner, Certified SCRUM Master, Certified ITIL Foundations. Escreveu mais de 15 livros nesta última década. Atua como consultor de produtividade em desenvolvimento de projetos e professor de disciplinas ágeis de engenharia de software. Pode ser localizado no site http://www.fcamara.com.br.