Definindo Casos de Teste para Perguntas de Programação

Last updated: March 10, 2026

Visão Geral

Casos de teste ajudam a validar o código dos candidatos. Eles formam a base para a avaliação automatizada do código de um candidato. Um caso de teste consiste em uma entrada para o código e uma saída esperada. Assim que os candidatos enviam o código, ele é executado contra todos os casos de teste. A saída do código do candidato é comparada com a saída esperada para verificar se o caso de teste passou ou falhou.

Um exemplo de caso de teste com uma explicação também pode ajudar a explicar melhor o problema aos candidatos. Idealmente, você deve usar de 2 a 3 exemplos de casos de teste para ajudar o programador a entender o problema. Recomendamos ter um total de 8 a 15 (idealmente um total de 10) casos de teste que cubram todos os cenários. Os casos de teste devem ter tamanhos diferentes que cubram diferentes níveis de complexidade. Nenhum dois casos de teste devem testar o mesmo conceito. 

Nota: Consulte a Test Cases in your Coding Question para entender o uso de casos de teste ao criar perguntas de codificação para os Testes HackerRank.

Tipos de Casos de Teste

Existem dois tipos de casos de teste para cada problema, um Caso de Teste de Exemplo e um Caso de Teste Oculto.

Casos de Teste de Exemplo

Casos de teste de exemplo são os casos de teste que os candidatos podem visualizar e usar para validar seu código. Eles veem tanto os valores de entrada quanto os de saída esperada para esses casos de teste. Ao criar os casos de teste, você pode marcar certos casos de teste como casos de teste de exemplo. 

Por exemplo, veja a ilustração abaixo de um caso de teste de exemplo definido para uma questão de codificação. A questão exige que o candidato escreva um código para encontrar o primeiro caractere não repetido em uma string dada. 

Sample_Test_Cases.jpg

Nos testes, quando o candidato escreve e compila o código para a questão, o caso de teste de exemplo é validado contra o código do candidato. O candidato pode visualizar os resultados da execução do caso de teste de exemplo juntamente com os valores de entrada e saída esperada conforme definido por você. Visualizar os resultados da execução do caso de teste de exemplo ajuda os candidatos a entender os resultados esperados do seu código. Os candidatos também podem baixar seus casos de teste de exemplo.

A imagem a seguir exibe a visão do candidato sobre o status de execução dos casos de teste de amostra após compilar o código no teste.Test_Case_execution_status.jpg

Casos de Teste Ocultos

Ao adicionar um caso de teste à sua questão de codificação, se você não marcá-lo como caso de teste de amostra, ele é considerado oculto. Casos de teste ocultos evoluíram da era da programação competitiva.

Você pode incluir vários casos de canto como casos de teste ocultos para avaliar os candidatos contra diferentes cenários. Quando um candidato executa seu código, os casos de teste ocultos são indicados pelo ícone de trava .

Ao contrário dos casos de teste de amostra, os candidatos não podem ver os valores de entrada e saída esperada para esses casos de teste ocultos. Embora possam ver sua saída e saída de depuração quando clicam em qualquer uma das opções de caso de teste oculto. Este recurso é fornecido aos candidatos para proporcionar uma melhor experiência de depuração.

Considere uma questão de codificação onde um candidato é obrigado a escrever um código para encontrar o primeiro caractere não repetido em uma determinada stringHidden_Test_Case.jpg

No teste, quando um candidato escreve e executa o código para essa questão, o caso de teste oculto é validado contra o código do candidato para retornar o resultado da execução do caso de teste. Se o código do candidato executar com sucesso os casos de teste ocultos e retornar a saída esperada, então o candidato alcança a pontuação atribuída para esse caso de teste.

mceclip1.png

Desativando a Saída para Casos de Teste Ocultos

Você também pode optar por não mostrar a saída dos casos de teste ocultos para os candidatos. Para desativar a saída para casos de teste ocultos, siga os passos abaixo.

  • Na página inicial de Testes, clique no teste desejado.
question.jpg
  • Após clicar na questão, clique na aba Configurações e depois na opção Questões à esquerda.
question_settings_.jpg
  • Após clicar na aba Questões, role para baixo, você encontrará a opção de desativar a saída para os casos de teste ocultos como mostrado abaixo. No entanto, isso não é recomendado pois mostrar a saída ajuda os candidatos a depurar seu código de forma eficaz. A opção de mostrar a saída está selecionada por padrão. Se desejar ocultar sua saída, você pode desmarcar a caixa de seleção Mostrar Saída para os casos de teste ocultos.
hidden_test_case_output.jpg

Nota: Nossos relatórios sugerem que os candidatos tendem a perder muito do tempo de teste ao procurar uma solução ou depurar devido aos casos de teste ocultos. Para reduzir esse desafio e proporcionar uma melhor experiência de depuração aos candidatos, a HackerRank pretende futuramente eliminar os casos de teste ocultos e introduzir uma experiência de depuração baseada em pontos de interrupção para os candidatos.

Pontuação

Nem todos os casos de teste têm o mesmo nível de dificuldade. Ao criar os casos de teste, você deve garantir que mais pontos sejam atribuídos aos casos difíceis em comparação com os fáceis. Isso leva a uma melhor distinção entre programadores excepcionais, bons e médios. A soma das pontuações de todos os casos de teste é a pontuação total atribuída a uma determinada questão. Você pode atribuir zero pontos aos casos de teste de amostra, se necessário. A pontuação geral de uma questão de codificação é a soma das pontuações de todos os casos de teste que foram passados com sucesso.

Na ilustração a seguir, você pode ver o relatório detalhado do teste do candidato no HackerRank exibindo a pontuação obtida para a questão com base no status de execução do teste.Test_Report_status_of_score_achieved_for_Test_case.jpg

Sincronizar Casos de Teste com Fragmentos de Código

Ao usar fragmentos de código gerados automaticamente, certifique-se de que a entrada e a saída esperada estejam sincronizadas com os fragmentos de código. Você pode consultar a parte final para entender isso.

Por exemplo:

  • Se a entrada for um array, você sempre lerá primeiro "n" (denota o tamanho do array) e depois lerá "n" elementos do array em "n" linhas separadas. Isso é necessário para garantir consistência na leitura de entrada em diferentes linguagens.

  • Se a entrada for uma lista ligada, você sempre lerá "n" (denota o número de elementos a serem adicionados à lista ligada de entrada) e depois lerá "n" elementos em "n" linhas separadas.

Consulte o tópico Como adicionar um Novo Caso de Teste para informações sobre criação e adição de casos de teste às suas questões.