DevOps do Azure e App Center em vez de farms de teste: simplifique e acelere o desenvolvimento móvel com serviços em nuvem

Testes de alta qualidade garantem a velocidade e a operação estável de aplicativos móveis, mas uma variedade de dispositivos, sistemas operacionais e suas versões inflam os farms de teste, aumentam o custo de desenvolvimento e levam muito tempo e esforço. Neste artigo, mostraremos como reduzir os custos de teste usando o serviço de nuvem do Visual Studio App Center, que combina mais de quatro mil dispositivos com diferentes sistemas operacionais, e simplificar a distribuição usando a plataforma DevOps do Azure.



Como testar aplicativos móveis e como um desenvolvedor se parece com um agricultor


Um dos principais problemas do desenvolvimento móvel é o mercado lotado. De acordo com estudos da Adweek, Sensor Tower e Think with Google, 80% dos aplicativos não chegam aos usuários devido à baixa qualidade.



O sucesso da maioria dos aplicativos campeões é passageiro. Durante um mês, os 25 principais são atualizados em 74%. Acontece que três quartos dos líderes perdem suas posições em 30 dias! Um dos principais motivos de decepção é o problema da velocidade: 68% dos usuários saem do aplicativo e escolhem outro se ele não carregar em seis segundos.

Mas o aplicativo não deve apenas carregar rapidamente, mas também funcionar corretamente. Portanto, implantar atualizações sem testes complexos em todos os tipos possíveis de dispositivos e sistemas operacionais é um risco injustificado. Mas, na prática, isso não é tão simples: a quantidade insana de smartphones, tablets, sistemas operacionais e suas versões nos obriga a criar enormes matrizes de teste.



Se considerarmos sistemas operacionais móveis, no iOS as coisas são mais ou menos ruins. Por exemplo, no ano passado, a maioria dos usuários ficou em silêncio no iOS 12. É bom, do ponto de vista dos testes, que todos os dispositivos sejam lançados por um único fabricante.



O Android é mais complicado: existem muitos tipos de sistemas operacionais e suas versões, entre os quais é difícil destacar os principais líderes. E cada fabricante (Samsung, Xiaomi, Sony etc.) possui seus próprios lançadores, hacks, alterações no sistema operacional e nos serviços não-padrão. Por esse motivo, os farms de teste móvel podem conter dezenas a centenas de dispositivos. Por exemplo, na foto - um farm de testes móvel de um dos desenvolvedores de jogos.



As fazendas exigem suporte contínuo. Os dispositivos devem ser atualizados, retornando periodicamente às configurações padrão, levando em consideração a depreciação e assim por diante. Os dispositivos nos farms são depreciados e se tornam obsoletos; é necessário atualizá-los constantemente para acompanhar os dispositivos que o público de aplicativos usa. E o mais importante, é difícil fornecer acesso a esse farm a uma equipe distribuída de desenvolvedores e testadores localizados em diferentes cidades. 



Depois de realizar testes "domésticos", você precisa enviar o aplicativo para testar em dispositivos reais. A melhor maneira é conceder acesso antecipado à versão beta a seus funcionários ou pessoas externas, por exemplo, fãs do aplicativo e fãs de novos produtos. Os usuários obtêm as versões mais antigas, os desenvolvedores têm a oportunidade de testar tudo o que desejam. Nesse estágio, precisamos de análises complexas: quais funções o usuário utiliza, quais telas costumam acessar, quanto tempo ele passa lá.

App Center - uma alternativa para fazendas




A própria Microsoft enfrentou o problema de testar aplicativos móveis: em algum momento, o número de aplicativos em desenvolvimento na MS excedeu cem. Para simplificar essa tarefa, uma empresa baseada na nuvem da Xamarin criou o serviço de nuvem do App Center: contém milhares de dispositivos reais nos quais os desenvolvedores podem executar testes sem se preocupar em comprar e manter seu próprio farm.

O App Center pode ser conectado ao GitHub, Bitbucket, GitLab ou Azure DevOps. O Visual Studio App Center abrange todas as estruturas de desenvolvimento populares, permitindo criar e testar aplicativos para todas as plataformas comuns.

É como se o dispositivo estivesse em sua infraestrutura, para que você possa organizar o processo de integração contínua (integração contínua): o desenvolvedor compromete o código no projeto, imediatamente o aplicativo cria automaticamente, se espalha nos dispositivos de teste e os testes são iniciados. 

Benefícios do App Center




Mais de quatro mil dispositivos na nuvem. Estes são dispositivos vivos reais. Cada modelo é apresentado em várias cópias. Durante os testes, você pode tirar capturas de tela, olhar para o aplicativo através dos olhos dos usuários. Há informações detalhadas sobre cada dispositivo: quem o produziu, quais recursos possui, qual carga de CPU, velocidade de execução do aplicativo.



A presença do SDK - kit de desenvolvimento de software , embutido no aplicativo e coleta dados: com que êxito a instalação e o lançamento, quantas falhas, travam. Nos dispositivos em que algo caiu, você pode coletar despejos, observar o que aconteceu durante o teste do aplicativo. Isso facilita muito a solução de problemas do aplicativo. 



Relatórios de teste detalhados.Se o teste não funcionar com algum tipo de erro, é feita uma captura de tela na tela do dispositivo em que o teste está sendo executado, no momento em que o teste tropeça em algo. E vemos se o aplicativo está funcionando ou não e se depara com problemas como resultado de uma execução de teste.



Coleção de logs de operação do dispositivo , despejos de memória, rastreios de pilha, relatórios de teste para diagnosticar e corrigir problemas. Você pode acessar dispositivos, extrair os logs e estudar qual foi a carga no processador, quanta memória foi ocupada. Essas coisas ajudarão você a entender rapidamente qual era o problema, por que o aplicativo travou ou o teste falhou.



Análise de uso de aplicativos: com que rapidez ela responde, quanto tempo leva para alternar entre telas, quais caminhos os usuários acessam o aplicativo e acessam as telas. Você pode descobrir em quais plataformas e versões do SO seu público está usando o aplicativo. Isso ajuda a ver o público e os dispositivos, a entender quais recursos esses dispositivos podem extrair facilmente. E, em geral, o aplicativo pode funcionar corretamente nos dispositivos do usuário. Essa análise permite priorizar o teste para várias plataformas e reduzir a matriz de teste.



Processo único de distribuição automatizada. Se o aplicativo for escrito para vários mercados, por exemplo, para iOS e Android, você precisará fazer muito trabalho manual no processo de publicação do aplicativo. O App Center tem a capacidade de automatizar a distribuição e, assim que o aplicativo passa em todos os testes, a compilação resultante é enviada às lojas automaticamente ou após a aprovação do desenvolvedor.



As atualizações automáticas são enviadas para testadores beta e grupos de usuários internos após cada confirmação. Nada precisa ser enviado manualmente; além disso, o processo permite que você receba feedback rápido dos testadores.

Como começar com o App Center


Registre-se no serviço e obtenha um período de teste gratuito. Vamos ver como fica no mundo real.



A interface da web do App Center é simples.



O processo de criação de um novo aplicativo não é menos simples: especificamos o nome, a plataforma e o sistema operacional.



Indicamos em qual repositório está o código, após o qual a sincronização automática é iniciada.



Ao desenvolver para iOS, geralmente é necessário um MacBook para criar o aplicativo. Mas o Appcenter permite que você não o tenha; ele implementa uma máquina virtual especial no OSX com todas as ferramentas necessárias. Você pode adicionar bibliotecas se precisar de algo fora do padrão, que não seja um sistema limpo.



Uma janela com um terminal aberto. Pode-se ver o que está acontecendo dentro da máquina virtual. Pacotes são adicionados, instalados usando o NuGet. Assim que a máquina virtual estiver pronta, o processo de compilação e montagem é iniciado. A propósito, se houver um problema com a compilação, os logs poderão ser facilmente baixados dessa interface.

Como é feita a compilação? A Microsoft negociou com a Apple e obteve uma licença para instâncias virtuais do MacOS que são executadas dentro da máquina virtual para fazer builds. Portanto, do ponto de vista das licenças, tudo está limpo, a Microsoft cuidou de tudo!



A compilação está pronta, é hora de testar o aplicativo. Abra o conjunto de dispositivos e selecione o dispositivo.



Para cada dispositivo, você pode visualizar os recursos do modelo, especificações, versão do sistema operacional, o número de dispositivos disponíveis simultaneamente na nuvem e outros parâmetros.



Depois que seu conjunto de dispositivos de teste for criado, os testes serão executados alternadamente em cada um deles. Por padrão, na versão básica, o teste ocorre em um único encadeamento. Você pode variar a matriz de teste executando alguns testes em um grande conjunto de dispositivos, outros em um pequeno.

O tempo estimado para concluir o teste é de um minuto por tela do aplicativo. Se você tiver 30 a 40 telas, o teste levará cerca de 30 a 40 minutos para cada dispositivo. Para acelerar, você pode colocar os testes em vários threads em paralelo em vários dispositivos. Você terá que pagar extra por esta opção.



Aqui você pode configurar a distribuição automática após passar nos testes: o release será definido automaticamente nas lojas de aplicativos.



Se você precisar testar o aplicativo em um grupo de usuários, antes de liberar para o mercado, criamos grupos que se encaixam em funcionários ou usuários leais ao aplicativo. Assim que realizarmos a distribuição, todos receberão um email com um link exclusivo para baixar a nova versão. Após esse teste, você pode coletar telemetria de "usuários de teste" e ver como o aplicativo funciona em seu hardware.



É aqui que você se conecta aos mercados.



Para diagnosticar o aplicativo, você precisa conectar o SDK. E todos os lugares do código onde algo pode cair, cercam, tentam e capturam. Quando o aplicativo falha no dispositivo do usuário, você pode receber despejos de falhas e realizar diagnósticos.



O Google Analytics mostra como os usuários processam os aplicativos: coloque o mesmo SDK e veja quais eventos aparecem dentro do aplicativo, em que ordem os visitantes se movem entre as telas.



Uma opção para coletar dados, métricas, todos os tipos de informações gerais. Com que rapidez o aplicativo é aberto, como funciona. Tudo isso é feito com base no Azure Cosmos DB, onde você pode assistir a análises bastante avançadas.



O SDK permite que os usuários enviem notificações push para atrair atenção ou informar sobre novas versões do aplicativo. Não apenas conveniente, mas também benéfico: essas mensagens são muitas vezes mais baratas que o SMS.



Dentro do aplicativo, os usuários podem ser segmentados de acordo com vários critérios: tipos de dispositivos, geografia etc., e realizar atividades de marketing com base nos grupos resultantes.

Componentes principais do DevOps do Azure


Os recursos do App Center - dispositivos nas nuvens, compilações, testes e distribuição de software - são apenas parte do processo de desenvolvimento que o Azure DevOps complementa. Essa plataforma onde você pode criar painéis e painéis de tarefas, armazenar conhecimento sobre o projeto no wiki, usar o repositório de arquivos e artefatos. E se você tiver que trabalhar com um transportador complexo de fabricação de software, então aqui você poderá configurar pipelines, especificar onde serão as construções.



  • Quadros - um conjunto de ferramentas para o planejamento do trabalho, discussão, monitoramento, etc. Quadros Kanban, painéis, painéis Scrum - tudo isso é facilmente personalizável para as especificidades do projeto e os recursos da equipe.
  • Pipelines — . . Node.js, Python, Java, PHP, Ruby, C/C++, .NET, Android iOS, Kubernetes.
  • Repos — Git. Marketplace - REST API. .
  • Artifacts — - Maven, npm, NuGet Python . CI/CD.

App Center Azure DevOps


Ao se registrar no Appcenter.ms, você pode usar todos os recursos do App Center por dois meses gratuitamente. Após o período de avaliação, uma construção custará US $ 40 por mês, mas você poderá executá-la um número ilimitado de vezes. Isso é claramente mais lucrativo do que ter seu próprio farm de testes móvel.

O Azure DevOps é um serviço totalmente gratuito se você tiver uma equipe de no máximo cinco desenvolvedores ou estiver executando um projeto OpenSource. Repositórios, repositórios de código, pipelines, placas - tudo isso é fornecido gratuitamente. 

Se você quiser saber mais sobre isso ou começar a usar a plataforma agora, estará interessado no Dev Bootcamp - nossa maratona on-line para desenvolvedores. Durante o evento a ser realizado25-29 , , , Open Source-, OpenSource . Microsoft, . , !

All Articles