Aplicativos e software

O que é teste de software e quais tipos de teste existem?

O que é teste de software e quais tipos de teste existem?


We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

Suponhamos que você seja um desenvolvedor de software. Você ganhou o contrato, escreveu o código e tudo parece ótimo.

Mas, você realmente garantiu que o produto de seu trabalho cumpra o que deveria fazer? Você provavelmente deveria testá-lo!

Evite esta etapa por sua conta e risco.

RELACIONADOS: 15 BRILHANTES DE SOFTWARE ENGRAÇADOS QUE FARÃO VOCÊ GIGGLE

O que é teste de software?

O teste de software, como o termo sugere, é uma atividade realizada para verificar se os resultados do software correspondem às expectativas. O teste de software, efetivamente, garante que o software faça exatamente o que deveria fazer - a.k.a., ele verifica se o software é adequado para o propósito.

O teste de software avalia objetivamente um componente de software, ou um sistema de software inteiro, para avaliar uma ou mais de suas propriedades como bugs e outros problemas, pode ser muito caro (e até perigoso). É um processo importante para ajudar a identificar bugs, erros, lacunas ou quaisquer outros requisitos ausentes do resumo inicial ou das especificações do cliente, se houver.

O teste de software pode ser executado manualmente ou usando ferramentas automatizadas ou, na verdade, uma combinação dos dois.

Por que o teste de software é necessário?

O teste de software é uma ótima maneira, como mencionamos anteriormente, de identificar falhas no produto antes de lançá-lo.

Para esclarecer, aqui estão alguns exemplos da vida real de por que o teste de software adequado deve ser levado a sério.

  • Em abril de 2015, o terminal da Bloomberg em Londres caiu devido a uma falha de software. Isso afetou centenas de milhares de operadores do mercado financeiro. A TI até forçou o governo do Reino Unido a adiar um 3 bilhões de libras venda de dívidas. Com testes adequados, isso poderia ter sido evitado.
  • Também em 2015, devido a uma falha de software não identificada, a Starbucks foi forçada a fechar 60% de suas lojas nos EUA e Canadá. Devido a um problema durante a atualização diária do sistema de seus sistema de ponto de venda impedindo a empresa de fazer transações. Em alguns casos, a Starbucks foi forçada a atender pedidos de graça.
  • Em fevereiro de 1991, durante a Primeira Guerra do Golfo, um míssil iraquiano atingiu a base americana de Dhahran na Arábia Saudita, matando 28 soldados americanos. Após uma investigação, foi determinado que o sistema antibalístico da base falhou ao iniciar devido a um bug de computador. O relógio interno havia oscilado alguns milissegundos por hora, o que acabou tendo um grande impacto no tempo dos sistemas.
  • A Nissan já foi forçada a revocar logo abaixo 1 milhão de seus modelos Infiniti 2013 e 2014 do mercado depois que um grave bug de software foi identificado, associado aos seus sensores de airbag. Isso se seguiu a dois acidentes que levaram à descoberta do problema.
  • Durante a Guerra das Malvinas de 1982, o destróier da Marinha Real, H.M.S. Sheffield afundou devido a uma falha de software ligada ao seu sistema de alerta de radar. De acordo com um relatório da época, embora pudesse recolher o míssil antinavio Exocet que se aproximava, registrou-o como "amigável", impedindo o lançamento de contra-medidas.
  • Recentemente, o Boeing 737 Max 8 foi suspenso para atualizações de software depois que duas aeronaves caíram em 2018. Essas falhas de software não custaram apenas bilhões à Boeing, mas infelizmente custaram a vida de centenas de pessoas.

Se um regime de teste adequado tivesse sido conduzido, é bem possível que pelo menos alguns dos itens acima pudessem ter sido evitados. Porém, esses erros não são fáceis de prever antes de acontecerem. Como diz o ditado, retrospectiva é 20:20.

Quais são os benefícios do teste de software?

Como já vimos, não testar o software ao máximo pode ter consequências terríveis. Além disso, também existem alguns benefícios muito importantes e tangíveis para os desenvolvedores com os testes de software.

Estes incluem, mas não estão limitados a:

  • O teste de software é muito econômico:Este é provavelmente o benefício mais importante do teste de software. Testar qualquer projeto de TI em tempo hábil ajuda você a economizar dinheiro a longo prazo. Isso é especialmente verdadeiro para detectar erros, bugs e outros problemas no início do ciclo de desenvolvimento.
  • O teste de software ajuda a melhorar a segurança:Outro benefício de vital importância dos testes é garantir a segurança do produto, pois isso traz dividendos ao desenvolvedor. Isso não apenas garante que os consumidores confiem no produto, mas também ajuda a tapar suas defesas antes que os hackers os encontrem.
  • Qualidade do produto:Este é um requisito essencial de qualquer produto de software. Os testes garantem que um produto de qualidade seja entregue aos clientes.
  • Satisfação do cliente:O principal objetivo de qualquer produto é dar satisfação aos seus clientes. Os testes de UI / UX garantem a melhor experiência do usuário.

Que diferentes tipos de teste de software existem?

O teste de software geralmente é dividido em três categorias principais. Estes são, de maneira geral: -

  • Teste funcional
  • Teste não funcional / teste de desempenho
  • Teste de manutenção

O teste funcional, conforme definido pela Techopedia, é "um processo de teste de software usado no desenvolvimento de software no qual o software é testado para garantir que está em conformidade com todos os requisitos. [É] uma forma de verificar o software para garantir que tenha todas as funcionalidades necessárias que é especificado em seus requisitos funcionais. "

Em suma, o teste funcional é usado para garantir que o software está fornecendo a mesma saída exigida pelo usuário final e consumidores.

O teste não funcional, por outro lado, é uma forma de teste de software para avaliar os aspectos não funcionais de uma parte do software. Geralmente, são coisas como desempenho, usabilidade, confiabilidade, etc.

Essa forma de teste é projetada para testar a prontidão de um sistema, de acordo com parâmetros não funcionais que normalmente não são tratados pelo teste funcional. Um bom exemplo seria verificar quantos usuários podem efetuar login ao mesmo tempo.

Os testes de manutenção, ao contrário dos dois anteriores, geralmente são realizados para identificar problemas potenciais do equipamento ao, digamos, a migração do software de um hardware para outro.

Ele também pode ser usado para verificar se quaisquer outras alterações, reparos ou atualizações de hardware afetaram ou não uma parte do software de forma deletéria. Esse teste de software pode ser executado em nível de sistema, equipamento ou componente, dependendo das necessidades.

De agora em diante, exploraremos alguns dos tipos de teste de software mais comuns que se enquadram nessas categorias amplas (com exceção do teste de manutenção).

Acredite em nós quando dizemos que esta lista está longe de ser exaustiva. Na verdade, existem bem mais de 150 tipos diferentes deles, e estão crescendo.

Você também deve observar que a lista a seguir não está em nenhuma ordem específica, exceto que nós a dividimos em testes de software funcionais, não funcionais e de manutenção.

Que tipos de teste de software funcional existem?

Aqui estão algumas das formas mais comuns de teste de software funcional.

1. Teste de integração

O teste de integração é uma forma de teste de software projetada para verificar todos os módulos integrados em um software. Isso geralmente ocorre depois que todos os módulos de componentes foram integrados juntos, daí o termo.

Módulos geralmente podem consistir em módulos de código, aplicativos individuais, aplicativos cliente e servidor em uma rede, etc. Este tipo de teste é especialmente relevante para cliente / servidor e sistemas distribuídos.

2. Teste de Unidade

O teste de unidade, ao contrário do teste de integração, é uma forma de teste de software que avalia um componente ou módulo individual. Uma unidade é a menor parte testável de qualquer software. Esses testes geralmente são realizados pelos próprios programadores e não por testadores dedicados. Isso ocorre porque ele tende a exigir conhecimento detalhado do design interno e do código do programa.

O teste de unidade é o primeiro nível de teste de software e é feito antes do teste de integração.

3. Teste de sistema

O teste de sistema é um pouco semelhante ao teste de integração, mas é mais abrangente. Essa forma de teste verificará todo o sistema quanto à conformidade geral com os requisitos do software.

Às vezes chamado de teste do tipo caixa preta, é executado após o teste de integração e verifica se todo o pacote de software funciona conforme o esperado. É um processo de teste essencial para garantir a mais alta qualidade possível para qualquer pacote entregue.

4. Teste de fumaça

O teste de fumaça é um tipo de teste preliminar usado para verificar a funcionalidade básica e a estabilidade de um determinado aplicativo. Esse teste tem como objetivo ser rápido de executar e seus objetivos geralmente são garantir que os principais recursos de um sistema funcionem conforme o previsto.

Esse teste geralmente é executado logo após uma nova compilação ter sido desenvolvida e verifica a estabilidade antes de testes mais aprofundados. Os testes de fumaça procuram efetivamente por defeitos "bloqueadores" dentro do código que podem impedir que testes posteriores sejam executados adequadamente ou mesmo.

Como a Ajuda do Teste de Software aponta: "Se os testadores descobrirem que a principal funcionalidade crítica está quebrada no próprio estágio inicial, a equipe de teste pode rejeitar a compilação e informar de acordo com a equipe de desenvolvimento. O Smoke Testing é realizado em um nível detalhado de qualquer Teste Funcional ou de Regressão. "

5. Teste de Sanidade

O teste de sanidade é usado para determinar se uma nova versão do software tem desempenho bom o suficiente para aceitá-la para outros testes importantes. Se, por exemplo, um aplicativo travar no uso inicial, o sistema será considerado muito instável para testes adicionais.

Ele também é usado para verificar pequenas alterações no código ou funcionalidade, para certificar-se de que nenhum outro problema seja introduzido devido a essas alterações. Este teste não é usado para verificar objetivamente o software, mas garantir que o desenvolvedor aplicou racionalidade (ou seja, sanidade) ao produzi-lo.

6. Teste de regressão

O teste de regressão é usado para testar um aplicativo como um todo quando uma modificação em um módulo ou função foi realizada - daí o nome regressivo. Ele é usado, com efeito, para confirmar que as alterações feitas não afetaram adversamente outros recursos existentes.

Guru99 define o teste de regressão como: "reexecução detestes já executadospara garantir que as funcionalidades existentes funcionem bem. "Este teste verifica se as alterações no código afetam as funcionalidades existentes." Ele garante que o código antigo ainda funcione assim que as alterações mais recentes forem feitas. "

7. Teste de interface gráfica do usuário (GUI)

Interface gráfica do usuário, GUI para breve, o teste é, como o nome sugere, um teste da interface em relação aos requisitos do cliente ou do usuário final. Isso geralmente é explicado no resumo do projeto e também normalmente terá modelos de GUI de referência para teste.

Esses testes geralmente verificam coisas como o tamanho dos botões e campos de entrada em um determinado intervalo de resoluções. Também verificará o alinhamento do texto, tabelas e conteúdo geral.

Esse teste também deve validar quaisquer menus presentes, como os menus suspensos preenchidos. A TI também valida que as páginas não flutuam e que o alinhamento permanece estável ao passar o mouse sobre elas com o ponteiro do mouse.

8. Teste Beta

O teste beta é uma forma de teste de software da qual você provavelmente já ouviu falar, mesmo se não estiver na profissão. Ao contrário de outros já mencionados, esse tipo de teste é geralmente realizado por clientes e outros usuários finais terceirizados.

É, na verdade, um teste do software em um ambiente do mundo real antes do lançamento final do produto. Esse teste é realizado para garantir que não haja falhas graves no software e que ele atenda a todos os requisitos.

Os usuários finais geralmente serão incentivados a fornecer feedback aos desenvolvedores e também oferecer sugestões para melhorias potenciais. Uma vez compilado, os desenvolvedores irão realizar quaisquer melhorias antes do lançamento final.

9. Teste ponta a ponta

Esta forma de teste de software é usada para testar se o fluxo de um aplicativo do início ao fim se comporta conforme o esperado. Seu objetivo é identificar as dependências do sistema e garantir que a integridade dos dados seja mantida entre os vários componentes e sistemas do sistema.

Geralmente, ele testa todo o aplicativo para funcionalidades críticas, como a comunicação com outros sistemas, interfaces, bancos de dados, redes e outros aplicativos.

10. Teste de usabilidade (Experiência do usuário - UX)

Este teste de software verifica, como o nome sugere, sua real facilidade de uso. Também conhecido como UX, o fluxo do aplicativo é testado para ver se um usuário novo e inexperiente pode entender o aplicativo ou não.

Ele também pode testar quaisquer funções de ajuda para ver se são úteis e verificar se a navegação do sistema é lógica.

Teste de software não funcional

Aqui estão algumas das formas mais comuns de teste de software não funcional.

1. Teste de desempenho

O teste de desempenho, às vezes incluindo teste de estresse ou carga, é uma forma importante de teste de software não funcional.

Este verifica se um sistema atende aos parâmetros de desempenho definidos, ele usa uma variedade de ferramentas.

2. Teste de estresse

Conforme mencionado anteriormente, o teste de estresse pode ser executado como parte de um teste de desempenho geral ou como um teste independente. Como o nome sugere, isso testa o software até os limites de seu desempenho definido e além.

Ele efetivamente tenta descobrir como e quando o sistema irá falhar, uma vez além das expectativas normais de desempenho. Esse teste geralmente é realizado sob cargas pesadas, como inserir dados além da capacidade de armazenamento, fazer consultas complexas de banco de dados ou entradas contínuas no sistema ou testar cargas de banco de dados.

3. Teste de carga

Outra forma de teste de software não funcional, o teste de carga verifica como o sistema se comporta quando vários usuários acessam o programa ao mesmo tempo. É mais relevante para sistemas multiusuário; geralmente aqueles construídos usando um modelo cliente / servidor, como servidores web.

O teste de carga pode ser executado usando ferramentas como JMeter, LoadRunner, WebLoad, Silk performer, etc.

4. Teste de segurança

O teste de segurança, como o nome sugere, verifica qualquer parte do software quanto à sua facilidade ou dificuldade de ser hackeado. Geralmente é realizado por testadores especializados, como hackers de chapéu branco, e é usado para encontrar os pontos fortes e fracos de um software de ameaças internas e externas.

"Este teste inclui o quanto o software é seguro contra programas maliciosos, vírus e quão seguros e fortes são os processos de autorização e autenticação.

Ele também verifica como o software se comporta contra um ataque de hacker ou um programa malicioso e como o software é mantido para segurança de dados após esse ataque. "- Ajuda para teste de software.

5. Teste de Volume

O teste de volume é outro teste de software não funcional que normalmente é executado por uma equipe de teste de desempenho. O software sob inspeção é exposto a grandes quantidades de dados e o teste verifica como o software se comporta e responde.

É usado para avaliar o impacto, se houver, de tal fluxo de dados no desempenho e no tempo de processamento.

6. Teste de Compatibilidade

Esta forma de teste de software valida como um pacote de software se comporta em vários ambientes diferentes. Isso incluirá coisas como servidores da web, hardware e ambiente de rede.

Esta forma de teste verifica se ele pode ser executado em diferentes configurações, bancos de dados, etc. e em suas várias versões, se aplicável.

7. Teste de instalação / desinstalação

Como o nome sugere, essa forma de teste executa verificações em instalações e desinstalações completas, parciais ou de atualização. Normalmente é testado em vários sistemas operacionais usando uma variedade de ambientes de hardware e software diferentes.

8. Teste de confiabilidade

Essa forma de teste de software avalia a probabilidade de operação sem falhas de um software por um período de tempo especificado em vários ambientes.

"O teste de confiabilidade é executado para garantir que o software seja confiável, satisfaça a finalidade para a qual foi feito, por um período de tempo especificado em um determinado ambiente e seja capaz de renderizar uma operação sem falhas." - Ajuda de teste de software.

9. Teste de recuperação

O teste de recuperação é outro teste crítico para ver como uma parte específica do software se comporta após travamentos do sistema ou outros desastres. Ele verifica se o sistema em questão é capaz de ser restaurado após tais instâncias.

Esses testes são relativamente simples na prática e podem envolver simplesmente desconectar os cabos de rede para forçar uma perda de conexão. O objetivo do teste é verificar se o software é capaz de reverter a um ponto anterior à falha e continuar a operar.

10. Teste de conformidade

O teste de conformidade, também conhecido como teste de conformidade, teste de regulamentação ou teste de padrões, é outro teste de software comum. Este teste determinará a conformidade do sistema para definir padrões externos.

O conteúdo de tais testes pode variar dependendo dos requisitos da norma sendo aplicada.

11. Teste de localização

E, finalmente, o teste de localização é uma forma de teste de software usado para avaliar seu comportamento em relação a diferentes culturas ou configurações. Seu principal objetivo é verificar os aspectos linguísticos e culturais adequados para uma determinada localização geográfica.

Em outras palavras, é um processo de personalização de aplicativos de software para o idioma e país de destino.

E isso é tudo pessoal.

Esperamos, agora, que você tenha apreciado os tipos de teste de software e sua importância. O exposto acima é apenas a ponta do iceberg quando se trata de teste de software. No entanto, todas as formas de teste de software são componentes importantes para garantir que o software funcione conforme o esperado, com segurança e confiabilidade.

Sem um pacote abrangente de testes, o software do produto final pode ter alguns problemas bastante sérios que não são apenas perigosos para os usuários, mas também, potencialmente, sair pela culatra para o desenvolvedor.

“Um ponto a tempo poupa nove”, diz o ditado famoso. Os desenvolvedores sábios nunca devem economizar quando se trata de testar seu software antes do lançamento - isso pode matar pessoas.


Assista o vídeo: Como é trabalhar com programação? cascata e ágil (Pode 2022).