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?


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.


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).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.