Anteriormente, descrevemos nossos relatórios de Adoção. Esses relatórios fornecem informações sobre downloads, taxas de adoção e classificações de usuário, que, em conjunto, podem ajudá-lo a determinar a popularidade do seu aplicativo. Os relatórios de Adoção são úteis, mas são apenas uma parte das ferramentas de relatório fornecidas na Windows Store. Também fornecemos relatórios relativos à qualidade dos aplicativos. Esses relatórios ajudam você a medir e aprimorar a qualidade do seu aplicativo. Nesta postagem, a gerente de programas Kalyan Venkatasubramanian descreve os relatórios de qualidade da Loja e como você pode usá-los para aprimorar seus aplicativos.

-- Antoine Leblond


Antes de mais nada, precisamos definir o que significa "qualidade". Afinal, há muitas facetas que determinam o que é qualidade: como usabilidade, confiabilidade, segurança, etc. Na Windows Store, optamos por concentrar nossos relatórios de qualidade no fornecimento de dados analíticos baseados na confiabilidade do seu aplicativo segundo a experiência dos clientes.

Você acessa os relatórios de qualidade na página de análise do aplicativo. Nessa página, clique no link Qualidade, que o levará à tela de relatórios de qualidade.

Relatórios de qualidade

Um exemplo da aparência da tela de relatórios de qualidade no dashboard.

Esses relatórios ajudam você a medir a qualidade do aplicativo controlando a taxa de falhas — o número de falhas que os clientes encontraram. Uma falha é definida como um fechamento inesperado de um aplicativo devido a uma das seguintes razões:

  1. Um travamento
  2. Um aplicativo sem resposta (travado)
  3. Uma exceção JavaScript sem tratamento

(Observação: As exceções JavaScript sem tratamento, mencionadas simplesmente como exceções JavaScript, são aplicáveis somente aos aplicativos usando JavaScript. )

Com esses relatórios, você pode:

  1. Compreender a qualidade do seu aplicativo quanto às diversas versões publicadas na Loja. Isso lhe informa se os clientes do aplicativo têm uma experiência melhor nas versões sucessivas.
  2. Aprimorar a qualidade do seu aplicativo. Você pode aprimorar a qualidade do aplicativo conhecendo e compreendendo as principais falhas (como encontradas pelos clientes) na última versão publicada na Loja. A compreensão das principais falhas permite que você as corrija e publique atualizações do seu aplicativo na Loja.

Compreender a qualidade do seu aplicativo

Como definimos na última seção, você pode determinar a qualidade de um aplicativo pelas taxas de falhas. As taxas de falhas são computadas para cada um dos tipos de falha: travamentos, interrupções ou exceções JavaScript sem tratamento (no caso de aplicativos JavaScript). Os dados para o cálculo da taxa de falhas são coletados de uma amostra aleatória de máquinas, chamada painel de qualidade, onde seu aplicativo é usado. Consideramos um painel de qualidade de pelo menos 500 máquinas como um tamanho adequado de amostra para calcular taxas de falhas. Se o painel de qualidade para seu aplicativo tiver menos de 500 máquinas, os relatórios conterão uma mensagem de alerta que diz “Os dados exibidos são de um conjunto de amostra que não é estatisticamente significante”. Continuaremos avaliando esse limite para garantir que lhe fornecemos as informações mais precisas o mais rápido possível.

Computamos essas taxas de falhas como o número médio de falhas encontrado em uma máquina durante os primeiros 15 minutos de uso ativo. Analisando os dados de todos os aplicativos no ecossistema do PC, vimos que a confiabilidade medida de um aplicativo tende a se estabilizar ao longo do tempo: após um determinado período de uso, há muito pouca variação na taxa de falhas. Para os aplicativos estilo Metro no Consumer Preview, essa estabilização ocorre após cerca de 15 minutos de uso. Este período garante que os dados que lhe fornecemos sejam precisos e oportunos. (Configurar o painel para incluir um período de tempo mais extenso aumentaria o tempo que precisamos aguardar antes de nos reportar a você.) No que diz respeito ao tamanho do painel, continuaremos monitorando esse limite conforme o crescimento do mercado de aplicativos estilo Metro. Além disso, ao calcularmos taxas de falhas, removeremos qualquer discrepância para garantir que não distorça os resultados.

Veja um exemplo de taxa de falhas.

Um exemplo de gráfico de taxa de falhas

Aprimorar a qualidade do seu aplicativo

Na seção anterior, discutimos como você pode compreender a mudança de qualidade do seu aplicativo nas diversas versões. Também percebemos que você gostaria de conhecer as principais falhas que os clientes enfrentaram na última versão do aplicativo. Assim, fornecemos uma lista de falhas comuns na última versão do seu aplicativo, ordenada por prevalência. Determinamos a prevalência da falha contabilizando o número total de ocorrências encontradas pelos clientes.

Lembre-se de que as taxas de falhas são calculadas por máquinas no painel de qualidade, atendendo a critérios rigorosos quanto ao uso inicial do aplicativo. Os dados da lista de falhas mais comuns vêm de todos os clientes do aplicativo. Mas o que acontece se a maioria dos clientes do seu aplicativo não puder atender aos requisitos de uso devido às falhas que enfrentam? Nesse caso, a taxa de falhas será 0, mas você ainda verá as principais falhas do aplicativo, como mostrado aqui:

Um exemplo de relatório que mostra as falhas mais comuns

Ao fornecer a lista de falhas mais comuns encontradas pelos clientes, independente do cálculo das taxas de falhas (por exemplo, para travamentos, como mostrado na imagem abaixo) e ampliando o alcance da coleta, permitimos que você fique ciente das falhas vistas por todos os seus clientes e as corrija. Isso também possibilita que você conheça e tome medidas contra as falhas do aplicativo logo nas primeiras versões.

Travamentos e interrupções

Para travamentos e interrupções, mostramos a você as 5 falhas mais comuns na última versão do seu aplicativo. A contagem é o total de ocorrências da falha entre todos os clientes do aplicativo. O link Download oferece um arquivo .cab contendo o despejo do processo para essa falha.

Um exemplo mostrando as falhas mais comuns para um aplicativo

Uma falha é identificada exclusivamente por um nome de falha. Para travamentos e interrupções, um exemplo de nome de falha é

NULL_CLASS_PTR_READ_c0000005_mydll.dll!myfunc::DoOp

O nome de falha é dividido nos seguintes elementos

  • Classe de problema (NULL_CLASS_PTR_READ)
  • Código de erro (c0000005)
  • Símbolo (mydll.dll!myfunc::DoOp)

Observação: Como determinamos a causa principal da falha pode ser encontrado aqui. Embora a postagem do blog não seja voltada especificamente aos aplicativos estilo Metro, é ótima saber os detalhes sobre a coleta e o processamento de falhas.

Você pode determinar o motivo do travamento ou da interrupção em seu aplicativo baixando o arquivo .cab associado. O arquivo .cab contém um despejo de processo associado à falha no aplicativo. Você pode obter os rastreamentos de pilha e outros detalhes da falha do despejo de processo.

Os pré-requisitos para processar o arquivo .cab e extrair os rastreamentos de pilha são:

  1. Instalar o WinDbg.exe em sua máquina.
    O WinDbg.exe é a ferramenta de depuração recomendada para obter os rastreamentos de pilha do despejo de processo. Se você não tiver o WinDbg.exe em sua máquina, pode obtê-lo aqui.
  2. Símbolos para o aplicativo.
    Para obter os rastreamentos de pilha do despejo de processo, você deve ter os símbolos correspondentes à versão atual do aplicativo na Loja.

Obter rastreamentos de pilha para travamentos e interrupções

Essas etapas não pretendem ser um tutorial completo de depurador. No entanto, elas permitirão que você obtenha os rastreamentos de pilha para falhas do aplicativo.

  1. Clique no link Download próximo ao nome da falha para obter qualquer arquivo associado ao aplicativo (travamento ou interrupção). Suponhamos que o nome da falha seja:
    STATUS_INTEGER_DIVIDE_BY_ZERO_c0000094_FaultoidEx.Engine.dll!?__abi_FaultoidEx_Engine___IEngineServerPublicNonVirtuals____abi_DivideByZero
  2. Salve o arquivo .cab em um local de sua escolha.
  3. Inicie o WinDbg.exe.
  4. Clique em Arquivo > Abrir despejo de memória.

    A tela principal do WinDbg.
  5. Na caixa de diálogo Abrir despejo de memória, indique o local do arquivo salvo na etapa 2 e abra-o.

    Um exemplo de abertura de arquivo no WinDbg.
  6. Clique em Arquivo > Caminho de arquivo de símbolos e digite o caminho para os símbolos correspondentes à versão disponível na Loja. Marque a caixa de seleção Recarregar e clique em OK.

    Um exemplo de especificação de caminho de símbolo no WinDbg.

    Se você deseja indicar os símbolos disponíveis publicamente da Microsoft (para binários que não seu aplicativo), use o seguinte formato para o caminho dos símbolos:
    Srv*;<<seu caminho de símbolos aqui>>
    Se o caminho de símbolos for c:\symbols, o caminho equivalente segundo a orientação acima será
    Srv*;c:\symbols
  7. No prompt da janela de comando, digite !analyze –v e pressione Enter.

    Um exemplo de obtenção de rastreamento de pilha no WinDbg.

    Os erros na captura de tela anterior são devido à incompatibilidade dos símbolos de alguns DLLs. Embora a configuração do caminho de símbolos, como mencionado na etapa 7, reduziria o número de erros encontrados, você deve ficar atento se o erro corresponde aos DLLs e exes em seu aplicativo. Se os erros e avisos forem sobre arquivos binários no aplicativo, isso significa que o depurador não pôde encontrar os símbolos corretos para seu aplicativo. Você deve identificar o caminho correto de onde os símbolos foram armazenados e adicioná-lo como mencionado na etapa 7.
  8. O rastreamento de pilha é exibido na janela de comando, como a seguir:

    Um exemplo de rastreamento de pilha no WinDbg.


Você pode ver na pilha de chamadas que a falha foi uma exceção "dividir por zero” em uma função denominada DivideByZero em FaultoidEx.Engine.dll. Isso corresponde ao nome da falha que vimos na etapa 1, ajudando você a entender a falha e o que é possível fazer para corrigi-la.

Exceções JavaScript

A taxa de falhas e as exceções JavaScript mais comuns são aplicáveis somente aos aplicativos que usam o JavaScript. Para exceções JavaScript, você vê as 15 falhas preponderantes na última versão do seu aplicativo. Escolhemos apresentar mais falhas JavaScript na lista porque nossos dados de telemetria nos dizem que as exceções JavaScript ocorrem com mais frequência do que outras falhas. O maior número de falhas apresentado para exceções JavaScript ajudará você a aprimorar a qualidade do aplicativo da mesma maneira consistente que os travamentos e interrupções.

Um exemplo de relatório que mostra as exceções JavaScript mais comuns

Por padrão, listamos primeiro as 5 principais falhas de exceções JavaScript. Clicar no botão Mostrar tudo resultará na expansão dessa lista para mostrar até 15 falhas.

Um exemplo de nome de falha para exceções JavaScript é o seguinte

WinRT error_8007007E_msappx://Contoso.ContosoApp8wekyb3d8bbwe/ContosoApp/program.js!scenario1Run

Para exceções JavaScript, um nome de falha é definido como a seguir

  • ErrorTypeText (WinRT error)
  • ErrorNumber (8007007E)
  • Filename_FunctionName (program.js!scenario1Run)

Obter rastreamentos de pilha para exceções JavaScript

Você pode compreender a razão da exceção JavaScript associada à falha executando as seguintes etapas:

  1. Clique no link Download próximo ao nome da falha para obter qualquer arquivo associado ao aplicativo (exceção JavaScript).
  2. Salve o arquivo .cab em um local de sua escolha.
  3. O arquivo contém um arquivo com um nome começando por ErrorInfo (o arquivo ErrorInfo). Extraia o arquivo e salve-o em um local de sua escolha.
  4. Abra o arquivo ErrorInfo no local escolhido na etapa 3 usando o bloco de notas.
  5. O arquivo de texto ErrorInfo que tem o rastreamento de pilha associado à falha. Veja um exemplo:
    Um exemplo de arquivo ErrorInfo.

Neste exemplo, o erro foi devido a uma função indefinida. A pilha de chamadas que leva ao erro também está no arquivo ErrorInfo.

Conclusão

Acreditamos que a compreensão e o aprimoramento da qualidade é essencial para o desenvolvimento de um aplicativo bem-sucedido. Criamos os relatórios de qualidade para fornecer a você dados úteis e acionáveis para aprimorar seu aplicativo. Estamos confiantes de que esses relatórios o ajudarão a priorizar as melhorias e a fornecer atualizações rápidas para os aplicativos na Loja.

Esperamos seus comentários sobre a experiência com o uso dos relatórios de qualidade e outros no portal de análises.

--Venkat