[Teste de aplicativo] Como testar o tempo de inicialização?

Introdução ao fundo

Os usuários do Android podem frequentemente encontrar os seguintes problemas: 1) O plano de fundo do aplicativo está aberto e o telefone rapidamente fica sem energia - o aplicativo consome muita energia; 2) O aplicativo é iniciado pela primeira vez / não pela primeira vez, e é particularmente lento para entrar no aplicativo - o aplicativo inicia lentamente; 3) No processo do aplicativo, mais e mais travado - capacidade insuficiente de CPU / vazamento de memória; 4) Congelamento da página do aplicativo - baixa taxa de quadros, congelamento da página. Portanto, o desempenho do aplicativo Android desenvolvido deve ser testado, caso contrário, afetará diretamente a experiência do usuário.

O teste de desempenho de aplicativos Android geralmente inclui: tempo de inicialização, memória, CPU, consumo de energia, tráfego, fluência, etc. Desta vez, vamos primeiro apresentar o método de teste do tempo de inicialização.

O tempo de inicialização é um indicador importante para o teste de desempenho do aplicativo. O tempo de inicialização é dividido em duas situações, uma é a hora de inicialização a frio (geralmente uma reinicialização do sistema, ou seja, não há processo de aplicativo antes da inicialização) e a outra é Hot start, ou seja, o App é colocado em primeiro plano (clique em voltar para sair e clique no ícone para iniciar). Em testes de controle de qualidade, geralmente concentre-se no horário de início da inicialização a frio. O seguinte apresenta três métodos de teste do tempo de inicialização para sua referência e pode ser usado de maneira direcionada.

Use o comando adb

1.1.1 Método de teste Insira o comando adbshell am start -W packagename / MainActivity para calcular a hora de início. Conforme mostrado na figura a seguir:
Insira a descrição da imagem aquiFigura 1 A primeira vez que o aplicativo é iniciado é o que costumamos chamar de inicialização a frio. Nesse momento, o processo do seu aplicativo não é criado. Este também é o cenário de uso da maioria dos aplicativos. O usuário clica no ícone de seu aplicativo na área de trabalho Depois disso, o processo deve ser criado primeiro e, em seguida, MainActivity é iniciado.Neste momento, o resultado retornado por adbshell am start -w packagename / MainActivity é a hora de início do aplicativo padrão. Observe que os telefones anteriores ao Android 5.0 não têm o valor WaitTime. Com relação à diferença entre ThisTime / TotalTime / WaitTime, a explicação a seguir. WaitTime = endTime-startTime

StartTime registra o ponto de tempo em que startActivityAndWait () está prestes a ser chamado.
EndTime registra o ponto de tempo em que a chamada de função startActivityAndWait () retorna.
WaitTime = startActivityAndWait () leva muito tempo.

WaitTime é o tempo total consumido, incluindo o tempo de pausa da atividade do aplicativo anterior e o tempo de inicialização do novo aplicativo; ThisTime representa o tempo de inicialização da última Activity em uma série de atividades de inicialização; TotalTime representa o tempo consumido para o novo aplicativo inicialização, incluindo a inicialização do novo processo e início da atividade, mas não incluindo a pausa demorada da atividade do aplicativo anterior. Em outras palavras, os desenvolvedores geralmente só precisam se preocupar com o TotalTime, e este é o tempo que leva para que seu aplicativo seja realmente iniciado.

Para resumir, se você se preocupa apenas com o tempo que leva para iniciar um aplicativo em si, consulte TotalTime; se você se preocupa com o tempo que leva para o sistema iniciar o aplicativo, consulte WaitTime; se você se preocupa com o tempo que leva para iniciar o aplicativo com uma atividade de interface, consulte ThisTime.

Resumindo

O tempo calculado por este método é o tempo desde o momento em que o sistema começa a processar a atividade até terminar de executar as funções de layout e desenho. O entendimento simples é o momento de iniciar a atividade, e não inclui o tempo desde o clique no ícone até o sistema recebendo a mensagem. Obviamente, este tempo não pode simular completamente o tempo de início do cenário de operação do usuário. Em segundo lugar, esse método apenas calcula o tempo geral de inicialização de uma atividade, e não conta o tempo de cada função separadamente, o que não é fácil de localizar o problema. Em resposta a esses dois problemas, vamos dar uma olhada em como os dois métodos a seguir são resolvidos.

O que enfocamos no teste é, na verdade, o tempo de inicialização da experiência do usuário, portanto, o tempo acima não pode atender às nossas necessidades. Por ser uma experiência do usuário, podemos usar o registro de tela para gravar a tela e analisar o vídeo de uma forma mais intuitiva.
1.2 Use screenrecord para gravação de tela

Método de teste
(1) Insira o comando adb shellscreenrecord --bugreport /sdcard/lanch.mp4 - o parâmetrobugreport fará com que a saída de vídeo tenha algumas informações de tempo e de quadro para que possamos analisar o tempo de inicialização.
(2) Clique no ícone de coleção, depois que o aplicativo for totalmente iniciado, use ctrl + c para terminar a gravação do vídeo.
(3) Use o comando adb pullsdcard / lanch.mp4 ./ para exportar o vídeo.
(4) Exporte o vídeo para o computador e abra-o com um software de vídeo que pode reproduzir por quadro (quicktime no mac, kmplayer para ganhar), e jogo quadro a quadro. Como mostrado abaixo:

Insira a descrição da imagem aqui
Figura 2 Reproduza vídeo por quadro, o canto superior esquerdo do vídeo exibirá o tempo (com precisão de ms) e o número de quadros. Conforme mostrado na figura, 11: 09: 38.031 representa horas, minutos e segundos ef = 333 é o número de quadros. No vídeo, você verá que o ícone ficará escuro e depois destacado, quando estiver destacado o sistema começará a processar o evento de clique do ícone. Você pode usar isso como o tempo de clique e, de acordo com os requisitos de experiência, você pode ver que a página inicial do aplicativo está completamente desenhada como o tempo de término.Este tempo menos o tempo de clique é o tempo de início do aplicativo.

Resumo:
Embora este método possa simular o cenário operacional do usuário, o custo operacional é alto e é impossível saber com precisão e clareza quais funções são chamadas por muito tempo. Com os dois métodos acima, é impossível localizar qual função leva mais tempo desde o tempo de inicialização sozinho. Quando o tempo de inicialização é maior do que o limite de tempo de inicialização predeterminado, você precisa registrar passo a passo para analisar e descubra a causa. O método a seguir é o método atual de cálculo do tempo de inicialização do Tieba, você pode ver claramente o tempo de chamada de cada função.

1.3 Ponto oculto do código, ver registro de saída

1.3.1 O método de teste é pontuado no código e o registro de saída é visualizado. Veja a postagem como exemplo. A figura a seguir mostra as operações a serem experimentadas durante toda a inicialização.

Insira a descrição da imagem aquiConsulte a tabela abaixo para as etapas específicas na Figura 3.
Insira a descrição da imagem aquiConforme mostrado na Figura 4, o tempo de inicialização é testado pela saída do log, e o QA pode facilmente visualizar o tempo específico demorado de cada módulo, conforme mostrado na figura abaixo.

Insira a descrição da imagem aqui Resumindo:

Ao fazer isso, você pode ver claramente o consumo de tempo total da Atividade e o consumo de tempo de cada função, de modo que, se você encontrar um problema durante o teste, possa localizar facilmente a função específica. Existem também pontos específicos no processo de teste. Por exemplo, a transmissão ao vivo da postagem será integrada na barra de postagem na forma de um plug-in. Ao testar, você pode prestar mais atenção ao tempo de inicialização do plugin.

Em relação ao índice de desempenho do tempo de inicialização, eu pessoalmente acho que a forma de saída do log é ideal. Depois que o QA encontra uma suspeita de problema no processo de teste, pode dar à função específica um tempo demorado.

Eu recomendo um grupo de troca de teste de software, QQ: 642830685. O grupo irá compartilhar recursos de teste de software, perguntas de entrevista de teste e informações do setor de teste de vez em quando. Você também pode seguir meu programa de conta pública WeChat Yuan Yifei, eu irei organizá-lo. Compartilhar com você os recursos de teste de software. Aguardo você no grupo.

Acho que você gosta

Origin blog.csdn.net/weixin_53519100/article/details/112895437
Recomendado
Clasificación