Não existem mais testes em aplicações Desktop?
Atualmente existem inúmeros artigos, posts, sites e cursos sobre automação de aplicações web. Entretanto muito pouco é explorado sobre aplicações desktop, seja pela dificuldade técnica de implementação de testes, seja pela praticidade na utilização de ferramentas proprietárias, como QuickTestPro, TestComplete, Unified Functional Testing, entre outras.
Mas por que?
O mercado tem focado muito em aplicações web e em dispositivos móveis, resultado da alta demanda nesta área. Mas esta ainda não é a realidade de muitas empresas, que por inúmeros motivos, ainda precisam manter e sustentar aplicações desktop.
Para promover o debate e auxiliar quem busca por opções open source, trago dois exemplos de ferramentas que permitem a instrumentação de aplicações desktop: Appium e White.
Pré-requisitos
Para que os testes possam identificar os atributos e interagir com os elementos das suas aplicações, é necessário habilitar o modo desenvolvedor no Windows. Se você está utilizando Windows 10, pode seguir o exemplo deste link: https://docs.microsoft.com/pt-br/windows/uwp/get-started/enable-your-device-for-development
É necessário também instalar a SDK do Windows, disponível em https://developer.microsoft.com/pt-br/windows/downloads/windows-10-sdk
A SDK contém alguns utilitários que podem ser úteis para detecção de elementos, como o Inspect e o UIAVerify.
Appium+WinAppDriver
Appium é um framework muito utilizado para testes de aplicações nativas para dispositivos móveis. Além de aplicações Android e iOS, ele também permite a criação de testes para aplicações Windows, utilizando o WinAppDriver (https://github.com/Microsoft/WinAppDriver/).
O WinAppDriver (Windows Application Driver) provê métodos de interação entre os serviços disponibilizados pelo Appium e a instrumentação de aplicações Windows. Alguns exemplos de implementação de testes pode ser encontrados em https://github.com/Microsoft/WinAppDriver/tree/master/Samples
A documentação de como implementar testes de aplicações windows com appium pode ser encontrada em http://appium.io/docs/en/drivers/windows/
Por implementar o protocolo Webdriver (conhecido também como JSON Wire Protocol), é possível criar os testes utilizando Java, C#, Javascript, Ruby, Python ou outra linguagem de sua preferência que o implemente em alguma biblioteca — se preferir, você mesmo pode criar os métodos a partir do protocolo, utilizando a linguagem que desejar.
White
É um framework escrito em C# para automação de testes em aplicações desktop (Windows Forms, Silverlight, SWT/Java, etc.). Por integrar-se diretamente ao UIAutomation e MSAA (Microsoft Active Accessibility), tem uma performance superior à implementação com Appium. Em contrapartida somente pode ser utilizada com a mesma linguagem.
O repositório do White também disponibiliza exemplos de como implementar seus testes. Link: https://github.com/TestStack/White/tree/master/src/Samples
Além dos frameworks citados, existem outros que também implementam opções de interação com aplicações deste tipo. O ideal é sempre avaliar qual trará mais benefícios para o contexto do seu projeto.
Espero que estas dicas ajudem àqueles que buscam opções para agilizar os seus testes no dia-a-dia. Se você conhece outras ferramentas ou deseja contribuir com o post, comente e compartilhe.
Até a próxima! \o/