====== Teste de Software ====== ===== Visão Geral===== O teste de software é um dos processos que faz parte da engenharia de software, no qual busca-se encontrar defeitos para uma análise da qualidade do produto. Quanto mais pessoas trabalharem no código e quanto maior e mais complexo ele for, mais se faz necessário o Teste de Software. A ISO 9126 enquadra a qualidade de produto de software, definindo um conjunto de parâmetros com o objetivo de padronizar a avaliação da qualidade de software. Os pontos previstos nela são: funcionalidade, confiabilidade, usabilidade, eficiência, manutenibilidade e portabilidade. {{:t:teste_de_software.jpg?250|}} ===== Técnicas ===== ---- Para se testar um software há várias maneiras. Abaixo estão as técnicas da **caixa branca**, **caixa cinza** e ** caixa preta** * Caixa Branca A técnica da caixa branca trabalha diretamente sobre o código fonte, no qual faria testes de condição, testes de fluxo de dados, testes de ciclos, testes de caminhos lógicos e códigos nunca executados. * Caixa Cinza A técnica de teste de caixa cinza é uma mescla do uso das técnicas de caixa-preta e de caixa-branca. Esta técnica analisa a parte lógica, além da funcionalidade do sistema, fazendo uma comparação do que foi especificado com o que esta sendo realizado. Isso envolve ter acesso à estruturas de dados e algoritmos do componente, a fim de desenvolver os casos de teste, que então são executados como na técnica da caixa-preta. * Caixa Preta A técnica da caixa preta é mais fundamentada no conceito de utilitário de um código. Ele consiste em, independentemente do que acontecer dentro do código, para cada entrada selecionada, a saída deve ser a respectiva resposta esperada. Quanto mais diferentes são as entradas para o teste, mais completo será o teste. * Testes de Unidade A técnica dos testes de unidade é uma forma de testar pequenas partes do código e funções simples, geralmente utilizado para assegurar o formato do input e output. * Testes de Integração A técnica dos testes de Integração é uma forma de testar certa integração no seu código e realizar validação em algum banco de dados, como uma requisição HTTP, onde analisa o retorno da chamada, o corpo da requisição, a formatação dos dados de retorno. ===== Níveis ===== ---- * Alfa O nível alfa consiste na testagem do software quando todas suas funções já foram implementadas. Um número limitado de testadores avalia a aplicação junto ao desenvolvedor, reportando os erros encontrados. * Beta Após o nível alfa, o produto pode chegar a uma estágio beta, no qual ele chega à uma quantidade limitada de usuários que se comprometem a usá-lo mesmo sabendo que podem haver erros e falhas, no qual ele pode reportar erros encontrados ou sugestões para implementação. O nível beta não implica contato direto do usuário testador com o desenvolvedor. * Gama O estágio Gama não implica ter passado pelos estágios alfa ou beta. Neste estágio, o produto ainda pode estar com grandes erros ou pode não estar completo, no entanto, é lançado para o grande público para futuramente novas partes serem implementadas em novas atualizações. ===== Impacto Social ===== ---- O Teste de Software busca padronizar os softwares desenvolvidos conforme normas estabelecidas pela //International Organization for Standardization//, e são essas normas que garantem a qualidade e avaliação do produto que será disponibilizado aos clientes. Em função disso, o Teste de Software tem seu impacto social baseado na necessidade de se manter uma boa qualidade e avaliação de software para o cliente que fará uso desse produto, pois sem essas padronizações o cliente não terá uma qualidade de software comprovada para utilizá-lo e isso poderá acarretar em erros e problemas de avaliação do produto que está em desenvolvimento. ===== Importância dos testes ===== ---- No desenvolvimento de software, os erros podem aparecer em qualquer estágio do ciclo de vida de um projeto. Diante disso, o teste de software torna-se essencial e não pode ser visto como uma atividade opcional, pois fornece os métodos e ferramentas necessários para garantir a qualidade de qualquer desenvolvimento. É preciso reconhecer a importância do teste de software e do envolvimento da equipe de qualidade em todas as etapas do desenvolvimento do sistema ou aplicativo, sem que isso seja considerado um prejuízo econômico no planejamento do projeto. Sem dúvida, é muito melhor detectar erros no momento certo, gerar tempo suficiente para corrigi-los, do que encontrá-los antes da entrega do produto ou de uma etapa importante de implementação. ===== Referências ===== ---- * Google. Disponível em: [[https://www.google.com]] * Wikipedia. **Teste de software**. Disponível em: [[https://pt.wikipedia.org/wiki/Teste_de_software]] * Almeida, Washington. **ISO 9126**. Disponível em: [[https://blog.grancursosonline.com.br/iso-9126/]]