O Google disponibilizou a biblioteca NativeDriver, uma implementação da API de testes na web, WebDriver. O NativeDriver é um framework de automação de testes que utiliza a interface nativa do dispositivo ao invés da interface do browser (como utilizado no Selenium, por exemplo), para execução de testes funcionais de uma aplicação.
O Google decidiu reutilizar a API do WebDriver para aplicações nativas em vez de criar uma nova biblioteca, para tirar proveito das muitas similaridades existentes. As duas APIs controlam as mesmas interações com o usuário como cliques, digitação, leitura de textos e troca de janelas. Ganha-se também com a facilidade de aprendizado, pois os desenvolvedores familiares com o WebDriver poderão começar rapidamente com o NativeDriver.
A biblioteca NativeDriver pode ser utilizada para executar comandos automáticos de interface com usuário em aplicações nativas, possibilitando o teste do comportamento em diversas condições. No Android, o NativeDriver utiliza o mecanismo de instrumentação, para controlar componentes do sistema operacional fora do ciclo natural de funcionamento.
Veja abaixo um teste simples usando o NativeDriver, extraído e adaptado do site do projeto:
AndroidNativeDriver driver = new AndroidNativeDriverBuilder().withDefaultServer().build(); driver.startActivity("com.google.android.maps.MapsActivity"); // Abre a atividade Places ao clicar no botão de mesmo nome (ao lado da caixa de pesquisas) AndroidNativeDriver btn= driver.findElement(By.id("btn_header_places"));btn.click();
// Fecha a janela Places; equivalente a pressionar o botão "voltar" do Android. driver.navigate().back();
// Rotaciona a visualização para mostrar a interface gráfica em modo paisagem driver.rotate(ScreenOrientation.LANDSCAPE);
Atualmente, apenas a versão Android da biblioteca está disponível, mas o Google promete lançar uma versão para o iOS em breve.
O Google também disponibilizou uma versão do WebDriver para browsers de dispositivos móveis, que oferece suporte para testes de aplicações web em browsers no Android e no iOS. Foi também iniciado um projeto para disponibilizar uma versão desta API para o Blackberry.