Partilhar via


Testes do Kit de Certificação de Aplicativos Windows

O Kit de Certificação de Aplicativos Windows contém vários testes que ajudam a garantir que seu aplicativo esteja pronto para ser publicado na Microsoft Store. Os testes estão listados abaixo com seus critérios, detalhes e ações sugeridas em caso de reprovação.

Testes de implantação e lançamento

Monitora o aplicativo durante os testes de certificação para registrar quando ele falha ou trava.

Contexto geral

Os aplicativos que param de responder ou falham podem fazer com que o usuário perca dados e tenha uma experiência ruim.

Esperamos que os aplicativos sejam totalmente funcionais sem o uso de modos de compatibilidade do Windows, mensagens AppHelp ou correções de compatibilidade.

Os aplicativos não devem listar DLLs para carregar na chave do Registro HKEY-LOCAL-MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows\AppInit-DLLs.

Detalhes do teste

Testamos a resiliência e a estabilidade do aplicativo durante os testes de certificação.

O Kit de Certificação de Aplicativos Windows chama IApplicationActivationManager::ActivateApplication para iniciar aplicativos. Para que ActivateApplication inicie uma aplicação, o Controlo de Conta de Utilizador (UAC) deve estar activado e a resolução do ecrã deve ser de pelo menos 1024 x 768 ou 768 x 1024. Se qualquer uma das condições não for atendida, seu aplicativo será reprovado neste teste.

Medidas corretivas

Verifique se o UAC está habilitado no computador de teste.

Certifique-se de que está a executar o teste num computador com ecrã suficientemente grande.

Se seu aplicativo falhar ao iniciar e sua plataforma de teste atender aos pré-requisitos de ActivateApplication, você poderá solucionar o problema revisando o log de eventos de ativação. Para localizar estas entradas no registo de eventos:

  1. Abra o eventvwr.exe e navegue até a pasta Application and Services Log\Microsoft\Windows\Immersive-Shell.
  2. Filtre a vista para mostrar IDs de Evento: 5900-6000.
  3. Analise as entradas de log para obter informações que possam explicar por que o aplicativo não foi iniciado.

Solucione o arquivo problemático, identifique e corrija o problema. Recrie e teste a aplicação. Você também pode verificar se um arquivo de despejo foi gerado na pasta de log do Kit de Certificação de Aplicativos Windows que pode ser usado para depurar seu aplicativo.

Teste de lançamento da versão da plataforma

Verifica se o aplicativo do Windows pode ser executado em uma versão futura do sistema operacional. Historicamente, esse teste tem sido aplicado apenas ao fluxo de trabalho do aplicativo da área de trabalho, mas agora está habilitado para os fluxos de trabalho da Loja e da Plataforma Universal do Windows (UWP).

Contexto geral

As informações sobre a versão do sistema operacional restringiram o uso da Microsoft Store. Isso tem sido frequentemente usado incorretamente por aplicativos para verificar a versão do sistema operacional para que o aplicativo possa fornecer aos usuários uma funcionalidade específica para uma versão do sistema operacional.

Detalhes do teste

O Kit de Certificação de Aplicativos Windows usa o HighVersionLie para detetar como o aplicativo verifica a versão do sistema operacional. Se o aplicativo falhar, ele será reprovado neste teste.

Ação corretiva

Os aplicativos devem usar as funções auxiliares da API de versão para verificar isso. Consulte a versão do sistema operativo para mais informações.

Validação do manipulador de cancelamento de tarefas em segundo plano

Isso verifica se o aplicativo tem um manipulador de cancelamento para tarefas declaradas em segundo plano. Precisa haver uma função dedicada que será chamada quando a tarefa for cancelada. Esse teste é aplicado somente para aplicativos implantados.

Contexto geral

Os aplicativos da Store podem registrar um processo que é executado em segundo plano. Por exemplo, um aplicativo de email pode executar ping em um servidor de tempos em tempos. No entanto, se o sistema operacional precisar desses recursos, ele cancelará a tarefa em segundo plano, e os aplicativos devem lidar normalmente com esse cancelamento. Os aplicativos que não têm um manipulador de cancelamento podem falhar ou não fechar quando o usuário tenta fechar o aplicativo.

Detalhes do teste

O aplicativo é iniciado, suspenso e a parte não em segundo plano do aplicativo é encerrada. Em seguida, as tarefas em segundo plano associadas a este aplicativo são canceladas. O estado do aplicativo é verificado e, se o aplicativo ainda estiver em execução, ele será reprovado neste teste.

Ação corretiva

Adicione o manipulador de cancelamento ao seu aplicativo. Para obter mais informações, consulte Dar suporte ao seu aplicativo com tarefas em segundo plano.

Contagem de aplicativos

Isso verifica se um pacote de aplicativo (.msix, .appx ou pacote de aplicativos) contém um aplicativo. Isso foi alterado no kit para ser um teste independente.

Contexto geral

Este teste foi implementado de acordo com a política da Loja.

Detalhes do teste

Para aplicativos do Windows Phone 8.1, o teste verifica se o número total de pacotes de .appx no pacote é < 512, há apenas um pacote principal no pacote e se a arquitetura do pacote principal no pacote está marcada como Arm ou neutra.

Para aplicativos do Windows 10, o teste verifica se o número de revisão na versão do pacote está definido como 0.

Ação corretiva

Verifique se o pacote e o conjunto do aplicativo atendem aos requisitos acima mencionados nos Detalhes do teste.

Teste de conformidade do manifesto do aplicativo

Teste o conteúdo do manifesto do aplicativo para verificar se o conteúdo está correto.

Contexto geral

Os aplicativos devem ter um manifesto do aplicativo formatado corretamente.

Detalhes do teste

Examina o manifesto do aplicativo para verificar se o conteúdo está correto, conforme descrito nos requisitos do pacote do aplicativo.

  • Extensões de arquivo e protocolos

    Seu aplicativo pode declarar as extensões de arquivo às quais deseja se associar. Usado incorretamente, um aplicativo pode declarar um grande número de extensões de arquivo, a maioria das quais pode nem mesmo usar, resultando em uma má experiência do usuário. Esse teste adicionará uma verificação para limitar o número de extensões de arquivo às quais um aplicativo pode se associar.

  • Regra de dependência do Framework

    Esse teste impõe o requisito de que os aplicativos tenham dependências apropriadas na UWP. Se houver uma dependência inadequada, esse teste falhará.

    Se houver uma incompatibilidade entre a versão do sistema operacional à qual o aplicativo se aplica e as dependências da estrutura feitas, o teste falhará. O teste também falharia se o aplicativo se referisse a quaisquer versões de visualização das DLLs do framework.

  • Verificação da comunicação entre processos (IPC)

    Este teste impõe o requisito de que os aplicativos UWP não se comuniquem fora do container de aplicação para os componentes do Ambiente de Trabalho. A comunicação entre processos destina-se apenas a aplicações carregadas lateralmente. Os aplicativos que especificam o ActivatableClassAttribute com nome igual a "DesktopApplicationPath" falharão neste teste.

Ação corretiva

Analise o manifesto do aplicativo em relação aos requisitos descritos nos requisitos do pacote do aplicativo.

Teste de recursos de segurança do Windows

Contexto geral

Alterar as proteções de segurança padrão do Windows pode colocar os clientes em maior risco.

Detalhes do teste

Testa a segurança do aplicativo executando o BinScope Binary Analyzer.

Os testes do BinScope Binary Analyzer examinam os arquivos binários do aplicativo para verificar se há práticas de codificação e criação que tornem o aplicativo menos vulnerável a ataques ou a ser usado como um vetor de ataque.

Os testes do BinScope Binary Analyzer verificam o uso correto dos seguintes recursos relacionados à segurança.

  • Testes do BinScope Binary Analyzer
  • Assinatura de código privada

Testes do BinScope Binary Analyzer

Os testes do BinScope Binary Analyzer examinam os arquivos binários do aplicativo para verificar se há práticas de codificação e criação que tornem o aplicativo menos vulnerável a ataques ou a ser usado como um vetor de ataque.

Os testes do BinScope Binary Analyzer verificam o uso correto desses recursos relacionados à segurança:

AllowPartiallyTrustedCallersAttribute (PermiteChamadoresParcialmenteConfiáveis)

Mensagem de erro do Kit de Certificação de Aplicativos Windows: Falha no teste APTCACheck

O atributo AllowPartiallyTrustedCallersAttribute (APTCA) permite o acesso a código totalmente confiável a partir de código parcialmente confiável em assemblies assinados. Quando você aplica o atributo APTCA a um assembly, chamadores parcialmente confiáveis podem acessar esse assembly durante a vida útil do assembly, o que pode comprometer a segurança.

O que fazer se o seu aplicativo falhar neste teste

Não use o atributo APTCA em assemblies nomeados fortes, a menos que o seu projeto o exija e os riscos sejam claramente compreendidos. Nos casos em que é necessário, certifique-se de que todas as APIs estão protegidas com as demandas de segurança de acesso ao código apropriadas. O APTCA não tem efeito quando o assembly faz parte de uma aplicação da Universal Windows Platform (UWP).

Comentários

Este teste é realizado somente em código gerenciado (C#, .NET, etc.).

/SafeSEH Proteção contra tratamento de exceções

Mensagem de erro do Kit de Certificação de Aplicativos Windows: SafeSEHCheck Test falhou

Um manipulador de exceção é executado quando o aplicativo encontra uma condição excecional, como um erro de divisão por zero. Como o endereço do manipulador de exceção é armazenado na pilha quando uma função é chamada, pode ficar vulnerável a um ataque de estouro de buffer se um software malicioso substituir a pilha.

O que fazer se o seu aplicativo falhar neste teste

Habilite a opção /SAFESEH no comando linker ao criar seu aplicativo. Essa opção está ativada por padrão nas configurações de versão do Visual Studio. Verifique se essa opção está habilitada nas instruções de compilação para todos os módulos executáveis em seu aplicativo.

Comentários

O teste não é executado em binários de 64 bits ou binários de chipset Arm porque eles não armazenam endereços do manipulador de exceções na pilha.

Prevenção de Execução de Dados

Mensagem de erro do Kit de Certificação de Aplicativos Windows: Falha no teste NXCheck

Este teste verifica se um aplicativo não executa código armazenado em um segmento de dados.

O que fazer se o seu aplicativo falhar neste teste

Habilite a opção /NXCOMPAT no comando linker ao criar seu aplicativo. Essa opção está ativada por padrão nas versões do vinculador que oferecem suporte à DEP (Prevenção de Execução de Dados).

Comentários

Recomendamos que você teste seus aplicativos em uma CPU compatível com DEP e corrija quaisquer falhas que você encontrar que resultem da DEP.

Randomização do Layout do Espaço de Endereçamento

Mensagem de erro do Kit de Certificação de Aplicativos Windows: DBCheck Test falhou

A ASLR (Address Space Layout Randomization) carrega imagens executáveis em locais imprevisíveis na memória, o que torna mais difícil para o software mal-intencionado que espera que um programa seja carregado em um determinado endereço virtual operar de forma previsível. Seu aplicativo e todos os componentes que ele usa devem oferecer suporte a ASLR.

O que fazer se o seu aplicativo falhar neste teste

Habilite a opção /DYNAMICBASE no comando linker ao criar seu aplicativo. Verifique se todos os módulos que seu aplicativo usa também usam essa opção de vinculador.

Comentários

Normalmente, a ASLR não afeta o desempenho. Mas em alguns cenários há uma ligeira melhoria de desempenho em sistemas de 32 bits. É possível que o desempenho possa degradar-se em um sistema altamente congestionado que tem muitas imagens carregadas em muitos locais de memória diferentes.

Esse teste é realizado somente em aplicativos escritos em linguagens não gerenciadas, como o uso de C ou C++.

Seção PE de leitura/gravação compartilhada

Mensagem de erro do Kit de Certificação de Aplicativos Windows: SharedSectionsCheck Test falhou.

Arquivos binários com seções graváveis marcadas como compartilhadas são uma ameaça à segurança. Não crie aplicativos com seções graváveis compartilhadas, a menos que seja necessário. Use CreateFileMapping ou MapViewOfFile para criar um objeto de memória compartilhada adequadamente protegido.

O que fazer se o seu aplicativo falhar neste teste

Remova todas as seções compartilhadas do aplicativo e crie objetos de memória compartilhada chamando CreateFileMapping ou MapViewOfFile com os atributos de segurança adequados e, em seguida, recrie seu aplicativo.

Comentários

Esse teste é realizado somente em aplicativos escritos em linguagens não gerenciadas, como o uso de C ou C++.

Verificação do Contêiner de Aplicações

Mensagem de erro do Kit de Certificação de Aplicativos Windows: Falha no teste AppContainerCheck.

O AppContainerCheck verifica se o bit do 'appcontainer' no cabeçalho PE (executável portátil) de um binário executável está definido. Os aplicativos devem ter o bit appcontainer definido em todos os arquivos .exe e em todas as DLLs não gerenciadas para serem executados corretamente.

O que fazer se o seu aplicativo falhar neste teste

Se um arquivo executável nativo falhar no teste, certifique-se de que você usou o compilador e vinculador mais recentes para criar o arquivo e que você usa o sinalizador /appcontainer no vinculador.

Se um executável gerenciado falhar no teste, certifique-se de usar o compilador e o vinculador mais recentes, como o Microsoft Visual Studio, para criar o aplicativo UWP.

Comentários

Esse teste é realizado em todos os arquivos .exe e em DLLs não gerenciadas.

VerificaçãoDeImportaçõesExecutáveis

Mensagem de erro do Kit de Certificação de Aplicativos Windows: Falha no teste ExecutableImportsCheck.

Uma imagem executável portátil (PE) falhará neste teste se sua tabela de importação tiver sido colocada em uma seção de código executável. Isso pode ocorrer se você habilitou a mesclagem .rdata para a imagem PE definindo o sinalizador /merge do vinculador do Visual C++ como /merge:.rdata=.text.

O que fazer se o seu aplicativo falhar neste teste

Não mescle a tabela de importação em uma seção de código executável. Certifique-se de que o sinalizador /merge do vinculador do Visual C++ não está definido para mesclar a seção ".rdata" em uma seção de código.

Comentários

Este teste é executado em todos os códigos binários, exceto assemblies puramente gerenciados.

WXCheck

Mensagem de erro do Kit de Certificação de Aplicativos Windows: Falha no teste WXCheck.

A verificação ajuda a garantir que um binário não tenha páginas mapeadas como graváveis e executáveis. Isso pode ocorrer se o binário tiver uma seção gravável e executável ou se o SectionAlignment do binário for menor que PAGE-SIZE.

O que fazer se o seu aplicativo falhar neste teste

Certifique-se de que o binário não tem uma seção gravável ou executável e que o valor SectionAlignment do binário é pelo menos igual ao seu PAGE-SIZE.

Comentários

Esse teste é realizado em todos os arquivos .exe e em DLLs nativas não gerenciadas.

Um executável pode ter uma seção gravável e executável se tiver sido construído com Editar e Continuar habilitado (/ZI). A desativação de Editar e Continuar fará com que a seção inválida não esteja presente.

PAGE-SIZE é o SectionAlignment padrão para executáveis.

Assinatura de código privada

Testa a existência de binários de assinatura de código privado dentro do pacote da aplicação.

Contexto geral

Os arquivos de assinatura de código privado devem ser mantidos privados, pois podem ser usados para fins maliciosos no caso de serem comprometidos.

Detalhes do teste

Testes para ficheiros dentro do pacote da aplicação que têm uma extensão de .pfx ou .snk que possam indicar a inclusão de chaves de assinatura privadas.

Medidas corretivas

Remova todas as chaves de assinatura de código privado (por exemplo, arquivos .pfx e .snk) do pacote.

Teste de API suportado

Teste o aplicativo para o uso de APIs não compatíveis.

Contexto geral

Os aplicativos devem usar as APIs para aplicativos UWP (Tempo de Execução do Windows ou APIs Win32 suportadas) para serem certificados para a Microsoft Store. Esse teste também identifica situações em que um binário gerenciado depende de uma função fora do perfil aprovado.

Detalhes do teste

  • Verifica se cada binário dentro do pacote do aplicativo não tem uma dependência em uma API do Win32 que não é suportada para o desenvolvimento de aplicativos UWP verificando a tabela de endereços de importação do binário.
  • Verifica se cada binário gerenciado dentro do pacote do aplicativo não tem uma dependência de uma função fora do perfil aprovado.

Medidas corretivas

Certifique-se de que a aplicação foi compilada na versão de lançamento e não na versão de debug.

Observação A compilação de depuração de um aplicativo falhará nesse teste, mesmo que o aplicativo use apenas APIs para aplicativos UWP.

Revise as mensagens de erro para identificar a API que o aplicativo usa que não é uma API para aplicativos UWP.

Observação Os aplicativos C++ criados em uma configuração de depuração falharão nesse teste, mesmo que a configuração use apenas APIs do SDK do Windows para aplicativos UWP. Consulte Alternativas às APIs do Windows em aplicativos UWP para obter mais informações.

Testes de desempenho

O aplicativo deve responder rapidamente à interação do usuário e aos comandos do sistema, a fim de apresentar uma experiência de usuário rápida e fluida.

As características do computador no qual o teste é realizado podem influenciar os resultados do teste. Os limites de teste de desempenho para certificação de aplicativos são definidos para que computadores de baixo consumo atendam às expectativas do cliente de uma experiência rápida e fluida. Para determinar o desempenho do seu aplicativo, recomendamos que você teste em um computador de baixo consumo de energia, como um computador baseado no processador Intel Atom com resolução de tela de 1366x768 (ou superior) e um disco rígido rotacional (em oposição a um disco rígido de estado sólido).

Geração de bytecode

Como uma otimização de desempenho para acelerar o tempo de execução do JavaScript, os arquivos JavaScript que terminam na extensão .js geram bytecode quando o aplicativo é implantado. Isso melhora significativamente os tempos de inicialização e execução contínua para operações JavaScript.

Detalhes do teste

Verifica a implantação do aplicativo para verificar se todos os arquivos .js foram convertidos em bytecode.

Ação corretiva

Se esse teste falhar, considere o seguinte ao resolver o problema:

  • Verifique se o log de eventos está habilitado.
  • Verifique se todos os arquivos JavaScript são sintaticamente válidos.
  • Confirme se todas as versões anteriores do aplicativo foram desinstaladas.
  • Exclua arquivos identificados do pacote do aplicativo.

Referências de vinculação otimizadas

Ao usar associações, WinJS.Binding.optimizeBindingReferences deve ser definido como true para otimizar o uso de memória.

Detalhes do teste

Verifique o valor de WinJS.Binding.optimizeBindingReferences.

Ação corretiva

Defina WinJS.Binding.optimizeBindingReferences como true no JavaScript do aplicativo.

Teste de recursos de manifesto da aplicação

Validação de recursos do aplicativo

O aplicativo pode não ser instalado se as cadeias de caracteres ou imagens declaradas no manifesto do aplicativo estiverem incorretas. Se o aplicativo for instalado com esses erros, o logotipo do aplicativo ou outras imagens usadas pelo aplicativo podem não ser exibidas corretamente.

Detalhes do teste

Inspeciona os recursos definidos no manifesto do aplicativo para verificar se eles estão presentes e são válidos.

Ação corretiva

Use a tabela a seguir como orientação.

Mensagem de erroObservações

A imagem {image name} define os qualificadores Scale e TargetSize; Você pode definir apenas um qualificador de cada vez.

Você pode personalizar imagens para diferentes resoluções.

Na mensagem real, {nome da imagem} contém o nome da imagem com o erro.

Certifique-se de que cada imagem define Scale ou TargetSize como o qualificador.

A imagem {nome da imagem} falhou nas restrições de tamanho.

Certifique-se de que todas as imagens do aplicativo respeitem as restrições de tamanho adequadas.

Na mensagem real, {nome da imagem} contém o nome da imagem com o erro.

A imagem {nome da imagem} está ausente do pacote.

Falta uma imagem necessária.

Na mensagem real, {nome da imagem} contém o nome da imagem que está faltando.

A imagem {nome da imagem} não é um arquivo de imagem válido.

Certifique-se de que todas as imagens do aplicativo estejam de acordo com as restrições de tipo de formato de arquivo adequadas.

Na mensagem real, {nome da imagem} contém o nome da imagem que não é válido.

A imagem "BadgeLogo" tem um valor ABGR {value} na posição (x, y) que não é válido. O pixel deve ser branco (##FFFFFF) ou transparente (00######)

O logotipo do selo é uma imagem que aparece ao lado da notificação do selo para identificar o aplicativo na tela de bloqueio. Esta imagem deve ser monocromática (pode conter apenas pixels brancos e transparentes).

Na mensagem real, {value} contém o valor de cor na imagem que não é válido.

A imagem "BadgeLogo" tem um valor ABGR {value} na posição (x, y) que não é válido para uma imagem branca de alto contraste. O pixel deve ser (##2A2A2A) ou mais escuro, ou transparente (00######).

O logotipo do selo é uma imagem que aparece ao lado da notificação do selo para identificar o aplicativo na tela de bloqueio. Como o logotipo do emblema aparece em fundo branco quando se encontra em alto contraste, deve ser uma versão escura do logotipo normal do emblema. Em branco de alto contraste, o logotipo do selo só pode conter pixels mais escuros do que (##2A2A2A) ou transparentes.

Na mensagem real, {value} contém o valor de cor na imagem que não é válido.

A imagem deve definir pelo menos uma variante sem um qualificador TargetSize. Ele deve definir um qualificador Scale ou deixar Scale e TargetSize não especificados, cujo padrão é Scale-100.

Para saber mais, veja Design responsivo 101 para aplicativos UWP e Diretrizes para recursos de aplicativos.

O pacote não tem o ficheiro "resources.pri".

Se tiver conteúdo localizável no manifesto da aplicação, certifique-se de que o pacote da aplicação inclui um ficheiro resources.pri válido.

O arquivo "resources.pri" deve conter um mapa de recursos com um nome que corresponda ao nome do pacote {nome completo do pacote}

Você pode obter este erro se o manifesto tiver sido alterado e o nome do mapa de recursos dentro do resources.pri já não corresponder ao nome do pacote no manifesto.

Na mensagem real, {nome completo do pacote} contém o nome do pacote que resources.pri deve conter.

Para corrigir isso, você precisa reconstruir resources.pri e a maneira mais fácil de fazer isso é reconstruindo o pacote do aplicativo.

O arquivo "resources.pri" não deve ter AutoMerge habilitado.

MakePRI.exe suporta uma opção chamada AutoMerge . O valor padrão de AutoMerge está desativado. Quando habilitado, o AutoMerge mescla os recursos do pacote de idiomas de um aplicativo em um único resources.pri em tempo de execução. Não recomendamos isso para aplicativos que você pretende distribuir pela Microsoft Store. O resources.pri de um aplicativo distribuído pela Microsoft Store deve estar na raiz do pacote do aplicativo e conter todas as referências de idioma suportadas pelo aplicativo.

A string {string} falhou na restrição de comprimento máximo de {number} caracteres.

Consulte os requisitos do pacote do aplicativo .

Na mensagem real, {string} é substituído pela string com o erro e {number} contém o comprimento máximo.

A string {string} não deve ter espaço em branco no início ou no final.

O esquema para os elementos no manifesto do aplicativo não permite caracteres de espaço em branco à esquerda ou à direita.

Na mensagem real, {string} é substituído pela string com o erro.

Certifique-se de que nenhum dos valores localizados dos campos de manifesto em resources.pri tenha caracteres de espaço em branco à esquerda ou à direita.

A cadeia de caracteres deve ser não-vazia (maior que zero em comprimento)

Para saber mais, veja Requisitos do pacote do aplicativo.

Não há nenhum recurso padrão especificado no arquivo "resources.pri".

Para saber mais, veja Diretrizes para recursos do aplicativo.

Na configuração de compilação padrão, o Visual Studio só inclui recursos de imagem de escala-200 no pacote do aplicativo ao gerar bundles, colocando outros recursos no pacote de recursos. Certifique-se de incluir recursos de imagem em escala 200 ou configurar seu projeto para incluir os recursos que você tem.

Não há nenhum valor de recurso especificado no arquivo "resources.pri".

Verifique se o manifesto do aplicativo tem recursos válidos definidos em resources.pri.

O arquivo de imagem {filename} deve ser menor que 204800 bytes.\*\*

Reduza o tamanho das imagens indicadas.

O arquivo {filename} não deve conter uma seção de mapa inverso.\*\*

Enquanto o mapa reverso é gerado durante a depuração 'F5' do Visual Studio ao invocar makepri.exe, pode ser removido executando makepri.exe sem o parâmetro /m ao gerar um arquivo pri.

\*\* Indica que um teste foi adicionado no Kit de Certificação de Aplicativos Windows 3.3 para Windows 8.1 e só é aplicável ao usar essa versão do kit ou posterior.

 

Validação de marca

Espera-se que os aplicativos UWP sejam completos e totalmente funcionais. Os aplicativos que usam as imagens padrão (de modelos ou exemplos de SDK) apresentam uma experiência de usuário ruim e não podem ser facilmente identificados no catálogo da loja.

Detalhes do teste

O teste validará se as imagens usadas pelo aplicativo não forem imagens padrão de exemplos do SDK ou do Visual Studio.

Medidas corretivas

Substitua as imagens padrão por algo mais distinto e representativo do seu aplicativo.

Teste de configuração de depuração

Teste o aplicativo para certificar-se de que não é uma compilação de depuração.

Contexto geral

Para serem certificados para a Microsoft Store, os aplicativos não devem ser compilados para depuração e não devem fazer referência a versões de depuração de um arquivo executável. Além disso, deves criar o teu código de forma otimizada para que o teu aplicativo passe neste teste.

Detalhes do teste

Teste o aplicativo para certificar-se de que ele não é uma compilação de depuração e não está vinculado a nenhuma estrutura de depuração.

Medidas corretivas

  • Crie o aplicativo como uma compilação de versão antes de enviá-lo para a Microsoft Store.
  • Verifique se você tem a versão correta do .NET Framework instalada.
  • Certifique-se de que a aplicação não está a vincular a versões de depuração de uma plataforma e que está a ser compilada com uma versão de lançamento. Se este aplicativo contiver componentes .NET, certifique-se de ter instalado a versão correta do .NET framework.

Teste de codificação de arquivos

Codificação de ficheiros UTF-8

Contexto geral

Os arquivos HTML, CSS e JavaScript devem ser codificados no formato UTF-8 com a correspondente marca de ordem de bytes (BOM) para beneficiar do caching de bytecode e evitar certos erros em tempo de execução.

Detalhes do teste

Teste o conteúdo dos pacotes de aplicativos para verificar se eles usam a codificação de arquivo correta.

Ação corretiva

Abra o arquivo afetado e selecione Salvar como no menu Arquivo no Visual Studio. Selecione o controle suspenso ao lado do botão Salvar e selecione Salvar com codificação. Na caixa de diálogo de opções de salvamento avançadas , escolha a opção Unicode (UTF-8 com assinatura) e clique em OK.

Teste de nível de funcionalidade Direct3D

Suporte ao nível de funcionalidades do Direct3D

Testa as aplicações Microsoft Direct3D para garantir que não falham em dispositivos com hardware gráfico mais antigo.

Contexto geral

A Microsoft Store exige que todos os aplicativos que usam Direct3D sejam renderizados corretamente ou falhem de forma controlada em placas gráficas de nível de funcionalidade 9-1.

Como os usuários podem alterar o hardware gráfico em seus dispositivos após a instalação do aplicativo, se você escolher um nível mínimo de recurso superior a 9-1, seu aplicativo deverá detetar na inicialização se o hardware atual atende ou não aos requisitos mínimos. Se os requisitos mínimos não forem atendidos, o aplicativo deverá exibir uma mensagem para o usuário detalhando os requisitos do Direct3D. Além disso, se um aplicativo for baixado em um dispositivo com o qual não é compatível, ele deve detetar isso na inicialização e exibir uma mensagem para o cliente detalhando os requisitos.

Detalhes do teste

O teste validará se os aplicativos renderizam com precisão no nível de recurso 9-1.

Ação corretiva

Certifique-se de que seu aplicativo seja renderizado corretamente no nível de recurso 9-1 do Direct3D, mesmo que você espere que ele seja executado em um nível de recurso mais alto. Consulte Desenvolver para diferentes níveis de funcionalidade do Direct3D para obter mais informações.

Otimização do Direct3D após suspensão

Observação Este teste aplica-se apenas a aplicações UWP desenvolvidas para Windows 8.1 e posteriores.

Contexto geral

Se o aplicativo não chamar Trim em seu dispositivo Direct3D, o aplicativo não liberará memória alocada para seu trabalho 3D anterior. Isso aumenta o risco de os aplicativos serem encerrados devido à pressão da memória do sistema.

Detalhes do teste

Verifica a conformidade das aplicações com os requisitos d3d e garante que as aplicações chamem uma nova API Trim quando ocorrer o retorno de chamada de suspensão.

Ação corretiva

O aplicativo deve chamar a API Trim em sua interface IDXGIDevice3 sempre que estiver prestes a ser suspenso.

Teste de recursos do aplicativo

Capacidades de utilização especial

Contexto geral

As capacidades de utilização especial destinam-se a cenários muito específicos. Apenas contas de empresas têm permissão para usar esses recursos.

Detalhes do teste

Valide se o aplicativo está declarando qualquer um dos recursos abaixo:

  • Autenticação Empresarial
  • CertificadosDeUtilizadorPartilhados
  • Biblioteca de Documentos

Se algum desses recursos for declarado, o teste exibirá um aviso para o usuário.

Ações corretivas

Considere remover o recurso de uso especial se seu aplicativo não exigir. Além disso, o uso desses recursos está sujeito a uma revisão adicional da política de integração.

Validação de metadados do Windows Runtime

Contexto geral

Garante que os componentes fornecidos em um aplicativo estejam em conformidade com o sistema do tipo Tempo de Execução do Windows.

Detalhes do teste

Verifica se os arquivos .winmd no pacote estão em conformidade com as regras do Tempo de Execução do Windows.

Ações corretivas

  • ExclusivoPara teste de atributo: Certifique-se de que as classes Windows Runtime não implementem interfaces que estão marcadas como ExclusiveTo de outra classe.
  • Teste de localização do tipo: Verifique se os metadados de todos os tipos do Runtime do Windows estão localizados no ficheiro winmd que possui o nome de namespace mais longo correspondente no pacote da aplicação.
  • Teste de sensibilidade a maiúsculas e minúsculas do nome do tipo: Certifique-se de que todos os tipos do Windows Runtime tenham nomes exclusivos e que sejam insensíveis a maiúsculas e minúsculas no pacote da sua aplicação. Certifique-se também de que nenhum nome de tipo UWP também seja usado como um nome de namespace no pacote do aplicativo.
  • Teste de correção do nome do tipo: Verifique se não há tipos do Tempo de Execução do Windows no namespace global ou no namespace de nível superior do Windows.
  • Teste geral de correção de metadados: Verifique se o compilador que você está usando para gerar seus tipos está atualizado com as especificações do Tempo de Execução do Windows.
  • Teste de propriedades: verifique se todas as propriedades em uma classe do Tempo de Execução do Windows têm um método get (definir métodos é opcional). Verifique se o tipo do valor de retorno do método get corresponde ao tipo do parâmetro de entrada do método set para todas as propriedades nos tipos do Tempo de Execução do Windows.

Testes de sanidade de pacotes

Teste de ficheiros adequados para a plataforma

Os aplicativos que instalam binários mistos podem falhar ou não ser executados corretamente, dependendo da arquitetura do processador do usuário.

Contexto geral

Este teste valida os binários em um pacote de aplicativo para conflitos de arquitetura. Um pacote de aplicativo não deve incluir binários que não possam ser usados na arquitetura do processador especificada no manifesto. A inclusão de binários sem suporte pode levar a uma falha no aplicativo ou a um aumento desnecessário no tamanho do pacote do aplicativo.

Detalhes do teste

Valida que o "bitness" de cada ficheiro no cabeçalho do executável PE é apropriado quando comparado com a declaração de arquitetura do processador no pacote da aplicação.

Ação corretiva

Siga estas diretrizes para garantir que o pacote do aplicativo contenha apenas arquivos suportados pela arquitetura especificada no manifesto do aplicativo:

  • Se a arquitetura do processador de destino do seu aplicativo for Tipo de processador neutro, o pacote do aplicativo não poderá conter arquivos binários ou de tipo de imagem x86, x64 ou Arm.

  • Se a arquitetura do processador de destino do seu aplicativo for do tipo de processador x86, o pacote do aplicativo deverá conter apenas arquivos binários x86 ou do tipo imagem. Se o pacote contiver tipos binários ou de imagem x64 ou Arm, ele será reprovado no teste.

  • Se a arquitetura do processador de destino do seu aplicativo for do tipo de processador x64, o pacote do aplicativo deverá conter arquivos binários ou de tipo de imagem x64. Observe que, neste caso, o pacote também pode incluir arquivos x86, mas a experiência principal do aplicativo deve utilizar o binário x64.

    No entanto, se o pacote contiver arquivos binários ou de tipo de imagem Arm, ou contiver apenas binários x86 ou arquivos de tipo de imagem, ele falhará no teste.

  • Se a arquitetura do processador de destino do seu aplicativo for do tipo de processador Arm, o pacote do aplicativo deverá conter apenas arquivos binários ou de tipo de imagem Arm. Se o pacote contiver arquivos binários ou de tipo de imagem x64 ou x86, ele será reprovado no teste.

Teste da estrutura de diretórios suportada

Valida que os aplicativos não estão criando subdiretórios como parte da instalação que são mais longos do que MAX-PATH.

Contexto geral

Os componentes do sistema operacional (incluindo Trident, WWAHost, etc.) são limitados internamente a MAX-PATH para caminhos do sistema de arquivos e não funcionarão corretamente para caminhos mais longos.

Detalhes do teste

Verifica se nenhum caminho dentro do diretório de instalação do aplicativo excede MAX-PATH.

Ação corretiva

Use uma estrutura de diretórios mais curta e/ou um nome de arquivo.

Teste de Utilização de Recursos

Teste de tarefa em segundo plano WinJS

O teste de tarefa em segundo plano WinJS garante que os aplicativos JavaScript tenham as instruções de fechamento adequadas para que os aplicativos não consumam bateria.

Contexto geral

Os aplicativos que têm tarefas em segundo plano JavaScript precisam chamar Close() como a última instrução em sua tarefa em segundo plano. Os aplicativos que não fazem isso podem impedir que o sistema retorne ao modo de espera conectado e resultar no esgotamento da bateria.

Detalhes do teste

Se o aplicativo não tiver um arquivo de tarefa em segundo plano especificado no manifesto, o teste será aprovado. Caso contrário, o teste analisará o arquivo de tarefa em segundo plano JavaScript especificado no pacote do aplicativo e procurará uma instrução Close(). Se encontrado, o teste será aprovado; caso contrário, o teste falhará.

Ação corretiva

Atualize o código JavaScript em segundo plano para chamar Close() corretamente.