Como você testar o aplicativo e o código da interface do usuário?

10

Adoro escrever testes de unidade e concordo que eles são uma excelente maneira de testar código, impedir regressões etc. No entanto, não consigo escrevê-los, pois a grande maioria do código em que trabalho diariamente é aplicada código que exibe uma interface do usuário para o usuário. Existe uma boa maneira de testar o código do aplicativo? Quais são as melhores práticas aqui?

Não estou procurando uma resposta específica, como uma estrutura, etc. Mas, em geral, como você aborda esse problema?

Justin Ethier
fonte
O que é "código do aplicativo que exibe a interface do usuário"? Você está falando sobre o C no MVC?
Martin Wickman
Estou a falar de qualquer tipo de interface gráfica - JavaScript / HTML, C ++ com MFC, WinForms, WPF, etc ...
Justin Ethier
MVVM é fácil para teste de unidade. Consulte MVVM Command Pattern.
Amir Rezaei
@amir - Você tem referências ou informações adicionais?
Justin Ethier

Respostas:

8

Para testar a interface do usuário real, o Selenium funciona bem.

Se você deseja testes de unidade reais, sua estratégia é retirar o máximo possível da lógica da interface do usuário real, normalmente em um objeto ViewModel. Você pode escrever testes de unidade no objeto ViewModel.

Em outras palavras, coloque o mínimo de lógica possível na interface do usuário real, para que o teste de unidade possa ocorrer em outro lugar.

Robert Harvey
fonte
Esse é um bom design para o SoC. Não deve haver lógica de domínio / negócios na interface do usuário. Muita lógica do cliente - interatividade / validação pode ir na interface do usuário com JavaScript, que é testável por unidade.
StuperUser
1

Tive sucesso ao testar a unidade do meu aplicativo no MSTest e testar o meu Javascript com o QUnit e coletar os resultados desses testes com um único teste de unidade do MSTest que usa o WatiN (sugeri-me o Selenium , que também pode gravar testes, mas WatiN melhor para automatizar de forma limpa).

StuperUser
fonte