2010-05-17 4 views
5

복잡한 데이터 유효성 검사 규칙이있는 여러 입력 양식이있는 회계 & 급여 클라이언트/서버 응용 프로그램이 있습니다. 나는 사용자 인터페이스의 단위 테스트를 수행하는 효과적인 방법을 찾고있다.단위 테스트 사용자 인터페이스. 효과적인 방법은 무엇입니까?

복잡한 검증 규칙의 말 : "나는 텍스트 필드 Y에 값을 삽입 함 버튼 X가"

  • 는 "나는 텍스트 필드에 값을 삽입하면 콤보 상자 사용"

    • ... ... ......

    M. Fowler (http://martinfowler.com/eaaDev/ModelViewPresenter.html)가 가장 유망한 패턴을 제안했습니다.

    사용자 인터페이스 테스트에 대한 경험이 있습니까? 기술 스택으로 사용하고 있습니다. .NET 3.5 & Windows Forms 위젯 라이브러리.

  • 답변

    5

    정확히 "단위 테스트"라고하지는 않지만 WinForms UI와 WatiN을 사용하는 웹 UI에 대해 자동화 된 테스트를 실행하면 어느 정도 성공할 수 있습니다.

    테스트하려는 응용 프로그램의 창에 대한 핸들을 얻을 수 있다고 가정하면 사용자 인터페이스의 기능을 테스트하기 위해 많은 C# 코드를 스크립팅 할 수 있어야합니다.

    많은 사람들은 UI에 대해 자동화 된 테스트를 실행하려는 생각을 비판합니다. 테스트 할 수 없을 정도로 많은 사람들이 있기 때문입니다. 예를 들어, 자동화 된 테스트에서 글꼴이 추악하거나 일부 텍스트가 혼란 스럽거나 단추가 약간 중심에 있지 않음을 알 수 없습니다. 이런 유형의 것들에 대해서는 의심의 여지가 없습니다. 지능적인 인간이 스크린을보고 있어야합니다.

    그러나 테스트 유형을 제외하고는 정기적으로 자동화되고 수행 될 수있는 반복 테스트의 큰 배열이 있습니다. 대부분의 대규모 응용 프로그램에는 회귀 테스트 스크립트 전체가 포함되어 있습니다.이 스크립트는 새 릴리스가 나올 때마다 수동으로 수행해야합니다. 이 테스트는 일반적으로 원숭이를 교육시킬 수있는 것입니다.이 링크를 클릭하고, 텍스트를 입력하고, 버튼을 클릭하고, 결과 메시지를 확인하는 등의 지시 사항 목록입니다. 이러한 것들은 QA 테스터의 시간 낭비입니다. 비참하게 만듭니다. 따라서 자동화 할 수 있다면 좋을 것입니다. 이러한 유형의 테스트는 매일 빌드 서버에서 자동으로 실행될 수 있어야하며 수동 테스트보다 훨씬 철저하게 작성 될 수 있습니다.

    또 다시, 그것은 이상한 일들을 발견하지 못할 것이지만, 당신이 당신의 작은 변화가 당신이 애플리케이션의 다른면에서 들어 본 적이없는 다른 화면을 깨뜨리지 않는다는 확실한 확신을 줄 것입니다.

    응용 프로그램을 약간 변경하면 자동화 된 테스트와 마찬가지로 어리석은 이유로 테스트가 중단 될 수 있기 때문에 개발자가 더 많은 작업을 진행할 수 있지만 테스트 및 디버깅에 많은 시간을 절약 할 수 있습니다. 이것이 당신에게 가치가 있는지 여부는 당신이 결정하는 것이지만, 평상시와 같이 신속하게 기각되어서는 안되는 고려 사항이라고 생각합니다.

    +0

    귀하의 고민에 동의하십시오. 나는 그것이 어떤 테스트가 아무것도 아닌 것보다 낫다고 생각한다. 그래서 나는 누군가가 작은 변화를 수행 할 때 조건을 높이도록 배치를 빠르게 작성하는 방법을 찾고 싶습니다. – pierocampanelli

    1

    단위 테스트는 정의에 따라 인터페이스를 테스트하기에 좋지 않습니다. 단위 테스트는 단일 엔터티의 백 엔드 기능을 테스트해야합니다. 기능 테스트를 위해 그렇게하기위한 프레임 워크를 얻으십시오. Mercury (현재 HP) Quality Center 또는 Performance Center와 같은 것을 고려하십시오. 예산이 부족하다면 Selenium을 사용해보십시오.

    기능 테스트는 단위 테스트에서 단계적으로 이루어 지므로 서로 혼동해서는 안됩니다.

    3

    사용자 인터페이스 테스트는 어렵고 일반적으로 단위 테스트보다 높은 테스트 수준에서 수행하는 것이 가장 좋습니다.

    마틴 파울러 (Martin Fowler)가 제안한 MVC/MVP 분리를 사용하여 컨트롤러와 로직을 테스트하는 것이 훌륭한 출발이지만, 자동화 된 방식으로 UI를 완전히 테스트하려면 WinRunner 또는 QTP와 같은 자동화 도구로이를 늘릴 필요가 있습니다.

    +0

    오픈 소스 도구도 있습니까? – pierocampanelli

    1

    복잡한 검증 규칙의 말 :

    * "Disable button X if I Insert a value in textfield Y" 
    

    이 규칙은 두 모델과 뷰를 테스트하고 그들이 힘든 만드는거야. 대신, 텍스트 필드 Y에 값을 삽입 할 때 모델이 해당 값을 얻는다는 것을 확인하십시오. 비어있는 Y가있는 모델은 X_ENABLED == false이고, 비어 있지 않은 Y는 X_ENABLED == true를가집니다. 그리고 X_ENABLED == true 인 모델이 주어지면 View의 버튼이 사용 가능하다는 것을 의미합니다. 이 테스트 중 두 가지 테스트 만 UI가 포함되며 너무 간단해서 실패 할 수 없습니다. 복잡한 논리를 쉽게 테스트 할 수있는 모델에 배치하십시오.

    0

    Untit UI 테스트는 다른 사람들과 마찬가지로 고통 스럽습니다. Team Foundation 2010의 새로운 기능인 Test & Lab Manager을 추가하면 UI 수동 테스트와 자동화 테스트 자동화 테스트를 모두 수행 할 수 있습니다. 적어도 WinForms, WPF 및 웹 사이트에서는 테스트를 실행할 때 GUI 구조를 인식 할만큼 똑똑합니다.

    관련 문제