Marketing de Conteúdo

Dicas e práticas recomendadas para testar integrações do Salesforce

Os testes do Salesforce irão ajudá-lo a validar seus Integrações de Salesforce e funcionalidades com outros aplicativos corporativos. Um bom teste cobre todos os módulos do Salesforce, de contas a leads, de oportunidades a relatórios e de campanhas a contatos. Como acontece com todos os testes, existe uma maneira boa (eficaz e eficiente) de fazer um teste do Salesforce e uma maneira ruim. Então, quais são as boas práticas de teste do Salesforce?

  • Use as ferramentas de teste certas - O teste do Salesforce acontece no navegador ou em um ambiente baseado em eclipse. Os navegadores mais recentes e o eclipse têm ótimas ferramentas de depuração e você pode combiná-las com classes de teste para obter resultados muito úteis. No entanto, se você precisar de mais, o Apex Interactive Debugger (ou simplesmente Apex) da Force.com deve ser usado. Observe que você também pode usar o Salesforce Lightning Inspector, uma extensão do Chrome, para testar especificamente o Salesforce Lightning. Apex é um force.com linguagem de programação proprietária da plataforma que possui grandes semelhanças com Java. É uma linguagem de programação orientada a objetos, insensível a maiúsculas e minúsculas, fortemente tipada que segue chaves e sintaxe de notação de ponto. Você pode usar o Apex para executar funções programadas durante a maioria dos processos do Force.com, incluindo links e botões personalizados, atualizações, exclusões e manipuladores de eventos de inserção de registro por meio de controladores personalizados de página do Visualforce ou programação.
  • Use convenções de nomenclatura adequadas - É muito importante nomear corretamente seus métodos de teste antes de começar a escrever os testes. O nome do método de teste deve ter três partes. Estes são nameOfMethod (nome do método individual que você está testando, como inserir / atualizar / excluir / desfazer exclusão ao testar um gatilho, informações sobre TestPath que são flexíveis, como contato nulo se você estiver testando se o contato é nulo e válido durante o teste um caminho positivo / negativo.
  • Garantir 100% de cobertura - Embora a diretiva padrão do Salesforce seja que o teste de unidade deve ter uma cobertura de 75% do seu código (menos classes de teste, chamadas para System.debug e métodos de teste) e você não será capaz de implantar o código Apex ou empacotar aplicativos AppExchange, você deve observe que este é apenas um padrão e seu objetivo deve ser 100% de cobertura. Teste todos os casos positivos / negativos e para dados que estão presentes e não estão presentes. Outras dicas importantes quando se trata de cobertura de código são:
    • Você deve executar testes para atualizar os números de cobertura do código, uma vez que esses números não são atualizados quando o código do Apex é atualizado até que os testes sejam executados novamente.
    • Se houve uma atualização na organização desde a última execução de teste, existe o risco de que os números de cobertura do código estejam incorretos. Execute novamente os testes para obter a estimativa correta.
    • A porcentagem de cobertura de código não inclui cobertura de código de testes de pacotes gerenciados, com a única exceção sendo quando esses testes fazem com que os gatilhos sejam disparados.
    • A cobertura depende do número total de linhas de código. Se você adicionar ou excluir linhas de código, afetará a porcentagem.
  • Casos de teste em classes e controladores - No desenvolvimento do Salesforce, a maioria dos desenvolvedores cria classes e arquivos de controlador separados para cada função. Isso é feito para tornar a codificação mais organizada, fácil, reutilizável e portátil. Você deve, no entanto, observar que, embora seja mais fácil, não é mais eficiente. Você alcançará a portabilidade se o código de teste estiver na classe original e o próprio código do controlador, já que você não perderá nenhuma classe de teste ao migrar do sandbox para a produção.
  • Use System.assert () - No Apex, Sistema.assert() é usado para verificar as condições. Esta é uma funcionalidade importante, pois permite determinar se uma função específica foi executada pelo método conforme o esperado. Você deve usar System.assertEquals () e System.assertNotEquals () entre as funcionalidades críticas não apenas para ajudá-lo a determinar se o código foi executado como deveria, mas também para garantir que nenhum dado seja escrito erroneamente se o código der errado.
  • Teste Abrangente - O teste deve cobrir tudo. Você deve fazer testes funcionais, testes de carga, testes de segurança e testes de implantação.
  • Testes Unitários - Você deve ter testes de unidade para verificar se os registros individuais produzem o resultado correto e esperado. Embora usar um teste gigante que cubra todo o código possa parecer uma boa ideia, observe que os resultados gerados serão mais difíceis de depurar e a falha será mais difícil de entender. Um teste de unidade deve cobrir um pequeno subconjunto da funcionalidade que está sendo testada.
  • Casos de teste em massa - Um bom código de teste (gatilho, exceção ou classe) pode estar envolvido em até várias centenas de registros (200 para Apex). Você deve aproveitar isso e testar não apenas registros individuais, mas também casos em massa.
  • Testes Positivos - Teste para garantir se o comportamento esperado ocorre durante todas as permutações esperadas. O teste deve verificar se o usuário preencheu corretamente o formulário e se não ultrapassou os limites.
  • Testes Negativos - Teste os casos negativos para garantir que as mensagens de erro sejam produzidas corretamente. Exemplos de tais casos negativos são não poder especificar valores negativos e não poder adicionar datas futuras. Os testes negativos são importantes porque o manuseio correto quando as coisas vão mal pode fazer toda a diferença.
  • Teste Automatizado - Tradicionalmente, o teste do Salesforce era manual. Você deve considerar o teste automatizado, pois isso oferece mais vantagens. Esses incluem:
    • O teste manual o torna suscetível a erros, pois o teste é feito por humanos e não por robôs. Os robôs se destacam em atividades repetitivas, enquanto os humanos cometem erros devido ao tédio, concentração e consistência reduzidas e tendência a cortar atalhos.
    • O teste manual é repetitivo, estereotipado e cansativo. É melhor para a equipe de teste fazer um trabalho mais exploratório.
  • Execute cada Branch Logic do Código - Ao usar a lógica condicional (quando você incluiu operadores ternários), cada ramificação da lógica do código deve ser executada.
  • Use entradas inválidas e válidas para chamadas para métodos - As chamadas para métodos devem ser feitas usando entradas válidas e inválidas.
  • Testes completos - Certifique-se de que os testes sejam concluídos com êxito - eles não devem passar por nenhuma exceção, a menos que os erros sejam esperados. Trate todas as exceções capturadas - capturá-las não é bom o suficiente.
  • Use palavras-chave ORDER BY - Para garantir que seus registros sejam retornados na ordem que você espera, use as palavras-chave ORDER BY.
  • Não presuma que os IDs de registro estão arranjados sequencialmente - Evite o erro comum de presumir que os IDs de registro estão organizados em ordem sequencial. Os IDs não estão em ordem crescente, a menos que você tenha inserido vários registros com a mesma solicitação.
  • Chame Test.startTest () e Test.stopTest () - Ao executar um teste de unidade do Apex, você obterá mais de 75% de cobertura de código obrigatória no Salesforce. Você deve chamar stopTest antes das asserções para forçar a conclusão dos códigos assíncronos que ainda podem estar em execução. Execute novas consultas para obter os resultados finais, pois outro código pode alterar os dados. UsingTest.startTest () e Test.stopTest () garante que você coloque o teste dentro dos limites do governador. Dessa forma, o código de configuração que você usa não interfere e fornece falsos negativos ou positivos em torno dos limites do regulador. Test.stopTest () também garante que as chamadas @future serão concluídas para teste.
  • Legibilidade - A legibilidade é muito importante em testes de unidade. Os nomes dos testes devem incluir a ação específica a ser executada e o resultado esperado. O método deve ser descritivo e curto. O método deve ser tal que possa ser reutilizado em diferentes testes.
  • Crie grandes conjuntos de dados de teste antes de startTest - Visto que seus testes serão executados em diferentes ambientes de produção e sandbox, construa grandes conjuntos de dados de teste antes de chamar startTest para garantir que o teste tenha limites de execução completos. Por padrão, Github do Salesforce executa testes isolados dos dados de produção. Quando você precisar de dados do sistema, como um Perfil, consulte para obter a coisa certa para aquele ambiente específico.
  • Gere seus próprios dados de teste - Os dados de teste que você usa devem ser gerados no teste. Você pode gerar esses dados usando a anotação @testSetup e uma classe TestUtils para não apenas garantir que você tenha os dados corretos, mas também garantir que todos os testes sejam executados em uma caixa de proteção do desenvolvedor sem requisitos de dados.
  • Evite operações nulas AKA autônomas - Muitos testadores usam operações nulas AKA não operacionais. São códigos inúteis que não fazem nada. Como eles já estão em sua base de código, eles aumentarão sua porcentagem de cobertura.
  • Execução de teste paralela - Quando você inicia os testes a partir da interface de usuário do Salesforce ou do console do desenvolvedor, os testes são executados em paralelo. Este é um recurso importante, pois acelera o tempo de execução do teste. Você deve, no entanto, observar que isso pode levar a problemas de contenção de dados e, se suspeitar que isso possa acontecer, desative a execução paralela. As causas mais comuns de problemas de contenção de dados que costumam levar a erros UNABLE_TO_LOCK_ROW são:
    • Quando os testes se destinam a atualizar os mesmos registros ao mesmo tempo. A atualização dos mesmos registros geralmente ocorre quando os testes não criam seus próprios dados.
    • Quando há um deadlock em testes que estão sendo executados em paralelo e eles tentam criar registros que possuem valores de campo de índice correspondentes. Um conflito ocorrerá quando 2 testes em execução forem enfileirados para reverter os dados (isso ocorre quando 2 testes de entrada de registros que têm os mesmos valores de campo de índice exclusivo em ordens diferentes).
    • Para desativar a execução do teste paralelo, vá para Configuração, entre no Teste do Apex, vá para a caixa de diálogo Opções de execução do teste do Apex, selecione Desativar teste do Apex paralelo e clique em OK.

Desativar Teste de Apex Paralelo

Contrate um profissional para o trabalho, pois ele terá a experiência e o treinamento necessários para fazer um bom teste, o que também lhe dá tranquilidade. Contratar um profissional permite que você se concentre em seu negócio principal. Isso também economiza dinheiro, pois você não precisará de uma equipe interna para o trabalho.

Amar Kukreja

Amar Kukreja tem anos de experiência em testes do Salesforce. Ele usa o Apex, bem como outros testes. Ele também oferece outros serviços relacionados ao Salesforce, incluindo configuração e gerenciamento inicial do Salesforce. Para saber mais sobre Github do Salesforce.

Artigos Relacionados

Voltar ao topo botão
Fechar

Adblock detectado

Martech Zone é capaz de fornecer a você esse conteúdo sem nenhum custo porque monetizamos nosso site por meio de receita de anúncios, links de afiliados e patrocínios. Agradeceríamos se você removesse seu bloqueador de anúncios ao visualizar nosso site.