* Teste e Manutenção de Software Grupo: Matheus Souza Silva Thiago Gonçalves * O Software está cada vez mais presente na vida das pessoas, seja no celular, nos bancos, nos automóveis e entre outros. Com isso, ele estão se tornando cada vez mais complexos e exigem um grau mais elevado de responsabilidade na processo de produção. A maioria das pessoas já passaram por uma experiência ruim com algum software que não funciona corretamente e não inspiram confiança ao usuário. Para evitar esse tipo de problema, a empresa produtora do software deverá investir em Teste de Software, pois reduzem a ocorrência de erros no ambiente de produção. Mas o que é Teste de Software? * Teste de Software é um processo da Engenharia de Software que é realizado pelo testador a fim de fornecer informações sobre sua qualidade no contexto onde ele deve operar. * Existem várias técnicas que o testador pode utilizar para realizar o Teste de Software, as principais são: Caixa Branca Caixa Preto Vamos Explicar cada uma delas! * A técnica Caixa Branca testa a parte interna do software, ou seja, essa técnica trabalha diretamente com o código-fonte do componente de software. Essa técnica irá avaliar : teste de condição, teste de fluxo de dados, teste de ciclos, teste de caminhos lógicos e os códigos nunca executados. * Critérios baseados em Fluxo de Controle Fluxo de Controle é a ordem em que as instruções ou expressões de funções são executadas ou avaliadas em um software. Critérios baseados em Fluxo de Dados Fluxo de Dados é quando valor de todas as variáveis do software mudam decorrente da mudança de uma única variável * Os valores de entradas são selecionados de modo que os caminhos são selecionados sejam executados; Os valores de saídas são determinados; Os casos de testes são construídos; As saídas obtidas são comparadas com as saídas esperadas; Um relatório é gerado para avaliar o resultado do teste; * Os critérios da técnica Caixa Branca podem ser usados em qualquer fase do teste; São comuns nos testes de unidade; Diferentes caminhos dentro de um produto em teste; * É possível garantir que partes importantes do programa sejam executadas; Facilidade de encontrar valores de entradas úteis para o teste, otimizando o sistema; * O número de caminhos a serem executados podem ser infinitos, tornando o teste exaustivo; Caminhos não executáveis podem ser determinados; Dificuldade de automatização; * O nome Caixa Preta vem do sentido de que nesse teste, não exige conhecimento da estrutura interna do software. Esse teste é usado para verificar a saída dos dados usando de entrada vários valores, tais entradas não são escolhidas conforme estrutura do programa. * Particionamento de Equivalências Procura definir um caso de teste que descubra classes de erros, reduzindo o número total de casos de teste que devem der resolvidos. Teste de Paridade É um teste que permite que você reduza um conjunto grande de entradas do casos de teste para um conjunto bem menor. * A especificações de requisitos é analisada; Entradas válidas são testadas para determinar se o software está funcionando dentro do contexto; Os casos de teste são construídos; O conjunto de testes são executados; Os relatórios são gerados para avaliar os testes; * Pode ser aplicado em todas as fases de teste; A complexidade de aplicação aumenta de fase em faz * Pode ser utilizado em todas as fases de testes; Pode ser utilizado independente do paradigma de programação; Eficaz em detectar determinados tipos de erro; * O teste depende de uma boa especificação de requisitos, o que~, em geral, não é bem feito; Não é possível garantir que partes essenciais dos software sejam executadas; Para encontrar todos os defeitos utilizando o teste Caixa Preta é necessário o teste exaustivo; * Teste de Unidade: Essa fase testa as menores unidades de software desenvolvidas. Esse teste encontra falhas de funcionamento dentro de uma pequena parte do sistema; Teste de Integração: O objetivo é encontrar falhas na integração interna dos componentes de um software. Teste de Sistema: No Teste de Sistema o objetivo é executar o software sob o ponto de vista do usuário final, fazendo os teste de interface, ambiente de software e massa de dados. Teste de Aceitação: O Teste de aceitação é realizado por um grupo de usuários finais, que simulam rotinas diárias que eles iram realizar, para verificar se o software está funcionando de acordo com o contexto. Teste de Operação: O Objetivo desse teste é realizar a entrada do software no ambiente produtivo, testando a instalação e a segurança dos banco de dados. Teste Alfa: É o uso do sistema no ambiente produtivo, mas com a supervisão do desenvolvedor, registrando erros e problemas no uso contínuo do software. Teste Beta: O Teste Beta é realizado sem a presença do desenvolvedor, fazendo com que o cliente analise os erros, e em intervalos regulares, passar esses erros para o desenvolvedor. Com os resultados, os engenheiro fazem as modificações e liberam o produto para seus clientes. * Planejamento: Nesta faze é elaborada a maneira como o teste será realizados eé criado o Plano de Teste e a Estratégia de Teste. Preparação: O objetivo desta fase é preparar o ambiente de teste, ou seja, equipamentos, equipe, ferramentas e etc. Especificação: Revisar os casos de teste e elaborar roteiros de teste. Execução: É nessa fase que os testes serão realizados e os relatórios serão gerados para analisar os resultados. Entrega: É nessa fase que o projeto é finalizado e a documentação é arquivada * O JUnit é uma ferramenta open-source que facilita a criação de código para a automação de testes com apresentação dos resultados. Com ele, pode ser verificado se cada método de uma classe funciona da forma esperada, exibindo possíveis erros ou falhas podendo ser utilizado tanto para a execução de baterias de testes como para extensão. * * Manutenção de Software é uma etapa da Engenharia de Software, que é responsável pelo melhoria e otimização de um software já desenvolvido. * Manutenção de Software envolve: Mudança no software para corrigir problemas e deficiências que foram encontrados pelo usuário final; Aprimoramento do software, adicionando novas funcionalidades para melhor a sua usabilidade; * Corretiva – Realiza a manutenção das deficiências do Software Adaptativa – Ocorre quando há alguma mudança do ambiente Aperfeiçoadora – Melhoria na qualidade do software * A maioria dos problemas encontrados na fase da Manutenção, são causados por falta de planejamento e por seu mal desenvolvido; Grande parte das alterações não são documentadas, dificultando a evolução do software; Documentação inexistente ou desatualizada; Grande parte dos softwares desenvolvidos, não foram projetados para receberem alterações; * * Teste de Software, Emerson Rios – Altas Book http://www.submarino.com.br/produto/1/186943/teste+de+software Teste e Análise de Software, Michael Young - Artmed http://www.submarino.com.br/produto/1/21392919/teste+e+analise+ de+software Manutenção de Software, David Bellin – Makron Books http://www.estantevirtual.com.br/seboprazeremler/David-BellinManutencao-de-Software-30590289 * http://testesdesoftware.blogspot.com.br/ http://pt.wikipedia.org/wiki/Manuten%C3%A7%C3%A3o_de_software http://www.devmedia.com.br/artigo-engenharia-de-softwareintroducao-a-teste-de-software/8035 http://pt.wikipedia.org/wiki/Teste_de_caixa-branca http://www.ic.unicamp.br/~ranido/mc626/Manutencao.pdf http://www.univasf.edu.br/~ricardo.aramos/disciplinas/ESI2009_2/ Aula021_Manutencao.pdf * trabalhoictesteemanutencao.xpg.com.br