2013-01-09 2 views
0

저는 금융 정보 웹 응용 프로그램을 개발중인 팀원입니다. 아직 많은 자동화 된 테스트를 작성하지 않았으므로 프로그램의 가장 중요한 부분에 회귀 테스트를 추가하기로 결정했습니다. 나는 자동화 된 테스트에 익숙하지 않기 때문에 테스트를 작성하는 방법에 대해 잘 모르고있다.계산 엔진에 대한 회귀 테스트를 개발하는 방법

이 게시물은 길기 때문에 여기에 tl; dr 질문 : 특정 계산이 작동 하는지를 확인하는 회귀 테스트를 작성하려면 어떻게해야합니까? 하지만 계산을 테스트하고 싶지는 않습니다. 또한 계산을 구성하는 요소가 입력 중단에 달려 있는지 여부를 알고 싶습니다. 어떤 구성 요소가 고장 났는지 알 필요가 없습니다. 작동하지 않는 구성 요소입니다. 어떤 접근 방식을 사용해야합니까?

는 우리의 상황 : 우리는 계산 엔진은 대부분의 회귀 테스트를 가질 필요가 우리 프로그램의 부분은 것으로 확인되었습니다

Views 
    | 
    V 
Logic Managers <--> Financial Calculation Engines 
    | 
    V 
Data Accessors 
    | 
    V 
Database 

: 우리는 다음과 같이 계층화 된 아키텍처를 사용하여 응용 프로그램을 개발 모음곡. 이러한 구성 요소에는 원시 재무 데이터를 유용한 결과로 처리하는 데 사용하는 계산 및 알고리즘이 포함되어 있습니다. 해당 관리자는 원시 재무 데이터를 매개 변수로 사용하는 공용 메소드를 호출하여 해당 관리자를 사용합니다. 엔진 메서드가 반환되면 처리 된 재무 결과가 포함 된 개체가 반환됩니다. 한편 관리자는 데이터 접근 자에서 원시 재무 데이터를 가져 와서 데이터베이스에서 데이터를 가져옵니다.

우리는 재무 계산이 "중단"되는대로 알기로 결정하여 마지막 테스트가 실행 된 이후에 프로그램의 어느 부분 에든 버그가 있음을 알 수 있습니다. 이것은 우리가 엔진이 잘못된 결과를 내고 어디를보아야하는지 모르는 것을 막기 위해 지속적인 테스트를 사용하게합니다.

우리는 이것이 의미하는 바를 생각할 때 각각의 엔진에 단위 테스트를 추가하는 것으로 충분하지 않다는 것을 깨달았습니다. 예를 들어, 데이터 접근 자의 잘못된 변경은 잘못된 데이터를 가져 오는 것을 의미합니다. 이 데이터는 관리자를 통해 엔진으로 전송되어 잘못된 결과가 발생합니다. 그러나 엔진의 알고리즘 자체는 여전히 완벽하게 작동하므로 단위 테스트가 계속 진행됩니다. 즉, 잘못된 숫자가 생성되는 것을 감지하면 버그가 도입 된 시점을 알 수 없으므로 추적 및 수정하기가 더 어려워집니다.

대신 잘못된 데이터가 전송되었다고해도 문제가 발생해도 엔진 결과가 올바르지 않은 버그가 나타나는 곳에서 즉시 회피 할 수있는 회귀 테스트를하고 싶습니다 엔진 자체에 문제가있는 것은 아닙니다. 이 테스트가 실패하면 문제가있는 곳을 알려주지 않지만 계속 테스트 중이라면 버그를 확인하자마자 변경 사항을 살펴보고 수정해야합니다.

그래서 우리가하고 싶은 것이 있습니다. 불행하게도 우리는 이러한 테스트를 만드는 방법을 모른다. 이러한 접근법이나 패턴은 이러한 유형의 회귀 테스트를 작성하는 데 유용합니다.

답변

1

그냥 힌트 : 당신이 때마다와 같은 입력을 금융 계산 엔진의 모든 부분을 확인해야하고, 반환 된 객체가 동일마다해야한다. 동일한 로직, 동일한 입력, 동일한 출력으로 Data Accessors를 별도로 테스트하십시오.
이렇게하려면 시스템의 일부분을 mock (예 : 데이터 접근자를 모의 해 항상 동일한 데이터 집합을 반환)해야합니다.

각 부분 앞에서 별도의 단위 테스트를 수행하면 버그가 더 정확하게 검색됩니다.

링크의 몇 가지 아이디어로 얻을 : 당신은 자바 프로젝트에 대한 Mockito 같은 테스트를 코딩 할 수 있도록 도와줍니다 주위 조롱 프레임 워크 많이 있습니다
http://www.ibm.com/developerworks/library/j-mocktest/index.html
http://www.slideshare.net/joewilson123/unit-testing-and-mocking

.

관련 문제