배치 파일을 사용한 테스트 자동화:
-
02-07-2019 - |
문제
내 테스트 스위트에는 다음과 같은 레이아웃이 있습니다.
TestSuite1.cmd:
- 내 프로그램 실행
- 반환 결과를 확인하세요
- 반환 결과가 0이 아닌 경우 오류를 텍스트 출력으로 변환하고 스크립트를 중단합니다.성공하면 성공을 기록합니다.
내 단일 .cmd 파일에서 다른 입력을 사용하여 프로그램을 약 10번 호출합니다.
문제는 제가 10번 실행한 프로그램이 매번 실행하는데 몇 시간이 걸린다는 것입니다.
반환 결과를 확인하고 적절한 출력 파일을 제공하면서 여전히 내 프로그램의 10개 실행을 모두 병렬화할 수 있는 방법이 있습니까? 하나의 .cmd 파일과 단일 출력 파일로?
해결책
동일한 파일에 글을 쓰면 서로를 방해하지 않을 것이라고 가정합니다.
test1.cmd
:: intercept sub-calls.
if "%1"=="test2" then goto :test2
:: start sub-calls.
start test1.cmd test2 1
start test1.cmd test2 2
start test1.cmd test2 3
:: wait for sub-calls to complete.
:loop1
if not exist test2_1.flg goto :loop1
:loop2
if not exist test2_2.flg goto :loop2
:loop3
if not exist test2_3.flg goto :loop3
:: output results sequentially
type test2_1.out >test1.out
del /s test2_1.out
del /s test2_1.flg
type test2_2.out >test1.out
del /s test2_2.out
del /s test2_2.flg
type test2_3.out >test1.out
del /s test2_3.out
del /s test2_3.flg
goto :eof
:test2
:: Generate one output file
echo %1 >test2_%1.out
ping -n 31 127.0.0.1 >nul: 2>nul:
:: generate flag file to indicate finished
echo x >test2_%1.flg
이것은 각각의 동시 프로세스를 시작하여 각각 시퀀스 번호를 반향 한 다음 30 초를 기다립니다.
하나의 CMD 파일과 (결국) 하나의 출력 파일이 있습니다.
다른 팁
배치 파일에서 병렬로 실행하는 것은 '시작'실행 가능/명령을 통해 수행 할 수 있습니다.
윈도우:
기본적으로 다음을 호출하는 배치 파일을 만듭니다.
start TestSuite1.cmd [TestParams1]
start TestSuite1.cmd [TestParams2]
본질적으로 새로운 명령줄을 분기하는 등의 작업이 있습니다.
이는 응용 프로그램이 동시 사용자(동일한 사용자라도)를 처리할 수 있고 TestSuite1.cmd가 매개변수를 처리할 수 있다면 작동할 것입니다.
다른 매개 변수로 스크립트를 시작해야합니다. 다른 기계에서 프로그램의 여러 인스턴스가 한 번에 실행될 때 프로그램이 너무 오래 걸리는 작업 (IO, CPU 시간)은 공급이 짧아지기 때문입니다.
예외 만 : 프로그램이 잠들게하는 프로그램으로 인해 런타임이 원인입니다.
명령을 시도하십시오 시작, 새로운 명령 프롬프트가 생겨서 실행하려는 명령을 따라 보낼 수 있습니다.
이것을 사용하여 테스트를 실행하는 배치 파일을 스폰 한 다음 >>를 사용하여 output.txt에 추가합니다.
testthingie.cmd >> output.txt