Sobes.tech
Junior

Fale-nos sobre testes móveis.

sobes.tech IA

Resposta da IA

O teste móvel é um processo de controlo de qualidade do software desenvolvido para dispositivos móveis (smartphones, tablets). Inclui a verificação da funcionalidade, usabilidade, desempenho, compatibilidade, segurança e localização da aplicação em diferentes dispositivos e condições.

Tipos de testes móveis:

  • Testes funcionais: Verificação do cumprimento dos requisitos e especificações declaradas. Inclui testes de todas as funções, cenários de uso, entrada/saída de dados, tratamento de erros.
  • Testes de usabilidade: Avaliação da intuitividade da interface, facilidade de navegação, acessibilidade dos elementos de controlo, experiência geral do utilizador (UX).
  • Testes de desempenho: Avaliação da velocidade de carregamento, resposta, consumo de recursos (CPU, RAM, bateria) sob diferentes cargas e em diferentes condições de rede (Wi-Fi, 3G, 4G, 5G).
  • Testes de compatibilidade: Verificação do funcionamento em diferentes dispositivos (diferentes fabricantes, modelos), sistemas operativos (diferentes versões de iOS, Android) e resoluções de ecrã.
  • Testes de segurança: Verificação de vulnerabilidades, proteção de dados de utilizador, autenticação e autorização.
  • Testes de localização: Verificação da precisão na tradução de textos, adaptação de formatos de data, hora, números, moeda para diferentes regiões.
  • Testes de instalação/desinstalação: Verificação do processo de instalação e desinstalação sem erros.
  • Testes de interrupções: Verificação do comportamento da aplicação perante diferentes interrupções (chamada entrante, SMS, bateria fraca, desconexão de rede).

Características dos testes móveis:

  • Diversidade de dispositivos e sistemas operativos: Grande variedade de combinações de hardware e software.
  • Tamanho e orientação do ecrã: Diferentes tamanhos de ecrã e necessidade de testar o funcionamento em orientação retrato e paisagem.
  • Métodos de entrada: Ecrã tátil, teclado, entrada de voz.
  • Condições de rede: Testes em diferentes ambientes de rede e ao alterar a conexão.
  • Limitações de recursos: Limitação de memória, processador, bateria.
  • Geolocalização: Uso de GPS e dependência da localização.
  • Notificações push: Testes de receção e tratamento de notificações.

Ferramentas para testes móveis:

  • Testes manuais: Trabalho direto com o dispositivo.
  • Automatização de testes:
    • Appium: Framework multiplataforma para testar aplicações nativas, híbridas e web móveis.
    • Espresso (Android): Framework para testar a UI no Android.
    • XCUITest (iOS): Framework para testar a UI no iOS.
    • Kobiton, BrowserStack, Sauce Labs: Plataformas na nuvem para testar em dispositivos reais.
  • Monitorização de desempenho: Ferramentas como Android Studio Profiler, Xcode Instruments.
  • Testes de segurança: Ferramentas como OWASP ZAP, Burp Suite.

Exemplo de automação com Appium (breve):

// Exemplo em Java usando Appium e TestNG
import io.appium.java_client.AppiumDriver;
import io.appium.java_client.MobileElement;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.remote.MobileCapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

import java.net.MalformedURLException;
import java.net.URL;

public class MyMobileTest {

    public AppiumDriver<MobileElement> driver;

    @BeforeTest
    public void setUp() throws MalformedURLException {
        DesiredCapabilities cap = new DesiredCapabilities();
        cap.setCapability(MobileCapabilityType.DEVICE_NAME, "emulator-5554"); // Nome do seu dispositivo
        cap.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
        cap.setCapability(MobileCapabilityType.AUTOMATION_NAME, "UiAutomator2"); // Ou XCUITest para iOS
        cap.setCapability(MobileCapabilityType.APP_PACKAGE, "com.android.calculator2"); // Pacote da aplicação a testar
        cap.setCapability(MobileCapabilityType.APP_ACTIVITY, "com.android.calculator2.Calculator"); // Atividade da aplicação a testar

        driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), cap);
    }

    @Test
    public void testAddition() {
        // Exemplo de interação com elementos do calculador
        MobileElement nine = driver.findElementById("com.android.calculator2:id/digit_9");
        MobileElement plus = driver.findElementById("com.android.calculator2:id/op_add");
        MobileElement seven = driver.findElementById("com.android.calculator2:id/digit_7");
        MobileElement equals = driver.findElementById("com.android.calculator2:id/eq");
        MobileElement result = driver.findElementById("com.android.calculator2:id/result");

        nine.click();
        plus.click();
        seven.click();
        equals.click();

        // Verificação do resultado
        String actualResult = result.getText();
        // assert actualResult.equals("16"); // Exemplo de afirmação
        System.out.println("Resultado: " + actualResult);
    }

    @AfterTest
    public void tearDown() {
        if (driver != null) {
            driver.quit();
        }
    }
}

O teste móvel exige uma compreensão profunda das particularidades do ambiente móvel, diferentes dispositivos e sistemas operacionais, bem como domínio de ferramentas e técnicas específicas.