Sobes.tech
Junior

Fale sobre testes móveis.

sobes.tech IA

Resposta da IA

Os testes móveis são o processo de verificar a qualidade do software desenvolvido para dispositivos móveis (smartphones, tablets). Incluem testes em várias plataformas (Android, iOS), dispositivos, versões do sistema operativo, resoluções de ecrã, condições de rede e cenários de uso.

Principais aspetos dos testes móveis:

  • Testes funcionais: Verificação do cumprimento dos requisitos e especificações da aplicação.
  • Testes de desempenho: Avaliação da velocidade, consumo de memória e duração da bateria.
  • Testes de usabilidade: Avaliação da intuitividade da interface, facilidade de navegação e experiência geral do utilizador.
  • Testes de compatibilidade: Verificação do funcionamento da aplicação em diferentes dispositivos, versões do sistema operativo e resoluções de ecrã.
  • Testes de segurança: Identificação de vulnerabilidades e proteção dos dados do utilizador.
  • Testes de interrupções: Verificação da reação da aplicação a chamadas entrantes, SMS, notificações e outros eventos.
  • Testes de instalação/desinstalação: Verificação da instalação correta e remoção completa da aplicação.
  • Testes de localização: Verificação da correta exibição do texto, formatos de data e hora para diferentes regiões.
  • Testes de acessibilidade: Verificação da facilidade de uso da aplicação por pessoas com limitações.

Ferramentas para testes móveis incluem:

  • Testes manuais: Uso de dispositivos físicos ou emuladores/simuladores.
  • Testes automatizados: Uso de frameworks e ferramentas.

Algumas ferramentas populares para automação de testes móveis:

  • Appium:
    // Exemplo simples de teste com Appium (Java)
    import io.appium.java_client.AppiumDriver;
    import io.appium.java_client.MobileElement;
    import io.appium.java_client.android.AndroidDriver;
    import org.openqa.selenium.remote.DesiredCapabilities;
    import java.net.MalformedURLException;
    import java.net.URL;
    
    public class SimpleAppiumTest {
        public static void main(String[] args) throws MalformedURLException {
            DesiredCapabilities cap = new DesiredCapabilities();
            cap.setCapability("deviceName", "emulator-5554"); // Nome do seu emulador/dispositivo
            cap.setCapability("platformName", "Android");
            cap.setCapability("appPackage", "com.android.calculator2"); // Pacote da aplicação a testar
            cap.setCapability("appActivity", "com.android.calculator2.Calculator"); // Atividade da aplicação a testar
    
            AppiumDriver<MobileElement> driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), cap);
    
            // Interação de exemplo: pressionar o botão '1'
            driver.findElementById("digit_1").click(); 
            
            // ... outras ações
            
            driver.quit(); // Fechar a sessão do Appium
        }
    }
    
  • Espresso (Android):
    // Exemplo simples de teste com Espresso
    package com.example.myapp.test;
    
    import androidx.test.ext.junit.rules.ActivityScenarioRule;
    import androidx.test.ext.junit.runners.AndroidJUnit4;
    import androidx.test.espresso.Espresso;
    import androidx.test.espresso.action.ViewActions;
    import androidx.test.espresso.matcher.ViewMatchers;
    import org.junit.Rule;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    
    import static androidx.test.espresso.assertion.ViewAssertions.matches;
    import static androidx.test.espresso.matcher.ViewMatchers.withId;
    import static androidx.test.espresso.matcher.ViewMatchers.withText;
    
    @RunWith(AndroidJUnit4.class)
    public class SimpleEspressoTest {
    
        @Rule
        public ActivityScenarioRule<MainActivity> activityRule =
                new ActivityScenarioRule<>(MainActivity.class); // Atividade de lançamento
    
        @Test
        public void testButtonClick() {
            // Encontrar botão por ID e clicar
            Espresso.onView(withId(R.id.myButton)).perform(ViewActions.click());
    
            // Verificar o texto do campo de texto
            Espresso.onView(withId(R.id.myTextView)).check(matches(withText("Botão clicado!")));
        }
    }
    
  • XCUITest (iOS):
    // Exemplo simples de teste com XCUITest (Swift)
    import XCTest
    
    class SimpleXCUIITest: XCTestCase {
    
        func testButtonPress() throws {
            // Inicializar a aplicação
            let app = XCUIApplication()
            app.launch()
    
            // Encontrar botão e pressionar
            let myButton = app.buttons["MyButtonIdentifier"] // ID ou label do botão
            myButton.tap()
    
            // Verificar o valor do campo de texto
            let myLabel = app.staticTexts["MyLabelIdentifier"] // ID ou label do campo de texto
            XCTAssertEqual(myLabel.label, "Botão pressionado!")
        }
    }
    

A especificidade dos testes móveis inclui:

  • Grande quantidade de dispositivos e versões do sistema operacional, exigindo uma extensa fazenda de testes ou serviços em nuvem.
  • Necessidade de testar em diferentes condições de rede (Wi-Fi, 3G, 4G, 5G, offline).
  • Gerenciamento de interrupções e processos em segundo plano.
  • Consumo de recursos do sistema (CPU, RAM, bateria).

Emuladores e simuladores são usados para testes iniciais, mas os testes finais devem ser realizados em dispositivos reais para avaliação precisa de desempenho e experiência do usuário em condições reais.