As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Integrar a instrumentação do Android ao Device Farm
nota
Use as instruções a seguir para integrar os testes de instrumentação do Android ao AWS Device Farm. Para acessar mais informações sobre o uso de testes de instrumentação no Device Farm, consulte Instrumentação para Android e AWS Device Farm.
Execute testes de instrumentação do Android (console)
Use o console do Device Farm para carregar seus testes.
-
Faça login no console Device Farm em https://console.aws.amazon.com/devicefarm
. -
No painel de navegação, escolha Teste para dispositivos móveis e Projetos.
-
Na lista de projetos, escolha o projeto para o qual deseja carregar seus testes.
dica
Você pode usar a barra de pesquisa para filtrar a lista de projetos por nome.
Para criar um projeto, siga as instruções em Criar um projeto no AWS Device Farm.
-
Selecione Criar execução.
-
Em Selecionar aplicativo e tipo de execução, na seção Tipo de execução, selecione Aplicativo Android.
-
Em Selecionar aplicativo, na seção Opções de seleção de aplicativos, escolha Selecionar aplicativo de amostra fornecido pelo Device Farm se você não tiver um aplicativo. Se você estiver trazendo seu próprio aplicativo, selecione Carregar próprio aplicativo e escolha seu APK (formato de arquivo.apk).
-
Em Configurar teste, na seção Selecionar estrutura de teste, escolha Instrumentação e escolha Escolher arquivo. Procure e escolha o arquivo APK (formato de arquivo.apk) que contém seus testes.
-
Em Escolha seu ambiente de execução, selecione Executar seu teste em um ambiente personalizado ou Executar seu teste em nosso ambiente padrão. Para obter mais informações, consulte Ambientes de teste no AWS Device Farm.
-
Se você escolher o ambiente personalizado, poderá usar a especificação de teste padrão que é preenchida para testes de instrumentação ou escolher Carregar própria especificação de teste para fornecer a sua própria.
-
Em Selecionar dispositivos, escolha um método de seleção de dispositivos. Selecione Usar pool de dispositivos para escolher entre uma coleção selecionada de dispositivos ou um pool de dispositivos personalizado que você criou. Selecione Selecionar dispositivos manualmente para escolher dispositivos individuais para executar seus testes. A seção Compatibilidade de dispositivos mostra quantos dispositivos no pool selecionado são compatíveis com seu aplicativo. Para obter mais informações, consulte Suporte de dispositivos no AWS Device Farm.
-
Para configurar propriedades em nível de execução, atualize a seção Configurações de execução. Aqui você pode fazer o seguinte:
-
(Opcional) Para que o Device Farm gere um relatório de teste após a conclusão da execução, selecione Gerar relatório de teste. Essa opção está disponível somente em um ambiente de teste personalizado. O Device Farm gera o relatório a partir dos resultados da instrumentação incluídos na saída das especificações de teste. Se você fizer o upload de sua própria especificação de teste, certifique-se de que ela emita os resultados da instrumentação na saída da especificação de teste.
-
-
Conclua as etapas restantes e inicie a execução.
Exibir um relatório de teste (console)
Faça login no console Device Farm em https://console.aws.amazon.com/devicefarm
. -
No painel de navegação, escolha Teste para dispositivos móveis e Projetos.
-
Escolha o projeto que contém a execução que você deseja inspecionar.
-
Escolha a execução concluída para abrir seus detalhes.
-
Escolha um dos trabalhos concluídos para abrir os resultados desse dispositivo.
Com os insights de teste ativados
Os resultados do trabalho incluem uma guia de relatório de teste. Escolha para ver um detalhamento por teste. As capturas de tela a seguir mostram a guia Relatório de teste com todas as colunas visíveis.
A guia mostra os seguintes campos para cada teste:
testNameO nome do método de teste.
testClassO nome da classe de teste.
resultO resultado do Device Farm para o teste.
frameworkResultO resultado relatado pela estrutura de instrumentação. O Device Farm mapeia esse valor para o
resultcampo normalizado.durationSecondsA duração do teste, em segundos.
startTimestampA hora em que o teste começou.
endTimestampA hora em que o teste terminou.
currentA posição do teste na corrida.
numTestsO número total de testes em execução.
statusCodeO código de status da instrumentação que o teste relatou.
streamUma versão legível por humanos da saída de instrumentação para o teste.
stackTracePara um teste que falhou, o rastreamento de pilha da falha.
Para baixar o relatório de teste completo como um arquivo JSON, escolha Baixar resumo completo na parte superior dos detalhes do trabalho.
Para escolher quais colunas serão exibidas, escolha o ícone de engrenagem. Nas configurações, você pode selecionar as colunas a serem exibidas e ativar ou desativar Agrupar por turma. O grupo por classe está ativado por padrão, o que agrupa os testes por sua classe de teste. Desative-o para ver uma lista simples de todos os testes, conforme mostrado na captura de tela a seguir.
Sem os insights de teste ativados
Os resultados do trabalho mostram a saída de teste padrão e os artefatos, mas nenhuma guia de relatório de teste. Para gerar um relatório de teste, agende uma nova execução com os insights de teste ativados.
Exibir um relatório de teste (AWS CLI)
Execute get-job e especifique o ARN do trabalho:
aws devicefarm get-job --arnarn:aws:devicefarm:us-west-2:123456789012:job:PROJECT_ID/RUN_ID/00000
Sem os insights de teste ativados
Se você não habilitou os insights de teste, a resposta conterá os campos de trabalho padrão, como status do trabalho, resultado, contadores e dispositivo:
{ "job": { "arn": "arn:aws:devicefarm:us-west-2:123456789012:job:EXAMPLE-PROJECT/EXAMPLE-RUN/00000", "name": "Example Android Phone", "created": "2026-08-05T14:26:56.959000-07:00", "status": "COMPLETED", "result": "PASSED", "counters": { "total": 3, "passed": 3, "failed": 0, "warned": 0, "errored": 0, "stopped": 0, "skipped": 0 }, "message": "Successful test lifecycle of Setup Test", "device": { "arn": "arn:aws:devicefarm:us-west-2::device:EXAMPLEDEVICEID", "name": "Example Android Phone", "platform": "ANDROID", "os": "16", "formFactor": "PHONE", "fleetType": "PUBLIC" }, "deviceMinutes": { "total": 1.38, "metered": 0.0, "unmetered": 1.13 }, "videoCapture": true } }
Com os insights de teste ativados
Se você ativou os insights de teste, a resposta também incluirá um insights objeto. Esse objeto contém o status do relatório de teste, métricas de alto nível e uma URL pré-assinada para o relatório detalhado:
{ "job": { "arn": "arn:aws:devicefarm:us-west-2:123456789012:job:EXAMPLE-PROJECT/EXAMPLE-RUN/00000", "status": "COMPLETED", "result": "PASSED", "counters": { ... }, "device": { ... }, "deviceMinutes": { ... }, "videoCapture": true, "insights": { "status": "COMPLETED", "testReport": { "message": "Results: 2 Executed | 2 passed, Median test duration: 28.926 seconds.", "metrics": { "testsTotal": 2, "testsPassed": 2, "testsFailed": 0, "testsSkipped": 0, "testsErrored": 0, "testsOther": 0, "testsPassedPercentage": 100.0 }, "testDetailsUrl": "https://EXAMPLE-PRESIGNED-URL" } } } }
O testDetailsUrl campo é um URL pré-assinado para o relatório de teste completo JSON. Faça o download para obter o detalhamento por teste:
curl -o test-report.json "PRESIGNED_URL"
Veja a seguir um exemplo de relatório de teste para um trabalho de instrumentação:
{ "version": "1.0", "jobArn": "arn:aws:devicefarm:us-west-2:123456789012:job:EXAMPLE-PROJECT/EXAMPLE-RUN/00000", "metrics": { "testsTotal": 3, "testsPassed": 2, "testsFailed": 1, "testsSkipped": 0, "testsErrored": 0, "testsOther": 0, "testsPassedPercentage": 66.67, "totalTestExecutionDurationSeconds": 26.004, "medianTestExecutionDurationSeconds": 1.598 }, "testDetails": [ { "testName": "testConnect", "testClass": "com.example.myapp.GpsConnectInstrumentedTest", "frameworkResult": "PASSED", "result": "PASSED", "durationSeconds": 24.399, "startTimestamp": "2026-08-05T20:38:30.131514Z", "endTimestamp": "2026-08-05T20:38:54.530369Z", "statusCode": 0, "current": 1, "numTests": 3 }, { "testName": "testHistoryOff", "testClass": "com.example.myapp.NotificationHistoryInstrumentedTest", "frameworkResult": "PASSED", "result": "PASSED", "durationSeconds": 1.598, "startTimestamp": "2026-08-05T20:38:54.531765Z", "endTimestamp": "2026-08-05T20:38:56.130032Z", "statusCode": 0, "current": 2, "numTests": 3 }, { "testName": "testConnect", "testClass": "com.example.myapp.WifiConnectInstrumentedTest", "frameworkResult": "FAILED", "result": "FAILED", "durationSeconds": 0.002, "startTimestamp": "2026-08-05T20:38:56.131857Z", "endTimestamp": "2026-08-05T20:38:56.133770Z", "stackTrace": "java.lang.NullPointerException: Attempt to invoke virtual method 'boolean androidx.test.uiautomator.UiDevice.pressHome()' on a null object reference\n\tat com.example.myapp.WifiConnectInstrumentedTest.testConnect(WifiConnectInstrumentedTest.java:93)\n\t...", "stream": "\nError in testConnect(com.example.myapp.WifiConnectInstrumentedTest):\njava.lang.NullPointerException: Attempt to invoke virtual method 'boolean androidx.test.uiautomator.UiDevice.pressHome()' on a null object reference\n\t...", "statusCode": -2, "current": 3, "numTests": 3 } ], "errorMessage": "There was 1 failure:\n1) testConnect(com.example.myapp.WifiConnectInstrumentedTest)\njava.lang.NullPointerException: Attempt to invoke virtual method 'boolean androidx.test.uiautomator.UiDevice.pressHome()' on a null object reference\n\t...\nFAILURES!!!\nTests run: 3, Failures: 1", "instrumentationCode": -1 }
O relatório contém os seguintes campos de nível superior:
versionA versão do esquema do relatório.
jobArnARN do trabalho.
metrics-
Resultados agregados para o trabalho. O objeto
metricscontém os campos a seguir.testsTotalO número total de testes no trabalho.
testsPassedO número de testes aprovados.
testsFailedO número de testes que falharam.
testsSkippedO número de testes que foram ignorados.
testsErroredO número de testes que erraram.
testsOtherO número de testes com outro resultado.
testsPassedPercentageA porcentagem de testes aprovados.
totalTestExecutionDurationSecondsA duração total de todos os testes, em segundos.
medianTestExecutionDurationSecondsA duração média de um teste, em segundos.
errorMessageSe a execução tiver falhas, uma mensagem de erro resumindo-as.
instrumentationCodeO código geral de saída da instrumentação para o trabalho.
testDetails-
Uma lista de resultados por teste. Cada entrada em
testDetailscontém os seguintes campos:testNameO nome do método de teste.
testClassO nome da classe de teste.
resultO resultado do Device Farm para o teste.
frameworkResultO resultado relatado pela estrutura de instrumentação. O Device Farm mapeia esse valor para o
resultcampo normalizado.durationSecondsA duração do teste, em segundos.
startTimestampA hora em que o teste começou.
endTimestampA hora em que o teste terminou.
currentA posição do teste na corrida.
numTestsO número total de testes em execução.
statusCodeO código de status da instrumentação que o teste relatou.
streamUma versão legível por humanos da saída de instrumentação para o teste.
stackTracePara um teste que falhou, o rastreamento de pilha da falha.
(Opcional) Fazer captura de telas em testes de instrumentação do Android
Você pode fazer capturas de tela como parte dos testes de instrumentação para Android.
Para fazer a captura de telas, chame um dos seguintes métodos:
-
Para Robotium, chame o método
takeScreenShot(por exemplo,solo.takeScreenShot();). -
Para Spoon, chame o método
screenshot; por exemplo:Spoon.screenshot(activity, "initial_state"); /* Normal test code... */ Spoon.screenshot(activity, "after_login");
Durante uma execução de teste, o Device Farm obtém capturas de tela dos seguintes locais nos dispositivos, se existirem, e as adiciona aos relatórios de teste:
-
/sdcard/robotium-screenshots -
/sdcard/test-screenshots -
/sdcard/Download/spoon-screenshots/test-class-name/test-method-name -
/data/data/application-package-name/app_spoon-screenshots/test-class-name/test-method-name