Teste em Swing

Bom dia a todos!!

Quais as melhores ferramentas hoje para realizar testes em aplicações Swing, desde testes de interface e padrões de projeto, até a uma simulação de interatividade do usuário. Enfim um teste completo, o que recomendariam??

Qualquer sugestão é benvinda.

Obrigado.

Alguém indicaria algo como Abbot? Ou JUnit mesmo?

Alguma outra idéia?

Se vc quer testar a interface existem algumas ferramentas pagas que conseguem interagir com o Swing como o Rational XDE Tester (não sei se existe ainda com esse nome ou mudou pra Functional Tester, algo assim). Acho que o Mercury QTP interage também – ambos são pra ambiente windows. Ontem eu vi umas pessoas testando o Eggplant e parece q o resultado foi bom para flash (e o eggplant é baseado em VNC e posições X/Y – o servidor tem que ser um MAC).

Pensando bem, deve ser possivel testar via reflection criando uma suite que incorpore a aplicação swing (ou algumas classes fazendo injetando dependências). Eu lembro de um livro sobre testes em .Net que uma das tecnicas era simular os eventos num windows forms via “reflection”, o problema é que tem que ser feito artesanalmente.

Obrigado por responder…

No meu caso, temos somente aplicações com Swing mesmo, desenvolvidas no NetBeans, e depois importadas para o Eclipse…
A idéia era mesmo testar tanto a padronização da interface, como simular a interação do usuário mesmo…

Com relação a criar um esquema artesanal, pensamos nisso, mas antes eu queria saber se já não existia alguma ferramenta que fizesse isso, para não “reinventarmos a roda” sabe…por isso a pesquisa, e claro pensando em ganhar tempo.
Foram boas as suas dicas, qq outra é benvinda.

Abraços…

o google me retornou essa ferramenta:

Devem haver outras, seria interessante que vc, ao pesquisar alguma, escrevesse alguma coisa no furum para ajudar outras pessoas que podem estar passando pelo mesmo problema :slight_smile:

Então, eu já havia feito uma busca alguns dias atrás, e achei um blog onde tem um post sobre testes com swing, que achei legal…

Seria esse: http://rfiume.blogspot.com/2007/03/testes-de-aceitao-em-aplicaes-swing.html

A partir dele, gostaria de saber sobre o que ja utilizaram se essas informações estão atualizadas, ou tem novas maneiras de se fazer testes, por isso o tópico…

Obrigado pela atenção…

Não conheço ferramentas open source que façam isso… pagas eu sei do Borland SilkTest e do da HP\Mercury que eu esqueci o nome.

Ja vimos o Marathon que parecia estar desatualizado, nem os demos estavam rodando muito bem, o Abbot é free e até que funcionou bem, possui ferramenta gráfica que auxilia para montar os scripts, porém é um tanto fraco.

Agora estamos fazendo alguns testes com o WindowsTester, ferramenta paga, e parece que atende as nossas necessidades, vamos ver onde chegamos…
Novidades postarei aqui…

QQ sugestão é sempre benvinda!

Abraços.

http://jfcunit.sourceforge.net/

O JFCUnit foi usado para automatizar os testes de um aplicação Swing aqui onde trabalho.

Nós usamos o Mercury Quick Test Pro. É legal, suporta tanto java quanto VB, é bastante poderoso e pode ser integrado com o Manager de testes da Mercury.
Claro, tem lá seus problemas. Um deles é não detectar componentes que sejam manualmente desenhados. Mas não creio que tenha algum testes que escape disso.

Por acaso vc esta usando a vrsão 9.2 ?

Para esse tipo de componente vc não consegue usar o “Smart Identification”?

Onde eu consigo baixar esse Mercury, na versão mais atual dele?

Obrigado.

[quote=peczenyj]Por acaso vc esta usando a vrsão 9.2 ?

Para esse tipo de componente vc não consegue usar o “Smart Identification”?[/quote]

Estamos com a última versão. Na verdade, o componente desenhado está dentro de um tableheader (é um botãozinho estilo os do auto-filtro do excel). E nem o Smart Identification foi smart o suficiente para encontra-lo.

Mas não dá para reclamar, como eu falei, é uma excelente ferramenta de testes.
Pesada que é um inferno, meio lenta, mas excelente.

E com o Mercury eu consigo colocar as regras de negócio, sempre que eu precisar, em minhas telas?

Pessoal, depois de pesquisarmos algumas ferramentas, verificamos que ainda não temos algo que possa fazer todos os passos que precisamos, e que não seja tão trabalhoso, e extenso para se implementar no ponto em que estamos de nosso desenvolvimento.

Sendo assim, decidimos por hora, construir uma classe que irá checar se nossas interfaces estão nos padrões definidos, sejam de fonte, listeners, altura, largura, nomenclatura, etc.

Com isso estabilizado, iremos voltar a avaliar novas ferramentas que possam atender nossas necessidades, de maneira mais prática, ou seja, onde possamos colocar regras de negócio, e deixar a ferramenta validar o produto, e depois nos passar um relatório, e quando necessário, possamos incluir/retirar regras facilmente.

Obrigado pela cooperação de todos,

Abraços.

lbvitoriano:

Eu avaliei várias bibliotecas que ajudam no teste para Swing e a que melhor se
comportou foi Jemmy. O que mais pegou foi procurar por componentes na página:
outras bibliotecas travavam: no Jemmy eu consigo trabalhar com tempos-limite
(timeouts) que funcionam de fato para tornar os testes viáveis.

A integração com o NetBeans é muito boa (a UI do Netbeans é testada com Jemmy),
mas usei no Eclipse tb sem nenhum plugin e funciona blz.

Temporização para testes onde dependemos de eventos não é desejável, mas
às vezes na prática a teoria é outra.

Espero ter ajudado,

Jorge

Boa tarde!!

Claro qualquer idéia, opinião, é sempre benvinda.
A questão maior dentre as ferramentas que vimos, é relacionada a ter uma maneira prática de se embutir regras de negócio, ao se fazer os testes, com relação a interfaces tem algumas ferramentas interessantes no mercado, e que fazem a parte delas, conforme voce mesmo mencionou, porém algo mais cimpleto para swing, que se consiga colocar regras, e tratamentos especiais em telas mais complexas, ainda não encontramos…

Obrigado por vossa atenção…
Qq novo post, tamos ae!!

lbvitoriano:

Me parece que temos uma questão mais interessante ai do que qual ferramenta usar …

A pergunta original era sobre teste de GUI, se entendi certo. Existe um certo consenso (é claro que alguém
pode discordar, afinal “toda unanimidade é burra”, como dizia Nelson Rodrigues) de que colocar muita ênfase
ou complexidade no teste de interface usuário não é bom, por vários motivos:

  1. Fragilidade do teste: a GUI é mais volátil que outras partes do sistema, dependência de tempo para os eventos.
  2. Custo da automação, em dois sabores:
    2.a) Escrita do teste na unha não é tão trivial
    2.b) Geração de testes a partir de “record & replay” como em Selenium (para interface Web) ou Marathon(para Swing): o teste fica ainda mais frágil e a manutenção mais complicada = custosa.

Por isso, tenta-se colocar um mínimo na interface de maneira que as suas responsabilidades sejam apenas
as de visualização. Regras de negócio são melhor testadas fora da interface: vc precisa ter como acionar essa
lógica a partir dos testes sem precisar de uma GUI.

Ferramentas como FIT, FitNesse e Concordion representam uma alternativa melhor para teste de regras de
negócio, com exemplos especificados em formato tabular.

Dito isto, é bom ter pelo menos alguns testes que consigam verificar o funcionamento do sistema de ponta a ponta, incluindo a GUI. Mas como falam os comerciais de cerveja, aprecie com moderação.

Um artigo que gostei sobre a questão de emagrecer a lógica da GUI, para diminuir a complexidade de testes de GUI: "The Humble Dialog Box"
http://www.objectmentor.com/resources/articles/TheHumbleDialogBox.pdf

De novo, espero ter ajudado

Jorge

[quote=lbvitoriano]Boa tarde!!

Claro qualquer idéia, opinião, é sempre benvinda.
A questão maior dentre as ferramentas que vimos, é relacionada a ter uma maneira prática de se embutir regras de negócio, ao se fazer os testes, com relação a interfaces tem algumas ferramentas interessantes no mercado, e que fazem a parte delas, conforme voce mesmo mencionou, porém algo mais cimpleto para swing, que se consiga colocar regras, e tratamentos especiais em telas mais complexas, ainda não encontramos…

Obrigado por vossa atenção…
Qq novo post, tamos ae!!

[/quote]

Amigos

Peço ajuda:

Atualmente uso o Winrunner para rodar demandas massivas em um sistema operacional da empresa. Porem tenho muita dor de cabeça pois o winrunner da uns BUGS, as vezes não reconheçe telas, botões, combos, etc.

: Temos uma ferramenta REC-TO-PLAY melhor e mais facil que winrunner e de preferencia free?
Alguma coisa em VB, etc…

Obrigado para quem puder ajudar…

Att
Fabio