O que é functional testing?

Autores

Phill Powell

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

Functional testing definido

Functional testing é uma abordagem de teste de software que verifica se as funcionalidades de uma aplicação funcionam conforme o esperado com base nos requisitos especificados.

No desenvolvimento de software, existem inúmeros tipos de testes de software. Cada um vem para a tarefa a partir de uma abordagem ligeiramente diferente. O functional testing se alinha mais com o conceito de experiência, e se concentra em uma pergunta crítica: as funcionalidades de software funcionam conforme o esperado e de acordo com os requisitos especificados?

A qualidade do software é frequentemente avaliada de vários ângulos como parte do ciclo de vida do desenvolvimento de software. No que diz respeito ao functional testing, os testadores precisam validar a funcionalidade básica e confirmar que o software é compatível com os requisitos comerciais. A execução do teste envolvido permite que as equipes de DevOps comparem os resultados reais dos testes com os resultados esperados.

Os testes são uma parte essencial do processo de desenvolvimento, e o functional testing permite que as equipes de controle de qualidade realizem um tipo de garantia de qualidade antes do fato, dando-lhes uma visão clara de como fluxos de trabalho provavelmente funcionarão quando chegar a hora de lançá-los de verdade.

As mais recentes notícias de tecnologia, corroboradas por insights de especialistas.

Mantenha-se atualizado sobre as tendências mais importantes (e intrigantes) do setor em IA, automação, dados e muito mais com o boletim informativo Think. Consulte a Declaração de privacidade da IBM.

Agradecemos sua inscrição!

Sua assinatura será entregue em inglês. Você pode encontrar um link para cancelar a assinatura em todos os boletins informativos. Você pode gerenciar suas inscrições ou cancelar a inscrição aqui. Consulte nossa Declaração de privacidade da IBM para obter mais informações.

Como funciona o functional testing?

Diferentes elementos operacionais são destacados, dependendo de qual tipo de teste de software está sendo empregado como parte da estratégia geral de testes. O functional testing avalia a compatibilidade geral entre diferentes módulos de software, o que tem uma influência direta em outros aspectos relacionados, como as interações esperadas com o usuário e a viabilidade da interface do usuário.

O ambiente de teste fornecido pelo functional testing é considerado um exemplo de caixa-preta, no qual os testadores não obtêm insight sobre o funcionamento interno do sistema (como ocorre no teste de caixa branca) e, em vez disso, recebem um relatório de "Aprovado/Reprovado" sobre se o sistema e seus fluxos de trabalho funcionam conforme o esperado.

As seis etapas do functional testing

O functional testing geralmente segue um processo de teste que exige seis etapas:

  1. Identifique as várias funções que o software precisa executar.
  2. Crie dados de entrada de acordo com os requisitos funcionais.
  3. Estabeleça as saídas esperadas de acordo com as especificações funcionais.
  4. Realize casos de teste.
  5. Avalie como as saídas reais se comparam às saídas esperadas.
  6. Determine se a aplicação de software funciona de acordo com as expectativas.
IBM DevOps

O que é DevOps?

Andrea Crawford explica o que é DevOps, seu valor e como suas práticas e ferramentas ajudam você a migrar suas aplicações por todo o pipeline de entrega de software, desde a concepção até a produção. Conduzido pelos principais líderes da IBM, o conteúdo foi concebido para ajudar os líderes empresariais a adquirir o conhecimento necessário para priorizar os investimentos em IA que podem estimular o crescimento.

Tipos de functional testing

Assim como existem variedades de modelos de teste de software, existem diferentes tipos de functional testing. Eles são numerosos, e esta é apenas uma lista parcial deles. Os tipos de Functional testing abrangem uma ampla gama de nuances e estão listados aqui em ordem alfabética.

Testes ad hoc

Nos testes de software, os testadores geralmente seguem o processo de teste formal com testes ad-hoc. Essa forma informal de teste exploratório é guiada inteiramente pelas habilidades e intuição dos testadores. Não há uma estrutura definida. Em vez disso, os instintos dos testadores impulsionam as técnicas de teste usadas.

Exemplo: "testes de amigos", em que um desenvolvedor e um testador unem forças e trabalham juntos na melhoria de um módulo ou aplicativo. Nessa forma de teste ad-hoc, o testador geralmente encontra bugs ou outras coisas que precisam ser corrigidas enquanto o desenvolvedor se concentra em fazer essas correções.

Testes de APIs

Interfaces de programação de aplicativos (APIs) possibilitam o desenvolvimento de software e permitem que diferentes aplicativos ou sistemas se conectem. Os testes de API garantem que os pontos de conexão de API operem conforme necessário. Também fornecem supervisão sobre as permissões do usuário e a maneira como os dados são gerenciados por meio de APIs.

Exemplo: "testes headless" ocorrem quando há uma falta de uma interface do usuário ou um campo de entrada de dados da interface do usuário. Nessas situações, os dados de entrada compartilhados com um serviço ou aplicativo de interface geralmente podem ser mais bem testados por meio de testes de APIs.

Cenários de testes complexos

Muitas organizações desejam que seu processo de teste reflita verdadeiramente a experiência real de usuários reais. Para essas empresas, cenários de teste complexos fornecem o nível desejado de exatidão, embora deva ser ressaltado que maior complexidade requer mais trabalho inicial para execução.

Exemplo: o processamento de pedidos online só parece uma operação perfeita. Nos bastidores, há muitos processos a serem testados, como a facilidade com que os itens podem ser adicionados ao carrinho on-line de um comprador, a rapidez com que funções como a aplicação de descontos são integradas e a facilidade com que essas compras podem ser feitas.

Integration testing

O integration testing geralmente é executado ao mesmo tempo que o teste unitário devido a benefícios como detecção precoce de problemas e uma gama mais ampla de cobertura de testes. Além de ajudar os formatos de dados a corresponderem, os integration testing fornecem insight sobre o funcionamento e o desempenho dos microsserviços.

Exemplo: digamos que um order management esteja integrado a algum tipo de módulo que controla o processamento de pagamentos. O integration testing mostra onde futuras falhas podem ocorrer entre as duas entidades e fornece aos desenvolvedores um modelo para corrigir problemas de integração mais cedo e de forma menos dispendiosa.

Testes de regressão

Em um mundo perfeito, uma vez aprovado em um teste funcional, ele sempre passaria. Mas isso não combina com a realidade, onde o software é frequentemente afetado por desenvolvedores que podem, sem saber, induzir erros com novas alterações de código. Os testes de regressão garantem a manutenção de uma linha de base estável.

Exemplo: sempre que alterações no código são feitas, uma forma de teste de regressão ou outra está sendo usada. Isso inclui quaisquer atualizações relacionadas, conforme seriam feitas após a correção de um bug, a introdução de novas funcionalidades ou após uma atualização de software.

Testes de sanidade

O teste de sanidade é uma maneira rápida e ágil de verificar se a funcionalidade existente não foi prejudicada pela adição de alterações relativamente pequenas ou correções de bugs. O teste de sanidade tende a ser usado como uma maneira rápida de confirmar que a nova funcionalidade não atrapalha o restante da funcionalidade do sistema.

Exemplo: assim como nos testes de regressão, os testes de sanidade permitem "retornar" o sistema à funcionalidade anterior a fim de verificar melhorias no desempenho, confirmar a operação básica e garantir que o sistema esteja funcionando conforme o esperado. Sempre que alterações no código de tempo são feitas, uma forma de teste de regressão ou outra está sendo usada. Isso inclui quaisquer atualizações relacionadas, conforme seriam feitas após a correção de um bug, a introdução de novas funcionalidades ou após uma atualização de software.

Testes de fumaça

Segundo o antigo ditado, "onde há fumaça, há fogo". Esse ditado parece ter inspirado o nome "teste de fumaça". O teste de fumaça é conduzido no início do processo de desenvolvimento e, quando realizado, avalia a funcionalidade de ponta a ponta. Se a funcionalidade falhar, as equipes de QA fazem as correções necessárias.

Exemplo: os testes de fumaça podem ser usados para verificar a integração contínua e pipelines contínuos como uma verificação final antes que novas compilações de software (ou grandes mudanças de código) possam ser implementadas.

Testes do sistema

Às vezes chamado de teste de ponta a ponta, o teste de sistema funciona para avaliar como o software de um sistema de software inteiro opera em conjunto. Os testes do sistema geralmente envolvem a análise de vários sistemas de software separados que podem ou não funcionar em uníssono dentro de um determinado sistema de software.

Exemplo: cenários de ponta a ponta permitem que os testadores avaliem fluxos de trabalho completos. Para operações de varejo online, isso pode significar toda a experiência de varejo que o consumidor experiencia, desde o pedido de compra original até todo o processo de atendimento.

Teste de unidade

Os testes de unidade são uma forma de testes em um microcosmo. Aqui, não estamos testando um sistema inteiro, apenas uma parte limitada do código. Uma seção do código é avaliada em um ambiente de teste isolado e, se o teste de unidade falhar (com base em uma comparação dos dados de teste com as metas de funcionalidade), mais testes poderão ser realizados no nível de todo o sistema.

Exemplo: elementos computacionais bastante básicos são testados por meio de testes unitários. Considere uma função simples que converte temperaturas Celsius em suas contrapartes de Fahrenheit. O ambiente de teste contém o código em questão e os casos de teste envolvidos.

Testes de aceitação do usuário

Como um estágio posterior do teste de software, o teste de aceitação do usuário busca incorporar e aprender com os testes de desempenho conduzidos pelas pessoas que representam o grupo demográfico pretendido com o software que está sendo produzido. Esses usuários finais trazem realismo adicional ao processo de teste.

Exemplo: um usuário de um plano de software faz o upgrade para seu próximo nível de serviço, permitindo que ele libere uma funcionalidade totalmente nova. O teste de aceitação do usuário verifica se o usuário poderá ver seu acesso às funcionalidades aumentar conforme o esperado.

Functional testing versus non-functional testing

Como seu nome implica, o non-functional testing avalia comportamentos de aplicações que geralmente não são consideradas vitais para garantir a funcionalidade. No entanto, proporcionar uma experiência de usuário bem organizada e agradável agora é considerado uma parte essencial do desenvolvimento de software. O non-functional testing pode revelar possíveis problemas do sistema, especialmente quando o software é maximizado para demonstrar maior escalabilidade.

Testes de carga

Testes de carga são uma forma fundamental de non-functional testing. Em teoria, um sistema deve ser capaz de processar milhares de solicitações de sistema com o mesmo senso de urgência com que despacha uma única solicitação de sistema. No entanto, essa lógica não tem o respaldo de uma experiência realista. O teste de carga funciona para ver se os sistemas podem lidar com cargas de pico e até mesmo picos extremos de carga de trabalho.

Teste de desempenho

Outra forma de non-functional testing presta atenção especial ao desempenho. É crítico para um bom desempenho que um sistema responda às solicitações de maneira tranquila e rápida. O plano de teste nos testes de desempenho avalia quanto tempo os usuários precisam esperar para que suas solicitações sejam processadas. Quando criados de maneira cuidadosa, os testes de desempenho podem ajudar a minimizar a latência desde o início.

Teste de segurança

Dada a importância da segurança de dados, não é de surpreender que uma forma de teste atenda especificamente a essa causa mais moderna. Metodologias de testes de segurança, como Dynamic Application Security Testing (DAST) e Static Application Security Testing (SAST), ajudam os testadores a verificar vulnerabilidades de segurança. Os métodos de testes de segurança da empresa são selecionados de acordo com as ameaças potenciais.

Testes de usabilidade

Um tipo de non-functional testing é completamente sobre a qualidade da experiência do usuário (UX). Os testes de usabilidade são um processo de testes manuais que são mais bem usados em pequena escala. No entanto, devem ser aplicados sempre que possível, especialmente ao executar mudanças como a localização de aplicações, o que pode ser repleto de riscos ao introduzir complexidades que podem desencadear erros humanos.

Ferramentas de functional testing

Manter o controle exato de todas as várias ferramentas de functional testing pode dar trabalho, já que a maioria é compatível com diferentes plataformas e tipos de aplicações. Embora não haja como acompanhar esse mercado em expansão — as estimativas chegam facilmente a centenas e talvez até milhares de ferramentas de functional testing produzidas — aqui estão algumas que se destacam por sua popularidade comprovada e utilidade reconhecida.

  • Appium: O mercado de functional testing possui muitas ferramentas de código aberto, com o Appium liderando a lista. O Appium é compatível com várias linguagens de programação. Além disso, o Appium permite automatizar aplicações nativas, móveis da web e híbridas para as plataformas iOS e Android.
  • Katalon Studio: a plataforma de automação de testes Katalon Studio oferece um meio para estabelecer e avaliar os resultados gerados por meio de testes de regressão e testes de ponta a ponta. Ela tem uma funcionalidade de gravação e reprodução e coordenação entre plataformas.
  • Micro Focus Unified Functional Testing (UFT): O UFT da Micro Focus é outra ferramenta comercial de testes, que oferece aos testadores uma visão clara e multiplataforma do uso de serviços da web, APIs (interfaces de programação de aplicativos) e GUIs (interfaces gráficas do usuário).
  • Playwright: a Microsoft desenvolveu esse framework comercial para a automação de navegadores da web. Ele é conhecido por reforçar a confiabilidade. E embora o Playwright seja compatível com funcionalidades da web contemporâneas, ele oferece menos opções para lidar com linguagens de programação.
  • Selenium: Uma das ferramentas de automação de testes mais populares é o Selenium, que é um framework de código aberto. Esta ferramenta baseada em navegador permite que os testadores escrevam e avaliem scripts de teste em uma variedade de linguagens de programação populares, incluindo JavaScriptTM, NodeJS e Python. 
Soluções relacionadas
IBM instana observability

Aproveite o poder da IA e da automação para resolver problemas de forma proativa em todo o stack de aplicações.

Explore o IBM Instana Observability
Soluções de DevOps

Utilize softwares e ferramentas de DevOps para desenvolver, implementar e gerenciar aplicações nativas da nuvem em diversos dispositivos e ambientes.

Explore as soluções de DevOps
Serviços de consultoria em nuvem

Acelere a agilidade e o crescimento dos negócios, modernize suas aplicações de forma contínua em qualquer plataforma utilizando nossos serviços de consultoria de nuvem.

Explore os serviços de consultoria em nuvem
Dê o próximo passo

Libere o potencial do DevOps para criar, testar e implementar aplicativos seguros nativos da nuvem com integração e entrega contínuas.

Explore as soluções de DevOps Descubra o DevOps em ação