출력을 기다리고 입력 보내기
프로세스를 시작한 뒤 특정 문구가 나타날 때까지 기다리고 다음 입력을 보내는 방식으로 상호작용을 구성한다. 한 번 입력하고 최종 결과만 받는 검사와 달리 중간 단계의 요청과 응답을 다룰 수 있다. 기대 문자열과 정규식 및 종료 상태를 구분해 실제 진행 단계를 확인한다.
준비 완료를 확인하는 이유
프로세스가 충분히 시작되기 전에 제어 문자를 보내면 의도한 동작이 일어나지 않을 수 있다. 일정 시간만 기다리기보다 준비 문구나 프롬프트를 확인한 뒤 다음 동작을 수행한다. 네트워크나 처리 속도에 따라 대기 시간이 달라지므로 제한 시간을 정하고 실패 지점을 조사할 수 있게 구성한다.
터미널 상태와 재현성
가상 터미널에서 실행하면 일반 파이프 연결과 출력 형태가 달라질 수 있다. 프롬프트와 줄 끝, 제어 문자 등을 고려해 조건을 정한다. 너무 넓은 정규식은 다른 문구에도 반응할 수 있으므로 현재 단계에 맞게 작성한다. 종료와 백그라운드 작업의 정리를 확인하고 실제 외부 서비스에 의존하는 검사에서는 실행 환경의 차이도 함께 관리한다.