Como eu poderia fazer testes automáticos para GUI?

8

Como posso verificar automaticamente o que é visto e o que não é? Ou pelo menos, como posso organizar alguns testes parcialmente automáticos?

IDE: Eclipse (também pode usar o IntelliJ Idea, se necessário)

Ferramenta de teste: Junit (novamente, poderia usar outra coisa, se recomendado, mas melhor se for gratuito)

Aplicativo SO: Android

SO do desenvolvedor: Linux (pode mudar para MAC ou Windows (com relutância))

Linguagem: Java

Todo o trabalho vai no dispositivo externo. Sem emulador.

O aplicativo é um invólucro do usuário para o player de TV de firmware, chamado como atividade externa. Portanto, 70% do código é para GUI. (Os outros 30% falam com servidores e fornecem informações à GUI)

Antes de programar a função de teste eu mesmo, sem usar nenhuma ferramenta. Agora eu tenho uma ferramenta em mãos. Mas não consigo imaginar como testar a interface do usuário, com ou sem a ferramenta. (Em termos estritos, nas conexões com a Internet também tenho problemas, mas provavelmente os deixarei para a outra pergunta.) A resposta não precisa depender muito da plataforma, os princípios e idéias também ajudarão.

Claro, é bom verificar, é algum elemento em outro e verificado ou não. Algumas verificações de regressão seriam boas para isso. Mas também devo ter certeza de que o elemento mencionado não é cortado por outros elementos e piscadelas, como pedi pela animação.

Os conselhos aqui: /software/63245/is-there-a-tool-to-test-java-ui não ajudarão - existem apenas ferramentas, não princípios e nenhum dos ferramentas podem ajudar na minha situação.

Gangnus
fonte
você pensou em perguntar em sqa.stackexchange.com ? BTW, o que está disponível para você capturar nos testes - objetos da GUI, pixels da tela, eventos de dispositivos de teclado / ponteiro?
Gnat
Obrigado. Eu não sabia sobre esse servidor aqui. Talvez, mais tarde, algum moderador leve minha pergunta para lá. (BTW, não entendo por que o teste precisa de seu próprio servidor). Quanto à sua outra frase, eu acho, é como de costume no Android - objetos - sim, pixels - podem ser, através de alguns truques? - Eu não sei, eventos - sim. O Junit pode ler pixels da GUI?
Gangnus
Uma ótima ferramenta de teste automatizada de código aberto para Android é o Robotium .
Corey D

Respostas:

5

Na maioria das vezes, o melhor conselho para o teste automático da GUI é desenvolver seu aplicativo no estilo Model-View-Presenter e escrever seus testes no Presenter. O tópico é discutido aqui:

http://danbunea.blogspot.com/2005/11/model-view-presenter-is-testing_27.html

(há mais links no final desse artigo).

Obviamente, isso pode não ajudá-lo a "verificar automaticamente o que é visto e o que não é", mas pode ajudá-lo a testar o máximo da lógica da interface do usuário.

Doc Brown
fonte
Obrigado pelo artigo. O problema é que, na minha aplicação, pelo contrário, a visualização é a parte mais complicada, e o apresentador e o modelo são primitivos o suficiente, e é a parte da visualização que preciso testar. Eu quero exatamente como eu disse, "verificar automaticamente o que é visto e o que não é" ou parcialmente automaticamente.
Gangnus
+1, Você me conduziu a outra pergunta ( programmers.stackexchange.com/questions/133134/… ) :-) Ficaria feliz em ler sua opinião.
Gangnus
1

Existem estruturas de teste que permitem interagir diretamente com a tela; no meu trabalho, usamos o IBM Rational Functional Tester, que permite clicar em botões e assim por diante, além dos testes programáticos usuais. Obviamente, isso não é gratuito, mas procurá-lo na wikipedia fornece essa lista de alternativas. Como você está olhando para Java, há o CubicTest , que é um plug-in do Eclipse; alternativas incluem Maveryx e Abbot .

Yamikuronue
fonte
+1 para sua tentativa. Mas essas ferramentas não funcionam no Android, como eu vejo.
Gangnus
@ Gangnus Drat, eu esperava pelo menos um. Eu não estou familiarizado com o desenvolvimento específico do Android, infelizmente
Yamikuronue
Infelizmente, eu tenho um problema muito difícil - meu aplicativo está sendo depurado não no emulador, que está em um PC, mas no dispositivo Andoid externo. Portanto, tenho quase certeza de que não existe uma ferramenta pronta para testá-lo. Eu mesmo deveria organizar o processo. Mas como ... O que tenho que verificar, quais são os problemas de se fazer esse teste, como o teste regressivo é organizado ... Todo mundo me dá links para ferramentas, mas eu preciso de links para pensamentos. Claro, eu levaria uma ferramenta muito bom grado, mas não há um ... Que mundo triste ... :-)
Gangnus
@ Gangnus Meu colega de trabalho me informa que mesmo o emulador dificulta a vida da depuração da GUI, a menos que você tenha algo projetado para ela, já que é uma camada extra para lidar. Quanto à modelagem dos testes, usamos uma ferramenta para criar fluxogramas descrevendo o caminho através do programa; acho que nossa ferramenta é fabricada internamente, mas tem a capacidade de gerar listas de todos os percursos possíveis do fluxograma (que se tornam nossos scripts de teste), que soa como um recurso que você deve encontrar com facilidade ou fazer a si mesmo com facilidade
Yamikuronue
0

Eu uso testcomplete. É uma ferramenta mais abrangente que eu usei para automatizar o teste da GUI. http://smartbear.com/products/qa-tools/automated-testing/ verifique-os Estou realmente certo de que este será um bom ajuste para você e suporta Java

Jaspreet Chahal
fonte
Obrigado, mas é: a) Windows b) não para Android c) não é gratuito. Eu poderia superar "c" e até "a", mas "b" é muito ruim.
Gangnus
-2

Estou usando https://marketplace.atlassian.com/plugins/com.thed.zephyr.je/cloud/overview há algum tempo. Possui plug-ins como o ZAPI que ajudam a automatizar os testes.

Uma sanguessuga
fonte
1
As respostas que são essencialmente "somente link" não são muito úteis. Agora, se você adicionou exemplos de como os plug-ins tratam da pergunta do OP, você pode tornar essa resposta útil.
Jay Elston