프로그램을 자동으로 테스트하기 위한 방법

ezicomezigo의 이미지

안녕하세요.
리눅스 입문 초보입니다.

터미널에서 프로그램에 사용자의 명령을 자동으로 넣어줄수 있는 방법이 없을까요?
예를 들어 A라는 프로그램에 run 이라고 입력하면 동작하고, stop이라고 하면 멈춘다고 가정할때
이 A라는 프로그램에 명령을 (run과 stop)을 자동으로 반복적으로 넣어 줄수 있는 방법이 없을까요?

검색을 해봐도, (제가 아는 지식이 별로없어서 검색키워드가 알맞지 않아서 일것같습니다.) 내용이 안나와서 이렇게 올립니다.

yukariko의 이미지

run,stop을 반복으로 뿌려주는 프로그램을 A라고 놓고 처리하는 프로그램을 B라고 놓으면,
A | B
를 통해 A의 표준출력이 B의 표준입력으로 들어가게 됩니다.

ezicomezigo의 이미지

감사합니다. 많은 도움이 되었습니다.

별님의 이미지

yes | someprogram
no | someprogram
someprogram <<EOF
start
stop
EOF
someprogram <<<"start"

또는

expect를 사용합니다.

ezicomezigo의 이미지

감사합니다.
근데 제가 실력이 미천한지라, 알려주신것이 잘 이해가 안됩니다...ㅠㅠ
어떻게 동작하는 건가요? (이런거 조차 물어보면안되겠죠...?)

한참 더 공부해야겠습니다.

별님의 이미지

<<<word 는 bash에서 제공하는 Here Strings기능으로, word를 표준입력으로 보냅니다.

<<EOF
word
EOF
는 bash에서 제공하는 Here Documents기능으로, EOF와 EOF 사이에 입력된 문자를 표준입력으로 보냅니다.
|는 파이프란 기능으로, A | B | C와 같이 A의 표준출력이 B의 표준입력이 되고, B의 표준출력이 C의 표준입력이 되는 구조입니다. 프로그램은 모두 동시에 작동되어, 마치 파이프와 같은 동작을 하게 됩니다.

프로그램이 표준입력의 일부분을 읽으면, 그 내용은 표준입력 버퍼에서 삭제됩니다. 읽고 처리하고 읽고 처리하고를 반복하는 구조라면, 제어문자 `\n(줄바꿈 문자)'나 ` (스페이스 바)'등을 입력하면 명령어들을 구분지어 프로그램에 전달할수 있습니다.

expect는 `id : '란 문장이 뜨면, '별님'을 입력하게 만들수 있는 자동화 툴입니다. 완벽하게 만들기 어려우니, 별도의 인증 및 처리 서비스를 제공하는 편이 낫습니다.

ezicomezigo의 이미지

자세한 설명 감사드립니다.
많은 도움이 되었습니다.

mirheekl의 이미지

직접 개발하는 프로그램이라면 양자를 분리한 후 테스트만을 위한 실행파일을 만드는 방법도 있습니다. 유닛 테스트처럼 되는 거죠. 대부분의 경우 이미 분리가 돼있을테니 따로 작업할 것도 별로 없을 듯.

--

ezicomezigo의 이미지

그런 방법이 있었네요..^^ 감사합니다.

klenui의 이미지

TCL을 하실수 있다면 expect 라는 물건이 있습니다....
python같은 기타 언어에서도 expect library가 있는 것으로 알고 있습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.