2011-04-01 5 views
15

Python 응용 프로그램 (멋진 웹 서비스)에는 모든 개발자가 코드를 커밋하기 전에 실행해야하는 모든 테스트 (단위 테스트, 통합 테스트 등)가 있습니다.
성능 테스트를 추가하여 어느 누구도 우리가 너무 느리게 실행되는 코드를 추가하지 않도록하고 싶습니다.
필자는 테스트에 일부 기능을 수집하여 시간을 측정하고 미리 정의 된 임계 값과 비교할 수 있습니다.Python에서 모든 개발자가 자동으로 성능을 테스트하는 올바른 방법은 무엇입니까?

까다로운 요구 사항 :!

  1. 나는 모든 개발자가 자신의 컴퓨터에서 코드를 테스트 할 수 있도록하려면 (CPU 파워에 따라 다릅니다, OS (Linux 및 일부 Windows) 및 외부 구성 - 파이썬 버전, 라이브러리 및 모듈은 동일합니다). 테스트 서버는 일반적으로 좋은 생각이지만이를 해결하지 못합니다.
  2. 나는 테스트가 DETERMINISTIC이 되길 원한다. - 테스트를 실행하는 컴퓨터에서 무슨 일이 일어나고 있는지에 관계없이 나는 동일한 결과를 반환하기 위해 여러 번 테스트를 수행해야한다.

내 예비 생각 :

  • 사용 timeit 및 시스템의 벤치 마크에게 내가 테스트를 실행할 때마다 않습니다. 성능 테스트 결과를 벤치 마크와 비교하십시오.
  • "외부 소음"을 무시하도록 해석기를 사용하려면 cProfile을 사용하십시오. 내가 아직 pstats 구조를 읽는 법을 잘 모르겠다. 그러나 나는 그것이 가능하다고 확신한다.

다른 생각은?

감사합니다.

탈.

답변

5

funkload을 확인하십시오. 단위 테스트를 기능 테스트 또는 부하 테스트로 실행하여 사이트 실적을 측정 할 수 있습니다.

funkload와 함께 사용할 수있는 또 다른 흥미로운 프로젝트는 codespeed입니다. 이 코드는 코드에 대한 모든 커밋에 대한 코드베이스의 "속도"를 측정하여 시간 경과에 따른 그래프를 제공하는 내부 대시 보드입니다. 여기서는 실행할 수있는 자동 벤치마킹이 몇 가지 있다고 가정하지만 시간이 지남에 따라 성능에 대한 권위있는 계정을 갖는 것이 유용 할 수 있습니다. 지금까지 본 코드 속도의 가장 좋은 용도는 speed.pypy.org 사이트입니다.

결정론에 대한 귀하의 요구 사항은 통계를 활용하는 것이 가장 좋은 방법일까요? 자동으로 테스트를 N 번 실행하여 모든 실행의 최소, 최대, 평균 및 표준 편차를 산출 하시겠습니까? 이것에 대한 약간의 포인터는 article on benchmarking에서 확인하십시오.

+0

나는 그들이 그것을 * codspeed *라고 부르고 싶다. –

1

나는 테스트가 결정을 내리기를 원합니다. 테스트를 실행하는 컴퓨터에서 무슨 일이 일어나고 있는지에 관계없이 동일한 결과를 반환하는 테스트를 여러 번 실행해야합니다.

실패. 정의에 따라 다소 많은 사용자가있는 다중 처리 시스템에서는 전혀 불가능합니다.

현대의 다중 처리 운영 체제와 관련이없는 테스트를 실행하거나이 요구 사항을 다시 생각해보십시오.

또한 실행중인 웹 응용 프로그램은 결정적이지 않으므로 일종의 "결정적"성능 테스트를 부과하는 것이 많은 도움이되지 않습니다.

"실시간"이 실제로 시간 인 시간을 의미하는 레이더에서 시간 결정적 처리를 수행했을 때 우리는 결정 론적 테스트를 시도하지 않았습니다. 코드 검사를 수행하고 간단한 평균 및 최대 값과 관련된 간단한 성능 테스트를 실행했습니다.

cProfile을 사용하여 해석기가 "외부 노이즈"를 무시하도록하십시오. 나는 아직 pstats 구조를 읽는 방법을 알지 못하지만, 그것이 가능하다고 확신한다.

Stats 프로파일 러가 생성 한 객체가 사용자가 찾고있는 객체입니다.

http://docs.python.org/library/profile.html#the-stats-class

프로파일 통계 'pcalls', 원시 호출 수,에 집중하고 약 결정적 뭔가를해야합니다.

+0

제 시스템에서'pcalls'은 꽤 결정적입니다. 나는'pcalls'가 변화 하는지를 탐지 할 수있는 테스트를 가지고 있으며, 퍼센트로보고한다. 테스트 실패로 인해 변경된 사항과 성능 영향이 수용 가능한지 여부를 조사 할 수 있습니다. –

관련 문제