2009-02-20 3 views
9

저는 UI 측면에서 매우 복잡하고 AJAX, DOM 및 이미지 조작에 크게 의존하는 웹 응용 프로그램을 작성하고 있습니다.웹 응용 프로그램의 단위 테스트를 가장 잘 수행하는 방법

버그를 줄이기 위해 따라야 할 표준적인 방법이 있습니까?

+0

위대한 질문. 나는 똑같은 것을 궁금해왔다. – RSolberg

+0

이것은 매우 모호한 질문입니다. 귀하의 질문은 일반적으로 도구 목록을 통해 대답 할 수 있지만 코드에 버그가 적게는 마법 같은 방법으로 소리가납니다. 정확히 무엇을 요구하고 있습니까? – ryeguy

+0

@ryeguy 그의 질문은 디자인 지향적 인 질문입니다. 그는 Unit Testing 스타일이 무거운 UI 앱에 어떻게 들어 맞는지 묻고 있습니다. Carlten이 대답 할 수있었습니다. – DevinB

답변

5

로직 및 UI 부분을 분리하십시오. 코드 비하인드 페이지에 비즈니스 로직과 복잡한 코드가 모두 포함되어 있지 않아도됩니다. 대신 표준 계층 구조 (데이터 계층, 비즈니스 규칙/논리 계층, UI 계층)에서 빌드하십시오. 이렇게하면 테스트하려는 논리 코드가 양식을 참조하지 않고 대신 쉽게 테스트 할 수있는 클래스가 사용됩니다.

TextBox2.Text = DoWork(TextBox1.Text.ToString()); 

public class Work 
{ 
    public string DoWork(string str) 
    { 
     //do work 
     return str2; 
    } 
} 

당신이 쓸 수있는이 방법 :

string str = TextBox1.Text.ToString(); 
//do whatever your code does 
TextBox2.Text = str; 

이 대신하는 방법으로 별도의 클래스로 논리를 추출 : 매우 기본적인 예를 들어

이가하는 코드가없는 단위 테스트를 통해 DoWork가 올바른 값을 반환하는지 확인합니다.

string return = DoWork("TestThisString"); 

이제 모든 논리는 단위 테스트입니다 테이블, 귀하의 UI 레이어에 직접 페이지를 참조하는 코드 만 있습니다.

8

매우 간단한 기술은 모든 응용 프로그램의 클릭 연결을 자동화하는 연기 테스트입니다. 스크립트가 실행되고 로그에 오류가없는 경우 적어도 하나의 정의 된 수준의 품질이 있습니다.

이 기술은 실제로 상당한 양의 회귀 휴식을 잡아 내고 소리보다 훨씬 효과적입니다. 이를 위해 selenium을 사용합니다.

+0

특정 테스트 시나리오를 사용한 기능 테스트를 의미합니까 아니면 가능한 모든 타겟을 클릭하고 있습니까? – legesh

+0

가장 간단한 버전은 Google의 주요 결과물 인 사용 사례를 클릭하는 것입니다. 최소한 대체/오류 흐름을 포함합니다. 그렇다고해서 모든 버튼/항목을 클릭 할 필요는 없습니다. – krosenvold

2

Watin은 위대한 도구입니다.

1

간단한 체크리스트 (종이 한 장이라도!)는 중요한 것을 건너 뛰지 않는 가장 좋은 방법입니다. "표준"이 깨지지 않은 좋은 "연기 테스트"입니다.

관련 문제