View a markdown version of this page

Integrar a instrumentação do Android ao Device Farm - AWS Device Farm

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.

  1. Faça login no console Device Farm em https://console.aws.amazon.com/devicefarm.

  2. No painel de navegação, escolha Teste para dispositivos móveis e Projetos.

  3. 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.

  4. Selecione Criar execução.

  5. Em Selecionar aplicativo e tipo de execução, na seção Tipo de execução, selecione Aplicativo Android.

  6. 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).

  7. 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.

  8. 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.

  9. 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.

  10. 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.

  11. Para configurar propriedades em nível de execução, atualize a seção Configurações de execução. Aqui você pode fazer o seguinte:

    1. (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.

  12. Conclua as etapas restantes e inicie a execução.

Exibir um relatório de teste (console)

  1. Faça login no console Device Farm em https://console.aws.amazon.com/devicefarm.

  2. No painel de navegação, escolha Teste para dispositivos móveis e Projetos.

  3. Escolha o projeto que contém a execução que você deseja inspecionar.

  4. Escolha a execução concluída para abrir seus detalhes.

  5. 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.

O primeiro conjunto de colunas na guia Relatório de teste para um trabalho de instrumentação concluído.
As colunas restantes na guia Relatório de teste para um trabalho de instrumentação concluído.

A guia mostra os seguintes campos para cada teste:

testName

O nome do método de teste.

testClass

O nome da classe de teste.

result

O resultado do Device Farm para o teste.

frameworkResult

O resultado relatado pela estrutura de instrumentação. O Device Farm mapeia esse valor para o result campo normalizado.

durationSeconds

A duração do teste, em segundos.

startTimestamp

A hora em que o teste começou.

endTimestamp

A hora em que o teste terminou.

current

A posição do teste na corrida.

numTests

O número total de testes em execução.

statusCode

O código de status da instrumentação que o teste relatou.

stream

Uma versão legível por humanos da saída de instrumentação para o teste.

stackTrace

Para 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.

A guia Relatório de teste com Agrupar por classe desativada, mostrando uma lista simples de testes.

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.

Os resultados do trabalho de um trabalho de instrumentação concluído sem 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 --arn arn: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:

version

A versão do esquema do relatório.

jobArn

ARN do trabalho.

metrics

Resultados agregados para o trabalho. O objeto metrics contém os campos a seguir.

testsTotal

O número total de testes no trabalho.

testsPassed

O número de testes aprovados.

testsFailed

O número de testes que falharam.

testsSkipped

O número de testes que foram ignorados.

testsErrored

O número de testes que erraram.

testsOther

O número de testes com outro resultado.

testsPassedPercentage

A porcentagem de testes aprovados.

totalTestExecutionDurationSeconds

A duração total de todos os testes, em segundos.

medianTestExecutionDurationSeconds

A duração média de um teste, em segundos.

errorMessage

Se a execução tiver falhas, uma mensagem de erro resumindo-as.

instrumentationCode

O código geral de saída da instrumentação para o trabalho.

testDetails

Uma lista de resultados por teste. Cada entrada em testDetails contém os seguintes campos:

testName

O nome do método de teste.

testClass

O nome da classe de teste.

result

O resultado do Device Farm para o teste.

frameworkResult

O resultado relatado pela estrutura de instrumentação. O Device Farm mapeia esse valor para o result campo normalizado.

durationSeconds

A duração do teste, em segundos.

startTimestamp

A hora em que o teste começou.

endTimestamp

A hora em que o teste terminou.

current

A posição do teste na corrida.

numTests

O número total de testes em execução.

statusCode

O código de status da instrumentação que o teste relatou.

stream

Uma versão legível por humanos da saída de instrumentação para o teste.

stackTrace

Para 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