Pergunta

Nossa empresa está atualmente escrevendo uma ferramenta de teste de automação GUI para aplicativos de estrutura compacta.Inicialmente pesquisamos muitas ferramentas, mas nenhuma delas era adequada para nós.

Ao usar a ferramenta você pode registrar casos de teste e agrupá-los em conjuntos de testes.Para cada conjunto de testes é gerado um aplicativo, que inicia o aplicativo em teste e simula a entrada do usuário.

Em geral a ferramenta funciona bem, mas como estamos usando puxadores de janela para simulação de entrada do usuário, você não pode fazer muitas coisas.Por exemplo, é impossível obtermos o nome de um controle (apenas obtemos a legenda).

Outro problema ao usar identificadores de janela é verificar se há alterações.No momento simulamos um clique em um controle e dependendo do resultado sabemos se a aplicação passou para o próximo passo.

Existe alguma outra maneira (mais simples) de fazer essas coisas (por exemplo, a fila de mensagens ou qualquer outra coisa)?

Foi útil?

Solução

Se a ferramenta de teste automatizado de GUI tiver conhecimento sobre a estrutura na qual o aplicativo está escrito, ela poderá usar essas informações para criar scripts melhores ou mais avançados. Teste concluído por exemplo, conhece o VCL e o WinForms da Borland.Se você testar aplicativos criados usando o Windows Presentation Foundation, terá suporte avançado para isso construir.

Outras dicas

Problema interessante!Faz algum tempo que não faço nenhuma programação de baixo nível (pense em Win32) no Windows, mas aqui está o que eu faria.

Use um pipe nomeado e faça seu aplicativo ouvi-lo.Usando esse pipe nomeado como meio de comunicação, implemente um protocolo realmente simples por meio do qual você pode consultar o aplicativo em busca do nome de um controle, dado seu HWND, ou outras coisas que achar úteis.Certifique-se de que o protocolo seja rico o suficiente para que haja troca de informações suficientes entre seu aplicativo e a estrutura de teste.Certifique-se de que a estrutura de teste não produza muito "comportamento especial" do aplicativo, porque então você não estaria realmente testando os recursos, mas sim sua estrutura de teste.

Provavelmente existem maneiras muito mais elegantes e legais de implementar isso, mas é disso que me lembro de cabeça, usando apenas chamadas simples de API do Win32.

Outra abordagem, que implementamos para nosso produto em funcionamento, é registrar eventos do usuário, como cliques do mouse e eventos principais em um script de evento.Isso deve ser rico o suficiente para que você possa fazer com que o aplicativo o reproduza, injetando artificialmente esses eventos na fila de mensagens, e faça com que ele se comporte da mesma maneira que quando você gravou o script pela primeira vez.Você basicamente simula o usuário ao reproduzir o script.

Além disso, você pode registrar qualquer estado importante (documento do usuário, preferências, hierarquia de controles da GUI, etc.), uma vez ao gravar o script e uma vez ao reproduzi-lo.Isso fornece dois conjuntos de dados que você pode comparar, para garantir, por exemplo, que tudo permaneça igual.Esta solução oferece testes que não são fáceis de modificar (você precisa regravar se sua GUI mudar), mas que fornecem testes de regressão incríveis.

(EDITAR:Esta também é uma excelente ferramenta de controle de qualidade durante o teste beta, por exemplo:apenas faça com que seus usuários registrem suas ações e, se houver uma falha, você terá uma boa chance de reproduzir facilmente o problema apenas reproduzindo o script)

Boa sorte!

Carlos

usar NUnitForms.Eu os usei com grande sucesso para aplicativos de threading único e múltiplo e você não precisa se preocupar com alças e coisas assim

Aqui estão alguns posts sobre NUnitForms que vale a pena ler

NUnitForms e registro DragDrop com falha - problema de MTA vs STA

Teste de GUI exe de aplicativo compilado com NUnitForms

Finalmente encontrei uma solução para comunicação entre o aplicativo de teste e o aplicativo em teste: Espião Gerenciado.É basicamente um aplicativo .NET construído sobre ManagedSpyLib.

ManagedSpyLib permite acesso programático aos controles do Windows Forms de outro processo.Para isso ele usa Window Hooks e arquivos de mapeamento de memória.

Obrigado a todos que me ajudaram a chegar a esta solução!

O Managed Spy não fornece uma solução para aplicativos de estrutura compacta.

A empresa Jamo Solutions (www.jamosolutions.com) atende aos requisitos para testes de automação em dispositivos móveis, incluindo aplicativos de estrutura compacta .net.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top