Preparando testes do Appium para upload
Importante
O Visual Studio App Center está programado para ser desativado em 31 de março de 2025. Embora você possa continuar a usar o Visual Studio App Center até que ele seja totalmente desativado, há várias alternativas recomendadas para as quais você pode considerar migrar.
As etapas para preparar um aplicativo e seu conjunto de testes para upload variam dependendo da estrutura de teste. Este guia explica como preparar testes do Appium usando Java com JUnit para upload no App Center. Para obter diretrizes sobre como criar testes do Appium, consulte a documentação do Appium.
Observe as seguintes limitações para o suporte ao Appium:
Observação
Há suporte para o contexto do WebView, do Chrome Web Driver e do navegador Chrome com browserName
funcionalidade!
- Não há suporte para TestNG (há suporte apenas para testes JUnit).
- Não há suporte para Android 4.2 ou anterior. Não há suporte para o driver UIAutomator preterido.
- Não há suporte para o iOS 9.2.1 ou anterior. Não há suporte para o driver iOS UIAutomation preterido.
- Não há suporte para JUnit @Category attribute. (Pode usar Incluir/Excluir em vez disso)
- A versão do Maven deve ser pelo menos 3.3.9.
- A versão atual do Appium é a 1.22.0. Ele é atualizado regularmente com novas versões.
- Há suporte para o JUnit 4.9 – 4.12; não damos suporte ao JUnit 5.
- Os testes devem ser direcionados precisamente a um aplicativo. (
MobileCapabilityType.FULL_RESET
tem suporte)
Observação
Em alguns casos, os testes ainda poderão funcionar no App Center se estiverem usando ferramentas ou recursos sem suporte. No entanto, essa funcionalidade sem suporte não é QA'd em atualizações futuras e pode ser interrompida sem aviso.
Pré-requisitos
Os testes serão executados usando o Maven Surefire, que exige que os testes sigam determinadas convenções de nomenclatura:
"**/Test*.java" - includes all of its subdirectories and all Java filenames that start with "Test".
"**/*Test.java" - includes all of its subdirectories and all Java filenames that end with "Test".
"**/*Tests.java" - includes all of its subdirectories and all Java filenames that end with "Tests".
"**/*TestCase.java" - includes all of its subdirectories and all Java filenames that end with "TestCase".
Antes de tentar carregar no Teste do App Center, verifique se a execução de testes localmente em seu computador usando o Maven funciona:
➜ AppiumTest git:(main) ✗ mvn verify
...
Running MainTest
started: SimpleTest (MainTest)
Setting up capabilities
failed
finished
Tests run: 2, Failures: 0, Errors: 2, Skipped: 0, Time elapsed: 0.728 sec <<< FAILURE!
SimpleTest(MainTest) Time elapsed: 0.594 sec <<< ERROR!
...
Se você não conseguir executar os testes usando a linha de comando localmente, os testes também não funcionarão no Teste do App Center.
1. Alterações no sistema de build
Etapa 1 – Adicionar dependência
Você precisará adicionar uma dependência para as extensões de teste do Appium:
<dependency>
<groupId>com.microsoft.appcenter</groupId>
<artifactId>appium-test-extension</artifactId>
<version>1.6</version>
</dependency>
Esse código garantirá que os drivers Android e iOS aprimorados estejam disponíveis em tempo de compilação. Os drivers aprimorados são fornecidos principalmente para habilitar o label
recurso. Confira a Etapa 4 para obter mais detalhes sobre o label
recurso.
Etapa 2 – Adicionar perfil de upload
Copie este snippet para o <profiles>
na pom.xml
marca . Se não houver nenhuma <profiles>
seção em seu pom, faça uma.
O perfil, quando ativado, empacotará suas classes de teste e todas as dependências na target/upload
pasta, prontas para serem carregadas em Teste.
2. Alterações nos testes
Etapa 1 – Adicionar importações
Importe esses pacotes para suas classes de teste:
import com.microsoft.appcenter.appium.Factory;
import com.microsoft.appcenter.appium.EnhancedAndroidDriver;
import org.junit.rules.TestWatcher;
import org.junit.Rule;
Etapa 2 – Instanciar o TestWatcher
Insira essa declaração em cada uma de suas classes de teste:
@Rule
public TestWatcher watcher = Factory.createWatcher();
Etapa 3 – Atualizar sua declaração de driver
Substitua sua declaração de AndroidDriver<MobileElement>
por EnhancedAndroidDriver<MobileElement>
ou IOSDriver<MobileElement>
por EnhancedIOSDriver<MobileElement>
private static EnhancedAndroidDriver<MobileElement> driver;
Etapa 4 – Atualizar suas instanciações de driver
Substitua a maneira como você cria uma instância do driver, de modo que as linhas na forma de:
driver = new AndroidDriver<MobileElement>(url, capabilities);
... são alterados para:
driver = Factory.createAndroidDriver(url, capabilities);
O uso desses drivers ainda permitirá que você execute seus testes localmente sem modificações adicionais, mas permite que você "rotule" as etapas de teste em sua execução de teste usando driver.label("text")
. O texto e uma captura de tela do dispositivo estarão visíveis no relatório de teste no App Center.
É recomendável chamar driver.label
no @After
método , que usa uma captura de tela do estado final do aplicativo. Um método de exemplo @After
para um teste pode ser semelhante a este código:
@After
public void TearDown(){
driver.label("Stopping App");
driver.quit();
}
3. Carregar no Teste do App Center
Etapas para carregar um teste:
Gere um comando de upload de teste do App Center usando as instruções em iniciar uma execução de teste.
Empacote suas classes de teste e todas as dependências na
target/upload
pasta :mvn -DskipTests -P prepare-for-upload package
Execute o comando upload:
appcenter test run appium --app "APP_ID" --devices "DEVICE_SET_ID" --app-path PATH_TO_FILE.apk --test-series "main" --locale "en_US" --build-dir target/upload
4. Solução de problemas de desempenho
Os testes em dispositivos no App Center serão executados um pouco mais lentos do que em um dispositivo local. Normalmente, a execução mais lenta é superada por ter mais dispositivos disponíveis, permitindo execuções de teste paralelas.
Há três main fontes de execuções de teste mais lentas: re-assinatura, reinstalação e tarefas de rede.
Assinar novamente (no iOS)
Antes de ser instalado no dispositivo iOS, seu aplicativo passa por um processo chamado re-assinatura. Esse processo é necessário para fazer com que o perfil de provisionamento corresponda ao dispositivo na nuvem. A recontratação leva algum tempo, normalmente cerca de 1 a 2 minutos. Raramente, a reassinação também causa degradação do desempenho porque os aplicativos reassinados são armazenados em cache. O processo demorado será executado apenas uma vez por binário.
Se a configuração de Entrega Contínua atualizar a versão do IPA antes de compilar e testar, o binário será diferente para cada teste e a penalidade de reassinagem ocorrerá com mais frequência.
Reinstalação
Em uma nuvem de dispositivo compartilhado, é importante garantir que os dispositivos sejam limpos entre cada teste. O próximo cliente que usa o dispositivo pode ser alguém de outra organização. No Teste do App Center, o aplicativo é desinstalado automaticamente após a conclusão da execução do teste.
É possível omitir MobileCapabilityType.FULL_RESET
e definir MobileCapabilityType.NO_RESET
como true
para acelerar a execução do teste. Consulte Redefinir Estratégias para obter detalhes.
Tarefas de rede
As tarefas de rede local são mais rápidas porque o servidor está mais próximo e mais dedicado ao host remoto.