O que é teste de interface? Tipos e exemplo
⚡ Resumo Inteligente
O teste de interface verifica se dois sistemas de software conectados trocam dados corretamente. Abrange as conexões entre o servidor web, o servidor de aplicativos e o servidor de banco de dados que transportam cada solicitação feita por um aplicativo, juntamente com o tratamento de erros associado a elas.
O que é teste de interface?
Teste de interface É definido como um tipo de teste de software que verifica se a comunicação entre dois sistemas de software diferentes é feita corretamente.
Uma conexão que integra dois componentes é chamada de interface. No mundo da computação, essa interface pode ser qualquer coisa, como APIs, serviços web, etc. O teste desses serviços de conexão ou interfaces é chamado de teste de interface.
Uma interface é, na verdade, um software que consiste em conjuntos de comandos, mensagens e outros atributos que permitem a comunicação entre um dispositivo e um usuário.
O ponto importante é que uma interface tem uma contract: um formato de solicitação acordado, um formato de resposta acordado, um conjunto acordado de códigos de erro e um tempo limite acordado. Exercícios de teste de interface que contracO tráfego vem de ambos os lados, portanto, uma alteração feita por uma equipe não afeta silenciosamente a outra. Como a maior parte desse tráfego nunca chega a uma tela, os defeitos encontrados são invisíveis para o usuário. teste de caixa preta realizado exclusivamente através da interface do usuário.
Como fazer testes de interface
O teste de interface inclui testes de dois segmentos principais:
- Servidor web e interface de servidor de aplicativos
- Servidor de aplicativos e interface do servidor de banco de dados.
Para os cenários mencionados acima, o teste de interface é feito para
- Verifique se os servidores são executados corretamente ou não
- Os erros são tratados corretamente ou retornam uma mensagem de erro para qualquer consulta feita por um aplicativo
- Verifique os resultados quando a conexão com um servidor web é redefinida entre
O diagrama abaixo mostra esses dois segmentos como uma única cadeia, com o navegador se comunicando com o servidor web, o servidor web se comunicando com o servidor de aplicativos e o servidor de aplicativos se comunicando com o servidor de banco de dados.
Na prática, um testador percorre essa cadeia um passo de cada vez. Cada passo é executado primeiro com uma solicitação válida, depois com uma solicitação malformada e, por fim, com a outra extremidade deliberadamente indisponível, de modo que tanto o caminho de sucesso quanto o caminho de falha sejam registrados no mesmo registro. caso de teste.
Exemplo de teste de interface
Suponha que, para qualquer aplicação xyz, a interface assuma o seguinte formato: XML arquivo como entrada e entrega JSON arquivo como saída. Para testar a interface deste aplicativo, basta especificar os formatos de arquivo XML e JSON.
Com a ajuda dessas especificações, podemos criar arquivos XML de entrada de exemplo e inseri-los na interface. Em seguida, a validação dos arquivos de entrada (XML) e saída (JSON) em relação aos requisitos é o teste de interface.
Observe o que o exemplo não precisa: nenhuma tela, nenhuma versão do front-end e nenhum conhecimento do código dentro da interface. Duas especificações de formato são suficientes para escrever os testes, e é por isso que o teste de interface pode começar muito antes da interface do usuário existir.
Por que fazer testes de interface
O teste de interface é feito
- Para garantir que os usuários finais ou clientes não encontrem nenhum problema ao usar um determinado produto de software
- Identificar quais áreas de aplicação são normalmente acessadas pelos usuários finais e também verificar sua facilidade de uso.
- Para verificar os requisitos de segurança enquanto a comunicação se propaga entre os sistemas
- Para verificar se uma solução é capaz de lidar com falhas de rede entre um servidor de aplicação e um site
Há também um argumento de custo. Um defeito no formato da requisição é barato de corrigir enquanto os dois sistemas ainda estão sendo interligados, e caro quando um sistema subsequente já armazenou os dados malformados.
Tipos de teste de interface
Durante o teste de interface, vários tipos de testes feitos na interface, que podem incluir
- Fluxo de Trabalho: Ele garante que o mecanismo de interface lide com seus fluxos de trabalho padrão conforme esperado.
- Casos extremos - valores inesperados: Isso é levado em consideração ao realizar testes que incluem data, mês e dia invertidos.
- Testes de desempenho, carga e rede: Uma interface de alto volume pode exigir mais Teste de carga do que uma interface de baixo volume, dependendo do mecanismo de interface e da infraestrutura de conectividade
- Sistemas individuais: Isso inclui testar cada sistema individualmente. Por exemplo, o sistema de faturamento e o sistema de gerenciamento de estoque da loja de varejo devem poder operar separadamente.
O primeiro item está suficientemente próximo de teste de fluxo de trabalho para reutilizar seus cenários, e o último item se sobrepõe a teste de módulopois um sistema que falha por si só falhará novamente assim que for conectado.
Estratégia de teste de interface
A estratégia de teste de interface é um método usado para testar interfaces com testes comuns, independentemente da implementação. Podemos usar abstract casos de teste e criar instâncias concretas do Caso de Teste para cada implementação da estratégia de teste de interface. O base/abstracOs casos de teste executam testes independentes da implementação, enquanto os testes concretos se encarregam de instanciar os objetos a serem testados e executar testes específicos da implementação.
A vantagem dessa estrutura é a reutilização. Quando uma terceira implementação da mesma interface surge, o valor absolutotracO t suite é executado sem alterações, sendo necessário escrever apenas o código de instanciação. A mesma ideia é aplicada em maior escala em teste de componentes, onde uma con compartilhadatracO t suite é executado em todos os componentes que afirmam atendê-lo.
Ferramentas de teste de interface
Como uma interface não possui tela, as ferramentas precisam construir requisições diretamente e verificar as respostas brutas. As equipes normalmente combinam três categorias de ferramentas.
- Clientes de API e construtores de requisições: Ferramentas como Postman, SoapUIInsomnia e Hoppscotch enviam chamadas REST, SOAP ou GraphQL, armazenam-nas como coleções reutilizáveis e verificam os códigos de status, cabeçalhos e corpos de resposta.
- CodeBibliotecas de teste de nível -: Bibliotecas que são executadas dentro do conjunto de testes existente permitem que as verificações de interface coexistam com os testes unitários e sejam executadas em cada compilação, o que impede que elas se tornem obsoletas.
- Ferramentas de carga e protocolo: Uma ferramenta como JMeter aciona a mesma interface em grande volume, o que transforma uma verificação funcional em teste de performance da conexão.
- Virtualização de serviços e mocks: Um circuito improvisado, que serve como substituta da extremidade oposta, permite que um lado seja testado enquanto o outro está indisponível, inacabado ou é muito caro para ser testado repetidamente.
A seleção é menos importante que a abrangência. Independentemente do cliente escolhido, o conjunto de requisições deve ser armazenado no controle de versão junto com o código, de forma que uma alteração na interface e uma alteração nos seus testes sejam incluídas no mesmo commit. Detalhes sobre essa categoria mais ampla são abordados em [referência]. Teste de API.
Lista de verificação e melhores práticas para testes de interface
Uma lista de verificação concisa mantém a cobertura de interfaces consistente entre as versões. Analise-a para cada conexão individualmente, em vez de para o aplicativo como um todo.
- Comtracprimeiro: Confirme se os esquemas de solicitação e resposta correspondem à especificação publicada, campo por campo, incluindo tipos de dados e campos opcionais.
- Valores limite: Enviar payloads vazios, campos de comprimento máximo, conjuntos de caracteres inesperados e formatos de data invertidos.
- Caminhos de erro: Verifique se cada falha retorna um código e uma mensagem significativos, em vez de uma pilha de erros. tracou um sucesso silencioso.
- Tempos limite e novas tentativas: Interrompa a conexão no meio da solicitação e confirme se o chamador tenta novamente com segurança, sem duplicar a transação.
- Segurança: Verifique a autenticação, autorização e criptografia do link e confirme se as mensagens de erro não revelam detalhes internos.
- A consistência dos dados: Leia o registro de volta do outro lado e confirme se nada foi truncado, recodificado ou reordenado durante a transmissão.
- Volume: Repita a chamada com maior volume de tráfego sob carga simultânea e observe se há esgotamento do pool de conexões.
Três práticas tornam essa lista de verificação repetível. Primeiro, automatize o conjunto de testes e execute-o em cada build, pois as interfaces mudam mais silenciosamente do que as telas. Segundo, registre a requisição e a resposta completas para cada falha, já que um defeito de interface é quase impossível de reproduzir a partir de uma captura de tela. Terceiro, mantenha o conjunto de testes independente dos dados de teste criados por outros conjuntos, para que uma falha aponte para a interface em vez de um registro ausente.
Essas verificações se encaixam naturalmente no plano mais amplo descrito em tipos de testes de softwaree são executadas antes que as mesmas conexões sejam exercitadas de ponta a ponta durante teste do sistema.
Teste de interface versus teste de integração
Os dois termos estão relacionados, e não são opostos: o teste de interface é a parte do trabalho de integração que se concentra na própria conexão. A tabela abaixo destaca a ênfase de cada lado.
| Teste de interface | Teste de integração |
|---|---|
| Um tipo de teste de integração que se preocupa em testar as interfaces entre componentes ou sistemas | Testes realizados para expor defeitos nas interfaces e nas interações entre componentes ou sistemas integrados. |
| Foco é o contratract — formato da solicitação, formato da resposta, códigos de erro e tempos limite | O foco é o comportamento combinado dos componentes quando unidos. |
| Pode ser executado assim que a especificação existir, com a extremidade remota configurada. | Requer que os componentes participantes sejam construídos e implantados em conjunto. |
| A falha aponta para uma conexão. | Uma falha pode apontar para qualquer componente do grupo montado. |
Qualquer pessoa que seja nova na disciplina em geral encontrará os níveis relacionados descritos em teste de integração e no geral teste de software introdução, enquanto a terminologia usada acima provém de padrões Engenharia de software prática. Para sistemas voltados para o navegador, as mesmas conexões são eventualmente exercitadas novamente durante teste de aplicação web.

