O documento descreve diferentes tipos de testes de software, incluindo seus objetivos, quando são usados e se podem ser automatizados. É explicado que testes exploratórios, funcionais e de usabilidade são do tipo caixa-preta, enquanto testes unitários, de estresse e de carga são do tipo caixa-branca.
Descrição original:
Trabalho sobre as características dos principais processos de testes de software.
O documento descreve diferentes tipos de testes de software, incluindo seus objetivos, quando são usados e se podem ser automatizados. É explicado que testes exploratórios, funcionais e de usabilidade são do tipo caixa-preta, enquanto testes unitários, de estresse e de carga são do tipo caixa-branca.
O documento descreve diferentes tipos de testes de software, incluindo seus objetivos, quando são usados e se podem ser automatizados. É explicado que testes exploratórios, funcionais e de usabilidade são do tipo caixa-preta, enquanto testes unitários, de estresse e de carga são do tipo caixa-branca.
Teste Exploratório: Utilizado para auxiliar no processo de garantia da qualidade de um sistema, sendo realizado de maneira tática ou informal, para casos onde não existe muita documentação do sistema. O testador não precisa ser um especialista no sistema, pois, na maioria das vezes não há documentação, então, o testador precisa ter experiência em testes para que o resultado seja satisfatório para a empresa. O teste é realizado totalmente de forma manual. Teste Funcional: Utilizado para certificar determinadas funcionalidades do sistema, avaliando o seu devido funcionamento conforme especificado em sua documentação. O testador não precisa ser um especialista em testes, basta utilizar o projeto para compreender cada um dos requisitos e funcionalidades a serem testadas. Desde pequenas funcionalidades, até as maiores e mais complexas de serem executadas. O teste é realizado totalmente de forma manual. Teste Unitário: Utilizado para testar partes isoladas de um sistema, em sua grande maioria, métodos, classes, funcionalidades, módulos entre outros. Sua principal função é rastrear e garantir o funcionamento de cada porção de código após implementado melhorias. Os testes geralmente são feitos de forma automatizada, o testador precisa ter conhecimentos amplos de programação para criar ou utilizar ferramentas prontas nos testes, reduz custos com testes manuais, programadores podem trabalhar sem tanto medo de criar bus em rotinas funcionais. Teste de Usabilidade: Utilizado para analisar e certificar a facilidade de uso do software, ele deve coletar todos os pontos do produto que podem ser difíceis de se compreender ou ser manipulado pelo usuário. Após, apresentar aos desenvolvedores as características positivas e negativas em relação a usabilidade para que sejam ajustadas e trazer a melhor experiência de uso possível. O testador não precisa do software completo para realizar suas análises, os protótipos podem ser utilizados para avaliação antes mesmo de começar a construção do sistema, o testador não precisa ter conhecimento técnico em desenvolvimento, mas precisa ter uma experiência real do dia a dia do usuário. Teste de Estresse: Utilizado para avaliar a performance do sistema quando é submetido a uma alta de processamento, conexões de usuários, atingindo limites que estão fora do especificado, verificando como a aplicação irá se comportar em condições extremas, onde existem poucos recursos computacionais disponíveis, identificando se há indisponibilidade no servidor ou se ocorre lentidão, prejudicando a experiência do usuário. Geralmente esses testes são executados por softwares para este propósito, como os testes são baseados em desempenho computacional, o usuário que irá testar precisa ter um conhecimento técnico na área. Teste de Carga: O teste de carga muito similar ao teste de estresse, porém, ele visa verificar como é o desempenho do ecossistema geral do sistema, submetendo-o a cargas variáveis de usuário ou transações. Podendo iniciar com 100 usuários e ir incrementando este número a cada x minutos até atingir um total de 1000 usuários simultâneos. No decorrer do processo é verificado se houve lentidão, uso fora do comum de CPU e Memória dos servidores. Também é executado por testadores que possuem conhecimentos computacionais para avaliar o desempenho do servidor. Teste de Segurança: Utilizado para garantir a integridade e segurança do sistema, mesmo mediante as diversas tentativas ilegais de acesso, visando vulnerabilidades. Dessa forma, buscando averiguar se os mecanismos de proteção estão protegendo a aplicação de acessos indevidos. Requer um nível de conhecimento amplo em programação para identificar falhas ou aplicar engenharia reversa em determinados componentes do sistema. Teste Alpha: Utilizado para garantir que todas as funcionalidades estão sendo executadas de maneira correta antes da entrega final do projeto. Geralmente os testes ocorrem em um ambiente controlado, dentro das instalações das desenvolvedoras utilizando usuários finais para que avaliem o funcionamento em um “cenário real” de uso. Os desenvolvedores ficam presentes em toda a etapa de testes, registrando erros e eventuais problemas de uso. Os testadores não necessitam de conhecimento técnico de testes ou de programação. Teste Beta: Similar ao teste Alpha, porém, executado nas instalações do cliente final, para este caso, o desenvolvedor não está presente acompanhando os testes. Portanto, todo o cenário e estruturas utilizadas pelo cliente final não é controlada, sendo executado de fato em um ambiente real para averiguar a aceitação do projeto, realizando uma série de testes para certificar que tudo foi entregue conforme os requisitos solicitados e por fim receber a versão oficial do software.
2. Qual tipo de teste se enquadra (caixa-preta, caixa-branca e caixa-cinza)?
4. A técnica pode ser realizada de forma automatizada? Dê exemplos de
ferramentas que permitem elaborar e executar testes automatizados para esta determinada técnica. Um teste que pode ser feito de forma automatizada é o Teste Unitário, geralmente esse tipo de teste é fácil de se construir e barato de se manter, sendo uma alternativa ideal para empresas. Abaixo existem algumas ferramentas básicas para algumas linguagens de programação: JUnit, Visual Studio Unit Testing Framework, Unit.js, PHPUnit, PyUnit entre vários outros.