2010-12-22 4 views
8

나는 C#/.NET에서 소프트웨어를 개발하고 있지만 다른 프로그래밍 언어에 대해서도 질문 할 수 있다고 생각됩니다. 릴리스 버전간에 소프트웨어 성능을 어떻게 테스트합니까? 좀 더 자세히 설명해 드리겠습니다.소프트웨어 릴리스 버전 간의 코드 성능을 어떻게 테스트합니까?

소프트웨어의 프로덕션 릴리스 이전에 소프트웨어의 이전 릴리스에서 사용 가능한 기능 집합에 대한 소프트웨어 성능을 비교하고 싶습니다. 하나 이상의 dll을 릴리스하는 소프트웨어 라이브러리 프로젝트 (GUI 없음)에 대해 이야기한다고 가정 해 봅시다. 어떻게 이것을 달성 할 수 있을까요? 가장 좋은 방법은 무엇입니까? 이전 버전의 dll로 현재 dll을 바꿀 수없고 같은 테스트를 실행할 수 없습니다.

내가 생각할 수있는 한 가지 방법은 현재 분기에 사용되는 주 분기와 이전 릴리스 분기에서 동일한 성능 테스트를 추가 한 다음 성능을 비교하는 것입니다. 나는이 일을하는데 약간의 고통이 있다고 생각하지만 가능하다.

내가 생각할 수있는 또 다른 방법은 lest release branch로 시작하여 마지막 릴리즈 이후에 삽입 된 새로운 코드와 기능을 스텁 한 다음 테스트를 실행하는 것입니다. 나는 이것이 올바른 결과를 가져올 것이라고 생각하지 않는다.이 접근법은 이전 접근법보다 훨씬 고통 스럽다.

다른 아이디어 주셔서 감사합니다. C#/.NET 특정 답변을 선호합니다.

편집 1 : Thisthis은 다소 관련이 있습니다.

+0

좋은 위키 항목을 만들 수 있습니다. –

+0

나는 그걸로 잘되고 있지만 어떻게해야할지 모르겠다. 충분한 포인트가 없을 것 같아요. 사회자가 내가 생각하는 위키를 만들 수 있습니다. –

+0

좋은 대안이 있습니다. 토론 해 주셔서 감사합니다. –

답변

3

우리는 성능 테스트 모음을 가지고 있습니다. 이것들은 NUnit 테스트 일뿐입니다. 각 테스트는 일부 개체를 설정하고 타이머를 시작하고 (스톱워치는 잘 작동 함) 관심있는 작업 (예 : 특정 화면의 데이터로드)을 수행 한 다음 경과 시간을 CSV 파일에 씁니다. (NUnit은 각 테스트에 소요되는 시간을 기록하지만 설정 로직을 제외시키려는 경우가 있습니다. 테스트 로직은 테스트마다 다를 수 있기 때문에 자체 타이머와 로깅을 사용하는 것이 더 합리적입니다.)

우리는 때때로 동일한 하드웨어 및 네트워크 환경에서 이러한 테스트를 실행합니다. 결과를 데이터베이스로 가져옵니다. 그런 다음 그래프를 작성하여 경향을 표시하거나 큰 비율 변경을 불러오는 것이 쉽습니다.

+0

이 길로 가기로 결심했습니다. 감사. –

1

테스트 결과를 새로운 릴리스마다 소스 제어 텍스트 파일에 추가 할 수 있습니다. 그러면 모든 버전의 성능에 대해 쉽게 액세스 할 수 있습니다.

분기 및 트렁크에 대한 성능 테스트를 실행하는 아이디어는 본질적으로 동일하지만 결과를 저장하면 작업 복사본을 앞뒤로 전환하는 노력을 줄일 수 있습니다.

2

실제로 릴리스간에 성능을 비교하려면 여러 릴리스에서 동일한 기능을 수행하는 테스트가 필요합니다. 단위 테스트는 종종 잘 작동합니다.

미리 정의 된 성능 임계 값을 기반으로 로깅을 통해 코드를 계측 할 수 있습니다. 예를 들어, 이전 버전에서 코드를 실행하면 메트릭을 얻습니다. 그런 다음 응용 프로그램에 시간 코드를 추가하여 동일한 기능이 특정 시점에 일정 시간 이상 걸리면 메시지를 기록하십시오 (또는 호출자가 선택적으로 기록 할 수있는 이벤트를 브로드 캐스트). 물론 타이밍 코드가 성능 저하 자체를 초래할 수있는 정도까지이를 과장하기를 원하지는 않습니다.

우리는 SQL 호출을 통해이 작업을 수행합니다. 우리는 단일 sql 호출이 취해야하는 최대 시간에 대한 임계 값을 가지며 임계 값을 초과하는 SQL 호출이있을 경우 경고로 기록합니다. 동일한 HTTP 요청에서 SQL 호출 수를 추적합니다. 목표는 시간이 지남에 따라 임계 값을 줄이는 것입니다.

#if 섹션에서 이러한 테스트를 래핑 할 수 있지만 프로덕션 환경에서는 포함하지 않아도됩니다.

0

사용자 (또는 테스터)가 사용할 수있는 특수 설정이 있습니다. 이 기능을 사용하면 CSV 파일을 생성하여 Excel로 보내고 성능 보고서를 볼 수 있습니다.

특정 작업의 개별 개수 및 소요 시간을보고합니다. 엑셀은 이것을 우리에게 좋은 비주얼 방식으로 보여줍니다.

모든 코드는 맞춤식이지만 성능 추적 코드의 오버 헤드는 벤치마킹했지만 실제로는 아무 것도 아닙니다. 그것은 잘 최적화되고 매우 짧습니다.

뷰티플을 재생할 수없는 성능 문제가 발생하는 경우에도 고객으로부터 좋은 반응을 얻을 수 있습니다.

관련 문제