Teste de software
Por: Bruno Simi • 5/4/2015 • Abstract • 1.537 Palavras (7 Páginas) • 331 Visualizações
Metodologias ágeis.
A indústria de software tem evoluído para se tornar uma das mais importantes da era moderna. O software está presente em inúmeras atividades, desde as mais simples como processar informações básicas de compra e venda, até atividades mais complexas, como controlar o carro que dirigimos ou o avião que voa por 10 horas sem escala.
Entregar software funcionando com a maior qualidade possível, no menor tempo e no menor custo continua presente.
É neste contexto que, a partir dos anos 90, surgiram os chamados Métodos Ágeis, introduzindo uma nova visão sobre como desenvolver software. Dentre todas as metodologias ágeis existentes, uma que vem se destacando em número de adeptos e projetos é a Extreme Programming(XP).
A Extreme Programming (XP) é uma metodologia ágil para equipes pequenas e médias que desenvolvem software baseado em requisitos vagos e que se modificam rapidamente [Beck (1999)]. Dentre as principais diferenças da XP em relação às outras metodologias estão:
• Feedback constante.
• Abordagem incremental.
• A comunicação entre as pessoas é encorajada.
O que diferencia os Métodos Ágeis dos demais métodos (conhecidos também como tradicionais ou prescritivas), é o foque maior nas pessoas e não em processo, e seu conjunto de valores, princípios e práticas. Além disso, existe a preocupação de gastar menos tempo com documentação e mais com resolução de problemas de forma interativa.
Teste de software.
Teste de software é o processo de execução de um produto para determinar se ele atingiu suas especificações e funcionou corretamente no ambiente para qual foi projetado.
Seu objetivo é revelar falhas em um produto, para que as causas dessas falhas sejam identificadas e possam ser corrigidas pela equipe de desenvolvimento antes da entrega final. A execução de testes de software está fortemente relacionada com a qualidade final do produto desenvolvido.
Os testes são, por definição, uma das alternativas que a equipe de desenvolvimento possui para obter um produto com um número reduzido de defeitos. Entretanto, embora importante, a atividade de testes pode se tornar muitas vezes repetitiva e custosa. Sistemas que são desenvolvidos utilizando um ciclo de vida incremental normalmente trazem a necessidade de realização constante de testes em funcionalidades já entregues para os usuários com objetivo de garantir que a implementação de novos requisitos não tenha inserido defeitos em funcionalidades existentes.
Nestes casos, para reduzir o esforço com as atividades de teste e aumentar sua qualidade, uma alternativa que pode ser utilizada é a automatização da execução dos testes.
Os principais benefícios do teste de software são:
- Ajudar a medir a qualidade do software baseando-se nos defeitos (bugs) encontrados
- Reduzem o nível de risco de um sistema como um todo.
- Risco: Um fator que pode resultar em futuras consequências negativas; usualmente expressado como impacto e probabilidade.
- Contribuem para o cumprimento de itens contratuais ou requisitos legais com o cliente
- Como?
- Encontrando e corrigindo defeitos Antes do sistema ser implantado em ambiente operacional.
[pic 1]
Tipos de testes
É preciso entender os requisitos funcionais e não funcionais (garantia e utilidade) do negócio, para definir exatamente o nível de testes que pretende-se estabelecer para uma determinada aplicação. Testar demais é tão ineficiente quanto testar pouco.
Alguns tipos de testes utilizados:
- Teste de usabilidade: Se o software é adequado ao uso
- Teste de segurança: Testes para verificar a segurança do software
- Teste de regressão: Testes que podem mostrar que o software continua funcionando normalmente após alguma alteração;
- Teste funcional: Testes podem ser criados para verificar se as especificações funcionais estão corretamente implementadas;
- Teste de aceitação: Podendo ser realizados pelos usuários finais para decidir sobre a aceitação do produto desenvolvido;
- Teste de desempenho: Podem verificar se o desempenho do software está dento do aceitável;
- Teste de estresse: se ele funciona sobre as mais diversas situações.
Ferramentas para automatização de testes.
Qualquer ferramenta de automação de teste está destinada a tornar o processo de teste mais eficiente e eficaz. Uma ferramenta pode trazer muitos benefícios, mas há riscos que precisam ser considerados antes de introduzir uma ferramenta na organização, a maioria desses riscos está associada com a falha na estimativa quanto ao esforço necessário para implementar e manter a automação.
Existem muitos desafios na automação de testes e quanto mais cedo esses desafios forem compreendidos, melhor preparada a organização estará para lidar com eles e quanto mais uma organização compreender as questões de automação menor o risco em termos de tempo e dinheiro.
Hoje em dia, uma das metas das empresas é entregar software com qualidade e para isso diversas ferramentas são utilizadas.
Hoje existem muitas ferramentas disponíveis para uso, para facilitar o entendimento e suas utilidades, algumas serão detalhadas abaixo:
JUnit - Teste Unitário
JUnit é um framework que auxilia a criação e execução de testes unitários em classes Java. Para tanto é composto por uma API (Application Programming Interface) composta por classes e interfaces, que permitem executar os casos de teste mapeados.
O objetivo deste framework é exigir menos esforço de implementação por parte do programador e evitar a duplicação dos casos de teste pelos desenvolvedores (programadores e testadores). Outras características importantes sobre esse framework são: distribuído de forma OpenSource e orientado a objetos.
JUnit trabalha basicamente com anotações (Annotations). Essas anotações indicam se um método é de teste ou não, se um método deve ser executado antes da classe e/ou depois da classe, as anotações indicam também se o teste deve ou não ser ignorado e se a classe em questão é uma suite de teste, ou seja, se a partir desta classe é disparada a execução das demais classes de teste, entre outras anotações menos utilizadas.
...