Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

Estratégias e planejamento de teste de
software
Você vai aprender a elaborar planos e casos de teste, conhecer estratégias de teste e desenvolvimento de
software, aplicar testes caixa branca e preta, além de utilizar TestLink, Cucumber, Selenium e a técnica
BDD.
Prof. Carlos Alberto de Farias
1. Itens iniciais
Propósito
O domínio de estratégias de teste e desenvolvimento de software é essencial para profissionais de TI
garantirem a qualidade dos sistemas. Esse conhecimento permite planejar, automatizar e validar
funcionalidades, assegurando que o produto final atenda aos requisitos dos usuários e aos padrões do
mercado.
Objetivos
Aplicar estratégias de teste de software, diferenciando os tipos de teste caixa branca e caixa preta em
contextos específicos de desenvolvimento.
 
Definir a elaboração e a realização de planos e casos de teste com o uso da ferramenta TestLink,
integrando UML e casos de uso no planejamento.
 
Desenvolver rotinas de teste automatizado com Cucumber e Selenium WebDriver, elaborando testes de
aceitação com base em requisitos e na técnica BDD.
Introdução
Sem estratégia, até mesmo as ações mais simples podem não alcançar os resultados esperados. Quando
falamos sobre o desenvolvimento de softwares, essa premissa é ainda mais evidente: sem planejamento e
uma boa estratégia de testes, um sistema pode apresentar falhas críticas, impactando diretamente a
experiência do usuário e a confiabilidade do produto.
 
Neste conteúdo, você será apresentado às principais estratégias de teste e desenvolvimento de software.
Vamos explorar como essas estratégias se integram ao ciclo de vida do desenvolvimento e como tomar
decisões acertadas sobre quando e onde aplicar cada uma delas. Um dos focos será a diferenciação entre os
testes caixa branca e caixa preta, compreendendo suas abordagens e aplicações práticas.
 
Você também aprenderá a importância da elaboração de planos e casos de teste bem estruturados para
garantir a qualidade do sistema. Para isso, conhecerá a ferramenta TestLink, que auxilia na documentação e
execução desses testes de maneira prática e organizada.
 
Além disso, abordaremos a utilização da UML e dos casos de uso como recursos valiosos para o planejamento
de testes mais eficazes. Avançando no conteúdo, exploraremos frameworks modernos como o Cucumber e a
automação com o Selenium WebDriver, aprendendo a desenvolver rotinas de teste mais eficientes e alinhadas
com as expectativas do usuário final.
 
Por fim, será apresentada a técnica BDD – Behavior Driven Development (Desenvolvimento Orientado por
Comportamento) – uma abordagem que aproxima as equipes técnicas e os stakeholders, promovendo maior
clareza nos requisitos e nos testes de aceitação. Prepare-se para aplicar esse conhecimento de forma prática
e estratégica no desenvolvimento de softwares mais seguros e funcionais.
• 
• 
• 
1. Estratégias do processo de Teste de Software
Estratégias de teste de software
O planejamento e a realização das atividades de teste definem a estratégia de testes de software.
Uma estratégia de teste de software:
 
Define, para cada etapa do processo de engenharia de software, técnicas de projeto de casos de teste
e métodos de teste específicos.
 
Integra, em uma série bem planejada de passos que resultam na construção bem-sucedida de
software, métodos de projeto de caso de teste.
 
Acomoda testes de baixo e de alto nível.
 
Oferece orientação ao profissional.
 
Oferece um conjunto de marcos de referência ao administrador.
 
Deve ser mensurável.
 
Integra métodos de projetos de casos de teste em uma série bem planejada de passos, objetivando a
construção bem-sucedida do software.
Atenção
Em um primeiro momento, você pode não entender, mas o software é testado para promover erros que
foram feitos inadvertidamente no momento em que foi construído. 
Leia o texto para conhecer quem faz a estratégia e a atividade de teste.
Estratégia e atividade de teste
Quem faz a estratégia e a atividade de teste?
Estratégia de teste de software: desenvolvida pelo gerente de projeto, o engenheiro de software ou o analista
de teste.
• 
• 
• 
• 
• 
• 
• 
 
Atividade de teste: a equipe de desenvolvimento do software e, para grandes projetos, um grupo de teste
independente.
Atenção
Atividades de teste e de depuração são atividades diferentes, mas a depuração deve acontecer em
qualquer estratégia de teste. 
Por que é importante?
O teste responde (e é responsável) por mais esforço que qualquer outra atividade de engenharia de software.
Caso seja feito ao acaso, teremos tempo e esforço desperdiçados.
Quais são os passos?
Vejamos por uma visão bem simplista: o teste começa no “varejo” e acaba no “atacado”. Mas o que seria isso?
 
O varejo são os testes unitários, e o atacado são os testes de integração, depuração na satisfação dos
requisitos do cliente.
 
As características genéricas de estratégias de teste são:
 
Teste efetivo – A equipe deve conduzir revisões técnicas formais (erros serão eliminados antes do
teste);
 
Início do teste – O teste começa no nível de componente e segue “para fora”, em direção à integração
de todo o sistema;
 
Atividade de teste - Inicia-se no nível de módulos e prossegue para fora, na direção da integração de
todo o sistema;
 
Diferentes técnicas de teste são apropriadas a diferentes pontos de tempo;
 
Fornecem roteiro - Descrevem os passos a serem conduzidos como parte do teste, como:
 
Quando os passos são planejados e executados?
 
Quanto de esforço, tempo e recursos são necessários?
• 
• 
• 
• 
• 
◦ 
◦ 
O que deve incorporar uma estratégia?
O planejamento de teste;
 
O projeto de casos de teste;
 
A execução e o teste;
 
A coleta e a avaliação de dados (resultado).
Atenção
A estratégia deve ser flexível, para promover um planejamento razoável e acompanhamento gerencial ao
projeto. 
Veja, a seguir, um exemplo de uma estratégia (workflow) para sistemas bancários multicanais.
Conteúdo interativo
Acesse a versão digital para ver mais detalhes da imagem
abaixo.
Exemplo de estratégia.
• 
• 
• 
• 
Vejamos o que acontece nessa estratégia de teste: como não foi realizada por outros canais, ficou evidente
que não foram realizados testes multicanais, e nesse caso, todos os participantes (em separado) têm a
percepção de que os testes realizados pelo canal foram satisfatórios.
Algumas estratégias de teste
Teste de unidade
É caracterizado por concentrar-se em cada unidade do software, de acordo com o que é
implementado no código fonte.
Cada módulo é testado individualmente, garantindo que ele funcione adequadamente.
Utiliza as técnicas de teste de caixa branca.
Teste de integração
É caracterizado por concentrar-se no projeto e na construção da arquitetura de software.
Os módulos são montados ou integrados para formar um pacote de software.
Utiliza principalmente as técnicas de teste de caixa preta.
Teste de validação
Os requisitos estabelecidos como parte da análise de requisitos de software são validados em relação
ao software que foi construído.
Ao término da atividade de teste de integração, o software está completamente montado como um
pacote.
Os erros de interface foram descobertos e corrigidos, e uma série final de testes de software — os
testes de validação — pode iniciar-se.
Teste de sistema
Caracteriza-se por testar, como um todo, o software e outros elementos do sistema.
Envolve uma série de diferentes testes, cujo propósito primordial é pôr completamente à prova o
sistema baseado em computador.
Alinhamento estratégico
Como fazer para que a busca pela melhoria do desenvolvimento de software seja realmente efetiva?
Podemos alinhar a engenharia de software aos objetivos de negócio da empresa.
Atenção
As decisões e rumos tomados pelas áreas que utilizam a Engenharia de Software devem sempre estar
alinhados à estratégia da empresa, fazendo com que a área de desenvolvimento se torne uma
ferramenta para aumentar o valor do negócio da organização. 
Nesse caso,teste da caixa preta.
C Teste de integração e teste de unidade.
D Teste de regressão e teste fumaça.
E Teste de sistema e teste de integração.
A alternativa A está correta.
• 
• 
• 
• 
• 
Os testes de alto nível não requerem o conhecimento da estrutura interna do sistema. São eles: teste de
sistema e teste de aceitação. Portanto, a única opção correta é a opção A.
Questão 2
O termo automação de teste de software significa a utilização:
A De um software que imita a interação com a aplicação no que se refere ao teste tal qual um ser
humano faria.
B Do desenvolvimento de scripts de testes para simular a massa de teste a ser utilizada.
C De casos de testes automatizados que imitam a interação com a aplicação.
D De uma metodologia de teste para simular os sistema em produção.
E De um ambiente de teste, de ferramentas e de uma massa de teste.
A alternativa A está correta.
Com a automação de testes, pode-se alcançar uma execução muito confiável.
Questão 3
Para a implementação de um projeto de automatização de testes, precisamos de:
A Recurso, infraestrutura, ferramenta e metodologia.
B Ferramenta, equipe de teste, processo de teste e caso de teste.
C Scripts, software de teste, testador e um sistema para testar.
D Ferramenta, equipe de teste, sistema para testar e hardware.
E Hardware, software, script e os dados para teste.
A alternativa A está correta.
Esses são os itens básicos para a implementação de um projeto de automação de testes.
Questão 4
Nos testes de validação, os mecanismos de testes estão segmentados em dois níveis: testes de baixo nível e
de alto nível. Descreva quais os testes que são considerados de alto nível e quando são aplicados.
Chave de resposta
Teste de sistema: refere-se ao comportamento de todo o sistema/ produto definido pelo escopo de um
projeto ou programa de desenvolvimento.
Nesse tipo de teste, o ambiente de teste deve corresponder o máximo possível ao objetivo final, ou ao
ambiente de produção, para minimizar os riscos de falhas específicas de ambiente de serem encontradas
durante o teste.
Teste de aceite: é de responsabilidade do cliente. Ele irá validar todas as funcionalidades do sistema.
4. Conclusão
Considerações finais
Neste conteúdo, abordamos a importância das estratégias de teste no desenvolvimento de software,
destacando como o planejamento adequado pode evitar falhas e garantir sistemas mais robustos e confiáveis.
Iniciamos com a compreensão das estratégias que integram as atividades de desenvolvimento e teste,
aprofundando a diferenciação entre os testes caixa branca e caixa preta e suas respectivas abordagens.
 
Exploramos também a elaboração de planos e casos de teste como parte essencial do processo, introduzindo
a ferramenta TestLink para auxiliar na organização e execução dessas tarefas de forma prática. Além disso,
discutimos o uso da UML e dos casos de uso como ferramentas de apoio para a estruturação eficiente dos
testes.
 
Avançamos no conteúdo com a apresentação do framework Cucumber e da automação de testes utilizando o
Selenium WebDriver, destacando a construção de rotinas automatizadas que contribuem para maior agilidade
e precisão na verificação de funcionalidades.
 
Encerramos com a técnica BDD (Behavior Driven Development), que propõe uma abordagem colaborativa
entre equipes técnicas e usuários, facilitando a compreensão dos requisitos e a validação do comportamento
esperado do sistema.
 
Assim, consolidamos conhecimentos fundamentais para a atuação profissional na área de qualidade de
software, oferecendo uma base sólida para a aplicação prática de testes que asseguram a entrega de
soluções tecnológicas alinhadas às necessidades dos usuários e às exigências do mercado.
Explore +
Leia os textos:
 
Laboratório de testes com TestLink na página SlideShare.
 
Teste de Software Moderno: Estratégias de Testes na página do Medium.
 
TestLink: gerenciando atividades de teste na página DevMedia.
 
Testlink - uma ferramenta de gerenciamento de testes de software. 
 
Assista ao vídeo Cucumber na página do Labs Bluesoft.
Referências
BARTIÉ, A. Garantia de qualidade de software. 1. ed. Rio de Janeiro: Campus, 2002.
 
BOOCH, G.; RUMBAUGH, J.; JACOBSON, I. 2.ed. UML: Guia do usuário. Rio de Janeiro: Campus, 2005.
• 
• 
• 
• 
• 
• 
https://cdn-conteudo.ensineme.com.br/Testlink_c0c539bebb.pdf
 
CAETANO, C. Automação e gerenciamento de testes: aumentando a produtividade com as principais
soluções open source e gratuitas. Consultado na internet em 06 jun. 2019.
 
COCKBURN, A. Escrevendo casos de uso eficazes. Porto Alegre: Bookman, 2005.
 
CUCUMBER. Executable Specifications. Consultado na internet em 06 jun. 2019.
 
GITHUB. Join GitHub today. Consultado na internet em 1 jun. 2019.
 
LARMAN, C. Utilizando UML e padrões: uma introdução à análise e ao projeto orientado a objetos e ao
desenvolvimento iterativo. 3. ed. Porto Alegre: Bookman, 2007.
 
LINHA DE CÓDIGO. CAETANO, C. Automação e gerenciamento de testes: aumentando a produtividade
com as principais soluções open source e gratuitas. Consultado na internet em 06 jun. 2019.
 
PRESSMAN, R. S. Engenharia de Software. 6. ed. São Paulo: Makron Books, 1995.
 
RUBY. Documentação. Consultado na internet em 06 jun. 2019.
 
SELENIUM. Selenium Documentation. Consultado na internet em 06 jun. 2019.
 
SOMMERVILLE, Ian. Engenharia de Software. 9. ed. São Paulo: Pearson, 2011.
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
	Estratégias e planejamento de teste de software
	1. Itens iniciais
	Propósito
	Objetivos
	Introdução
	1. Estratégias do processo de Teste de Software
	Estratégias de teste de software
	Atenção
	Estratégia e atividade de teste
	Atenção
	Atenção
	Conteúdo interativo
	Algumas estratégias de teste
	Teste de unidade
	Teste de integração
	Teste de validação
	Teste de sistema
	Alinhamento estratégico
	Atenção
	Exemplo
	Exemplo
	Teste caixa branca e teste caixa preta
	Caixa branca
	Técnicas empregadas no teste caixa branca
	Teste caixa branca e teste caixa preta
	Teste caixa branca
	Conteúdo interativo
	Conteúdo interativo
	Conteúdo interativo
	Conteúdo interativo
	Teste caixa preta
	Conteúdo interativo
	Conteúdo interativo
	Conteúdo interativo
	Abordagens de teste
	Conteúdo interativo
	Caixa branca
	Caixa preta
	Abordagens de teste
	Baseados na estrutura interna
	Conteúdo interativo
	Baseados em requisitos
	Baseado em grafo
	Particionamento de equivalência
	Análise de valor-limite
	Matriz ortogonal
	Conteúdo interativo
	Verificando o aprendizado
	2. Plano de Testes e Casos de Teste
	Gestão de testes
	Conteúdo interativo
	Utilizando a ferramenta TestLink
	TestLink
	Motivação para o TestLink
	Desvantagem dessa ferramenta
	Saiba mais
	O que é plano de testes?
	Conteúdo interativo
	Atenção
	Elaboração do plano de teste
	Requisitos a serem testados
	Estratégias e ferramentas de teste
	Equipe (responsabilidades e requisitos humanos) e infraestrutura
	Cronograma de atividade
	Documentação
	Planejamento e execução dos testes
	Planejar teste
	Executar teste
	Planejamento e execução
	Principais erros
	No propósito da atividade de teste
	No planejamento dos testes
	No pessoal contratado para testar
	Na execução dos testes em si
	Na aplicação da tecnologia nos testes
	Conteúdo interativo
	Importância da UML e casos de uso para a elaboração dos planos de teste
	Utilização da UML no processo iterativo e incremental
	Defeitos no desenvolvimento de software
	Exemplo simples de ciclo de vida de desenvolvimento de software
	Métodos de análise de documentos
	Diagrama de estado
	Exemplo
	Conteúdo interativo
	Diagrama de atividades
	Conteúdo interativo
	Modelo de casos de uso
	Comentário
	Verificando o aprendizado
	3. Teste de Aceitação
	O que é um teste de aceitação?
	Defeito
	Erro
	Falha
	Exemplo
	Desenvolvimento de rotinas de teste com base no framework Cucumber e automação com Selenium WebDriver
	Ferramentas de teste automatizado de software
	Infraestrutura
	Metodologia
	Ferramenta
	Atenção
	Automação com ferramenta CucumberCucumber
	Exemplo
	Conteúdo interativo
	Saiba mais
	Elaborando testes de aceitação com usuário final
	Conteúdo interativo
	Teste de aceitação formal
	Teste de aceitação informal
	Teste beta
	Conteúdo interativo
	Relacionando requisitos a expectativas de teste
	Estratégia de teste
	Atenção
	Exemplo
	Testes baseados em requisitos
	Requisitos de negócio
	Requisitos de usuário
	Requisitos funcionais
	Requisitos não funcionais
	Requisitos detalhados
	Requisito de teste
	Metodologias utilizadas para testes de aceitação
	Fases da Metodologia MTS
	Comentário
	Fase de teste de unidade
	Fase de teste de integração
	Fase de teste de sistema
	Fase de teste de homologação
	Fase de teste de implantação
	BDD - Behavior Driven Development (Desenvolvimento Orientado por Comportamento)
	Conteúdo interativo
	Metodologias de desenvolvimento
	Princípios do BDD
	Como é o ciclo do BDD?
	Funcionamento do BDD
	Conteúdo interativo
	Verificando o aprendizado
	4. Conclusão
	Considerações finais
	Explore +
	Referênciasé necessário que as empresas associem a Engenharia de Software às melhores técnicas a serem
adotadas pelos profissionais relacionados com a produção de software. Será que todas as empresas têem
essa visão ou apenas uma visão limitada?
 
Temos basicamente três níveis na empresa. A Engenharia de Software não deve apenas ficar no nível
operacional, pois este cobre apenas parte das dificuldades, sendo que os problemas de maior impacto na
organização aparecem nos níveis tático e estratégico.
Exemplo
As empresas frequentemente apontam que sua área de desenvolvimento de software não conhece ou
entende seu próprio negócio; Que utiliza indiscriminadamente tecnologias e ferramentas em seus
produtos sem se preocupar se haverá ganho ou se o cliente está preparado para absorvê-las; Que se
preocupa tanto com as próprias atividades que cria obstáculos, burocracia ou dificuldades para ser
acionada por outras áreas; Empresas que, por exemplo, atuam desenvolvendo produtos de software
customizados para outras organizações têm por estratégia minimizar seus custos. 
Assim, as práticas adotadas devem favorecer essa estratégia, tais como:
 
Implantar processos e ferramentas que tornem o desenvolvimento mais barato, já incluídos os custos
da execução do processo e das licenças (no nível operacional).
 
Gerenciar e reduzir a ociosidade da equipe no período entre-projetos (no nível tático).
 
Estabelecer um programa corporativo de premiação de produtividade (no nível estratégico).
 
Agora que entendemos que a Engenharia de Software deve atuar nos três níveis (Estratégico, Tático e
Operacional), seus princípios de melhoria cíclica (processo de melhoria contínua) podem ser aplicados com
sucesso.
• 
• 
• 
Exemplo
Ciclo de melhoria: Primeiro é feito um diagnóstico sobre como o desenvolvimento de software na
empresa precisa melhorar, em todos os níveis; Depois, os itens diagnosticados são priorizados com base
no impacto no negócio, e os mais críticos são escolhidos; Ações para resolver os itens selecionados são
então definidas e implementadas, observando o que precisa ser feito para que a ação gere resultados
efetivos em todos os níveis; Finalmente, avalia-se o resultado da solução e o impacto positivo nos
negócios. 
As soluções de Engenharia de Software sempre contribuirão para agregar valor ao negócio com
esses ciclos de melhoria adequadamente aplicados, e o software será efetivamente uma peça
fundamental na estratégia da empresa.
Teste caixa branca e teste caixa preta
Existem duas estratégias utilizadas para conduzir o processo de validação de software.
 
Caixa branca.
 
Caixa preta.
 
Estas estratégias não são excludentes; muito pelo contrário, elas são complementares.
 
Conhecendo os detalhes internos de um produto, os testes são executados para assegurar que “todas
as engrenagens estejam articuladas”, assim:
 
Operação interna de acordo com a especificação;
 
Todos os componentes internos foram adequadamente exercitados (teste caixa branca [aberta],
white-box testing, teste estrutural).
 
Conhecendo-se a função que um produto deve realizar, os testes são executados para demonstrar que
cada função está completamente operacional (teste caixa preta [fechada], black-box testing, teste
funcional).
 
Caixa branca
Arquitetura interna do software → Estrutura de controle (programa) → Caso de teste
Técnicas empregadas no teste caixa branca
• 
• 
• 
◦ 
◦ 
• 
Avaliação das estruturas de sequência, decisão e repetição, através da simulação de situações que exercitem
todas as estruturas utilizadas na codificação adequadamente.
 
Vamos entender o que é um caso de teste, utilizado em teste caixa branca e preta.
 
É o documento que registra todo o planejamento dos testes e o que será testado. Deve identificar o maior
número de cenários e variações possíveis, assim como os resultados esperados. Normalmente o desenho de
um cenário de teste é mental.
 
Leia o texto para entender melhor sobre o teste caixa branca e teste caixa preta.
Teste caixa branca e teste caixa preta
Teste caixa branca
É feito a partir das estruturas de controle do programa, através do maior número possível de cenários de
testes que atendam ao maior número possível de situações.
 
Exemplo:
Conteúdo interativo
Acesse a versão digital para ver mais detalhes da imagem
abaixo.
Notação para grafo de fluxo (de programa).
Conteúdo interativo
Acesse a versão digital para ver mais detalhes da imagem
abaixo.
Nessa notação, cada círculo representa um ou mais comandos nó de desvio do programa fonte.
 
Exemplo:
Conteúdo interativo
Acesse a versão digital para ver mais detalhes da imagem
abaixo.
Conteúdo interativo
Acesse a versão digital para ver mais detalhes da imagem
abaixo.
O teste caixa branca é considerado um teste procedural. Então, quais são os exames de detalhes desses
testes procedurais?
 
Teste de caminhos lógicos - Casos de teste para exercitar conjuntos específicos de condições e/ou
laços;
 
O estado do programa - Examinado em vários pontos para determinar se o estado esperado ou
declarado corresponde ao estado real.
 
• 
• 
Importante: Não é possível testar todos os caminhos lógicos de um programa grande.
 
A abordagem deste tipo de teste tem as seguintes peculiaridades:
 
Seleção de um número limitado de caminhos a serem exercitados;
 
Estruturas de dados importantes podem ser investigadas para validação;
 
Pode haver combinação dos dois tios de teste, funcional e estrutural, para validar a interface do
software e assegurar (seletivamente) que as operações internas do software estejam corretas.
 
A estrutura de controle do projeto procedimental deve ter casos de teste que:
 
Garantam que todos os caminhos independentes dentro de um módulo tenham sido percorridos pelo
menos uma vez;
 
Exercitem todas as decisões lógicas em todos os seus ramos de saída;
 
Executem todos os laços nos seus limites e dentro de suas fronteiras operacionais;
 
Exercitem estruturas de dados internas para assegurar sua validade.
 
Observe as tabelas a seguir.
Descrição do caso
de teste
Uma descrição da condição, caminho do programa ou objetivo que
este conjunto de dados implementa / executa.
Entradas de teste Os objetos ou campos que os atores interagem e os valores dos dados
de entrada pelo ator quando executa este caso de teste.
Resultados
esperados
Estado resultante ou dado recebido após completa execução do caso
de teste.
Tabela. Modelo de caso de teste do RUP.
Carlos Alberto de Farias.
Id Cenário / Condição Dedos de
entrada Resultados esperados
1112
Efetuar login - Operação com
sucesso
Login - Válido
Password -
Válido
Usuário logado, página principal
exibida
• 
• 
• 
• 
• 
• 
• 
Tabela. Exemplo de caso de teste.
Carlos Alberto de Farias.
Teste caixa preta
Também conhecidos como testes comportamentais, destacam os requisitos funcionais do software e utilizam
técnicas para garantir que os requisitos do sistema sejam amplamente atendidos pelo software construído.
 
Esses testes não requerem o conhecimento da tecnologia empregada e dos conceitos de implementação do
software, o que os diferencia dos testes caixa branca.
Conteúdo interativo
Acesse a versão digital para ver mais detalhes da imagem
abaixo.
Exemplo:
Conteúdo interativo
Acesse a versão digital para ver mais detalhes da imagem
abaixo.
Para o teste caixa preta, devemos verificar:
 
Requisitos (importante conhecer);• 
 
Características (importante conhecer);
 
Comportamentos (importante conhecer);
 
Maior variedade de cenários (maiores simulações avaliadas).
 
O que é necessário que o profissional de testes conheça no teste caixa preta para que o software seja
avaliado através dos resultados gerados pela aplicação? Os requisitos, suas características e comportamentos
esperados.
 
Nesse caso, quanto maior a variedade de cenários, maior será o conjunto de simulações que serão avaliadas e
comparadas com os requisitos da aplicação, implementados através da construção de casos de testes.O que é importante o testador saber:
 
Como a validade funcional é testada;
 
Como o comportamento e o desempenho do sistema são testados;
 
Que classes (módulos – procedimentos e dados [sistema]; classes – atributos e métodos [objeto]) de
entrada farão bons casos de teste;
 
Se o sistema é particularmente sensível a certos valores de entrada;
 
Como as fronteiras de uma classe de dados podem ser isoladas;
 
Que taxas e volumes de dados o sistema pode tolerar;
 
Que efeito “combinações específicas de dados” terá sobre a operação do sistema?
 
Assista ao vídeo e aprenda sobre casos de teste.
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
Conteúdo interativo
Acesse a versão digital para assistir ao vídeo.
Abordagens de teste
Segundo Bartié (2002), há várias formas de identificar e planejar os casos de testes a serem aplicados nos
testes de validação; porém, o direcionamento dos testes (conhecido com testdrive) baseia-se exclusivamente
em:
 
Requisitos da solução tecnológica a ser desenvolvida (teste caixa preta); ou
 
Estrutura interna do código-fonte a ser implementado (teste caixa branca).
 
Assista ao vídeo e aprenda como aprofundar as técnicas de caixa branca.
Conteúdo interativo
Acesse a versão digital para assistir ao vídeo.
Caixa branca
Testes baseados na estrutura interna
• 
• 
Caixa preta
Testes baseados nos requisitos
Leia o a seguir para entender melhor sobre esses testes.
Abordagens de teste
Baseados na estrutura interna
Os testes requerem conhecimento profundo da tecnologia empregada e do projeto desenvolvido, de forma a
praticarem adequadamente todas as estruturas internas do projeto.
 
Este tipo de teste requer que o testador tenha um amplo conhecimento interno do software e subdivide-se
em:
 
Teste de caminho básico.
 
Teste de fluxo de dados.
• 
• 
 
Teste de ciclo.
 
Teste de condição.
 
Vejamos cada um deles.
Teste de caminho básico
 
Permite ao projetista do caso de teste apartar uma medida da complexidade lógica (medida usada como guia
para definir um conjunto básico de caminhos de execução) de um projeto procedimental e usá-la para definir
um conjunto básico de caminhos de execução.
 
Os casos de teste apartados para exercitarem o conjunto básico têm a garantia de executar cada instrução do
programa pelo menos uma vez durante a atividade de teste.
Teste de fluxo de dados
 
Tenta encontrar erros nas seguintes categorias:
 
Seleciona caminhos de teste de um programa de acordo com as localizações de definições e usos de
variáveis no programa;
 
Seleciona caminhos de teste de um programa que contenha instruções de laços e if aninhados.
 
Vejamos um exemplo demonstrando como usar o teste de fluxo de dados em um grafo de fluxo:
Conteúdo interativo
Acesse a versão digital para ver mais detalhes da imagem
abaixo.
• 
• 
• 
• 
Teste
do
ciclo
 Tipos de
abordagens:
 Simples; Aninhados; Concatenados; Não
estruturados.
 Simples -
conjunto
de testes
pode ser
aplicado a
ciclos
simples,
nos quais
“n” é o
número
máximo
de
passadas
permitidas
através
do ciclo.
 Aninhados -
testa se os
ciclos mais
internos que
são
aplicados à
abordagem
de ciclos
simples e os
outros
externos
permanecem
com o valor
mínimo.
 Concatenados Os ciclos
concatenados
podem ser
testados
usando a
abordagem
definida para
simples, se
cada ciclo for
independente
do outro.
 Se dois ciclos
forem
concatenados
e a contagem
para o ciclo 1
for usado valor
individual para
o ciclo 2, então
os ciclos não
são
considerados
independentes.
 Quando os
ciclos não são
independentes,
é
recomendada
a abordagem
aplicada a
ciclos
aninhados.
(Pressman,
2011)
 Não
estruturados
- segundo
Pressman,
sempre que
possível,
essa classe
de ciclos
deverá ser
redesenhada
para refletir
o uso das
construções
de
programação
estruturada.
Baseados em requisitos
• • • • • • • 
Os testes são baseados nos documentos de requisitos e modelados através de especificações funcionais e
suplementares. Os requisitos devem ser decompostos em casos de testes de forma a avaliarem todos os
cenários existentes e validarem todas as variações. (Bartié, 2002)
 
Baseado em grafo.
 
Particionamento me equivalência.
 
Análise do valor limite.
 
Teste de matriz ortogonal.
 
Vejamos cada um deles a seguir.
Baseado em grafo
A teoria dos grafos é um ramo da matemática que estuda as relações entre os objetos de um
determinado conjunto. Para tal, são empregadas estruturas chamadas de grafos, G, onde V é um
conjunto não vazio de objetos denominados vértices e A é um conjunto de pares não ordenados de V,
chamado de aresta.
Esse tipo de teste leva em consideração os objetos modelados no software e as relações que os
unem. A ideia é definir uma série de testes que examinam se os objetos têm a relação esperada uns
com outros.
Quando se tem uma coleção de nós que representam objetos, ligações que representam as relações
entre objetos, pesos de nó que descrevem as propriedades de um nó e pesos de ligação que
descrevem alguma característica de uma ligação, isso é um grafo.
• 
• 
• 
• 
Particionamento de equivalência
1. Se uma condição de entrada específica um intervalo, são definidas:
Uma classe de equivalência válida;
Duas classes de equivalência inválida.
2. Se uma condição de entrada requer um valor específico, são definidas:
Uma classe de equivalência válida;
Duas classes de equivalência inválida.
3. Se uma condição de entrada específica um membro de um conjunto, são definidas:
Uma classe de equivalência válida;
Uma classe de equivalência inválida.
4. Se uma condição de entrada for booleana, são definidas:
Uma classe válida;
Uma inválida.
Exemplo: Um programa valida um campo numérico no qual valores:
Inferiores ou iguais a zero são rejeitados;
Entre 1 e 150 são aceitos;
Maiores ou iguais a 151 são rejeitados.
Neste caso:
Partição válida: valores entre 1 e 150;
Partição inválida: valores acima ou abaixo do valor válido.
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
Análise de valor-limite
Técnica que complementa o particionamento de equivalência, levando em consideração, na
construção dos casos de teste, os valores limites das condições de entrada e saída.
Exemplo: Um campo de entrada referente a data do nascimento e que aceita valores entre 1950 até
2018 terá como valores limites:
Valor limite mínimo inválido: 1949;
Valor limite mínimo válido: 1950;
Valor limite máximo válido: 2018;
Valor limite máximo inválido: 2019.
Matriz ortogonal
Em álgebra linear, uma matriz ortogonal é uma matriz quadrada real M cuja inversa coincide com a sua
transposta, isto é: note que uma matriz é ortogonal se e somente se as colunas são vetores
ortonormais (vetores ortogonais e unitários).
Pode ser aplicada em problemas nos quais o domínio de entrada é relativamente pequeno, mas muito
grande para acomodar um teste exaustivo.
Seu objetivo é a construção de casos de teste com uma visualização geométrica associada aos
valores de entrada de uma aplicação.
Exemplo: Na função enviar para uma aplicação de web, são passados quatro parâmetros: P1, P2, P3 e
P4, nos quais cada parâmetro assume três valores discretos.
P1 assume os seguintes valores:
P1 = 1, enviar agora;
P1 = 2, enviar após meia-hora;
P1 = 3, enviar após 1 hora.
P2, P3 e P4 também assumem valores, 1, 2 e 3, significando outras funções de envio.
Assista ao vídeo e aprenda como aprofundar as técnicas de caixa preta.
• 
• 
• 
• 
• 
• 
• 
Conteúdo interativo
Acesse a versão digital para assistir ao vídeo.
Verificando o aprendizado
Questão 1
A equipe de desenvolvimento recebe o documento de resultados de testes gerado pelos homologadores.
Responda:
 
a. Qual processo os desenvolvedores devem executar agora?
 
b. Como se desenvolve esse processo?
 
c. Que documentos são utilizados como apoio a esse processo?
Chave de resposta
a. Agora os desenvolvedores devem fazer a depuração.
b. A depuração é desenvolvida com os seguintes passos:
1º) Localizar o erro;
2º) Planejar o reparo do erro;
3º) Repararo erro;
4º) Refazer os testes.
c. São utilizados os seguintes documentos: Resultado de testes, especificação e casos de teste.
Questão 2
O gerente de um departamento de sistemas decidiu que os produtos de software criados pela equipe A serão
homologados pela equipe B e vice-versa. Percebeu-se com o tempo, no entanto, o surgimento de diversos
conflitos entre as equipes A e B. Responda:
 
a. Qual a origem desses conflitos?
 
b. Indique uma proposta de solução para minimizá-los.
Chave de resposta
a. A origem do problema é que os desenvolvedores testam os produtos para “provar que funcionam”,
enquanto os homologadores testam para “provar que não funcionam”, agravados no caso pela proximidade
entre as equipes e pela constante troca de papéis no processo.
b. A sugestão para minimizar os conflitos é a criação de um grupo independente de teste (ITG).
Questão 3
A equipe Z realizou a codificação de uma nova tela para o sistema de controle de estoque. O objetivo da
equipe é garantir que não existam erros, considerando apenas a parte “nova” do produto. Responda:
 
a. Qual o tipo de teste que deve ser realizado?
 
b. Quais diferentes visões devem ser consideradas ao aplicarmos este tipo de teste?
Chave de resposta
a. O tipo de teste a ser realizado é o teste de unidade.
b. As visões que o teste de unidade considera são:
Interface;
Estrutura lógica de dados;
Caminhos independentes;
Condições limite;
Caminhos de manipulação de erro.
Questão 4
Ao testarmos a emissão de um relatório novo criado no sistema, para nossa surpresa, ao confirmarmos a
impressão, o sistema emite a mensagem invalid type conversion in line 453, e o relatório não é emitido.
Responda:
• 
• 
• 
• 
• 
 
a. Qual visão do teste de unidade não foi aplicada neste caso?
 
b. Que cuidados devemos ter nesta visão dos testes de unidade?
Chave de resposta
a. A visão dos caminhos de manipulação de erro.
b. Devemos cuidar para que não ocorram os seguintes problemas:
A descrição do erro é ininteligível;
O erro mencionado não corresponde ao erro encontrado;
A condição de erro provoca a execução no sistema antes da mensagem de manipulação de erro;
O processamento da condição está errado;
A descrição não é esclarecedora o suficiente.
• 
• 
• 
• 
• 
2. Plano de Testes e Casos de Teste
Gestão de testes
A gestão de testes tem grande importância junto ao ciclo de vida de desenvolvimento do software.
 
Por isso, ao gerir os testes, nos permitimos documentar e evidenciar cada etapa da execução dos testes do
projeto. A gestão de testes nos possibilita também uma visão completa de sua evolução e da qualidade do
software.
Por que usar ferramentas de gerenciamento de testes?
Essas ferramentas oferecem um repositório central e padronizado, no qual os testadores poderão:
 
Criar uma coleção de casos de teste (suítes com os casos de teste);
 
Atribuir essas suítes aos seus respectivos testadores;
 
Acompanhar a situação da execução dos testes;
 
Emitir relatórios com métricas e estatísticas.
O que é uma suíte de teste?
Conforme o livro Garantia da qualidade de software, a suíte (ou situação) de teste finaliza o processo de
detalhamento dos testes de validação e:
 
Estabelece como será testado um determinado conjunto de casos de uso;
 
Define quais procedimentos e em que ordem serão executados;
 
Possibilita validar o comportamento dos vários cenários de determinados requisitos de software.
 
Para as suítes de teste, devemos abordar os seguintes itens:
 
Identificação das suítes de testes;
• 
• 
• 
• 
• 
• 
• 
• 
 
Definição das suítes de teste;
 
Prerrequisitos de cada suíte;
 
Definição dos procedimentos de execução dos testes.
 
Cronograma detalhado.
O que é um caso de teste?
É o documento de registro de todo o planejamento dos testes, estabelecendo o que será testado.
 
Sua finalidade é identificar o maior número de cenários e variações de determinado requisito de software.
 
Determina as informações empregadas durante os testes dos cenários e os resultados esperados,
estabelecendo a massa crítica de testes para validar os requisitos do software.
 
Os itens abordados são:
Identificação das condições de testes;
 
Identificação dos casos de testes;
 
Definição de cada caso de teste identificado;
 
Detalhamento da massa de entrada;
 
Arquitetura do ambiente de teste;
 
Critérios especiais para a geração da massa de testes (d+0, d-30, m+1, a+18);
 
Responsáveis pelo levantamento;
 
Cronograma detalhado;
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
 
Definir agenda de levantamentos (como testar).
 
Existe uma norma (IEEE 829) que propõe um padrão de documentação a ser seguido pelas organizações:
 
a. Esta norma, do Instituto de Engenheiro Eletricistas e Eletrônicos (ou Padrão 829 para Documentação de
Teste de Software), é um padrão IEEE que especifica a forma de uso de um conjunto de documentos em oito
estágios definidos de teste de software, cada estágio potencialmente produzindo seu próprio tipo de
documento;
 
b. Propõe um padrão de documentação que deveria ser obedecido por todas as organizações que trabalham
com teste de software.
 
Assista ao vídeo e aprenda sobre gerenciamento de testes.
Conteúdo interativo
Acesse a versão digital para assistir ao vídeo.
Utilizando a ferramenta TestLink
Além dos casos de teste, precisamos também do plano de teste.
 
Necessidade dos planos de testes:
 
Permitem que membros da equipe de teste acompanhem os casos de teste, executem e vejam os
resultados esperados.
 
A ferramenta também permite a geração de relatórios que auxiliam o coordenador da equipe a priorizar
e atribuir tarefas.
 
Permitem adicionar os resultados de cada um dos testes executados e também visualizar os resultados
globais deles.
 
Para auxiliar nessa documentação de teste, existem várias ferramentas disponíveis, e uma delas é o TestLink.
Leia o texto seguinte para conhecer sobre essa ferramenta.
TestLink
Trata-se de uma aplicação open source voltada para a gestão de testes, desenvolvida e mantida por várias
equipes ao longo dos anos. Oferece suporte para criação, execução e manutenção de casos de teste, planos
de testes e requisitos.
 
• 
• 
• 
• 
Permite a geração de relatórios gerenciais e estatísticos sobre os testes executados e a integração com
outras ferramentas de gerenciamento de bugs. (Caetano, 2007).
 
Conheça as características e funcionalidades do TestLink.
 
É baseado em planos e casos de teste;
 
Suporta o gerenciamento de múltiplos projetos;
 
Possibilita a criação de um repositório (banco de dados) centralizado para todos os casos de teste e os
resultados;
 
Possibilita a integração com ferramentas de gestão de defeitos, como Mantis, Jira e Bugzilla;
 
Possibilita a geração de relatórios;
 
Permite autenticação via LDAP (é uma forma abreviada de falar Active Directory (que é um serviço de
diretório feito pela Microsoft). Significa Lightweight Directory Access Protocol e consiste em um meio
para consultar itens em qualquer serviço de diretório que a suporta.).
 
Ele é muito importante para o processo de desenvolvimento do software, porém é preciso mantê-lo sempre
atualizado.
 
Com o uso do Testlink, é possível:
 
Escrever, e consequentemente documentar, os casos de teste;
 
Reduzir a duplicação de esforços, pois a existência de uma base de documentação permite o
reaproveitamento de esforços passados, sem a necessidade de criar todos os casos de testes
novamente.
Motivação para o TestLink
De acordo com o Manual de TestLink, a ferramenta possibilita:
 
Criar vários projetos;
 
Exportar e importar casos de teste facilmente;
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
https://cdn-conteudo.ensineme.com.br/Testlink_user_manual_0346b00b8b.pdf
https://cdn-conteudo.ensineme.com.br/Testlink_user_manual_0346b00b8b.pdf
 
Atribuir casos de teste para usuários específicos;
 
Gerar planos e relatórios de teste em vários formatos;
Desvantagem dessa ferramenta
Não dispõe de um mecanismoque mapeie e gerencie automaticamente casos de uso como casos de teste.
Saiba mais
Leia o artigo TestLink: gerenciando atividades de teste. 
O que é plano de testes?
Assista ao vídeo entenda o plano de testes.
Conteúdo interativo
Acesse a versão digital para assistir ao vídeo.
Um documento de plano de testes (eventualmente definido na etapa de análise de requisitos) define quantos
e quais testes serão realizados. Um plano tem o papel semelhante ao de um “mapa”. Sem ele, nenhum
participante dos testes conhecerá seus objetivos, nem aonde quer chegar e, o pior de tudo, jamais terá a
certeza de ter alcançado sua meta.
 
O propósito desse planejamento é monitorar a execução de atividades, sendo também importante conhecer o
papel dos riscos no planejamento e diferenciar as estratégias de planos.
 
O planejamento engloba três atividades principais:
 
1. Definir um cronograma de atividades.
 
2. Fazer alocação de recursos.
 
3. Definir marcos de projeto: estabelecer os marcos a serem alcançados, com o objetivo de fazer o
acompanhamento.
 
Esse planejamento é acompanhado da atividade de monitoração ou supervisão, que objetiva avaliar se o
progresso que tem sido alcançado está em conformidade com o que foi estabelecido no plano.
 
• 
• 
O plano de teste é um dos oito documentos descritos na IEEE 829. De acordo com ela, a estrutura do plano de
teste consiste de uma série de partes (ou seções) descritas a seguir, na elaboração do plano de teste.
 
O plano de teste é um dos documentos produzidos na condução de um projeto. Quem pode elaborar esse
documento é o gerente de projeto ou o gerente de testes.
 
O que visa o plano de teste?
 
Planejar as atividades a serem realizadas;
 
Definir os métodos a serem empregados;
 
Planejar a capacidade necessária;
 
Estabelecer métricas e formas de acompanhamento do processo.
 
É importante que o plano contenha os seguintes itens:
 
Uma introdução com identificação do projeto (definições, abreviações, referências), definição de
escopo e objetivos;
 
O conjunto de requisitos a serem testados;
 
Os tipos de testes a serem realizados e ferramentas utilizadas;
 
Os recursos utilizados nos testes;
 
Um cronograma de atividades (e definição de marcos de projeto).
Atenção
O planejamento é necessário a fim de antecipar o que pode ocorrer e provisionar os recursos
necessários nos momentos adequados. 
• 
• 
• 
• 
• 
• 
• 
• 
• 
Elaboração do plano de teste
Sem planejamento, fica mais difícil o desenvolvimento de qualquer projeto. O plano é como se fosse um mapa;
com ele, podemos chegar ao nosso destino.
Requisitos a serem testados
Relacionar os itens de teste, descrevendo todos os elementos que serão testados;
Descrever, isoladamente, funcionalidades a serem e a não serem testadas.
Vejamos alguns exemplos de requisitos a serem testados: desempenho, segurança, interface de
usuário, controle de acesso, funcionalidades.
Estratégias e ferramentas de teste
Descrever a estratégia do teste, geralmente para cada grupo de funcionalidades das seções
anteriores;
Abordar questões como atividades e ferramentas usadas no teste;
Descrever o critério de sucesso ou falha do caso de teste e outra descrevendo o critério de
suspensão e requisitos de reinício, como por exemplo atividades que devem ser feitas antes de
reiniciar o teste após um evento de suspensão;
Listar o conjunto de ferramentas utilizadas.
Equipe (responsabilidades e requisitos humanos) e infraestrutura
Mostrar as necessidades físicas para a realização do teste. Exemplo: hardware e software, e
como elas podem afetar a execução do teste;
Mostrar os diferentes papéis desempenhados no projeto de teste;
Os recursos humanos e requisitos de treinamento da equipe de teste.
• 
• 
• 
• 
• 
• 
• 
• 
• 
Cronograma de atividade
Descrição de marcos importantes das atividades (incluindo as datas de início e fim da
atividade). Exemplo: projeto de testes, execução de testes ou avaliação de testes;
Riscos e contingências.
Documentação
Relação dos documentos pertinentes ao projeto;
Aprovações;
Assinatura dos líderes do projeto, aprovando o documento.
Planejamento e execução dos testes
O planejamento faz parte da primeira fase do processo de revisão. Devemos selecionar a equipe, alocar as
funções, definir os critérios de entrada e de saída para os diversos tipos de revisão e selecionar quais partes
dos documentos serão observados.
 
O planejamento tem que estar de acordo com o alinhamento estratégico da empresa.
• 
• 
• 
• 
• 
Planejar teste
O objetivo de planejar teste é definir o plano de testes para o projeto. Devem ser identificados os
tipos de testes e os artefatos que devem ser testados, sempre usando os fatores de criticidade das
ameaças.
A coordenação dessa atividade é feita pelo gerente de teste e pelo gerente de projeto.
Para planejar o teste, devem ser identificados vários artefatos como: programas, rotinas, sub-rotinas,
arquivos, equipamentos, softwares de transmissão, sistemas operacionais, instalações e outros.
Dependendo do domínio, eles devem ser eleitos para fazer parte de um conjunto de artefatos sujeitos
a testes de missão crítica.
Executar teste
Tem como objetivo testar os artefatos selecionados na macroatividade anterior, conforme definido no
plano de testes. Dependendo do grau de criticidade do sistema, será necessária também a
verificação desse artefato. Essa verificação deve ser executada através de uma revisão por pares
além do teste, conforme planejado.
Planejamento e execução
Vamos tomar como exemplo um sistema crítico.
 
Quando iniciarmos a atividade de planejamento dos testes, devemos fazer a revisão dos requisitos, a
homologação oficial dos mesmos com os especialistas do domínio e usuários responsáveis e/ou
homologadores e o planejamento e a elaboração de testes de aceitação.
 
Atividades de testes do ciclo de desenvolvimento de uma aplicação que devem começar no início do projeto:
 
Fixação da estratégia de teste e conceitos de testes;
 
Análise de risco, levantamento das ameaças, estimativa dos gastos com os testes, recursos humanos,
máquina e tempo necessário para executar os testes;
 
Elaboração do plano de testes;
 
Treinamento da equipe de testes, se necessário;
 
Estabelecer processos e métricas (não confundir com medidas) de controle;
 
Definir recursos de hardware, computadores (equipamentos), mesas, cadeiras etc.;
• 
• 
• 
• 
• 
• 
 
Providenciar recursos de software, bases de dados (definir bases de teste), confidencialidade,
confiabilidade, coerência, controle de versão, ferramentas de testes etc.
 
Deve-se sempre verificar o que foi feito para corrigir problemas, antes de seguir para o desenvolvimento.
 
Ao olharmos para a frente, devemos fazer perguntas tais como:
 
Os requisitos críticos podem ser testados?
 
Os custos previstos são sustentáveis?
 
Se as respostas forem corretas, então não haverá problemas para que esses requisitos sejam implementados.
 
Se não existir um caminho claro de como os requisitos vão ser testados, então é provável que não se tenha
ideia de como fazer para implementar esses requisitos. (SPILLNER, 2002).
Principais erros
Os principais erros que são cometidos foram resumidos em um artigo publicado por Brian Marick em 1997.
Foram identificados cinco grupos importantes de erros comumente cometidos por quem testa softwares, nos
seguintes pontos:
No propósito da atividade de teste
Ocorre quando o ator que controla a execução não entende bem o sentido de testar e não aproveita
os resultados de forma eficaz.
Os erros comuns são:
Atribuir a responsabilidade pela qualidade unicamente à equipe de teste;
Achar que a tarefa de equipe de testes é simplesmente encontrar erros;
Não encontrar os erros importantes;
Oferecer estatísticas de erros sem o contexto relevante.
• 
• 
• 
• 
• 
• 
• 
No planejamento dos testes
Esses erros estão relacionados à fase de planejamento dos testes:
Concentrar-se exageradamente em teste funcional;Não enfatizar o teste de configuração;
Deixar o teste de carga para o final do processo;
Não testar a documentação nem a instalação;
Teimosia em aplicar um plano de teste ineficaz.
No pessoal contratado para testar
Ao montar a equipe que conduzirá os testes, é importante se concentrar nos seguintes erros comuns
e tentar evitá-los:
Usar o teste como um trabalho temporário para programadores novos;
Recrutar ex-programadores (os que não são os melhores) para a equipe de teste;
Usar testadores que não conhecem o domínio da aplicação;
Não contratar pessoal de suporte técnico e documentação;
Insistir que testadores sejam programadores;
Não utilizar uma equipe de teste diversificada.
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
Na execução dos testes em si 
Durante a execução dos testes, um conjunto de problemas comuns é:
Dar mais atenção à execução dos testes do que ao seu projeto;
Não rever os projetos de teste;
Ser específico demais nas entradas e procedimentos do teste;
Não notar nem explorar irregularidades peculiares;
Elaborar suítes de teste compreendidas apenas por seus criadores;
Adicionar apenas testes de regressão quando problemas são encontrados;
Não manter um histórico de anotações para os próximos testes.
Na aplicação da tecnologia nos testes
A aplicação de tecnologia à atividade de teste é muitas vezes benéfica, mas nem sempre, e nunca
desenfreadamente.
A seguir, os erros que envolvem o foco tecnológico do teste:
Tentar automatizar todos os testes;
Esperar reexecutar testes manuais;
Usar ferramentas de automação de interface para reduzir o custo do teste;
Não analisar a cobertura de código em absoluto.
Assista ao vídeo e aprenda sobre casos de uso e casos de teste.
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
Conteúdo interativo
Acesse a versão digital para assistir ao vídeo.
Importância da UML e casos de uso para a elaboração dos
planos de teste
Utilização da UML no processo iterativo e incremental
A UML é independente do processo de desenvolvimento.
 
Vários processos podem utilizar a UML para modelagem de um sistema OO.
Quando os artefatos de software são construídos através da UML, eles evoluem à medida que as iterações
são realizadas, assim:
 
A cada iteração, novos detalhes são adicionados a esses artefatos;
 
Além disso, a construção de um artefato fornece informações para adicionar detalhes a outros.
Defeitos no desenvolvimento de software
Defeitos normalmente são introduzidos na transformação de informações entre as diferentes fases do ciclo de
desenvolvimento de um software. (PRESSMAN, 2005).
Exemplo simples de ciclo de vida de desenvolvimento de software
Os requisitos expressos pelo cliente são relatados textualmente em um documento de especificação de
requisitos.
 
O documento é transformado em casos de uso que, no que lhe diz respeito, foi o artefato de entrada para o
projeto do software e definição de sua arquitetura utilizando diagramas de classes da UML.
 
Para chegarmos ao produto final, uma série de transformações é realizada. Vamos mostrar uma imagem
clássica que expressa exatamente essa ideia por meio de uma metáfora.
• 
• 
• 
Como o cliente explicou...
Como o líder de projeto entendeu...
Como o analista projetou...
Como o programador construiu...
Como o consultor de negócios descreveu...
Como o projeto foi documentado...
Que funcionalidades foram instaladas...
Como o cliente foi cobrado...
Como foi mantido...
Como o cliente realmente queria...
Métodos de análise de documentos
Qualquer documento pode conter elementos essenciais para auxiliar na localização de novos casos de testes
e no refinamento e ampliação do esforço de planejamento.
 
Supondo o uso da orientação a objeto juntamente com a linguagem UML como padrão de documentação, as
principais fontes para extrair os casos de testes são: diagrama de estado e de atividades.
Diagrama de estado
Representa um estado ou situação em que um objeto pode se encontrar no decorrer da execução de
processos de um sistema. O objeto passará do estado inicial para o final por meio de uma transição.
 
Pense no diagrama de estado do ciclo de vida de um vídeo.
Exemplo
Cada transição de um estado para outro vídeo deverá ser considerada um caso de teste (cenário
positivo), enquanto que as transições proibidas deverão ser inseridas como cenários negativos, que
também deverão ser testadas. 
Representação do diagrama de estado:
Conteúdo interativo
Acesse a versão digital para ver mais detalhes da imagem
abaixo.
Diagrama de atividades
Representa todo o fluxo de processamento de um determinado evento de negócio, revelando todos os
caminhos alternativos (cenários positivos) e as situações que impossibilitam a finalização desse evento
(cenários negativos).
 
Deve revelar o conjunto completo de casos de testes que precisarão ser inseridos no planejamento de testes.
 
Representação do diagrama de atividades:
Conteúdo interativo
Acesse a versão digital para ver mais detalhes da imagem
abaixo.
Modelo de casos de uso
Casos de uso são coleções de cenários relacionados de sucesso e fracasso, que descrevem atores usando
um sistema como meio para atingir um objetivo. (Larman, 2007).
Comentário
Deve-se observar que casos de uso não são diagramas. Eles são modelados basicamente redigindo
textos. Entretanto, a UML define um diagrama para representar casos de uso. Os casos de uso são
escritos em diferentes tipos de formalidade (resumido, informal e completo), dependendo da
necessidade, mas é no modo completo que todos os passos e variantes são descritos, com
precondições e garantias de sucesso. 
O cenário de sucesso principal (ou fluxo básico) descreve o caminho de sucesso que satisfaz os interessados.
 
As extensões (ou fluxos alternativos) descrevem instruções condicionais ou desvios do cenário de sucesso.
Uma extensão é composta por uma condição e um tratamento. A condição deve ser algo que possa ser
detectado pelo sistema ou ator. O tratamento é uma sequência de passos. (Larman, 2007)
 
Os casos de uso devem ser expressos em níveis de intenções e responsabilidades, independente de
tecnologias, especialmente relacionadas à interface com o usuário. Deve-se especificar o que o sistema deve
fazer, e não como deve ser feito. (Larman, 2007)
A documentação dos casos de uso é uma excelente descrição de testes funcionais, pois já contém um
levantamento de todas as condições que podem causar falhas e os respectivos tratamentos. Pelo menos
um caso de teste é necessário para cada extensão.
Cockburn 2005.
Os casos de uso também podem ser usados como base de casos de testes e em testes de regressão. 
Booch; Rumbaugh; Jacobson, 2005.
Verificando o aprendizado
Questão 1
Baixe o software TestLink e faça um teste para alguns casos de teste que você deverá desenvolver. Faça
também uma pesquisa sobre os temas relacionados com o assunto para saber que abordagens estão sendo
utilizadas no cenário atual do desenvolvimento de software.
Chave de resposta
Organizar os casos de teste de forma clara mostra que você está desenvolvendo uma boa compreensão
do processo de testes. Caso tenha encontrado dificuldades com o TestLink, saiba que isso é normal no
início e faz parte do aprendizado prático.
Entender como os testes são realizados atualmente no mercado é fundamental. Se sua pesquisa trouxe
exemplos ou comparações entre ferramentas, isso certamente agregou valor ao seu trabalho.
Continue estudando e praticando. Aprender a utilizar ferramentas como o TestLink é um diferencial
importante para quem deseja atuar com qualidade de software e desenvolvimento.
Questão 2
No caso de teste através do método de análise de documentos, caso estejamos utilizando a orientação a
objeto em conjunto com a linguagem UML como padrão de documentação, quais as principais fontes para
extrair os casos de testes?
A Diagrama de atividades e de estado.
B Diagrama de estado e o código-fonte.
C Somente o código-fonte.
D Diagrama de atividades e o código-fonte.
E Caso deuso e diagrama de condição.
A alternativa A está correta.
Não se conseguem extrair casos de testes com os outros diagramas.
Questão 3
Na empresa, seu chefe solicitou que você elaborasse a documentação da abordagem da equipe de software
para os testes a serem realizados em uma importante aplicação web da sua empresa.
 
Essa documentação deve conter a definição do plano que descreve a estratégia global e o procedimento,
designando as etapas específicas do teste, assim como os tipos de testes que serão aplicados.
 
Nesse caso, qual documento você deverá elaborar?
A Massa de teste
B Caso de uso
C Script de teste
D Caso de teste
E Especificação de teste
A alternativa E está correta.
Neste caso, a especificação de teste é um documento que especifica um procedimento de teste com
objetivo determinado. Assim, é dada a condição de entrada e o resultado esperado após a execução do
teste.
Questão 4
Existem determinadas ferramentas que possibilitam o gerenciamento e o controle do processo de execução,
reexecução e medição dos testes automatizados e a integração entre as demais fases.
 
O objetivo dessas ferramentas é executar os testes selecionados no planejamento, tendo como principais
características: a análise de cobertura, a execução de scripts, simuladores de performance e testadores de
memória.
 
Neste caso, são classificadas como ferramentas:
A De suporte aos testes.
B De modelagem e automação.
C De revisões e inspeções.
D De planejamento de testes.
E De execução e conferência.
A alternativa E está correta.
 As outras informações não são ferramentas.
Questão 5
Existem diferentes papéis com diferentes reponsabilidades dentro de uma equipe de teste independente.
Marque a opção INCORRETA:
A Gerente de teste: responsável pela liderança de um projeto de teste específico.
B Analista de teste: responsável pela modelagem e elaboração dos casos de testes e scripts de teste.
C Arquiteto de teste: responsável pela montagem do ambiente de teste (infraestrutura) e escolha de
ferramentas.
D Testador: responsável pela execução dos casos de teste e scripts de teste.
E Product Owner: responsável pela análise dos dados de teste.
A alternativa E está correta.
Este é o único que não pode elaborar o plano de teste.
3. Teste de Aceitação
O que é um teste de aceitação?
O teste de aceitação é aquele feito para aproximar o cliente final do resultado esperado pelo sistema. Já um
teste de software é um processo sistemático que tem por objetivo identificar prováveis defeitos.
 
Para isso, verifica-se se o software realiza suas tarefas de forma correta, conforme os requisitos fornecidos
pelas partes interessadas do sistema e também se faz o que não deveria fazer.
 
Alguns conceitos que devem ser entendidos:
Defeito
Contempla um ato inconsistente realizado por um indivíduo ao tentar compreender uma informação.
Pode ser uma instrução ou um comando incorreto.
Erro
É um defeito encontrado em um artefato de software. Exemplo: diferença entre um valor obtido e um
valor esperado.
Falha
É o comportamento do software diferente do esperado pelo usuário final.
Exemplo
Exemplo de falhas: um bug gerado por um programador pode ocasionar um erro que irá gerar uma
situação de inconsistência em uma determinada funcionalidade. Lembrar a regra de 10 de Myers. 
Desenvolvimento de rotinas de teste com base no framework Cucumber e
automação com Selenium WebDriver
Ferramentas de teste automatizado de software
Um projeto de automação de software é um investimento alto e de longa duração. Os dirigentes das
organizações têm expectativas em relação a custos e aos benefícios trazidos pela sua implementação.
 
Cuidados a serem tomados:
Infraestrutura
É a disponibilidade de máquina e seus recursos. O projeto em desenvolvimento (em fase de testes)
deve ser dedicado para o projeto de automação de testes.
Metodologia
É a existência de metodologias de desenvolvimento e testes consolidadas e usadas, que possam se
integrar com a ferramenta escolhida.
Ferramenta
Selecionar a ferramenta certa, adequada à tecnologia usada e que possa se integrar com as
metodologias de desenvolvimento e teste.
Quais casos de testes são candidatos a automatização?
A cada nova versão de um software, será é necessário realizar um novo conjunto de testes, ampliando
as melhorias que foram implementadas.
 
É necessário reexecutar um conjunto de casos de testes (todos ou partes), de forma a avaliar se as
mudanças realizadas danificaram ou modificaram outras partes do software que já funcionava.
Para isso, precisamos ter a seguinte situação:
 
Preparação do ambiente.
 
Execução de testes.
 
Conferência dos testes.
 
Os testes automatizados não podem substituir os testes manuais;, eles são complementares.
Atenção
Todo caso de teste é naturalmente candidato a automação, mas com toda a certeza nem todos são
recomendáveis para a automação. 
• 
• 
• 
• 
• 
Automação com ferramenta Cucumber
A automação de testes é o processo da escrita de um programa para executar esses testes funcionais.
 
Vantagem:
 
Economia de tempo e recursos durante a execução dos testes;
 
Possibilidade de executar os mesmos testes repetidas vezes.
Por que automatizar os testes?
Por causa da qualidade final do produto, pois a execução de todos os testes funcionais que existem no
sistema garante uma menor incidência de erros e falhas no programa.
 
Os testes automatizados como Cucumber e automatizados com Selenium WebDriver, são aplicados quando
houver há tarefas repetitivas, aplicações com longos ciclos de vida e teste que devem feitos com maior
frequência.
Cucumber
O Cucumber é um framework BDD (Behavior-Driven Development ou Desenvolvimento Orientado a
Comportamento), open source, baseado em RSpec.
 
O programa executa testes de aceitação automatizado escrito em estilo de BDD. Tem um analisador de
linguagem simples chamado Gherkin, que permite que os comportamentos esperados sejam especificados em
um idioma lógico, para que os clientes possam entender.
 
Três passos para tratarmos o Cucumber:
 
Escrever uma estória e executá-la (feature);
 
Criar o arquivo de passos a partir dos snippets;
 
Dar implementação aos passos.
• 
• 
• 
• 
• 
Exemplo
O objetivo de negócio “negociação de câmbio” que contém um banco e conta bancária. Nesse exemplo,
vamos ver as funcionalidades que devemos assegurar que operem: Primeira: consiste em possibilitar que
o usuário realize as operações de câmbio utilizando sua conta, como: 1.1. Fazer saque e depósito,
considerando as seguintes restrições: 1.1.1. Só liberar o saque se o valor deste for menor ou igual ao valor
do saldo disponível na conta; 1.1.2. Só liberar o depó]sito se o valor deste for menor ou igual ao valor do
limite disponível na conta. Segunda: possibilitar o usuário a realizar operações básicas de câmbio no
banco, que são: 2.1. Obter o total de dinheiro no banco; 2.2. Obter o total de contas criadas no
banco. Para utilizar o Cucumber em nossos testes, precisamos instalar a Gem, a fim de que o programa
em Ruby possa entender o contexto e ter seus comandos reconhecidos. Como conseguir isso? Digitando
o comando 'gem install cucumber’ no Cmder e pressionar [Enter]. Ao final da instalação, uso e teste, o
cenário e passos são executados com sucesso. 
Assista ao vídeo e aprenda sobre a automatização dos testes.
Conteúdo interativo
Acesse a versão digital para assistir ao vídeo.
Saiba mais
Veja mais no vídeo: Cucumber no site Labs Bluesoft. 
Clique aqui para visualizar todos os passos e o resultado da instalação, teste e uso do Cucumber e automação
com Selenium.
Elaborando testes de aceitação com usuário final
Assista ao vídeo e aprenda sobre as metodologias para testes de aceitação.
Conteúdo interativo
Acesse a versão digital para assistir ao vídeo.
Os testes de aceitação fazem parte do teste de validação de alto nível. Nesses testes, os mecanismos estão
segmentados em dois níveis:
Baixo nível: Caracterizados por exigirem dos profissionais de testes um profundoSegurança;
Testabilidade;
Portabilidade.
Requisitos detalhados
Servem de base para o projeto físico e a programação. Informam como os requisitos funcionais e não
funcionais serão implementados.
Requisito de teste
Informa em algumas linhas como o requisito será testado. A partir do requisito de teste, podemos
especificar os casos de testes, que são detalhamentos do requisito de teste.
Exemplo: Continuando com o exemplo de saques na conta, para uma aplicação que permita saques
entre R$100,00 e R$ 500,00 múltiplos de 20, um requisito de teste poderia ser “realizar saques
superiores a R$ 500,00”.
Esse requisito de teste poderia gerar um caso de teste com o valor de R$520,00, cujo resultado
esperado é “saque inválido”.
Metodologias utilizadas para testes de aceitação
Fases da Metodologia MTS
Segundo Sommerville, a MTS segue o princípio do “V”. Estabelece que, para cada fase de construção no
desenvolvimento de sistemas, deve existir uma fase de teste correspondente.
• 
• 
• 
• 
• 
• 
• 
 
Aquilo que é definido nos levantamentos com o usuário será testado na fase de homologação, e o que é
especificado para os programas será testado nos testes de unidade.
 
Os testes podem, e é aconselhado que sejam, planejados e projetados antes das fases de testes: uma vez que
os requisitos estejam definidos, já podemos especificar os testes que devem ser realizados para validá-los.
 
Conectando estes dois princípios, com certeza o que é feito em uma determinada fase de construção será
testado numa fase de testes correspondente.
Comentário
O que é definido nos levantamentos com o usuário será testado na fase de homologação, e a
especificação desses testes pode ser realizada ainda na fase de levantamento. 
Como a MTS define cada uma das fases de testes?
Fase de teste de unidade
Através de testes caixa preta e caixa branca, fazemos a verificação de um componente de software
para saber se o sistema satisfaz os requisitos detalhados especificados.
Fase de teste de integração
Através de testes caixa preta e caixa branca, fazemos a verificação das interfaces entre componentes
de um software, para saber se o sistema satisfaz aos requisitos detalhados especificados.
Fase de teste de sistema
Nesta fase, é considerado um sistema integrado de hardware e software para verificar se o sistema
satisfaz os requisitos de usuário, funcionais e não funcionais especificados.
Fase de teste de homologação
Fase executada pelos usuários, na qual são verificados os requisitos de usuário e funcionais
referentes aos critérios de aceitação para permitir ao cliente determinar se aceita o sistema ou não.
Fase de teste de implantação
Nesta fase, são verificados os requisitos de negócio.
Se, com a implantação do sistema, as vendas cresceram em 30%; se a agilização de um determinado
processo foi alcançada.
Verificam-se também todos os requisitos referentes à diminuição do risco de solução de continuidade
do negócio devido à implantação do sistema.
Para facilitar o teste, devemos fazer um checklist dos requisitos especificados inicialmente.
BDD - Behavior Driven Development (Desenvolvimento
Orientado por Comportamento)
Assista ao vídeo e aprenda análise de cenários em BDD.
Conteúdo interativo
Acesse a versão digital para assistir ao vídeo.
Metodologias de desenvolvimento
Vejamos algumas: o TDD (Test Driven Development) e o BDD (Behaviour Driven Development).
O TDD é uma abordagem de desenvolvimento de software em que os testes direcionam a implementação do
software. O desenvolvimento deve ser guiado a testes, e um teste unitário deve ser escrito antes que uma
funcionalidade do sistema o seja.
 
O objetivo desta metodologia é fazer com que o teste passe com sucesso, significando que assim a
funcionalidade está pronta e conta com garantia de qualidade. Favorece o design de software e expressa o
comportamento do código.
 
O BDD tem uma abordagem no estilo TDD. A documentação é executável, melhora o desempenho dos times e
pode ser utilizada por todos os envolvidos no projeto.
 
No BDD, o desenvolvimento deve ser guiado aos comportamentos que o sistema deve apresentar. Desta
forma, um comportamento (requisito/ especificação) é priorizado em relação ao teste unitário, o que não
exclui a execução do fluxo do TDD neste processo.
 
O Behavior Driven Development (BDD) não é uma metodologia de desenvolvimento de software, nem
tampouco um substituto para as metodologias XP, Scrum, Kanban, OpenUP, RUP ou qualquer metodologia que
o mercado atualmente oferece.
 
Na realidade, o BDD incorpora e melhora as ideias de muitas dessas metodologias, ajudando, melhorando e
tornando a vida da equipe de software mais fácil.
Princípios do BDD
O bastante é o bastante
Trabalhar para atingir as expectativas das partes interessadas, mas evitar fazer mais do que o
necessário.
 
Entregar valor às partes interessadas
Se estivermos fazendo algo que não entrega valor ou não aumenta a sua habilidade de entrega de
valor, é melhor parar e fazer outra coisa.
 
Tudo é sobre o comportamento
Assim como podemos descrever o comportamento a partir da perspectiva das partes interessadas,
também podemos descrever o comportamento de um código a partir de outro código que o utiliza.
Como é o ciclo do BDD?
1. Partes interessadas discutem os requisitos:
 
Os requisitos são organizados em funcionalidades;
 
Podem ser quebrados em estórias;
 
Fazem sentido para as partes interessadas.
 
2. Partes interessadas, analista e testador determinam o escopo das estórias (narrativo):
 
O analista pensa na funcionalidade de uma forma geral;
 
O testador pensa em cenários concretos, com valores de entrada e saída.
 
3. Os cenários prioritários são identificados:
 
As partes interessadas especificam exatamente o que quer que seja entregue;
 
Os desenvolvedores implantam o bastante para satisfazer os cenários e nada mais. 
 
4. Por último, os desenvolvedores
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
 
Automatizam os cenários que orientam o desenvolvimento;
 
Descrevem o comportamento esperado;
 
Implantam os comportamentos.
Funcionamento do BDD
Conteúdo interativo
Acesse a versão digital para ver mais detalhes da imagem
abaixo.
Exemplo:
 
Vamos explicar usando o seguinte exemplo: uma equipe praticante de BDD decide implementar uma nova
funcionalidade. Para isso, eles trabalham em conjunto com os usuários e outras partes interessadas para
definir as histórias e cenários do que os usuários esperam dessa funcionalidade.
 
Os usuários ajudam a definir um conjunto de exemplos concretos que ilustram resultados que a nova
funcionalidade deve fornecer.
 
Esses exemplos devem ser criados utilizando um vocabulário simples para ser facilmente compreendidos
pelos usuários finais e membros da equipe de desenvolvimento de software.
 
São expressos usando: cenário (scenario), dado (given), quando (when) e então (then).
 
Com base no BDD, a equipe identificou e especificou o objetivo de negócio, definido com um exemplo
concreto.
 
Como fica no nosso exemplo de saldo de conta:
 
Cenário: transferir dinheiro para uma conta poupança;
• 
• 
• 
• 
 
Dado que eu tenho uma conta corrente com 2.000.00;
 
E que eu tenho uma conta de poupança com 3.000,00;
 
Quando eu transferir 1.000,00 a partir de minha conta corrente para a minha conta poupança;
 
Então eu deveria ter 1.000,00 em minha conta corrente;
 
E eu deveria ter 4.000,00 em minha conta poupança.
 
Depois de especificada a nova funcionalidade, sempre que possível estes exemplos concretos serão
automatizados sob a forma de especificações executáveis, que tanto validam o software quanto fornecem
uma documentação atualizada, tanto técnica quanto funcional.
Verificando o aprendizado
Questão 1
Nos testes de validação, os mecanismos de testes estão segmentados em dois níveis distintos de testes de
baixo nível e de alto nível. Assinale a ÚNICA opção que apresenta os 2 testes de alto nível:
A Teste de sistema e teste de aceitação.
B Teste da caixa branca eCucumber
	Exemplo
	Conteúdo interativo
	Saiba mais
	Elaborando testes de aceitação com usuário final
	Conteúdo interativo
	Teste de aceitação formal
	Teste de aceitação informal
	Teste beta
	Conteúdo interativo
	Relacionando requisitos a expectativas de teste
	Estratégia de teste
	Atenção
	Exemplo
	Testes baseados em requisitos
	Requisitos de negócio
	Requisitos de usuário
	Requisitos funcionais
	Requisitos não funcionais
	Requisitos detalhados
	Requisito de teste
	Metodologias utilizadas para testes de aceitação
	Fases da Metodologia MTS
	Comentário
	Fase de teste de unidade
	Fase de teste de integração
	Fase de teste de sistema
	Fase de teste de homologação
	Fase de teste de implantação
	BDD - Behavior Driven Development (Desenvolvimento Orientado por Comportamento)
	Conteúdo interativo
	Metodologias de desenvolvimento
	Princípios do BDD
	Como é o ciclo do BDD?
	Funcionamento do BDD
	Conteúdo interativo
	Verificando o aprendizado
	4. Conclusão
	Considerações finais
	Explore +
	Referências

Mais conteúdos dessa disciplina