Tutorial de teste de aplicativos iOS

โšก Resumo Inteligente

O teste de aplicativos iOS verifica se um aplicativo instala, funciona e se comporta corretamente em dispositivos Apple. Ele combina tรฉcnicas manuais com frameworks automatizados como XCTest e XCUITest para detectar falhas, incompatibilidades e vazamentos de memรณria precocemente.

  • ๐Ÿ“ฑ Foundation: O iOS funciona apenas em hardware da Apple, portanto, cada aplicativo deve ser validado em relaรงรฃo ร s versรตes e dispositivos iOS compatรญveis.
  • โœ… Lista de controle: As verificaรงรตes genรฉricas abrangem instalaรงรฃo, horรกrio de inicializaรงรฃo, orientaรงรฃo, permissรตes e visibilidade na App Store.
  • ๐Ÿค– Automaรงรฃo: XCTest e XCUITest substituem os frameworks OCUnit e UIAutomation, agora obsoletos, para testes de unidade e de interface do usuรกrio.
  • ๐Ÿงช Mรฉtodos manuais: Testes exploratรณrios, de usabilidade, conceituais, beta e A/B capturam feedback real do usuรกrio.
  • ๐Ÿš€ Impacto: Testes em dispositivos reais, juntamente com a distribuiรงรฃo beta pelo TestFlight, garantem desempenho estรกvel antes do lanรงamento na App Store.

Testes de aplicativos iOS - Manuais e automatizados

O que รฉ o teste de aplicativos iOS?

Teste de aplicativos iOS รฉ um processo de teste no qual um aplicativo iOS รฉ testado em dispositivos Apple reais para verificar se funciona conforme o esperado ou nรฃo para aรงรตes especรญficas do usuรกrio, como tempo de instalaรงรฃo, interface do usuรกrio, experiรชncia do usuรกrio, aparรชncia, comportamento, funcionalidade, tempo de carregamento, desempenho, aplicativo Listagem da loja, suporte ร  versรฃo do sistema operacional, etc.

Por que testar aplicativos iOS?

Teste de aplicativos iOS ร‰ necessรกrio porque o iOS รฉ a plataforma da Apple para aplicativos mรณveis, lanรงada em 29 de junho de 2007. Ao contrรกrio de AndroidA Apple nรฃo licencia o iOS para instalaรงรฃo em hardware que nรฃo seja da Apple. O iOS e os aplicativos iOS sรณ podem ser instalados em dispositivos Apple; portanto, seu aplicativo iOS deve ser compatรญvel com as versรตes do iOS e os dispositivos iOS que seus usuรกrios possuem.

Dispositivos Apple que executam aplicativos iOS

A figura abaixo mostra perguntas comuns que os desenvolvedores enfrentam ao criar um aplicativo para iOS.

Perguntas frequentes ao criar um aplicativo para iOS

Nรฃo importa quanto tempo vocรช invista em design e implementaรงรฃo; erros sรฃo inevitรกveis โ€‹โ€‹e bugs aparecerรฃo. A figura abaixo mostra alguns bugs comuns em aplicativos iOS.

Erros comuns em aplicativos iOS

Aplicativo travando

Um dos problemas mais frustrantes ao usar dispositivos da Apple รฉ a possibilidade de um aplicativo travar frequentemente durante a execuรงรฃo. Muitas vezes, o aplicativo trava devido a bugs ou vazamentos de memรณria no cรณdigo.

Incompatibilidades de aplicativos

Seu aplicativo iOS pode funcionar perfeitamente na versรฃo atual do iOS, mas se o iOS for atualizado, ele poderรก nรฃo funcionar devido a problemas de incompatibilidade.

vulnerabilidade de seguranรงa

Uma vulnerabilidade de seguranรงa no iOS permite que um hacker ataque seus dispositivos iOS e roube suas informaรงรตes privadas. Ao longo dos anos, graves vulnerabilidades de seguranรงa no iPhone foram descobertas em diferentes versรตes do iOS.

Perda de memรณria

Vazamentos de memรณria sรฃo blocos de memรณria alocada que o programa nรฃo utiliza mais. Vazamentos de memรณria fazem com que seu aplicativo iOS trave.
Eles sรฃo bugs e devem sempre ser corrigidos.

Teste iOS MindMap

Mapa mental de itens a serem considerados para testes em iOS

Conforme mostrado na figura acima, o iOS Testes O mapa mental mostra todos os itens que um testador deve considerar ao realizar testes no iOS.

Lista de verificaรงรฃo de testes de aplicativos iOS

Esta lista de verificaรงรฃo foi especificamente concebida para testar as caracterรญsticas de aplicaรงรตes mรณveis iOS. Obviamente, testa apenas caracterรญsticas genรฉricas da aplicaรงรฃo e nรฃo a sua funcionalidade.

  • Verifique o tempo de instalaรงรฃo do aplicativo no dispositivo. Certifique-se de que a instalaรงรฃo seja concluรญda dentro de um tempo aceitรกvel.
  • Apรณs a instalaรงรฃo do aplicativo, verifique se ele possui um รญcone e um nome. Certifique-se tambรฉm de que tanto o รญcone quanto o nome sejam autoexplicativos e reflitam a principal funรงรฃo do aplicativo.
  • Inicie o aplicativo e verifique se uma tela inicial รฉ exibida.
  • Verifique o tempo limite da tela de apresentaรงรฃo e o tempo necessรกrio para carregar a tela inicial. A tela inicial do aplicativo deve carregar em um tempo aceitรกvel. Se a tela inicial demorar muito para carregar, hรก maior probabilidade de o usuรกrio fechar ou atรฉ mesmo desinstalar o aplicativo. Verifique tambรฉm como o conteรบdo รฉ carregado na tela inicial.
  • A funรงรฃo principal do aplicativo deve ficar aparente imediatamente. Deveria falar por si.
  • Verifique se o aplicativo รฉ compatรญvel com as orientaรงรตes paisagem e retrato. Caso seja, teste o aplicativo em ambas as orientaรงรตes. A interface do usuรกrio do aplicativo deve se ajustar automaticamente.
  • Sem conexรฃo com a internet, inicie o aplicativo. Certifique-se de que o aplicativo se comporte conforme o esperado. Existe a possibilidade de o aplicativo travar ao iniciar ou exibir uma tela em branco.
  • Se o aplicativo utiliza serviรงos de localizaรงรฃo, verifique se o alerta de permissรฃo de localizaรงรฃo รฉ exibido. Esse alerta deve ser mostrado ao usuรกrio apenas uma vez.
  • Se o aplicativo enviar notificaรงรตes push, verifique se o alerta de permissรฃo para notificaรงรตes push estรก sendo exibido. Esse alerta tambรฉm deve ser exibido ao usuรกrio apenas uma vez.
  • Inicie o aplicativo, feche-o e inicie-o novamente. Verifique se o aplicativo se comporta conforme o esperado.
  • Feche o aplicativo tocando emping Pressione o botรฃo Inรญcio do dispositivo e abra o aplicativo novamente. Verifique se o aplicativo funciona conforme o esperado.
  • Apรณs a instalaรงรฃo, verifique se o aplicativo estรก listado no aplicativo Ajustes do iPhone.
  • Apรณs o lanรงamento do aplicativo, verifique se ele estรก disponรญvel na "App Store". Verifique se o aplicativo estรก listado nas versรตes de sistema operacional compatรญveis. Certifique-se de que o aplicativo esteja disponรญvel na "App Store" de dispositivos com versรตes de sistema operacional compatรญveis. O aplicativo tambรฉm nรฃo deve estar listado na "App Store" de dispositivos com versรตes de sistema operacional incompatรญveis.
  • Verifique se o aplicativo entra no modo de suspensรฃo ao ser executado em segundo plano para evitar o esgotamento da bateria.
  • Caso o desempenho da aplicaรงรฃo esteja lento ou sempre que o conteรบdo estiver carregando, verifique se existe um รญcone de status de progresso (โ€œCarregandoโ€ฆโ€), preferencialmente com uma mensagem especรญfica.
  • Pesquise o aplicativo pelo nome na barra de pesquisa do dispositivo. Verifique se o aplicativo estรก listado.
  • Verifique se a aparรชncia dos botรตes que executam aรงรตes padrรฃo nรฃo foi alterada no aplicativo (por exemplo: atualizar, organizar, lixeira, responder, voltar etc.).
  • Verifique se os botรตes padrรฃo nรฃo estรฃo sendo usados โ€‹โ€‹para funรงรตes diferentes daquelas para as quais sรฃo normalmente utilizados.

Estratรฉgia de teste iOS

Depois de saber o que verificar, o prรณximo passo รฉ como testar. A figura abaixo apresenta alguns tipos comuns de estratรฉgia de teste para iOS.

Tipos comuns de estratรฉgia de teste para iOS

Teste automatizado

Os testes automatizados sรฃo uma das maiores vantagens nos testes de iOS. Eles permitem detectar bugs e problemas de desempenho rapidamente. Os benefรญcios dos testes automatizados sรฃo mostrados abaixo:

  • Os testes automatizados podem ser executados em vรกrios dispositivos, economizando seu tempo
  • Os testes automatizados podem ser direcionados a SDKs. Vocรช pode executar testes em diferentes versรตes do SDK.
  • Os testes automatizados aumentam a produtividade dos testes e reduzem os custos de desenvolvimento de software.
  • Existem muitas estruturas de teste de cรณdigo aberto que oferecem suporte a testes automatizados no iOS.

Testes unitรกrios com OCUnit

Quando o SDK original do iOS foi lanรงado, faltava Teste de Unidade capacidades. Entรฃo a Apple trouxe o OCUnit Soluรงรฃo de teste unitรกrio para o SDK do iOS versรฃo 2.2.

OCUnit era uma estrutura de testes para Objective-C no Mac (agora macOSA maior vantagem da estrutura OCUnit foi sua forte integraรงรฃo com o Xcode ambiente de desenvolvimento, conforme mostrado abaixo.

Observaรงรฃo: OCUnit (SenTestingKit) estรก obsoleto; visto que Xcode 5, da Apple Teste XCT O framework o substituiu como padrรฃo โ€” veja a seรงรฃo XCTest abaixo. As capturas de tela aqui mostram uma versรฃo mais antiga. Xcode versรฃo.

Integraรงรฃo do OCUnit no Xcode meio Ambiente

Algumas das vantagens do OCUnit sรฃo mostradas na figura abaixo.

Benefรญcios dos testes unitรกrios com OCUnit

Teste de IU com UIAutomation

Teste de IU com UIAutomation

A Automaรงรฃo da Interface do Usuรกrio era uma JavaScript Biblioteca fornecida pela Apple Inc., que pode ser usada para realizar testes automatizados em dispositivos reais e no Simulador do iOS. Essa estrutura foi adicionada no SDK do iOS 4.0. Usando a Automaรงรฃo de Interface do Usuรกrio, vocรช pode automatizar os testes do aplicativo nรฃo apenas no simulador, mas tambรฉm em um dispositivo real.

Observaรงรฃo: A Apple descontinuou a Automaรงรฃo da Interface do Usuรกrio em Xcode 8 (2016) e posteriormente removeu-o. Use o XCUITest para novos projetos de teste de interface do usuรกrio; as classes e capturas de tela abaixo refletem a cadeia de ferramentas antiga.

A automaรงรฃo da interface do usuรกrio trouxe estes benefรญcios:

  • Esforรงo reduzido em Teste Manual
  • Exigiu menos esforรงo para executar todos os seus testes.
  • Simplificamos o procedimento de teste da interface do usuรกrio (basta clicar em alguns botรตes e executar todos os seus conjuntos de testes).

A ferramenta UIAutomation funcionava a partir de scripts escritos em JavaScript. Ele simulava eventos do usuรกrio no aplicativo iOS alvo.

Automaรงรฃo de interface do usuรกrio: vantagens e desvantagens

Prรณs Contras
1. Bom suporte para gestos e rotaรงรฃo Nรฃo รฉ cรณdigo aberto, menos suporte do desenvolvedor
2. ร‰ possรญvel executar testes de UIAutomation no dispositivo, nรฃo apenas no simulador. Nรฃo รฉ possรญvel integrar-se extremamente bem com outras ferramentas
3. Desenvolvido em JavaScript, uma linguagem de programaรงรฃo popular.

Classes comuns no framework UIAutomation

A figura acima representa algumas classes comuns no framework UIAutomation.

  • O Elemento UIA class รฉ a superclasse para todos os elementos da interface do usuรกrio no contexto da automaรงรฃo
  • O UIATarget classe representa os elementos de alto nรญvel da interface do usuรกrio do sistema em teste
  • O UILogger classe fornece informaรงรตes de teste e erro na funcionalidade de recuperaรงรฃo
  • O UIAActivityView class permite acesso e controle de visualizaรงรตes de atividades em seu aplicativo.
  • O Folha de aรงรฃo UIAA class permite acesso e controle de planilhas de aรงรฃo em seu aplicativo.
  • Utilizador Aรงรฃo do Evento
  • Classe UISlider
  • Classe UIAButton
  • Classe UIAKey
  • Classe UIAKeyboard

Outras estruturas de testes automatizados

  • Frank: Automatizado Teste de aceitaรงรฃo Framework para iPhone e iPad (nรฃo recebe mais manutenรงรฃo ativa)
  • KIF: รฉ um iOS teste de integraรงรฃo estrutura. Ele permite a fรกcil automaรงรฃo de aplicativos iOS, aproveitando os atributos de acessibilidade que o sistema operacional disponibiliza para pessoas com deficiรชncia visual.
  • Appium: um software livre popular, multi-plataforma Framework que automatiza aplicativos iOS por meio do driver XCUITest da Apple.

XCTest e XCUITest: as estruturas de teste modernas da Apple

OCUnit e UIAutomation sรฃo importantes elementos histรณricos, mas ambos foram descontinuados. A Apple substituiu o OCUnit por Teste XCT in Xcode 5 (2013) e UIAutomation descontinuado em Xcode 8 (2016) em favor de Teste XCUIT, o componente de teste de interface do usuรกrio do XCTest. Essas sรฃo as estruturas de teste que a Apple fornece e oferece suporte em todas as versรตes atuais do Xcode.

Com o XCTest, vocรช escreve testes unitรกrios em Swift ou Objective-C e executรก-los a partir do Xcode Test Navigator, o xcodebuild linha de comando, no simulador ou em dispositivos reais. O XCUITest conduz seu aplicativo pela camada de acessibilidade, para que os testes de interface do usuรกrio se comportem de maneira muito semelhante a um usuรกrio real.

Estrutura legada Substituiรงรฃo moderna O que mudou
OCUnit (SenTestingKit) Teste XCT Os mesmos conceitos de teste unitรกrio, agora integrados em todos os recursos. Xcode modelo de projeto
Automaรงรฃo de interface do usuรกrio (JavaRoteiro) Teste XCUIT Os testes de interface do usuรกrio sรฃo escritos em Swift ou Objective-C em vez de JavaScript

๐Ÿ’ก Dica: Ferramentas multiplataforma, como Appium Automatize o iOS por meio do XCUITest nos bastidores, de modo que essas habilidades sejam transferidas diretamente.

Teste manual

A automaรงรฃo traz velocidade, mas as tรฉcnicas manuais abaixo adicionam o julgamento humano que os scripts nรฃo conseguem fornecer.

Teste Exploratรณrio

Trata-se de testes realizados sem um plano de testes formal. O teste exploratรณrio รฉ um mรฉtodo de baixo custo, mas pode deixar passar potenciais bugs em seu aplicativo iOS.

Contras vs. Prรณs do Teste Exploratรณrio

Prรณs Contras
1. Less ร‰ necessรกrio preparo; erros graves sรฃo detectados precocemente. Requer alta habilidade do testador
2. Nรฃo Plano de teste ร‰ necessรกrio, o que acelera a detecรงรฃo de erros. A cobertura do teste รฉ baixa. Isso nรฃo garante que todos os seus requisitos sejam testados.
3. A maioria dos bugs sรฃo descobertos precocemente por algum tipo de teste exploratรณrio Falta de documentaรงรฃo de teste

Teste do Usuรกrio

O teste do usuรกrio รฉ um tipo de teste manual no iOS. O objetivo deste teste รฉ criar aplicativos melhores, nรฃo apenas livre de bugs aplicativos. A figura abaixo mostra quatro tipos de testes de usuรกrio.

Quatro tipos de testes de usuรกrio

Teste de conceito

Avalie a resposta do usuรกrio a uma ideia de aplicativo antes de lanรงรก-lo no mercado. Os procedimentos de teste de conceito no iOS sรฃo descritos na figura abaixo.

Procedimento de teste de conceito no iOS

Testando usabilidade

Testando usabilidade ร‰ um teste de usabilidade que avalia a facilidade de uso do seu aplicativo iOS. Em testes de iOS, um teste de usabilidade pode ser gravado lembrar ou compartilhar com outras pessoas.

Algumas ferramentas que auxiliam nos testes de usabilidade no iOS sรฃo:

Trymata aplicativos de teste de usuรกrios mรณveis para Android e iOS.

Delรญcia.io, esta ferramenta pode capturar a interaรงรฃo real do usuรกrio em seus aplicativos iOS.

O teste beta

O teste beta รฉ o teste de integraรงรฃo Com dados reais para obter o feedback final dos usuรกrios. Para distribuir seus aplicativos para testes beta, vocรช precisa seguir os passos abaixo.

Etapas de distribuiรงรฃo do teste beta

-Prรฉ-condiรงรฃo: se vocรช estiver testando a versรฃo beta de um candidato final para um lanรงamento, certifique-se de validar o aplicativo antes de distribuรญ-lo aos testadores.

-Encontre o testador por meio do serviรงoVocรช coleta IDs de dispositivos de testadores e os adiciona ร  sua conta de desenvolvedor da Apple.

-Crie distribuiรงรฃo ad hocA distribuiรงรฃo Ad Hoc permite que o testador execute seu aplicativo em seu dispositivo sem precisar de... Xcode. Esta etapa inclui 2 subetapas

  • Crie certificados de distribuiรงรฃo
  • Crie perfis de provisionamento ad hoc

-Solicite feedback do testador: Os testadores realizam os testes e enviam relatรณrios de erros para vocรช. Apรณs o lanรงamento do seu aplicativo, vocรช poderรก obter os relatรณrios em Conexรฃo da App Store (anteriormente iTunes conectar).

Observaรงรฃo: Hoje em dia, a maioria das equipes distribui versรตes beta com TestFlight, que permite convidar atรฉ 10,000 testadores externos sem coletar manualmente os IDs dos dispositivos.

Teste A / B Exemplo: crie XNUMX textos de email > XNUMX pessoas na sua lista, XNUMX receberao XNUMX email e XNUMX receberรฃo outro e veja qual email converteu mais

Teste A / B Exemplo: crie XNUMX textos de email > XNUMX pessoas na sua lista, XNUMX receberao XNUMX email e XNUMX receberรฃo outro e veja qual email converteu mais รฉ uma das maneiras mais poderosas de avalie a eficรกcia do seu aplicativo iOS. Usa experimentos randomizados com dois dispositivos, A e B.

Teste A/B em dois dispositivos iOS

O teste A/B inclui trรชs etapas principais

  • Configurar um testePrepare duas versรตes do seu aplicativo iOS (A e B) e uma mรฉtrica de teste.
  • TestarTeste as duas versรตes do aplicativo iOS acima em dispositivos simultaneamente.
  • AnรกliseMeรงa e selecione a melhor versรฃo para lanรงamento.

As seguintes ferramentas oferecem suporte a testes A/B no iOS.

  • Levanta-te: Teste A/B para iOS e AndroidEle pode ser integrado ao seu aplicativo iOS e torna o processo de teste mais rรกpido.

Melhores prรกticas para testes A/B

  • Definir o alvo do seu teste. Qualquer teste รฉ inรบtil sem um alvo.
  • Veja os usuรกrios finais usam seu aplicativo pela primeira vez
  • Execute um Teste apenas uma vez por atualizaรงรฃo. Isso economiza seu tempo ao realizar testes.
  • Monitorar Faรงa o teste com atenรงรฃo. Vocรช pode aprender com o resultado monitorando-o.

Teste iOS Melhor prรกtica

Aqui estรฃo algumas dicas que vocรช deve saber ao organizar os testes do seu aplicativo iOS

  1. Teste o aplicativo em um dispositivo real para obter uma visรฃo realista do desempenho
  2. Melhorar seus mรฉtodos de teste, porque os mรฉtodos de teste tradicionais jรก nรฃo sรฃo suficientes para abranger todos os testes em testes de iOS.
  3. Use o registro do console Para testar o aplicativo iOS. Esse recurso do iOS inclui informaรงรตes de todos os aplicativos instalados no dispositivo.
  4. ISO bugs de aplicativos usando o captura de tela integrada comando. Ele ajuda o desenvolvedor a entender como os erros ocorrem.
  5. Relatรณrio de falhas As ferramentas sรฃo รบteis ao testar sua aplicaรงรฃo. Elas podem detectar falhas e registrar detalhes para que vocรช possa investigar os erros com facilidade.

MITOS sobre testes de iOS

Esta seรงรฃo examina alguns mitos e realidades populares dos testes de iOS

Testando aplicativos no iOS e Android ร‰ a mesma coisa.

iOS e Android sรฃo duas plataformas desenvolvidas pela Apple Inc. e Google respectivamente. Eles sรฃo totalmente diferentes em termos de ambientes de teste, estruturas de teste e linguagens de programaรงรฃo.

Testar o aplicativo no Simulador do iOS รฉ suficiente.

O Simulador do iOS nรฃo รฉ suficientemente robusto para testar um aplicativo, pois apresenta algumas limitaรงรตes:

  • Limitaรงรตes de hardware (cรขmera, entrada de microfone, sensor)
  • A IU do seu aplicativo pode parecer funcionar de forma mais rรกpida e suave do que em um dispositivo
  • Limitaรงรตes da API
  • Algumas estruturas nรฃo suportadas (Media Player, Store Kit, Message UI..)

Todos vรฃo baixar meus aplicativos na loja de aplicativos porque eles tรชm muitos recursos.

Quanto mais recursos seu aplicativo tiver, mais bugs vocรช poderรก obter. Nenhum usuรกrio baixarรก seu aplicativo se ele ainda apresentar muitos defeitos.

Perguntas Frequentes

Sim. Plataformas com auxรญlio de IA geram casos de teste, detectam regressรตes visuais e corrigem localizadores de elementos quebrados quando sua interface de usuรกrio รฉ alterada. Ferramentas como Teste sigma Permitir que as equipes criem testes para iOS em linguagem simples.

A autorreparaรงรฃo baseada em IA atualiza os localizadores de elementos apรณs alteraรงรตes na interface do usuรกrio, sinaliza testes instรกveis โ€‹โ€‹e prioriza casos de alto risco, reduzindo o retrabalho manual que se segue a cada lanรงamento do iOS.

Sim. Travas deslizantes portรกteis Appium รฉ mantido ativamente e impulsiona aplicativos iOS por meio da estrutura XCUITest da Apple, oferecendo suporte a testes em JavaRoteiro, Python, Javaou C#.

Nรฃo. Um ID Apple gratuito com Xcode Permite que vocรช teste em seu prรณprio dispositivo. O Programa de Desenvolvedores da Apple (US$ 99/ano), pago, รฉ necessรกrio para TestFlight Distribuiรงรฃo e lanรงamento na App Store.

Resuma esta postagem com: