Escolar Documentos
Profissional Documentos
Cultura Documentos
manutenção de
software
Sistemas de Informação
Professor: Gleisson Amaral
01 – Quais os principais problemas os autores relataram ter encontrado nos processos de testes de software?
02 – Destaque a importância da documentação dos testes segundo os dados oferecidos pelos autores do artigo.
Poste o questionário acima em formato texto para a atividade relacionada a esta aula.
Sistemas de Informação
Professor: Gleisson Amaral
3. Confiabilidade de software:
Atributos:
A confiabilidade geral pode ser medida através dos atributos qualitativos ou quantitativos abaixo descritos,
Ameaças:
A confiabilidade geral também pode ser medida pelas ameaças que podem afetar um sistema.
Defeito: A presença de um defeito em um sistema pode ou não levar a uma falha, a falha poderá ocorrer em decorrência de
uma combinação específica de parâmetros, falta de parâmetros, ou parâmetros inconsistentes. Ex: Data futura extrema ou
passado extremo
Erro: um erro é uma discrepância entre o comportamento pretendido e real dentro dos limites do sistema. Os erros ocorrem
no tempo de execução quando alguma parte do sistema entra em um estado inesperado. Como os erros são gerados a partir
de estados inválidos, eles são difíceis de observar sem mecanismos especiais. Ex: Referencia a um registro inexistente em uma
tabela de domínio.
3.1.1 Padronização
Conjunto de regras que devem ser observadas durante a construção do programa, visando uma homogeneização dos diversos
componentes que integram o sistema.
A padronização confere estrutura e disciplina à forma, permitindo que a codificação de diversos programas se assemelhe.
A padronização deve levar em conta as idiossincrasias da linguagem utilizada, sendo necessária a elaboração de regras
diferenciadas para as diferentes linguagens tratadas.
Rotinas de uso repetitivo no sistema devem estar pré codificadas em módulos específicos, que podem ser chamados
constantemente para dentro do programa.
Definições de layouts dos arquivos com maiores índices de referência no sistema, bem como definições dos cabeçalhos
tomados como padrão para os relatórios e o conjunto de comandos para sua impressão, devem. também, ser disponibilizados
em módulos de acesso geral.
A utilização destes módulos, além de confiável em função de serem exaustivamente testados, permite que qualquer alteração
neles seja imediatamente assimilada pelos programas que os compartilham, evitando divergências lógicas entre programas.
3.1.3 Modularização
É a organização de um programa em unidades independentes, cujo comportamento é controlado por um conjunto de regras.
Suas metas são:
A modularização de um programa deve ser construída tendo em vista a redução dos acoplamentos (interdependências) entre
módulos e o aumento da coesão de seus elementos internos (quão fortemente os elementos dentro de um modulo
relacionam-se).
a) Descrição do domínio dos conteúdos dos campos que permitam ter suas entradas pré-definidas;
b) Comentários na abertura dos módulos do programa, descrevendo entradas permitidas e saídas esperadas;
c) Sempre que possível, utilização de rotinas de tratamento de erros.
Atributos do software que evidenciam sua capacidade de manter um nível de desempenho especificado nos casos de falhas no
software ou de violação nas interfaces especificadas.
Atributos do software que evidenciam sua capacidade de restabelecer seu nível de desempenho e recuperar os dados
diretamente afetados em caso de falha. bem como o tempo e esforço dispendidos no processo.
Fim
Sistemas de Informação
Professor: Gleisson Amaral
Um plano tem o papel semelhante ao de um ‘mapa’. Sem um mapa, um plano ou qualquer outra fonte de informação similar,
você não conhecerá seus objetivos, nem aonde quer chegar e jamais terá a certeza de ter alcançado sua meta. Perceba que
entender o propósito do planejamento é de suma importância a fim de monitorar a execução de atividades, sendo também
importante conhecer o papel dos riscos no planejamento, bem como diferenciar estratégias de planos. Planejamento
engloba três atividades principais:
1. Definir um cronograma de atividades: estabelecer as atividades que devem ser realizadas, as etapas a serem seguidas e a
ordem cronológica de execução;
2. Fazer alocação de recursos: definir quem realiza as atividades e quais ferramentas/recursos a serem utilizados;
3. Definir marcos de projeto – estabelecer os marcos, ou milestones, a serem alcançados com objetivo de se fazer o
acompanhamento.
Sim, os testes de software são planejados. E para garantir a qualidade e o sucesso de uma entrega, durante essa fase existem
documentos que auxiliam e direcionam a equipe nas tomadas de decisões.
Na prática, os mais utilizados são: Plano de testes, suíte de testes e casos de testes (ou cenários de testes, caso estivermos
falando de BDD).
Plano de testes: Formaliza a estratégia de testes, contendo informações sobre o escopo de testes, configuração de
ambiente, recursos necessários e cronograma de testes.
Suítes de testes: Uma coleção de casos de testes destinados a testar um fluxo para verificar um determinado
comportamento.
Casos de testes: Uma especificação detalhada do teste que deve ser repetível, contendo uma ação e um resultado
esperado.
Bartié (2002)
Durante a criação do plano de testes, a equipe deve levar em consideração a estrutura da equipe atual e manter o equilíbrio
para a execução de cada tipo de teste.
Em 2009, no livro ‘Succeeding with Agile’, Mike Cohn tornou conhecida uma forma para equilibrar a proporção dos testes
que devem ser executados em cada etapa do desenvolvimento de software, levando em consideração o custo e a
complexidade da execução.
Esta forma foi chamada de Pirâmide de Testes (conforme a figura ao lado) e está
relacionada com a proporção ideal para a implementação de testes automatizados.
No entanto, na prática, esse conceito “pode” por muitas vezes ser invertido.
Para ter equilíbrio no planejamento dos testes é necessário entender o significado de cada camada da pirâmide.
Testes de unidade: Tem por objetivo garantir que a menor unidade do sistema seja validada, como por exemplo: métodos,
classes, funções. Normalmente são testes realizados pelos desenvolvedores.
Testes de serviço: São testes realizados nos serviços da aplicação, nas regras de negócios abaixo da camada de “UI”.
Normalmente utilizando ferramentas para auxiliar nesse processo, de tal forma, evitando que esse teste seja realizado
apenas quando a “UI” estiver sendo validada. Comprovam a efetiva conexão dos sistemas garantindo a integração entre eles.
Testes de UI (User interface): O objetivo deste teste é focar os esforços nas funcionalidades críticas, em funcionalidades que
envolvam aspectos da interface e diferentes dispositivos (browsers, versões de sistema operacional). É neste momento que a
jornada de navegação do usuário é reproduzido.
Conforme a figura 1 (ao lado), na base da pirâmide de testes automatizados se tem um espaço maior para
os testes de unidade, onde, o principal esforço deve ser realizado, por conta de ter um baixo custo para
implementação e execução. Na camada intermediária se tem uma quantidade média para testes de
integração ou de serviços. E por fim, no topo e em menor quantidade os testes de UI, focando nos
principais fluxos do sistema. Figura 1
Figura 2
Avaliação de artigo científico: SBQS - Caracterização do Estado da Prática das Atividades de Teste em um Cenário de
Desenvolvimento de Software Brasileiro
O artigo faz parte dos anuários da SBQS – Sociedade Brasileira da Qualidade de Software, e retrata o cenário dos testes de
software na primeira década dos anos 2000, mais precisamente em 2006.
De lá para cá houve grande mudança na disponibilidade e na qualidade das ferramentas para automação de testes.
Assim pede-se;
Leitura atenda do artigo e produção de uma resenha que deverá ser depositada no Canvas até a data limite.
Sistemas de Informação
Professor: Gleisson Amaral
Por definição, no nosso segmento, o risco é qualquer evento improvável e incerto, com impacto positivo ou negativo no
sucesso do projeto. Os eventos imprevisíveis podem afetar os negócios, o custo, a qualidade do produto e a pontualidade da
entrega.
O Teste Baseado em Riscos (TBR) utiliza uma abordagem para verificar a probabilidade de falhas de aplicativos. Esta
metodologia é utilizada com objetivo de testar os diversos cenários possíveis para verificar seu impacto nos negócios.
O TBR prioriza os módulos e funções com base na probabilidade de erros para remover bugs críticos. Qualquer bug crítico
encontrado no ambiente de produção pode levar a clientes insatisfeitos, impactar seriamente sua experiência e causar perda
de negócios.
Essa abordagem de teste também garante que os erros encontrados pelo usuário final não causem impacto nos resultados
da aplicação ou na experiência desse mesmo usuário.
Quando usar o teste baseado em risco? Uma vez que é um desafio testar exaustivamente todo o software, por isso é vital
selecionar as partes mais importantes para garantir testes adequados.
• Essa técnica de teste é preferida quando a equipe tem restrições de tempo, recursos e orçamento.
• A técnica é seguida por uma análise baseada em riscos para avaliar as vulnerabilidades do sistema.
• Também é usado para avaliar aspectos críticos dos negócios e áreas propensas a defeitos.
Fatos importantes:
• Após o desenvolvimento e mesmo que os requisitos tenham sido estritamente seguidos, não há garantias de que um
sistema de software esteja correto.
• Falhas podem surgir nas mais variadas direções
• Falhas importantes podem permanecer imperceptíveis por anos e fazer o software falhar de maneira inesperada.
• Mudanças em interfaces.
• Aumento no número de usuários
• Alterações no modelo de negócio
• Alterações no ambiente da aplicação
O propósito da Análise de Risco de Software é determinar o que testar, a prioridade do teste e a abrangência dos testes
Quem deve fazer? Idealmente, uma equipe de especialistas multidisciplinar composta por;
• Analistas de negócio,
• Analistas de sistema,
• Desenvolvedores,
• Testadores,
• Usuários,
• Outros diretamente interessados.
Pede-se;
Leitura atenta do artigo e produção de uma resenha que deverá ser depositada no Canvas até a data limite.
Sistemas de Informação
Professor: Gleisson Amaral
Apesar de Cenários de teste e casos de teste serem comummente confundidos, eles não são a mesma coisa.
Como escolher entre cenário, caso o script de teste e qual tipo usar? A boa notícia é que não há necessidade de escolher
apenas um, pois usualmente os testadores fazem uso de todos, às vezes simultaneamente.
• Tem alguma tarefa que precisa ser repetida regularmente e tem um testador disponível? Faça uso do script de teste. Uma
ferramenta robusta como o TestComplete pode usar esses scripts para criar testes automatizados em vários dispositivos,
plataformas e ambientes de forma rápida.
• Pensou em várias ideias que precisam ser testadas e tem um testador habilidoso disponível? Faça uso dos casos de teste.
Agora, precisa pensar em ações mais abrangentes, tentar pensar em como o usuário vai agir? Crie alguns cenários de teste
e coloque seus melhores testadores nesta tarefa.
Todas essas formas de documentação são importantes, contanto que você entenda seus benefícios e limitações.
Assim como os casos de teste, a flexibilidade dos cenários oferecem prós e contras similares. O conhecimento de causa e as
habilidades em testes podem facilitar os testadores a transformar os cenários em ideias concretas, escolher a abordagem
mais lógica e rodar os testes que podem extrair os problemas importantes.
Os casos de teste descrevem uma ideia específica a ser testada, sem detalhar os dados necessários e etapas exatas a serem
executadas. Por exemplo, um caso de teste poderia ser “Testar se um código de desconto pode ser aplicado em um produto
em promoção”.
Esta flexibilidade dos casos é boa e ruim. Flexibilidade é benéfica quando o testador já é familiarizado com testes e com os
detalhes do software que está sendo testado. Se o testador entendeu claramente o que já foi testado, o que foi modificado
recentemente no programa e quantos usuários geralmente usam o programa, as estratégias de teste pode ser tanto usar os
caminhos que os usuários normalmente usam ou formas mais inusitadas, para encontrar bugs escondidos.
É a forma mais detalhada de documentar um teste, o script. Quando os scripts de teste são mencionados, geralmente
detalham linha por linha cada ação e dados necessários para rodar o teste. Um script tipicamente tem etapas que ajudam a
entender como usar o programa, quais botões apertar e em qual ordem, como executar uma ação em particular no
programa, etc. Esses scripts também incluem resultados específicos de cada etapa, como a verificação de uma mudança na
interface. Em termos práticos, o exemplo seria:
Quando um testador começa um novo trabalho, nem sempre ele sabe muito sobre o produto, a abrangência do negócio ou
até mesmo sobre testes de software. Neste momento os scripts entram. Se o testador seguir cuidadosamente as instruções,
inserir “abc”, clicar no botão de enviar, garantir que foi enviado e as informações salvas – essas instruções são uma boa base
para entender a ideia de teste.
Existem alguns pontos importantes a se considerar antes de dedicar muito tempo nos scripts detalhados. Os projetos de
software ativos mudam constantemente, páginas são refeitas, a experiência do usuário muda e novas funcionalidades são
adicionadas.
Para ser mais produtivo com o tempo, os testadores precisam ter um esforço contínuo para atualizar os scripts. O problema
disso é o tempo investido na atualização que poderia ser usado para rodar mais testes. Outro empecilho é que os scripts de
testes são feitos para testar uma coisa específica repetidamente, fazendo uso dos mesmos caminhos e dados toda vez que o
teste é executado.
Isso significa que se tiver algum bug que não esteja no roteiro do script, ele não será encontrado, a não ser que o testador
fuja do script. Testes com scripts não incentivam os testadores a serem criativos e nem habilidosos para encontrar bugs.
Avaliação de artigo científico: 06 - Um ambiente para geração de cenários de testes para linhas de produto de software
sensíveis ao contexto
• Relate os softwares de testes utilizados pelo autor e informe quais benefícios e problemas cada um apresentou.
Por fim, deposite um documento com as duas respostas no Canvas até a data limite.