Buscar

Segundo Trabalho de Engenharia I - Apresentação

Prévia do material em texto

Engenharia de Software
Jackson. F. Magnabosco | Teyson Lorenzon | Pedro.A.Guerra 
Estratégias de teste de
Software
Estratégias de teste de software.
• Objetivos.
• Tempos passados.
• Realizando uma boa estratégia de testes.
• Organização.
• Conclusão.
Estratégias de teste de software.
• V&V (Verificação e Validação).
• Software Convencional.
• Software Orientado a Objetos.
Teste de unidade x Teste de integração
• Teste de unidade
a. Nível de componente
b. Quais os erros devem ser encontrados.
c. Lógica
• Teste de integração
a. Objetivo
b. Integração não-incremental
c. Testes em pequenos incrementos
Defeitos e falhas de software
• Mais conhecimento
a. Defeito
b. Erro
c. Falha
• Defeitos no desenvolvimento do 
software.
 Ferramentas automatizadas de teste.
● Segundo Maldonado (2007), a técnica de 
automação é voltada principalmente para melhoria 
da qualidade do software. 
 Ferramentas automatizadas de teste.
● Os testes automatizados tendem a ter uma 
maior produtividade, onde é necessário um 
esforço inicial que é compensando na 
execução a longo prazo. 
● O teste manual não pode ser eliminado, 
deve sim, ser reduzido ao máximo possível e 
focado naquilo que é muito caro automatizar. 
 Ferramentas automatizadas de teste.
● Com o objetivo de melhorar a qualidade da 
análise e o tempo de execução dos testes, 
foram criados os testes automatizados.
● Testes automatizados estão fortemente 
relacionados com as principais práticas de 
métodos ágeis.
 Testes Automatizados
● Os Testes Automatizados são desenvolvidos como 
programas ou scripts que têm como principal objetivo 
exercitar o sistema, testando as funcionalidades e 
verificando se estão de acordo com as especificações dos 
requisitos do sistema e os objetivos esperados 
(BERNARDO, 2008).
 Testes Automatizados (Vantagens)
Existem diversas vantagens para a utilização dos testes 
automatizados, dentre elas destacam-se:
● Menor tempo na execução dos testes;
● Verificação do sistema durante o processo de 
desenvolvimento;
● Alcançar melhor qualidade do software;
● Casos de testes mais elaborados. 
● O grande crescimento das aplicações e sistemas;
● O elevado grau de complexidade dos sistemas.
 Testes Automatizados (Vantagens)
● Relatórios de bugs são padrão em ferramentas de teste 
de software automatizadas. 
● Os dados de teste de cada teste pode ser salvo como 
scripts de teste e planos de teste.
● Máquinas de teste de software pode ser executado durante 
a noite ou nos finais de semana, sem aumentar os custos 
de trabalho com horas extras.
 Testes Automatizados (Vantagens)
● A grande vantagem dos testes automatizados é 
que podem ser repetidos a qualquer momento, 
seja em uma nova funcionalidade ou alguma 
modificação em uma funcionalidade específica. Sua 
implementação reduz os esforços e o tempo gasto, 
garantindo que não ocorrerá falha humana na 
execução dos testes (BERNARDO, 2008).
 Testes Automatizados (Desvantagens)
● O desenvolvimento de testes de software automatizado 
pode ser demorado. Pode não ser economicamente 
viável para aplicações de software de pequeno e 
raramente utilizados.
● Durante a gravação de uma série de operações para o 
futuro dos testes de software, o testador deve seguir todos 
os passos perfeitamente e as faixas têm de ser erros.
 Testes Automatizados (Desvantagens)
● Scripts de testes automatizados precisam ser 
atualizados à medida que novas funcionalidades 
são adicionadas ao aplicativo; caso contrário, a 
nova funcionalidade não será testado durante a 
execução de testes automatizados, e não registrar a 
falta de testes de novos recursos, como um defeito.
 Testes Automatizados (Desvantagens)
● Ao usar o teste de software automatizado, é 
importante ter certeza de que todo mundo está 
usando a mesma versão de testes de software e 
testes de scripts. Esta é uma tarefa muitas vezes 
esquecido pela gerência de configuração.
 Testes Automatizados
● Atualmente o analista que desenvolve os testes 
automatizados, depende da necessidade de entender 
a programação do sistema desenvolvido e a sua 
lógica de implementação, sendo antes necessário 
somente aos programadores do sistema. Há também 
a necessidade do conhecimento e as características 
da ferramenta a utilizar na automatização, que 
muitas vezes possuem linguagens próprias para o 
seu desenvolvimento (MOLINARI, 2008).
Tipos de Ferramentas de Automatização 
de Testes
● A classificação dos tipos de ferramentas de 
automatização de Testes é criada de acordo com 
cada profissional da área de teste. Abaixo serão 
demonstradas algumas ferramentas de 
automatização que terão diversas visões, mostrando 
o lado de cada profissional, ou seja, visão 
acadêmica e de mercado (MOLINARI, 2008).
Tipos de Ferramentas de Automatização 
de Testes
Algumas ferramentas de acordo com o mercado, segundo Molinari:
● Pytest: è uma função que cria casos de testes na linguagem 
Python.
● Planejamento de Testes: Projeção de testes, criação de 
requisitos e casos de testes; 
Tipos de Ferramentas de Automatização 
de Testes
● Test Data Generators: Geração de massa de dados para 
testes;
● Test Management: Gerenciamento e planejamento de 
teste.
 
Tipos de Ferramentas de Automatização 
de Testes
As ferramentas de automatização de testes existem 
para diversos fins necessários para a criação de teste, 
os testers verificam a sua necessidade de acordo com 
os testes que serão executados e qual ferramenta ou 
ferramentas devem ser utilizadas na sua elaboração e 
execução dos testes.
Critérios de avaliações para a escolha de 
uma boa ferramenta de automatização de 
testes
• Grau de complexidade da ferramenta;
 • Custo da ferramenta; 
• Custo de treinamentos e a aprendizagem da 
aplicação; 
• Reutilização do código automatizado do teste; 
• Tipo de plataformas a serem utilizadas;
Critérios de avaliações para a escolha de 
uma boa ferramenta de automatização de 
testes
Portanto os critérios de avaliações para uma boa 
ferramenta de testes devem ser observados de 
acordo com as características dos projetos 
empregados nos testes automatizados e de acordo 
com as características demonstradas.
Dificuldades no Processo de 
Automatização
As dificuldades na automação de testes ocorrem como em 
todos os processos para a construção de uma aplicação e 
sistema, que podem ser levando em consideração uma 
equipe despreparada ou sem experiência, altos custos 
iniciais e mão de obra não especializada, dificuldade no 
entendimento dos casos de testes e da lógica de 
programação da aplicação ou do sistema, que tem grande 
importância na automatização.
Dificuldades no Processo de 
Automatização
Inicialmente nas empresas a sua principal dificuldade é o 
processo de implantação dos testes automatizados, pois a 
automatização dos testes inicialmente tem um elevado 
custo, devido à compra de ferramentas apropriadas para a 
criação e execução dos testes, treinamento da equipe, 
contratação de pessoas qualificadas, e entre outros, sendo 
que algumas empresas possuem medo de uma grande 
implantação e gastos com pouco retorno.
Dificuldades no Processo de 
Automatização
 Essas empresas que possuem este pensamento 
devem levar em consideração que inicialmente não 
terão tanto retorno, devido à necessidade de 
criação dos scripts para os casos de testes e 
treinamentos, mas em longo prazo obterá grandes 
retornos, como melhor qualidade em menor 
tempo, sendo uma característica muito importante 
para o mercado atual.
Dificuldades no Processo de 
Automatização
Às vezes a pessoa conhece o sistema ou aplicação, 
mas não conhece o processo de automatização ou 
vice versa, sendo assim necessário treinamento para 
uma melhor qualidade e benefícios futuros.
Motivos para implantar testes na sua 
empresa
● Quando um produto não é testado, há uma grande chance deste produto 
possuir erros ou defeitos, assim este produto não vai satisfazer as 
necessidades o cliente.
● O clientequando não está satisfeito com o produto dificilmente irá contratar 
novamente a empresa.
● Quando não há qualidade no produto, a empresa fica com imagem negativa, 
logo é necessário mais investimento em marketing.
● Se os erros são encontrados pelo cliente, o custo para corrigir estes erros é 
muito maior do que quando o sistema ainda está em desenvolvimento.
● Quando não há uma equipe para testar o sistema, o gerente exige dos 
programadores um sistema com qualidade, mas isso difícil, pois nem sempre 
conseguimos ver os próprios erros cometidos.
Motivos para implantar testes na sua 
empresa
● Com os testes, é possível ter uma maior garantia de que o sistema não possui 
erros críticos, os quais, quando existem, podem causar grandes prejuízos para 
o cliente.
● Com os testes, novos clientes ficarão interessados em seus sistemas devido à 
recomendações.
● Com os testes, os programadores, apesar de parecer que não, ficam bem 
satisfeitos e motivados com os elogios ao sistema feitos pelo cliente, já que 
ele não encontra muitos bugs.
● Com os testes, minimiza-se a necessidade de atender telefones para ajudar os 
usuários a utilizarem o sistema, logo, menor custo com mão-de-obra para 
helpdesk.
Motivos para implantar testes na sua 
empresa
● Quando há uma equipe de teste para testar o sistema, todos saem ganhando: o 
dono da empresa (menos gasto com marketing e mais prestígio para a 
empresa), o cliente (satisfação e confiança no sistema), os usuários 
(conseguem usar o sistema de forma útil e correta), os programadores 
(motivação por criar sistemas com qualidade) e os testadores (mais 
empregos).
Motivações para trabalhar na área de 
teste de software
● Em uma pesquisa rapida no web site vagas.com foram 
identificadas mais de 100 vagas publicadas em menos de 15 dias.
● Os requisitos são poucos, as empresas pedem curso técnico na área 
ou superior, bons conhecimentos no pacote office, principalmente 
no excel e conhecimento em testes de software.
● Progressão rápida na carreira, começando como testador em um 
ano e meio ou dois anos você já pode se tornar analista de testes 
ou líder de testes ou automatizador de testes e pode se especializar 
em teste de performance ou teste de segurança.
Motivações para trabalhar na área de 
teste de software
● Em uma pesquisa rápida no web site indeed foi identificado que o 
salário Testador de software pode variar de R$ 700,00 a R$ 
5.400,00, tendo um salário médio bruto mensal de R$ 2.532,00 
Motivações para trabalhar na área de 
teste de software
● Em uma pesquisa rápida no web site lovemondays foi identificado 
que o salário Analista de software pode variar de R$ 1.816,00 a R$ 
7.507,00, tendo um salário médio bruto mensal de R$ 4.085,00 
Motivações para trabalhar na área de 
teste de software
● Empresas pagam para pesquisadores encontrarem falhas em seus 
sistemas, a google recompensou um pesquisador com R$80.000,00 
por encontrar uma falha no sistema Chrome Os.
● A Microsoft anunciou que está disposta a pagar até $100.000,00 
para quem encontrar falha no sistema Windows.
● Nos últimos 3 anos a Google pagou cerca de $580.000,00 em 
recompensas e a Mozilla pagou outros $570.00,00. 
● Basicamente são três as partes envolvidas nos testes de 
software:
A empresa, a equipe responsável pelo teste e os testadores. 
Após receber a demanda, a equipe organiza o projeto, a equipe 
que vai participar recebe as falhas, faz a validação e informa o 
resultado ao cliente.
O projeto é realizado em um intervalo pré-definido, em que 
a empresa contratada disponibiliza uma equipe para dar 
suporte aos participantes, acompanhando o registro de falhas e 
a comunicação entre os envolvidos. Todo o ambiente é 
controlado e a infraestrutura de funcionamento é testada, de 
forma que as falhas registradas são classificadas conforme o 
grau de complexidade.
Como Funciona um Teste de 
Software 
Testes de um Software
● Instantâneo
Os resultado são gerados em curto prazo de tempo, em poucas 
horas de trabalho é possível levantar dados de falhas, as quais são 
reportadas ao sistema a quase instantaneamente.
● Teste com usuários
Os testes com usuários permitem obter impressões similares às 
encontradas por usuários a quem o sistema é destinado. Dessa 
forma, será possível realizar os ajustes necessários para atender as 
demandas reais do mercado.
Testes de um Software
● Flexibilidade
Os testes podem ser feitos a qualquer hora do dia, durante 24 
horas por dia e 7 dias por semana. Trata-se de um ponto 
fundamental quando o prazo para validação é curto ou há 
grandes volumes de dados para testar.
● Multiplataforma
Os testes podem ser feitos em uma ampla variedade de 
dispositivos e sistemas operacionais, assim o software é testado 
em um ambiente similar ao real.
Testes de um Software
● Maior Custo e Benefício
Um teste de software pode ser encarado como um 
investimento e não um custo, o qual é feito diretamente no 
resultado, tendo um custo menor do que a correção das falhas 
após a identificação por um usuário, por exemplo. Além disso, 
é mais interessante para a relação entre a empresa e o 
consumidor não apresentar falhas ao invés de se desculpar por 
erros durante o uso.
Vale ressaltar que nem sempre o desenvolvedor se atenta a 
problemas, pois confia no seu trabalho e isso acaba tornando-o 
negligente com suas falhas. Ninguém melhor que terceiros a 
par da operação para verificar o seu funcionamento.
Importância de Testes em Softwares
Muitos Softwares sem testes apresentam grande taxa de erros 
ao decorrer do tempo, por isso é muito importante a fase de 
testes de um software, não reduz 100% das falhas, mas sim 
conseguimos chegar a um software mais próximo do completo 
para o usuário que o pediu , assim reduzindo consideravelmente 
o processo de manutenção de um software, e criando uma 
aplicação 100% funcional com pouca taxa de bugs e 
travamentos que teríamos com softwares sem testes, gerando 
satisfação do usuário e grande mérito a o software feito e toda 
sua equipe.
Tipos de Testes de um Software
● Teste Caixa Branca
São feitos com conhecimento da operação interna, onde o 
testador pode desenvolver códigos para realizar os testes de 
todas as aplicações de cada componente.
● Teste Caixa Preta
São realizados sem conhecimento da operação interna 
(código) do software, é feito analisando o resultado obtido, 
geralmente tomando por base casos de uso e especificações 
de requisitos.
Ciclo de Vida do Processo de Testes
● Procedimentos iniciais
Nesta etapa deverá ser aprofundado um estudo dos requisitos 
do negócio que dará origem ao sistema de informação a ser 
testado, de modo a garantir que o mesmo esteja completo e 
sem nenhuma ambiguidade. No final desta etapa é elaborado o 
GOT – Guia Operacional de Teste
Ciclo de Vida do Processo de Testes
● Planejamento
Consiste em elaborar a Estratégia de Teste e o Plano de 
Teste a ser utilizados de modo a minimizar os principais 
riscos do negócio e fornecer os caminhos para as próximas 
etapas.
● Preparação
Nesta etapa, o objetivo básico é preparar o ambiente de 
teste (equipamentos, pessoal, ferramentas de automação, 
hardware e software), para que os testes sejam executados 
corretamente.
Ciclo de Vida do Processo de Testes
● Especificação
É elaborado e revisado os casos de teste e os de roteiros 
teste. Os casos de teste e os roteiros de teste devem ser 
elaborados dinamicamente durante o decorrer do projeto de 
teste.
● Execução
Os testes deverão ser executados de acordo com os casos 
de teste e os roteiros de teste. Devem ser usados scripts de 
teste, caso seja empregada alguma ferramenta de 
automação de testes.
Ciclo de Vida do Processo de Testes
● Entrega
 Esta fase é onde acontece a entrega do software depois de ter 
passado por todas as fases, com objetivo de minimizar todas as 
chances possível de erros (bugs).
Planejamento de Testes
Cada etapa do processo de teste deve ser planejada. O processo 
de teste tem vida própria no ciclo dedesenvolvimento e pode ser 
realizado em paralelo com muitas outras atividades de 
desenvolvimento. Especificamente, devemos planejar cada uma 
dessas etapas de teste:
● Estabelecendo os objetivos do teste
● Projetando os casos de teste
● Escrevendo casos de teste
● Testando os casos de teste
● Executando os testes
● Avaliando os resultados dos testes
Proposta de Teste
Utilizamos um plano de testes para organizar as atividades de 
teste. O plano de testes leva em conta os objetivos do teste e 
incorpora qualquer cronograma estabelecido pela estratégia de 
testes ou pelos prazos do projeto. O ciclo de desenvolvimento do 
sistema requer vários níveis de teste, começando com o de unidade 
e de integração, e prosseguindo para demonstrar a funcionalidade 
do sistema completo.
Conteudo do Plano
Um plano de testes começa com os objetivos do teste, 
abordando cada tipo, desde o de unidades, passando pelos 
funcionais, de aceitação e de instalação. Logo, o plano de testes 
dos sistemas é, na verdade, uma série de planos de testes, um 
para cada tipo a ser administrado. Em seguida, o plano aborda 
como serão executados e quais os critérios utilizados para 
determinar quando o teste está completo.
Teste de Configuração
Testa se o software funciona no hardware a ser instalado.
 
Teste de Instalação
Testa se o software instala como planejado, em diferentes 
hardwares e sob diferentes condições, como pouco espaço 
de memória, interrupções de rede, interrupções na 
instalação etc.
 
Principais técnicas de teste de software
Teste de Segurança
Testa se o sistema e os dados são acessados de maneira 
segura, apenas pelo autor das ações.
 
Teste Funcional
Testa os requisitos funcionais, as funções e os casos de 
uso. “A aplicação faz o que deveria fazer?”
 
 
Principais técnicas de teste de software
Teste de Integridade
Testa a resistência do software à falhas (robustez).
 
Teste de Unidade
Testa um componente isolado ou classe do sistema.
 
 
Principais técnicas de teste de software
Teste de Integridade
Testa a resistência do software à falhas (robustez).
 
Teste de Unidade
Testa um componente isolado ou classe do sistema.
 
 
Principais técnicas de teste de software
Teste de Integração
Testa se um ou mais componentes combinados funcionam de 
maneira satisfatória. Há quem diga que o teste de integração é 
composto por vários testes de unidade.
 
Teste de Volume
Testa o comportamento do sistema operando com o volume 
“normal” de dados e transações envolvendo o banco de dados 
durante um longo período de tempo.
Principais técnicas de teste de software
Teste de Performance
O teste de performance se divide em 3 tipos:
Teste de carga:
Testa o software sob as condições normais de uso. Ex.: tempo de resposta, 
número de transações por minuto, usuários simultâneos etc.
Teste de stress
Testa o software sob condições extremas de uso. Grande volume de transações 
e usuários simultâneos. Picos excessivos de carga em curtos períodos de 
tempo.
Principais técnicas de teste de software
Teste de Usabilidade
Teste focado na experiência do usuário, consistência da 
interface, layout, acesso às funcionalidades etc.
 
Testes de Caixa Branca e Caixa Preta
Basicamente, teste de caixa branca envolve o código e o 
de caixa-preta, não.
 
Principais técnicas de teste de software
Teste de Regressão
Reteste de um sistema ou componente para verificar se 
alguma modificação recente causou algum efeito 
indesejado, além de, certificar se o sistema ainda atende os 
requisitos.
Teste de Manutenção
Testa se a mudança de ambiente não interferiu no 
funcionamento do sistema.
Principais técnicas de teste de software

Continue navegando