Compartilhar via


DF – Teste aberto e fechado do Fuzz (Confiabilidade)

Este teste executa milhares de sequências create-open-close e emprega várias maneiras diferentes de abrir e fechar instâncias do dispositivo ou dispositivos especificados: Operações Abertas Básicas, Operações Abertas de Dispositivo Direto e um teste de estresse Open e Close.

Operações Abertas Básicas

Durante as Operações Abertas Básicas, o teste fuzz abre repetidamente (cria) instâncias dos dispositivos especificados ou os dispositivos exportados pelo driver especificado usando diferentes métodos e opções.

O teste do Fuzz sempre executa as Operações Abertas Básicas. Você não precisa selecioná-los e não pode excluí-los de uma sessão de teste.

O teste do Fuzz executa todas as operações abertas no modo de usuário chamando serviços do sistema (Rotinas ZwXxx) apropriados para o dispositivo. Se uma chamada aberta retornar um identificador para o dispositivo, o teste do Fuzz usará o identificador para executar os outros testes de dispositivo selecionados para a sessão de teste.

Há cinco tipos de Operações Abertas Básicas:

  • Abertura padrão: o teste do Fuzz abre o dispositivo de forma assíncrona e especifica apenas o nome do dispositivo nativo.

  • Abrir com barra invertida adicionada: o teste do Fuzz emite uma chamada aberta para o nome do dispositivo seguida por uma barra invertida (), como \device\cdrom\, como se a chamada fosse para abrir um diretório raiz dentro do dispositivo.

    Essa operação determina como o driver ou o sistema de arquivos gerencia solicitações abertas em seu namespace. Em particular, se o dispositivo não der suporte a solicitações abertas em seu namespace, o driver deverá impedir o acesso não autorizado, seja falhando nas solicitações ou definindo a característica do dispositivo FILE_DEVICE_SECURE_OPEN quando ele chama IoCreateDevice ou IoCreateDeviceSecure para criar o objeto do dispositivo.

  • Abrir como um pipe nomeado: o teste do Fuzz abre o dispositivo e estabelece um pipe nomeado para o dispositivo. O parâmetro de acesso (ShareAccess) é inicialmente definido como leitura e gravação, mas é ajustado se a solicitação falhar. Se o dispositivo não der suporte a pipes nomeados, ele deverá falhar na solicitação.

  • Abra como um emaillot: o teste do Fuzz abre o dispositivo como um maillot. Se o dispositivo não der suporte a esse tipo de conexão, ele deverá falhar na solicitação.

  • Abrir como uma conexão de árvore: o teste do Fuzz abre o dispositivo como uma conexão de árvore para uso no acesso remoto à rede. O parâmetro de acesso (ShareAccess) é inicialmente definido como leitura e gravação, mas é ajustado se a solicitação falhar. Se o dispositivo não der suporte a esse tipo de conexão, ele deverá falhar na solicitação.

Os parâmetros usados nas chamadas abertas variam para acomodar as características do dispositivo e tornar provável que as chamadas tenham êxito. Por exemplo, se uma operação aberta básica falhar porque a chamada não atendeu aos requisitos de segurança do dispositivo, o teste fuzz repetirá a operação aberta com uma solicitação de acesso menor. Por exemplo, se uma operação aberta que solicitou acesso de gravação retornar um erro de violação de segurança, a abertura será repetida com uma solicitação de acesso de leitura.

Operações abertas de dispositivo direto

Durante as Operações Abertas do Dispositivo Direto, o teste do Fuzz abre o dispositivo diretamente, como um dispositivo, não como um arquivo em um sistema de arquivos. As operações de abertura de dispositivo direto são sempre síncronas. Se a chamada for bem-sucedida, o teste do Fuzz usará o identificador fornecido para executar outros testes selecionados.

Abrir e fechar teste

Durante o teste Abrir e Fechar, o teste fuzz cria vários threads, cada um deles executa milhares de sequências create-open-close. Isso testa a capacidade do driver de lidar com um volume extraordinário de chamadas simples e antecipadas.

O Open and Close Test usa as mesmas opções usadas em Basic Open Operation e Open with Added Backslash tests e são executadas pouco antes desses testes.

Testar binário:método de teste Devfund_FuzzTest.dll: DoOpenCloseTest

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 recurso podem ter documentação adicional, incluindo pré-requisitos, configuração e informações de solução de problemas, que podem ser encontradas nos tópicos a seguir:

Executando o teste

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

Solucionando problemas

Para solução de 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 para os testes de Conceitos básicos do dispositivo no HLK e no WDK, consulte Documentação adicional de 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 o 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 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 de buffers passados para o dispositivo testado. Os sinalizadores de proteção de memória alternam entre nenhum acesso, somente leitura e somente leitura com proteção de página.
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