2012-05-03 7 views
2

나는이 정치적/종교적 전투에 갇혀있는 것처럼 느낍니다. 내가 한 연구 결과에 따르면 많은 사람들이 UI 테스트가 단위 테스트를 통해 어리석은 짓이며 실제 사람이 수행 한 것보다 훨씬 낫다고 믿습니다. 나는 동의한다.ASP.NET MVC3 UI 단위 테스팅

그러나 더 높은 UPS는 단위 테스트 UI를 내게 말했다 것 같습니다. (그들은 이전에 내가 단지 테스트 계획을 작성하고 실제 테스트를 작성하면 안된다고 말했기 때문에 이미 이상합니다.) 모든 성실에서 저는 단위 테스트에 익숙하지 않습니다. 나는 MOQ를 사용하려고 노력하고 있지만 모든 자습서에서는 저장소가 아니라 서비스를 사용하고 서비스를 중심으로 웹 응용 프로그램을 구성하고 있습니다.

예를 들어 여기에 (의 일부) 서비스이므로 :

public class ProductService : Service<Product, EntitiesDbContext> 
    { 
     ... 
     public Product GetProduct(int id) 
     { 
      return All().FirstOrDefault(p => p.ProductId == id); 
     } 
     ... 
    } 

내 가정은 내가 이제 MOQ를 사용하여, 새로운 제품 말을하고 누군가가 하드 코드 입력을 검증하게 만들 필요가있다 내 모델을 사용해서. 어떻게해야할지 모르겠습니다.

웹 사이트가 양식을 통한 사용자 입력에 크게 의존하기 때문에 UI를 테스트하는 것은 일의 대부분입니다. 다시 말하지만, 내 모델은 매우 엄격하고 특정 입력 만 허용하기 때문에 단위 테스트로 테스트하는 것은 매우 어리 석다.

내 질문 : MOQ 또는 다른 테스트 프레임 워크를 사용하여 양식 입력을 테스트하는 방법은 어떻게됩니까? 나는 당신의 행동을 추적하고 그것을 복제 할 수있는 프로그램이 있다고 들었다. 그러나 나는 그 기술을 찾는데 실패했고, 그러한 기술은 돈이들 것이라고 믿는다.

답변

1

Visual Studio 2010 Ultimate에는 코딩 된 UI 테스트라는 것이 있습니다. 기본적으로 Internet Explorer에서 동작을 기록합니다.이 동작은 어설 션을 추가 한 C# 코드로 변환 한 다음 다른 브라우저에서 해당 동작을 재생합니다.

그러나 새로 추가 된 행이 무엇인지 파악하기가 어렵 기 때문에 데이터베이스 기반 웹 응용 프로그램을 테스트하는 것은 매우 어렵습니다. 문제를 단순화하기 위해 테스트 스위트를 순차적으로 실행하기 전에 샘플 데이터베이스를 초기 상태로 재설정 할 수 있습니다.

코딩 된 UI 테스트를 사용하는 방법에 대한 다양한 TechEd 비디오를보십시오. 예 : http://www.youtube.com/watch?v=rZ8Q5EJ2bQM

1

UI에 대한 작업을 테스트하고 있습니까, 아니면 실제 UI를 테스트하고 있습니까?

당신은 작업을 테스트하는 경우 그들은 다음 등 NUnit 같은 것을 사용하여 단위 테스트, xUnit을, 일을하고 옳은 일이 될 것입니다 MOQ 또는 Rhino Mocks 같은 MOQ 프레임 워크를 사용하여보기로 보내는 어떤 데이터.

당신이 다음 오른쪽 도구

1

또한 Ivonna (http://ivonna.biz을 시도 할 수 있습니다에게 것 Selenium 같은 자동화 된 테스트 프레임 워크를 사용하여 실제 UI (웹 서버에 의해 반환 된 HTML)를 테스트하는 경우) MVC 테스트 용 - 클라이언트 측을 테스트하지는 않지만 Asp.Net 서버 측 코드를 테스트 할 수 있습니다.

하지만 무엇보다도 먼저 자신이나 경영진에게 질문해야합니다. 무엇을 테스트하고 싶은가요? 클라이언트/서버 측 검증? 귀하의 서비스? 행동 방법?

1

개발자는 UI 테스트를 자동화하기 위해 많은 반대 의사가 있습니다. 수년 전에 내가 사용한 것은 "Selenium Core"사용이었습니다. 이렇게하면 Firefox에서 테스트를 수정 한 다음 C#으로 저장 한 다음 C#과 Html 파일을 혼합하여 다음과 같이 할 수있었습니다.

  1. 는 비밀번호 분실 - 데이터베이스에서 자동화 임의의 사용자 이름을 입력 할 것이다 다음 암호화 된 암호는 내가 설정 한 다양한 Gmail 계정 이메일로 전송되었고, 내가 리디렉션 한 후, Gmail 및 새 재설정 암호를 검색하기 위해 로그인하는 C#을 API를했고, 응용 프로그램에 새 암호를 입력하게하고 CI 서버 허드슨에 넣고 하루 종일이 테스트를 자동화하고 성공 및 오류 등을 기록 할 수 있습니다 ...

  2. 새 등록 ... # 1과 유사

So UI 테스트를 위해 Functional 또는 UAT 테스트를 호출 할 수 있습니다. 실제 단위 테스트의 경우 NUnit/Xunit, MSTest 등 ...에 대한 것이고 MOQ 등 ...을 지원할 수 있습니다. 통합 테스트는 파일 시스템이나 WCF 또는 데이터베이스와 같이 연결된 시스템을 통해 전체 응용 프로그램을 실제로 테스트합니다.

이들 모두 장단점이 있지만 어느 것도 완벽하지는 않지만 대부분 사람들은 결국 단위 테스트가 가장 큰 이유라고 말합니다.