Compartilhar via


DF – Teste de IOCTL aleatório do Fuzz (Confiabilidade)

Durante testes aleatórios, o teste do Fuzz emite uma série de chamadas para a função DeviceIoControl com códigos de função, tipos de dispositivo, métodos de transferência de dados e requisitos de acesso selecionados aleatoriamente de um intervalo especificado de valores. As chamadas incluem buffers de entrada e saída com ponteiros e comprimentos de buffer válidos e inválidos e conteúdo gerado aleatoriamente.

O teste do Fuzz executa os testes aleatórios em todos os dispositivos abertos durante o Teste Aberto Básico e testes abertos adicionais. Você pode personalizar esse teste usando os seguintes parâmetros:

  • Use MinFunctionCode e MaxFunctionCode para especificar o intervalo de códigos de função IOCTL ou FSCTL usados nas chamadas
  • Use MinDeviceType e MaxDeviceType para especificar o intervalo de tipos de dispositivo usados nas chamadas
  • Use SeedNumber para especificar um número de semente para a rotina de geração de número aleatório.

A função que o teste do Fuzz usa para gerar números aleatórios para o teste usa um número de semente, um número inicial para o algoritmo de geração de número aleatório. Para reproduzir as condições de teste, use o parâmetro de número de semente para especificar o número de semente usado na avaliação de teste original.

Um Teste Aleatório Personalizado é incluído como parte do teste aleatório. O teste aleatório personalizado usa os resultados do teste aleatório para examinar mais detalhadamente a resposta dos drivers às solicitações FSCTL. O teste aleatório personalizado investiga as áreas que o teste aleatório errou e aquelas nas quais o driver não respondeu conforme o esperado com base no status retornado pelas chamadas de teste aleatórias.

Binário de teste:métodos de teste de Devfund_FuzzTest.dll: DoRandomFSCTLTest

Detalhes do teste

   
Especificações
  • Device.DevFund.Reliability.BasicReliabilityAndPerformance
  • Device.DevFund.Reliability.BasicSecurity
  • Device.DevFund.DriverFramework.KMDF.Reliability
  • Device.DevFund.DriverFramework.UMDF.Reliability
Plataformas
  • Windows 10, edições de cliente (x86)
  • Windows 10, edições de cliente (x64)
  • Windows Server 2016 (x64)
  • Windows 10, edições de cliente (Arm64)
  • Windows 10, edição móvel (Arm)
  • Windows 10, edição móvel (Arm64)
Versões com suporte
  • Windows 10
  • Windows 10, versão 1511
  • Windows 10, versão 1607
  • Windows 10, versão 1703
  • Windows 10, versão 1709
  • Windows 10, versão 1803
  • Windows 10, versão 1809
  • Windows 10, versão 1903
  • Próxima atualização para Windows 10
Tempo de execução esperado (em minutos) 15
Categoria Cenário
Tempo limite (em minutos) 180
Requer reinicialização false
Requer configuração especial true
Tipo automático

 

Documentação adicional

Os testes nessa área de recursos podem ter documentação adicional, incluindo pré-requisitos, configuração e informações de solução de problemas, que podem ser encontrados nos tópicos a seguir:

Executando o teste

Antes de executar o teste, conclua a configuração de teste conforme descrito nos requisitos de teste: Pré-requisitos de Teste de Confiabilidade device.fundamentals.

Solucionando problemas

Para solucionar problemas genéricos de falhas de teste do HLK, consulte Solução de problemas de falhas de teste do Windows HLK.

Para obter informações de solução de problemas específicas dos testes de Conceitos Básicos do Dispositivo no HLK e no WDK, consulte Documentação adicional device.DevFund.

Mais informações

Parâmetros

Nome do parâmetro Descrição do parâmetro
DQ Uma consulta SDEL do WDTF usada para identificar os dispositivos de destino – https://go.microsoft.com/fwlink/?LinkId=232678
Wpa2PskAesSsid Obrigatório SOMENTE se o DUT ou um de seus dispositivos filho for um adaptador WiFi. Forneça SSID de uma rede WiFi AES WPA2 que o teste pode usar para testar o adaptador WiFi. O padrão é 'kitstestssid'.
Wpa2PskPassword Obrigatório SOMENTE se o DUT ou um de seus dispositivos filho for um adaptador WiFi. Forneça a senha da rede WiFi do AES WPA2 especificada usando o parâmetro Wpa2PskAesSsid. O padrão é 'password'.
ChangeBufferProtectionFlags Verdadeiro ou falso. Altera os sinalizadores de proteção de memória dos buffers passados para o dispositivo testado. Os sinalizadores de proteção de memória alternam entre nenhum acesso, somente leitura e somente leitura com o page guard.
Impersonate Verdadeiro ou falso. Executa o teste como um usuário não administrativo.
FillZeroPageWithNull Verdadeiro ou falso. Mapeia a página zero e a preenche com valores NULL. Esse teste identifica drivers que não verificam uma referência de ponteiro antes de desreferenciar um ponteiro.
DoPoolCheck Verdadeiro ou falso. Monitora o uso do driver dos pools de memória do sistema paginados e nãopagados usando marcas de pool e listas lookaside. Essa opção também monitora as alterações no número de exceções tratadas, o que pode indicar erros no tratamento de exceções.
DoSync Verdadeiro ou falso. Também abre identificadores de dispositivo no modo SYNC (FILE_SYNCHRONOUS_IO_ALERT). Operações aleatórias de leitura e gravação são ignoradas.
TestCycles Número de ciclos de teste.
DriverVerifierAdditionalDrivers Drivers adicionais que devem ter o Verificador de Driver habilitado
DriverVerifierExcludedFlags Espaço reservado para sinalizadores do Verificador de Driver que podem ser excluídos manualmente para a execução do teste
WDKDeviceID ID do dispositivo em teste
QueryHardwareID ID de hardware do dispositivo em teste
WDTFREMOTESYSTEM Obrigatório SOMENTE se DUT ou um de seus dispositivos filho for uma NIC com fio que não tenha um endereço de gateway IPv6. Se determinado a ser necessário, forneça um endereço IPv6 que a NIC de teste pode executar ping para testar a E/S da rede. Por exemplo: fe80::78b6:810:9c12:46cd
DriverVerifierCustomizeConfiguration Especifica que esse teste pode querer atualizar automaticamente as configurações do Verificador de Driver
MinDeviceType Especifica o valor mínimo do campo DeviceType nas IOCTLs. O valor mínimo possível é 0. Use -1 para detecção automática de tipo (preferencial).
MaxDeviceType Especifica o valor máximo do campo DeviceType nas IOCTLs. O valor máximo possível é 65535. Use -1 para detecção automática de tipo (preferencial).
MinFunctionCode Especifica o valor mínimo do campo FunctionCode nas IOCTLs. O valor mínimo possível é 0.
MaxFunctionCode Especifica o valor máximo do campo FunctionCode nas IOCTLs. O valor máximo possível é 4095.
MinInBuffer Especifica o tamanho mínimo, em bytes, dos buffers de entrada que o teste passa para o driver em IOCTLs.
MaxInBuffer Especifica o tamanho máximo, em bytes, dos buffers de entrada que o teste passa para o driver em IOCTLs.
MinOutBuffer Especifica o tamanho mínimo, em bytes, dos buffers de saída que o teste passa para o driver em IOCTLs.
MaxOutBuffer Especifica o tamanho máximo, em bytes, dos buffers de saída que o teste passa para o driver em IOCTLs.
MaxRandomCalls Especifica o número máximo de chamadas que o teste emite.
MaxTailoredCalls Especifica o número máximo de chamadas que o teste emite durante o teste aleatório personalizado.
SeedNumber Especificado o número de semente usado na geração de IOCTLs aleatórios.