A taxonomia do Teste Mobile
Tags: testing, testdev, beginners, test
Published: 2021-06-08 19:08:17

Olá QAs, tudo massa? Você que está testando ou sempre testou suas aplicações mobile, mas não sabe como são construídas? Vem aqui que te mostro uma visão que irá expandir seus horizontes e seus testes.

**Tema de hoje: A taxonomia do Teste Mobile**

![Pensando no processo.](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hztgchfth8qljrrrbccz.PNG)

Antes de por em prática todo o seu conhecimento de Testes, diante de projetos mobile, é de extrema importância conhecer sua arquitetura e como foi construído, pois dessa forma você terá que fazer alguns ajustes e abordagens de teste para obter o máximo dos seus testes e cobertura. A seguir, de forma macro vamos apresentar alguns insights sobre a taxonomia dos aplicativos mobile:

* **Aplicativos Nativo**: desenvolvido para funcionar em uma plataforma específica, iOS ou Android, sendo capaz de acessar todo o potencial do dispositivo móvel. De forma geral é desenvolvido nas linguagens Objective-C ou Obj-C (de forma genérica uma derivação da linguagem C) ou Swift para iOS e Java ou Kotlin para Android. Os aplicativos nativos tendem a ter um melhor desempenho e aproveitar toda a capacidade de hardware, como por exemplo câmera, sensores, etc., e software do mobile. São mais complexos, caros e demorados para atingir seu nível de maturidade.

* **Aplicativos Web**: são desenvolvidos para que o usuário perceba e sinta que é um aplicativo nativo. Geralmente estes aplicativos rodam em browsers de acordo com o device e usualmente são desenvolvidos em HTML5. Os ícones são como favoritos de um site, por onde cada ação e funcionalidade é acessada. Aplicativos web possuem limitações de integração com o hardware do device, e seu desempenho depende do browser que está o executando. Como estes aplicativos trabalham em camadas mais superiores, seu desenvolvimento tende a ser mais rápido, mais acessíveis financeiramente e atingir um nível de maturidade é mais perceptível.

* **Aplicativos Híbrido**: estes aplicativos tentam preencher a lacuna entre os aplicativos nativos e web. Um aplicativo híbrido é executado como um aplicativo nativo, mas a maioria dos processos depende de tecnologias web, o que significa que uma parte do aplicativo é executada em um navegador da web incorporado (Web View), assim através dessa camada de abstração, como um nativo, permite o acesso aos recursos do dispositivo. Na estrutura usada para o desenvolvimento, uma base de código pode resultar em vários aplicativos que visam diferentes plataformas, com uma interface do usuário muito semelhante à da plataforma original para a qual o aplicativo foi desenvolvido. A seguir está uma lista de frameworks populares para o desenvolvimento de aplicativos híbridos: Apache Cordova, Framework 7, Ionic, JQuery Mobile, Google Flutter, Native Script, Onsen UI, React Native e Sencha Touch.

* **Aplicativos Progressivos Web (PWAs)**: estes aplicativos carregam como páginas web comuns, mas diferem dos aplicativos da Web de forma geral em vários sentidos. Por exemplo, é possível trabalhar offline e o acesso ao hardware do celular é possível, que tradicionalmente só está disponível para os aplicativos nativos. De forma geral estes aplicativos são suportados por Android e iOS, mas dependendo do modelo e versão, além do próprio aplicativos, alguns recursos e acesso ao hardware podem e são limitados. Por exemplo, push notifications, face ID do iphone ainda não estão disponíveis no iOS. Aqui você encontrará mais informações sobre o tema.

Fui buscar na rede uma figura que representa-se o que foi dito acima e encontrei duas. No final do post inseri o link de onde retirei.

![Tipos de aplicações](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l2t4zcqomkrk0dniclr2.PNG)
_Fonte: [Aplicativos para Smartphones: Nativos ou Multiplataforma?](https://medium.com/venturus/aplicativos-para-smartphones-nativos-ou-multiplataforma-6d03ae35f8da)_

E a outra figura:

![Tipos de aplicações](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k72lyrng8flb2v7o917m.PNG)
_Fonte: [Qual tipo de aplicativo escolher? Nativo, Híbrido ou PWA?](https://www.garagemdigital.io/nativo-hibrido-ou-pwa/)_

Daí você pode ser perguntar: e onde eu fico com os meus testes ? Agora que vem o “X” da questão. De forma geral, a abordagem de teste e as técnicas que irá utilizar, podem ser aplicadas de forma geral, mas de acordo com a coleta e resultados que irá obter, você terá um dispêndio maior de tempo para análise ou comparação entre os resultados obtidos.
Vamos a um exemplo prático: aplicativo nativo para gerenciamento do armazenamento do device versus aplicativo de outro fabricante (3rd party app). Visualmente e funcionalidades podem ser muito parecidos ou totalmente diferentes, mas nosso cenário de teste será: armazenamento full ou máximo de 100% da capacidade. Em um caso hipotético, o device ao atingir este nível de armazenamento, o aplicativo nativo reagirá com um pop-up de alerta “Armazenamento completo!” ou “Pouco espaço disponível!”. Já o 3rd party app reagirá com um force close, pois não está recebendo (de forma geral) o que deveria receber.

**DICA: sempre que estiver testando aplicativos mobile, sempre ative a coleta de logs nativo ou utilize comandos ADB para esta atividade.**

Já no campo de automação, dependerá da plataforma mobile e sua afinidade por alguma linguagem ou framework de automação, sabe aquela configuração marota de ambiente? Welcome to the jungle! :)
Este post é apenas um pedacinho da Área de Qualidade de Software, busque, qualifique-se e lembre sempre: a base em Teste de Software te levará a lugares que jamais imaginou.

# Links e Obras Consultadas
* MSTG — Mobile Security Testing Guide
* Paulo Matuki da Cunha: Aplicativos para Smartphones: Nativos ou Multiplataforma?
* Jose Mauricio: Qual tipo de aplicativo escolher? Nativo, Híbrido ou PWA?
* Página do post original: https://albersonbarbosa.medium.com/a-taxonomia-do-teste-mobile-d73ad9208779