programing

백만 개가 넘는 테스트 케이스가있는 테스트 스위트 실행

kingscode 2021. 1. 16. 10:00
반응형

백만 개가 넘는 테스트 케이스가있는 테스트 스위트 실행


우리는 robotremoteserver가 여러 다른 애플리케이션을 시작하고 테스트의 일부로 작업하는 분산 테스트 환경을 가지고 있습니다. 실행하려는 테스트를 실행하려면 단일 제품군에서 백만 개가 넘는 테스트 케이스를 실행해야합니다. 여기서 문제는 pybot가 실행되기 시작 하면 8GB의 RAM을 차단하여 성능이 저하된다는 것입니다. 잠시 후 얼어 붙습니다.

이 문제를 극복하기 위해 각 케이스가 100 개 미만인 별도의 제품군을 만들 계획이었습니다. 그러나이 경우 다른 스위트에서 시작된 다른 원격 서버의 키워드를 사용할 수 없습니다. 내가 사용할 수있는 유일한 방법은 원격 서버에서 연결을 끊고 각 제품군에서 다시 연결하는 것입니다. 이는 테스트의 목적을 무효화합니다.

이 시나리오를 접한 사람이 있는지 확실하지 않습니다. 누구든지이 문제에 대한 해결책을 생각할 수 있다면 감사하겠습니다.

추가 정보

이 문제를 해결하는 데 도움이되는 또 다른 방법 : 다른 제품군에서 시작한 라이브러리 (상태 포함)에서 키워드를 호출 할 수 있습니까?

RIDE를 사용할 때 Get Library 인스턴스를 사용할 있습니까? 한 제품군에서 라이브러리를 가져온 다음 다른 제품군에서 라이브러리 인스턴스를 가져 오려고합니다. 이것이 가능한가?

다음과 같은 오류가 계속 발생합니다.

AttributeError : 원격 인스턴스에 'replace'속성이 없습니다.

Suite 1에서 이것은 내가하는 일입니다.

Import Library    Remote    ${verifix_xmlrpc_url}    WITH NAME    Verifix
${lib}=    BuiltIn.Get Library Instance    Verifix
Set Global Variable    ${lib}

Suite 2 :

${lib}.remove messages    ${VenueNSDQ}

Python에 대한 구체적인 내용은 모르지만 각 테스트 케이스를 별도의 프로세스로 회전 해 볼 수 있습니다. 이렇게하면 각 프로세스가 완료 될 때마다 메모리를 복구 할 수 있으며 하나의 시스템에서 백만 개의 테스트 케이스를 안전하게 실행할 수 있습니다.

일반적으로 프로그램이 OS에서 더 많은 메모리를 필요로 할 때 그것을 가져 오지만 종료 될 때까지 되돌릴 수 없습니다. 이것이 프로세스가 실패하는 이유 일 수 있습니다.

스핀 업 한 다음 종료 할 수있는 빠른 프로세스는이 메모리 문제를 완화합니다. 그런 다음 다른 시스템에서 rsh를 통해 이러한 각 테스트 사례를 실행하는 것은 매우 짧은 단계입니다.

도움이 되었으면합니다.


확인. 첫째, 저는 파이썬으로 프로그래밍하지 않으며, 어떤 종류의 컴퓨터를 사용하고 있는지, 컴퓨터가 얼마나 많은 메모리를 가지고 있는지 또는 컴퓨터의 상황에 대해 다른 어떤 것도 모릅니다. 따라서 이것은 시스템 프로그램을 작성하고 여러 컴퓨터에서 작업하여 수집 한 일반적인 정보입니다.

즉, 방대한 데이터 세트 또는 방대한 수의 프로그램을 실행하려면 원하는 작업을 분할해야 사용중인 시스템에 맞을 수 있습니다. 이것이 첫 번째 부분입니다.

두 번째 부분은 프로그램간에 다른 프로그램이나 시스템과 대화하려면 일반적인 메모리 사용 유형을 설정해야한다는 것입니다. 저는 PHP에 그런 것이 내장되어 있다는 것을 알고 있으므로 파이썬에도 그런 것이 있다고 가정해야합니다. 공통 메모리 영역을 설정 한 다음 다양한 프로그램간에 정보를주고받습니다. 일반적으로 특정 형태의 토큰을 사용하여 각 프로그램 및 / 또는 시스템을 식별합니다. 이런 식으로 한 세트의 테스트가 완료되면 다음 세트가 시작되도록 지시 할 수 있으므로 시스템을 인수하거나 엉망으로 만들지 않도록 설정할 수 있습니다.

당신이 정말 좋은 경우-테스트를 ​​시작하는 일종의 컨트롤러 프로그램을 만들고 테스트가 종료 / 종료 될 때까지 감시 한 다음 다음 테스트를 시작할 수도 있습니다. (따라서 데이지 체인 방식 대신 클라이언트 / 서버 관계처럼 마스터 / 슬레이브 방식으로 수행 할 수 있습니다.)

Windows 상자 / OS를 사용하는 경우 AutoIt을 살펴 보는 것이 좋습니다. AutoIt은 프로그램 실행을 감시하고 이전 작업이 완료되면 새 작업을 시작하는 것을 쉽게 처리 할 수 ​​있습니다. 또한 시스템과 원격 시스템을 모두 완벽하게 제어 할 수 있으며 수행하려는 작업과 같은 작업을 자동화하는 데 도움이되도록 개발되었습니다. 나는 (실험을 통해) AutoIt이 Mac과 같은 유닉스 / 리눅스 박스와 함께 사용될 수 있다는 것을 발견했습니다. 그래야만 Windows 기능에 액세스하는 대신 보내는 명령이 있습니다.

파이썬에 더 능숙하다면 그것을 사용하여 위의 작업을 수행 할 수 있습니다. 그러면 더 많은 힘을 얻을 수 있습니다. 이 질문을 한 지 2 년이 지났음에도 불구하고 이것이 귀하의 노력에 도움이되기를 바랍니다. :-)

참조 URL : https://stackoverflow.com/questions/16595345/running-a-test-suite-with-over-a-million-test-cases

반응형