Testes do Kit de Certificação de Aplicativos Windows
O Kit de Certificação de Aplicativos Windows contém diversos testes que podem ajudar a garantir que seu aplicativo esteja pronto para ser publicado na Microsoft Store. Os testes são listados abaixo com seus critérios, detalhes e ações sugeridas em caso de falha.
Implantação e testes de inicialização
Monitora o aplicativo durante o teste de certificação para registrar quando ele falha ou trava.
Tela de fundo
Aplicativos que param de responder ou travam podem provocar a perda de dados do usuário ou uma experiência insatisfatória.
Esperamos que os aplicativos estejam totalmente funcionais sem o uso dos modos de compatibilidade do Windows, de mensagens AppHelp ou de correções de compatibilidade.
Os aplicativos não devem listar DLLs para carregamento 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 por meio do teste de certificação.
O Kit de Certificação de Aplicativos Windows chama IApplicationActivationManager::ActivateApplication para iniciar os aplicativos. Para que o ActivateApplication inicie um aplicativo, o UAC (Controle de Conta de Usuário) deve estar habilitado, e a resolução da tela deve ser de pelo menos 1024 x 768 ou 768 x 1024. Se nenhuma condição for atendida, o aplicativo falhará nesse teste.
Ações corretivas
Verifique se o UAC está habilitado no computador de teste.
Verifique se você está executando o teste em um computador com uma tela grande o suficiente.
Se o aplicativo falhar para iniciar e sua plataforma de teste satisfizer os pré-requisitos do ActivateApplication, você poderá solucionar o problema analisando o log de eventos de ativação. Para encontrar essas entradas no log de eventos:
- Abra eventvwr.exe e navegue até a pasta Logs de Aplicativos e Serviços\Microsoft\Windows\Immersive-Shell.
- Filtre a exibição para mostrar as IDs de Evento: 5900-6000.
- Analise as entradas do log para obter informações que possam explicar por que o aplicativo não foi iniciado.
Identifique e solucione o problema com o arquivo. Compile e teste novamente o aplicativo. Você também pode verificar se um arquivo de despejo, que pode ser usado para depurar o aplicativo, foi gerado na pasta de log do Kit de Certificação de Aplicativos Windows.
Teste de inicialização de versão de plataforma
Verifica se o aplicativo do Windows pode ser executado em uma versão futura do sistema operacional. Esse teste foi aplicado historicamente apenas ao fluxo de trabalho do aplicativo da área de trabalho, mas agora ele está habilitado para fluxos de trabalho da Loja e da Plataforma Universal do Windows (UWP).
Tela de fundo
As informações de versão do sistema operacional têm uso restrito à Microsoft Store. Elas têm sido usadas incorretamente com frequência pelos aplicativos para verificar a versão do sistema operacional, de forma que o aplicativo possa fornecer aos usuários as funcionalidades específicas de uma versão do sistema operacional.
Detalhes do teste
O Kit de Certificação de Aplicativos Windows usa a HighVersionLie para detectar como o aplicativo verifica a versão do sistema operacional. Se o aplicativo falhar, ele não passará nesse teste.
Ação Corretiva
Os aplicativos devem usar as funções auxiliares da API de versão para verificar isso. Consulte Versão do sistema operacional para saber mais.
Validação do manipulador de cancelamento de tarefas em segundo plano
Verifica se o aplicativo tem um manipulador de cancelamento para tarefas em segundo plano declaradas. Precisa haver uma função dedicada que será chamada quando a tarefa for cancelada. Esse teste é aplicado somente a aplicativos implantados.
Tela de fundo
Os Aplicativos Universais do Windows podem registrar um processo que seja executado em segundo plano. Por exemplo, um aplicativo de email pode executar ping no servidor de tempos em tempos. No entanto, se o sistema operacional precisar desses recursos, ele cancelará a tarefa em segundo plano e os aplicativos deverão lidar normalmente com esse cancelamento. Aplicativos que não têm um manipulador de cancelamento podem falhar ou não fechar quando o usuário tentar fechá-los.
Detalhes do teste
O aplicativo é iniciado, suspenso e a parte que não está em segundo plano do aplicativo é encerrada. Em seguida, as tarefas em segundo plano associadas a esse aplicativo serão canceladas. O estado do aplicativo é verificado e se o aplicativo ainda estiver em execução, ele falhará neste teste.
Ação Corretiva
Adicione o manipulador de cancelamento ao seu aplicativo. Para obter mais informações, consulte Oferecer suporte a tarefas em segundo plano em seu aplicativo.
Contagem de aplicativo
Verifica se um pacote do aplicativo (.msix, .appx ou lote de aplicativo) contém um aplicativo. Isso foi alterado no kit para ser um teste autônomo.
Tela de fundo
Esse teste foi implementado em conformidade 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 appx no lote é < 512, se há apenas um pacote principal no lote e se a arquitetura do pacote principal no lote 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 lote está definido como 0.
Ação Corretiva
Garantir que o pacote do aplicativo e lote atendam aos requisitos acima em Detalhes do teste.
Teste de conformidade de manifesto do aplicativo
Teste o conteúdo do manifesto do aplicativo para garantir que seu conteúdo esteja correto.
Tela de fundo
Os aplicativos devem ter um manifesto corretamente formatado.
Detalhes do teste
Analisa o manifesto do aplicativo para verificar se o conteúdo está correto, conforme descrito em Requisitos do pacote do aplicativo.
Protocolos e extensões de arquivo
Seu aplicativo pode declarar as extensões de arquivo às quais se associar. Se isso for feito de maneira indevida, o aplicativo poderá declarar um número imenso de extensões de arquivo, a maior parte das quais ele poderá nem mesmo usar, resultando em uma experiência do usuário insatisfatória. Este teste adicionará uma verificação para limitar o número de extensões de arquivo aos quais um aplicativo pode se associar.
Regra de Dependência de Estrutura
Esse teste enfatiza o requisito de que os aplicativos obtenham as devidas dependências na UWP. Se existir uma dependência inadequada, o teste falhará.
Se houver incompatibilidade entre a versão do sistema operacional ao qual o aplicativo se aplica e as dependências de estrutura que foram feitas, o teste falhará. O teste também falha quando o aplicativo se refere a versões "preview" das dlls de estrutura.
Verificação de comunicação entre processos (IPC)
Esse teste aplica o requisito de que os aplicativos UWP não se comunicam fora do contêiner do aplicativo para componentes de desktop. A comunicação entre processos é destinada apenas a aplicativos de sideload. Os aplicativos que especificam o ActivatableClassAttribute com nome igual a "DesktopApplicationPath" falham nesse teste.
Ação Corretiva
Analise o manifesto do aplicativo em relação aos requisitos descritos em Requisitos do pacote do aplicativo.
Teste dos recursos de segurança do Windows
Tela de fundo
Alterar as proteções de segurança padrão do Windows pode colocar os clientes em risco elevado.
Detalhes do teste
Testa a segurança do aplicativo executando o Analisador de Binários BinScope.
Os testes do Analisador de Binários BinScope examinam os arquivos binários do aplicativo em busca de práticas de programação e compilação que o tornam menos vulnerável a ataques ou a ser usado como um vetor de ataque.
Os testes do Analisador de Binários BinScope verificam o uso correto dos seguintes recursos relacionados à segurança:
- Testes do Analisador de Binários BinScope
- Assinatura de códigos privados
Testes do Analisador de Binários BinScope
Os testes do Analisador de Binários BinScope examinam os arquivos binários do aplicativo em busca de práticas de programação e compilação que o tornam menos vulnerável a ataques ou a ser usado como um vetor de ataque.
Os testes do Analisador de Binários BinScope verificam o uso correto destes recursos relacionados à segurança:
- AllowPartiallyTrustedCallersAttribute
- Proteção de tratamento de exceções /SafeSEH
- Prevenção de Execução de Dados
- ASLR (Address Space Layout Randomization)
- Ler/gravar seção PE compartilhada
- AppContainerCheck
- ExecutableImportsCheck
- WXCheck
AllowPartiallyTrustedCallersAttribute
Mensagem de erro do Kit de Certificação de Aplicativos Windows: Falha no teste APTCACheck
O atributo AllowPartiallyTrustedCallersAttribute (APTCA) habilita 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 do assembly, o que pode comprometer a segurança.
O que fazer se o seu aplicativo for reprovado pelo teste
Não use o atributo APTCA em assemblies com nome forte, a menos que seu projeto exija e os riscos sejam bem entendidos. Nesses casos, verifique se todas as APIs estão protegidas com as devidas demandas de segurança de código de acesso. O APTCA não tem efeito quando o assembly faz parte de um aplicativo da Plataforma Universal do Windows (UWP).
Comentários
Esse teste é realizado apenas em código gerenciado (C#, .NET etc.).
Proteção de manipulação de exceções /SafeSEH
Mensagem de erro do Kit de Certificação de Aplicativos Windows: falha no teste SafeSEHCheck
Um manipulador de exceções é executado quando o aplicativo encontra uma condição excepcional, tal como um erro de divisão por zero. Como o endereço do manipulador da exceção é armazenado na pilha quando uma função é chamadas, ele ficaria vulnerável a um ataque de estouro de buffer se algum software malicioso substituísse a pilha.
O que fazer se o seu aplicativo for reprovado pelo teste
Habilite a opção /SAFESEH no comando vinculador ao compilar o 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 do seu aplicativo.
Comentários
O teste não é realizado em arquivos binários de 64 bits ou em arquivos binários para o chipset ARM porque eles não armazenam endereços do manipulador de exceção 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 o seu aplicativo executa código armazenado em um segmento de dados.
O que fazer se o seu aplicativo for reprovado pelo teste
Habilite a opção /NXCOMPAT no comando vinculador ao compilar o seu aplicativo. Essa opção está ativada por padrão em versões do vinculador com suporte à Prevenção de Execução de Dados (DEP).
Comentários
Recomendamos que você teste os seus aplicativos em uma CPU habilitada para DEP e conserte qualquer falha indicada.
ASLR (Address Space Layout Randomization)
Mensagem de erro do Kit de Certificação de Aplicativos Windows: Falha no teste DBCheck
O ASLR carrega imagens executáveis em locais imprevisíveis da memória, o que dificulta a ação de softwares mal-intencionados que esperam que um programa seja carregado em um determinado endereço virtual para operar de maneira previsível. Seu aplicativo e todos os componentes usados por ele devem oferecer suporte para ASLR.
O que fazer se o seu aplicativo for reprovado pelo teste
Habilite a opção /DYNAMICBASE no comando vinculador ao compilar o seu aplicativo. Verifique se todos os módulos usados pelo seu aplicativo usam essa opção do vinculador.
Comentários
Normalmente, o ASLR não afeta o desempenho. Mas, em alguns cenários, há um ligeiro aumento do desempenho em sistemas de 32 bits. É possível que o desempenho seja prejudicado em um sistema muito congestionado que possua muitas imagens carregadas em muitos locais diferentes da memória.
Este teste é realizado apenas em app escritos em linguagens não gerenciadas, por exemplo, C ou C++.
Ler/gravar seção PE compartilhada
Mensagem de erro do Kit de Certificação de Aplicativos Windows: falha no teste SharedSectionsCheck.
Arquivos binários com seções graváveis marcadas como compartilhadas são uma ameaça à segurança. Não compile aplicativos com seções graváveis compartilhadas, a não ser que isso seja realmente necessário. Use CreateFileMapping ou MapViewOfFile para criar um objeto de memória compartilhado devidamente protegido.
O que fazer se o seu aplicativo for reprovado pelo teste
Remova todas as seções compartilhadas do aplicativo e crie objetos de memória compartilhados chamando CreateFileMapping ou MapViewOfFile com os devidos atributos de segurança e depois recompile seu aplicativo.
Comentários
Este teste é realizado apenas em app escritos em linguagens não gerenciadas, por exemplo, C ou C++.
AppContainerCheck
Mensagem de erro do Kit de Certificação de Aplicativos Windows: falha no teste AppContainerCheck.
AppContainerCheck verifica se o bit appcontainer no cabeçalho PE de um binário executável está definido. Os aplicativos devem ter o bit appcontainer em todos os arquivos .exe e em todas as DLLs não gerenciadas para serem executados corretamente.
O que fazer se o seu aplicativo for reprovado pelo teste
Se um arquivo executável nativo for reprovado no teste, verifique se você usou o vinculador e o compilador mais recentes para criar o arquivo e se usou o sinalizador /appcontainer no vinculador.
Se um executável gerenciado falhar no teste, verifique se você usou o vinculador e o compilador mais recentes, como o Microsoft Visual Studio, para criar o aplicativo UWP.
Comentários
Esse teste é realizado em todos os arquivos .exe e em todas as DLLs não gerenciadas.
ExecutableImportsCheck
Mensagem de erro do Kit de Certificação de Aplicativos Windows: falha no teste ExecutableImportsCheck.
Uma imagem PE é reprovada nesse teste quando sua tabela de importação foi inserida em uma seção de código executável. Isso poderá ocorrer se você tiver habilitado a mesclagem de .rdata para a imagem PE, definindo o sinalizador /merge do vinculador Visual C++ como /merge:.rdata=.text.
O que fazer se o seu aplicativo for reprovado pelo teste
Não mescle a tabela de importação em uma seção de código executável. Verifique se o sinalizador /merge do vinculador Visual C++ não está definido para mesclar a seção ".rdata" em uma seção de código.
Comentários
Esse teste é realizado em todo o código binário, com exceção de assemblies inteiramente gerenciados.
WXCheck
Mensagem de erro do Kit de Certificação de Aplicativos para Windows: Falha no teste WXCheck.
A verificação ajuda a garantir que um binário não tenha nenhuma página mapeada como gravável e executável. Isso pode acontecer se o binário tem uma seção gravável e executável ou se SectionAlignment do binário é menor que PAGE-SIZE.
O que fazer se o seu aplicativo for reprovado pelo teste
O binário não pode ter uma seção gravável ou executável, e o valor SectionAlignment do binário deve ser pelo menos igual ao seu PAGE-SIZE.
Comentários
Esse teste é feito em todos os arquivos .exe e em todas as DLLs nativas não gerenciadas.
Um executável pode ter uma seção gravável e executável quando é criado com Editar e Continuar ativado (/ZI). Desativando Editar e Continuar, a seção inválida não está presente.
PAGE-SIZE é o SectionAlignment padrão para executáveis.
Assinatura de códigos privados
Testes para a existência de binários de assinatura de código privado no pacote de aplicativo.
Tela de fundo
Os arquivos de assinatura de código privado devem ser mantidos privados, já que eles podem ser utilizados para fins maliciosos no caso de serem comprometidos.
Detalhes do teste
Os testes de arquivos no pacote de aplicativos que têm uma extensão .pfx ou .snk que indica que as chaves de assinatura privadas foram incluídas.
Ações corretivas
Remova todas as chaves de assinatura de código privado (por exemplo, arquivos .snk e .pfx) do pacote.
Teste de API compatível
Teste o aplicativo em relação ao uso de quaisquer APIs não compatíveis.
Tela de fundo
Para serem certificados na Microsoft Store, os aplicativos devem usar as APIs para aplicativos UWP (Windows Runtime ou APIs do Win32 compatíveis). Esse teste também identifica as 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 no pacote do aplicativo não depende de uma API do Win32 incompatível com o desenvolvimento do aplicativo UWP verificando a tabela de endereço de importação do binário.
- Verifica se cada binário gerenciado no pacote do aplicativo não depende de uma função fora do perfil aprovado.
Ações corretivas
Verifique se o aplicativo foi compilado como uma compilação de versão e não como uma compilação de depuração.
Observação: o build de depuração de um aplicativo não passará neste teste mesmo que o aplicativo use somente APIs para aplicativos UWP.
Examine as mensagens de erro para identificar a API usada pelo aplicativo que não é uma API para aplicativos UWP.
Observação: os aplicativos C++ que são integrados em uma configuração de depuração falharão no teste mesmo que a configuração use somente APIs do SDK do Windows para aplicativos UWP. Para saber mais, confira Alternativas às APIs do Windows em aplicativos UWP.
Testes de desempenho
O aplicativo deve responder rapidamente à interação do usuário e aos comandos do sistema para proporcionar uma experiência do usuário rápida e flexível.
As características do computador em que o teste é realizado podem afetar os resultados do teste. Os limites do teste de desempenho para a certificação do aplicativo são definidos de modo que os computadores com baixo consumo de energia cumpram as expectativas do cliente de uma experiência rápida e fluida. Para determinar o desempenho do seu aplicativo, recomendamos testá-lo em um computador com baixo consumo de energia, como um computador baseado no processador Intel Atom com resolução de tela de 1366 x 768 (ou superior) e disco rígido giratório (em vez de disco rígido de estado sólido).
Geração do código de bytes
À medida que a otimização do desempenho acelera o tempo de execução do JavaScript, os arquivos JavaScript com a extensão .js geram código de bytes quando o aplicativo é implantado. Isso melhora consideravelmente o tempo de execução da inicialização e contínuo para operações JavaScript.
Detalhes do teste
Verifica a implantação do aplicativo para verificar se todos os arquivos .js foram convertidos em código de bytes.
Ação corretiva
Em caso de falha do teste, considere o seguinte ao lidar com o problema:
- Verifique se o registro em log de evento está habilitado.
- Verifique se todos os arquivos JavaScript são sintaticamente válidos.
- Confirme se todas as versões anteriores do aplicativos foram desinstaladas.
- Exclua os arquivos identificados no pacote do aplicativo.
Referências de vinculação otimizadas
Ao usar vinculações, WinJS.Binding.optimizeBindingReferences deve estar definido como verdadeiro para otimizar o uso da memória.
Detalhes do teste
Verifique o valor de WinJS.Binding.optimizeBindingReferences.
Ação corretiva
Defina WinJS.Binding.optimizeBindingReferences como true no aplicativo JavaScript.
Teste de recursos do manifesto do aplicativo
Validação de recursos do aplicativo
O aplicativo pode não ser instalado se as cadeias de caracteres ou imagens declaradas no manifesto do seu aplicativo estiverem incorretas. Se o aplicativo não for instalado com esses erros, o logotipo do aplicativo ou outras imagens usadas por ele poderão não ser exibidas corretamente.
Detalhes do teste
Inspeciona os recursos definidos no manifesto do aplicativo para garantir que estão presentes e são válidos.
Ação corretiva
Use a tabela a seguir como guia.
Mensagem de erro | Comentários |
---|---|
A imagem {image name} define os qualificadores Scale e TargetSize; você pode definir somente um qualificador por vez. |
Você pode personalizar imagens para resoluções diferentes. Na mensagem real, {image name} contém o nome da imagem com o erro. Verifique se cada imagem define Scale ou TargetSize como o qualificador. |
Houve falha nas restrições de tamanho da imagem {image name}. |
Verifique se todas as imagens do aplicativo atendem às restrições adequadas de tamanho. Na mensagem real, {image name} contém o nome da imagem com o erro. |
A imagem {image name} está ausente no pacote. |
Uma imagem necessária está ausente. Na mensagem real, {image name} contém o nome da imagem que está ausente. |
A imagem {image name} não é um arquivo de imagem válido. |
Verifique se todas as imagens do aplicativo atendem às restrições adequadas de tipo de formato de arquivo. Na mensagem real, {image name} contém o nome da imagem que não é válida. |
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 de selo é uma imagem mostrada ao lado da notificação de selo para identificar o aplicativo na tela de bloqueio. Essa imagem deve ser monocromática (pode conter somente pixels brancos ou transparentes). Na mensagem real, {value} contém o valor da 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 a imagem branca de alto contraste. O pixel deve ser (##2A2A2A) ou mais escuro, ou transparente (00######). |
O logotipo de selo é uma imagem mostrada ao lado da notificação de selo para identificar o aplicativo na tela de bloqueio. Como o logotipo de selo é mostrado em uma tela de fundo branca quando está em branco de alto contraste, ele deve ser uma versão mais escura do logotipo padrão do selo. No banco de alto contraste, o logotipo do selo pode conter somente pixels que são mais escuros que (##2A2A2A) ou transparentes. Na mensagem real, {value} contém o valor da cor na imagem que não é válido. |
A imagem deve definir pelo menos uma variante, sem um qualificador TargetSize. Ela deve definir um qualificador Scale ou deixar Scale e TargetSize não especificados, que tem o padrão Scale-100. |
Para obter mais informações, consulte Design responsivo 101 para aplicativos UWP e Diretrizes para recursos de aplicativos. |
O pacote tem um arquivo "resources.pri" ausente. |
Se você tiver conteúdo localizável no manifesto do aplicativo, verifique se o pacote do aplicativo inclui um arquivo resources.pri válido. |
O arquivo "resources.pri" deve conter um mapa de recursos com um nome que corresponda ao nome do pacote {package full name} |
Você pode obter esse erro quando o manifesto é alterado e o nome do mapa de recursos no resources.pri não corresponde mais ao nome do pacote no manifesto. Na mensagem real, {package full name} contém o nome do pacote que resources.pri deve conter. Para corrigir isso, você precisa recompilar o resources.pri e a maneira mais fácil de fazer isso é recompilando o pacote do aplicativo. |
O arquivo "resources.pri" não deve ter o AutoMerge habilitado. |
O MakePRI.exe oferece suporte a uma opção denominada AutoMerge. O valor padrão de AutoMerge é desativar. Quando está habilitado, o AutoMerge mescla os recursos de pacote de idiomas do aplicativo em um único resources.pri no runtime. Não recomendamos isso para os aplicativos que você pretende distribuir por meio da Microsoft Store. O resources.pri de um aplicativo que é distribuído por meio da Microsoft Store deve estar na raiz do pacote do aplicativo e conter todas as referências de idiomas compatíveis com o aplicativo. |
A cadeia de caracteres {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 cadeia de caracteres com o erro e {number} contém o comprimento máximo. |
A cadeia de caracteres {string} não pode ser espaço inicial/final. |
O esquema dos elementos no manifesto do aplicativo não permite caracteres de espaço iniciais ou finais. Na mensagem real, {string} é substituído pela cadeia de caracteres com o erro. Verifique se algum dos valores localizados nos campos do manifesto no resources.pri contém caracteres de espaço iniciais ou finais. |
A cadeia de caracteres não pode estar vazia (o comprimento deve ser maior que zero) |
Para obter mais informações, consulte Requisitos do pacote do aplicativo. |
Não há recurso padrão especificado no arquivo "resources.pri". |
Para obter mais informações, consulte Diretrizes de recursos de aplicativos. Na configuração de build padrão, o Visual Studio inclui apenas os recursos de imagem de escala 200 no pacote do aplicativo quando gera pacotes, colocando outros recursos no pacote de recursos. Inclua recursos de imagem de escala 200 ou configure seu projeto para incluir os recursos que você tem. |
Não há valor de recurso especificado no arquivo "resources.pri". |
Verifique se o manifesto do aplicativo tem recursos válidos definidos no resources.pri. |
O arquivo de imagem {filename} deve ter menos de 204.800 bytes.\*\* |
Reduza o tamanho das imagens indicadas. |
O arquivo {filename} não deve conter uma seção de mapa reverso.\*\* |
Apesar do mapa reverso ser gerado durante a "depuração F5" do Visual Studio durante a chamada no makepri.exe, ele pode ser removido. Basta executar 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 quando se utiliza essa versão do kit ou posterior. |
Validação de marca
Os aplicativos UWP devem estar completos e totalmente funcionais. Os aplicativos que usam as imagens padrão (de modelos ou exemplos de SDK) apresentam uma experiência do usuário ruim e não podem ser identificados facilmente no catálogo da loja.
Detalhes do teste
O teste valida se as imagens usadas pelo aplicativo não são imagens padrão de exemplos do SDK ou do Visual Studio.
Ações corretivas
Substitua as imagens padrão por algo mais distinto e que representa seu aplicativo.
Teste de configuração de depuração
Teste o aplicativo para ter certeza de que ele não é uma compilação de depuração.
Tela de fundo
Para serem certificados para a Microsoft Store, os aplicativos não podem ser compilados para depuração e não devem referenciar versões de depuração de um arquivo executável. Além disso, você deve criar seu código como otimizado para que seu aplicativo passe nesse teste.
Detalhes do teste
Teste o aplicativo para garantir que ele não é uma compilação de depuração e que não está vinculado a estruturas de depuração.
Ações corretivas
- Crie o aplicativo como um build de versão antes de enviá-lo para a Microsoft Store.
- Verifique se a versão correta do .NET framework está instalada.
- Certifique-se de que o aplicativo não está vinculando versões de depuração de uma estrutura e se a versão é de liberação. Se o aplicativo contém componentes .NET, certifique-se de instalar a versão correta da estrutura .NET.
Teste de codificação de arquivo
Codificação de arquivos UTF-8
Tela de fundo
Os arquivos HTML, CSS e JavaScript devem estar codificados no formato UTF-8 com a marca de ordem de byte (BOM) correspondente para aproveitar o cache do código de bytes e evitar determinadas condições de erro de tempo de execução.
Detalhes do teste
Teste se o conteúdo dos pacotes de aplicativos para verificar se estão usando a codificação de arquivos 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 diálogo de opções de salvamento Avançado, escolha a opção Unicode (UTF-8 com assinatura) e clique em OK.
Teste do nível de recursos Direct3D
Suporte em nível de recursos Direct3D
Testa aplicativos Microsoft Direct3D para garantir que funcionam em todos os dispositivos com hardware gráfico mais antigos.
Tela de fundo
A Microsoft Store exige que todos os aplicativos que usam Direct3D sejam renderizados apropriadamente ou não funcionem em placas gráficas no nível de recursos 9-1.
Como os usuários podem alterar o hardware gráfico de seus dispositivos depois que o aplicativo for instalado, se você escolher um nível mínimo de recursos maior que 9-1, o aplicativo deverá detectar durante a 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 ele não é compatível, ele deverá detectar isso na inicialização e exibir uma mensagem para o cliente detalhando os requisitos.
Detalhes do teste
O teste valida se os aplicativos são renderizados com precisão no nível de recursos 9-1.
Ação corretiva
Verifique se o aplicativo renderiza corretamente no recurso nível 9-1 do Direct3D, mesmo que você espera executar em um nível de recurso superior. Para saber mais, consulte Desenvolvendo para diferentes níveis de recursos do Direct3D.
Corte Direct3D após a suspensão
Observação: este teste aplica-se apenas aos aplicativos UWP desenvolvidos para Windows 8.1 e posterior.
Tela de fundo
Se o aplicativo não chamar Trim no dispositivo Direct3D, ele não liberará a memória alocada para seu trabalho 3D anterior. Isso aumenta o risco de os aplicativos serem encerrados devido à demanda de memória do sistema.
Detalhes do teste
Verifica a conformidade dos aplicativos com os requisitos d3d e garante que os aplicativos chamem uma nova API Trim após o retorno de chamada no modo suspenso.
Ação corretiva
O aplicativo deve chamar a API Trim em sua interface IDXGIDevice3 a qualquer momento que esteja prestes a ser suspenso.
Teste de capacidade do aplicativo
Funcionalidades de uso especial
Tela de fundo
As funcionalidades de uso especial destinam-se a cenários bastante específicos. Somente contas empresariais podem usar esses recursos.
Detalhes do teste
Valide se o aplicativo está declarando qualquer uma das capacidades abaixo:
- EnterpriseAuthentication
- SharedUserCertificates
- DocumentsLibrary
Se qualquer uma dessas capacidades for declarada, o teste exibirá um aviso para o usuário.
Ações Corretivas
Considere a remoção da funcionalidade de uso especial caso ela não seja necessária ao seu aplicativo. Além disso, o uso dessas funcionalidades está sujeito à análise da política do serviço.
Validação dos metadados do Windows Runtime
Tela de fundo
Verifica se os componentes que vêm com o aplicativo estão em conformidade com o sistema de tipo do Windows Runtime.
Detalhes do teste
Verifica se os arquivos .winmd no pacote estão em conformidade com as regras do Windows Runtime.
Ações Corretivas
- Teste do atributo ExclusiveTo: verifique se as classes do Windows Runtime não implementam interfaces marcadas como ExclusiveTo em outra classe.
- Teste de localização de tipos: verifique se os metadados de todos os tipos do Windows Runtime estejam localizados no arquivo winmd que tem o nome correspondente ao namespace mais longo no pacote do aplicativo.
- Teste de diferenciação de maiúsculas e minúsculas de nomes de tipos: verifique se todos os tipos do Windows Runtime têm nomes exclusivos e sem diferenciação de maiúsculas e minúsculas no pacote do aplicativo. Assegure-se também de que nenhum nome de tipo UWP seja usado como nome de namespace no pacote do aplicativo.
- Teste de exatidão dos nomes de tipos: verifique se não há tipos do Windows Runtime no namespace global nem no namespace de nível superior do Windows.
- Teste de exatidão dos metadados gerais: verifique se o compilador que você está usando para gerar os seus tipos está atualizado de acordo com as especificações do Windows Runtime.
- Teste de propriedades: verifique se todas as propriedades em uma classe do Windows Runtime têm um método get (os métodos set são opcionais). Verifique se o tipo do valor retornado do método get corresponde ao tipo do parâmetro de entrada do método set em todas as propriedades em tipos do Windows Runtime.
Testes de integridade do pacote
Teste de arquivos apropriados para a plataforma
Os aplicativos que instalam binários mistos podem falhar ou não funcionar corretamente dependendo da arquitetura do processador do usuário.
Tela de fundo
Este teste valida os binários em um pacote de aplicativo para conflitos de arquitetura. Um pacote de aplicativo não deve incluir os binários que não podem ser utilizados na arquitetura do processador especificado no manifesto. Incluir binários sem suporte pode levar o aplicativo à falhas ou um aumento desnecessário no tamanho do pacote do aplicativo.
Detalhes do teste
Valida se o "número de bit" de cada arquivo no cabeçalho PE é apropriado em caso de referência cruzada com a declaração de arquitetura do processador do pacote do aplicativo
Ação corretiva
Siga estas diretrizes para garantir que seu pacote de aplicativos contenha apenas arquivos suportados pela arquitetura especificada no manifesto do aplicativo:
Se a Arquitetura do processador alvo para o aplicativo for Tipo de processador neutro, o pacote do aplicativo não poderá conter binário x86, x64 ou ARM ou arquivos do tipo imagem.
Se a Arquitetura do processador alvo para o aplicativo for tipo de processador x86, o pacote de aplicativo deve conter apenas binário x86 ou arquivos do tipo imagem. Se o pacote contiver binário x64 ou ARM ou tipos de imagem, ele falhará no teste.
Se a Arquitetura do processador alvo para o aplicativo for tipo de processador x64, o pacote de aplicativo deve conter binário x64 ou arquivos do tipo imagem. Observe que, neste caso, o pacote pode também incluir arquivos x86, mas a experiência aplicativo primário deve utilizar o binário x64.
No entanto, se o pacote contiver binário ARM ou arquivos do tipo imagem, ou se contiver apenas binários x86 ou arquivos de tipo de imagem, ele falhará no teste.
Se a Arquitetura do Processador Alvo para o aplicativo for do tipo de processador ARM, o pacote do aplicativo deverá conter apenas binário ARM ou arquivos do tipo imagem. Se o pacote contiver binário x64 ou x86 ou arquivos de tipos de imagem, ele falhará no teste.
Teste de estrutura de diretório compatível
Valida que os aplicativos não estão criando subdiretórios como parte da instalação e que são maiores do que MAX-PATH.
Tela de fundo
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 em caminhos maiores.
Detalhes do teste
Verifica se nenhum caminho no diretório de instalação do aplicativo excede MAX-PATH.
Ação corretiva
Use uma estrutura de diretório ou um nome de arquivo menor.
Teste do uso de recursos
Teste de tarefa em segundo plano de WinJS
O teste de tarefa em segundo plano WinJS verifica se os aplicativos JavaScript têm as declarações de fechamento apropriadas para que os aplicativos não consumam bateria.
Tela de fundo
Os aplicativos com testes JavaScript em segundo plano precisam chamar Close() como última declaração na tarefa em segundo plano. Os aplicativos que não executam isso podem impedir que o sistema retorne ao modo de espera conectado e resulte em drenagem 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 vai analisar o arquivo JavaScript de tarefa em segundo plano, que é especificado no pacote do aplicativo, e procurar uma instrução Close(). Se a instrução for encontrada, o teste será aprovado; caso contrário, reprovado.
Ação corretiva
Atualize o código JavaScript em segundo plano para chamar Close() corretamente.